kgpark09 4 rokov pred
commit
d127c71ceb
100 zmenil súbory, kde vykonal 84647 pridanie a 0 odobranie
  1. BIN
      .DS_Store
  2. BIN
      ambt-anoicos-lambda-for-exe-sagemaker/.DS_Store
  3. 11 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build.toml
  4. BIN
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/.DS_Store
  5. 177 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore-1.20.109.dist-info/LICENSE.txt
  6. 139 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore-1.20.109.dist-info/METADATA
  7. 86 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore-1.20.109.dist-info/NOTICE
  8. 893 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore-1.20.109.dist-info/RECORD
  9. 6 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore-1.20.109.dist-info/WHEEL
  10. 1 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore-1.20.109.dist-info/top_level.txt
  11. 98 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/__init__.py
  12. 370 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/args.py
  13. 868 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/auth.py
  14. 623 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/awsrequest.py
  15. 4433 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/cacert.pem
  16. 972 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/client.py
  17. 361 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/compat.py
  18. 290 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/config.py
  19. 272 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/configloader.py
  20. 560 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/configprovider.py
  21. 2131 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/credentials.py
  22. 0 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/crt/__init__.py
  23. 294 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/crt/auth.py
  24. 292 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/_retry.json
  25. 52 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/accessanalyzer/2019-11-01/paginators-1.json
  26. 3130 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/accessanalyzer/2019-11-01/service-2.json
  27. 5 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/acm-pca/2017-08-22/examples-1.json
  28. 22 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/acm-pca/2017-08-22/paginators-1.json
  29. 81 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/acm-pca/2017-08-22/service-2.json
  30. 61 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/acm-pca/2017-08-22/waiters-2.json
  31. 5 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/acm/2015-12-08/examples-1.json
  32. 10 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/acm/2015-12-08/paginators-1.json
  33. 121 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/acm/2015-12-08/service-2.json
  34. 35 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/acm/2015-12-08/waiters-2.json
  35. 5 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/alexaforbusiness/2017-11-09/examples-1.json
  36. 82 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/alexaforbusiness/2017-11-09/paginators-1.json
  37. 6109 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/alexaforbusiness/2017-11-09/service-2.json
  38. 10 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/amp/2020-08-01/paginators-1.json
  39. 617 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/amp/2020-08-01/service-2.json
  40. 28 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/amplify/2017-07-25/paginators-1.json
  41. 3387 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/amplify/2017-07-25/service-2.json
  42. 10 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/amplifybackend/2020-08-11/paginators-1.json
  43. 4091 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/amplifybackend/2020-08-11/service-2.json
  44. 5 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/apigateway/2015-07-09/examples-1.json
  45. 112 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/apigateway/2015-07-09/paginators-1.json
  46. 2023 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/apigateway/2015-07-09/service-2.json
  47. 3 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/apigatewaymanagementapi/2018-11-29/paginators-1.json
  48. 217 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/apigatewaymanagementapi/2018-11-29/service-2.json
  49. 64 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/apigatewayv2/2018-11-29/paginators-1.json
  50. 8813 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/apigatewayv2/2018-11-29/service-2.json
  51. 3 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appconfig/2019-10-09/paginators-1.json
  52. 2193 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appconfig/2019-10-09/service-2.json
  53. 3 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appflow/2020-08-23/paginators-1.json
  54. 3833 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appflow/2020-08-23/service-2.json
  55. 3 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appintegrations/2020-07-29/paginators-1.json
  56. 675 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appintegrations/2020-07-29/service-2.json
  57. 257 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/application-autoscaling/2016-02-06/examples-1.json
  58. 28 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/application-autoscaling/2016-02-06/paginators-1.json
  59. 144 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/application-autoscaling/2016-02-06/service-2.json
  60. 3 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/application-insights/2018-11-25/paginators-1.json
  61. 1975 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/application-insights/2018-11-25/service-2.json
  62. 10 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/applicationcostprofiler/2020-09-10/paginators-1.json
  63. 522 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/applicationcostprofiler/2020-09-10/service-2.json
  64. 28 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appmesh/2018-10-01/paginators-1.json
  65. 2207 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appmesh/2018-10-01/service-2.json
  66. 52 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appmesh/2019-01-25/paginators-1.json
  67. 5708 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appmesh/2019-01-25/service-2.json
  68. 3 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/apprunner/2020-05-15/paginators-1.json
  69. 1897 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/apprunner/2020-05-15/service-2.json
  70. 5 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appstream/2016-12-01/examples-1.json
  71. 60 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appstream/2016-12-01/paginators-1.json
  72. 3644 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appstream/2016-12-01/service-2.json
  73. 55 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appstream/2016-12-01/waiters-2.json
  74. 5 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appsync/2017-07-25/examples-1.json
  75. 46 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appsync/2017-07-25/paginators-1.json
  76. 822 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appsync/2017-07-25/service-2.json
  77. 5 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/athena/2017-05-18/examples-1.json
  78. 50 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/athena/2017-05-18/paginators-1.json
  79. 2404 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/athena/2017-05-18/service-2.json
  80. 3 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/auditmanager/2017-07-25/paginators-1.json
  81. 4342 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/auditmanager/2017-07-25/service-2.json
  82. 5 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/autoscaling-plans/2018-01-06/examples-1.json
  83. 16 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/autoscaling-plans/2018-01-06/paginators-1.json
  84. 199 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/autoscaling-plans/2018-01-06/service-2.json
  85. 1538 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/autoscaling/2011-01-01/examples-1.json
  86. 64 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/autoscaling/2011-01-01/paginators-1.json
  87. 953 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/autoscaling/2011-01-01/service-2.json
  88. 3 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/backup/2018-11-15/paginators-1.json
  89. 3770 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/backup/2018-11-15/service-2.json
  90. 589 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/batch/2016-08-10/examples-1.json
  91. 28 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/batch/2016-08-10/paginators-1.json
  92. 40 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/batch/2016-08-10/service-2.json
  93. 16 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/braket/2019-09-01/paginators-1.json
  94. 915 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/braket/2019-09-01/service-2.json
  95. 5 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/budgets/2016-10-20/examples-1.json
  96. 46 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/budgets/2016-10-20/paginators-1.json
  97. 1962 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/budgets/2016-10-20/service-2.json
  98. 5 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/ce/2017-10-25/examples-1.json
  99. 3 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/ce/2017-10-25/paginators-1.json
  100. 1530 0
      ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/ce/2017-10-25/service-2.json

BIN
.DS_Store


BIN
ambt-anoicos-lambda-for-exe-sagemaker/.DS_Store


+ 11 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build.toml

@@ -0,0 +1,11 @@
+# This file is auto generated by SAM CLI build command
+
+[function_build_definitions]
+[function_build_definitions.3644ad2f-03fd-4c9b-baff-415a8d782d2c]
+codeuri = "/Users/hdci-dev/OneDrive/archive/HDC아이콘트롤스/업무/[Project] IPARK앰비언트AI플랫폼/AWS sam/ambt-anoicos-lambda-for-exe-sagemaker"
+runtime = "python3.8"
+source_md5 = ""
+packagetype = "Zip"
+functions = ["ambtiparktowerrawtoprepbucketlambda"]
+
+[layer_build_definitions]

BIN
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/.DS_Store


+ 177 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore-1.20.109.dist-info/LICENSE.txt

@@ -0,0 +1,177 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS

+ 139 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore-1.20.109.dist-info/METADATA

@@ -0,0 +1,139 @@
+Metadata-Version: 2.1
+Name: botocore
+Version: 1.20.109
+Summary: Low-level, data-driven core of boto 3.
+Home-page: https://github.com/boto/botocore
+Author: Amazon Web Services
+License: Apache License 2.0
+Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Intended Audience :: Developers
+Classifier: Intended Audience :: System Administrators
+Classifier: Natural Language :: English
+Classifier: License :: OSI Approved :: Apache Software License
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
+Requires-Python: >= 2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*
+Requires-Dist: jmespath (<1.0.0,>=0.7.1)
+Requires-Dist: python-dateutil (<3.0.0,>=2.1)
+Requires-Dist: urllib3 (<1.27,>=1.25.4)
+Provides-Extra: crt
+Requires-Dist: awscrt (==0.11.24) ; extra == 'crt'
+
+botocore
+========
+
+.. image:: https://codecov.io/github/boto/botocore/coverage.svg?branch=develop
+    :target: https://codecov.io/github/boto/botocore?branch=develop
+
+
+A low-level interface to a growing number of Amazon Web Services. The
+botocore package is the foundation for the
+`AWS CLI <https://github.com/aws/aws-cli>`__ as well as
+`boto3 <https://github.com/boto/boto3>`__.
+
+On 01/15/2021 deprecation for Python 2.7 was announced and support will be dropped
+on 07/15/2021. To avoid disruption, customers using Botocore on Python 2.7 may
+need to upgrade their version of Python or pin the version of Botocore. For
+more information, see this `blog post <https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-python-2-7-in-aws-sdk-for-python-and-aws-cli-v1/>`__.
+
+On 10/29/2020 deprecation for Python 3.4 and Python 3.5 was announced and support
+was dropped on 02/01/2021. To avoid disruption, customers using Botocore
+on Python 3.4 or 3.5 may need to upgrade their version of Python or pin the
+version of Botocore. For more information, see
+this `blog post <https://aws.amazon.com/blogs/developer/announcing-the-end-of-support-for-python-3-4-and-3-5-in-the-aws-sdk-for-python-and-aws-cli-v1/>`__.
+
+Getting Started
+---------------
+Assuming that you have Python and ``virtualenv`` installed, set up your environment and install the required dependencies like this or you can install the library using ``pip``:
+
+.. code-block:: sh
+
+    $ git clone https://github.com/boto/botocore.git
+    $ cd botocore
+    $ virtualenv venv
+    ...
+    $ . venv/bin/activate
+    $ pip install -r requirements.txt
+    $ pip install -e .
+
+.. code-block:: sh
+
+    $ pip install botocore
+
+Using Botocore
+~~~~~~~~~~~~~~
+After installing botocore 
+
+Next, set up credentials (in e.g. ``~/.aws/credentials``):
+
+.. code-block:: ini
+
+    [default]
+    aws_access_key_id = YOUR_KEY
+    aws_secret_access_key = YOUR_SECRET
+
+Then, set up a default region (in e.g. ``~/.aws/config``):
+
+.. code-block:: ini
+
+   [default]
+   region=us-east-1
+
+Other credentials configuration method can be found `here <https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html>`__
+
+Then, from a Python interpreter:
+
+.. code-block:: python
+
+    >>> import botocore.session
+    >>> session = botocore.session.get_session()
+    >>> client = session.create_client('ec2')
+    >>> print(client.describe_instances())
+
+
+Getting Help
+------------
+
+We use GitHub issues for tracking bugs and feature requests and have limited
+bandwidth to address them. Please use these community resources for getting
+help. Please note many of the same resources available for ``boto3`` are
+applicable for ``botocore``:
+
+* Ask a question on `Stack Overflow <https://stackoverflow.com/>`__ and tag it with `boto3 <https://stackoverflow.com/questions/tagged/boto3>`__
+* Come join the AWS Python community chat on `gitter <https://gitter.im/boto/boto3>`__
+* Open a support ticket with `AWS Support <https://console.aws.amazon.com/support/home#/>`__
+* If it turns out that you may have found a bug, please `open an issue <https://github.com/boto/botocore/issues/new>`__
+
+
+Contributing
+------------
+
+We value feedback and contributions from our community. Whether it's a bug report, new feature, correction, or additional documentation, we welcome your issues and pull requests. Please read through this `CONTRIBUTING <https://github.com/boto/botocore/blob/develop/CONTRIBUTING.rst>`__ document before submitting any issues or pull requests to ensure we have all the necessary information to effectively respond to your contribution. 
+
+
+Maintenance and Support for SDK Major Versions
+----------------------------------------------
+
+Botocore was made generally available on 06/22/2015 and is currently in the full support phase of the availability life cycle.
+
+For information about maintenance and support for SDK major versions and their underlying dependencies, see the following in the AWS SDKs and Tools Shared Configuration and Credentials Reference Guide:
+
+* `AWS SDKs and Tools Maintenance Policy <https://docs.aws.amazon.com/credref/latest/refdocs/maint-policy.html>`__
+* `AWS SDKs and Tools Version Support Matrix <https://docs.aws.amazon.com/credref/latest/refdocs/version-support-matrix.html>`__
+
+
+More Resources
+--------------
+
+* `NOTICE <https://github.com/boto/botocore/blob/develop/NOTICE>`__
+* `Changelog <https://github.com/boto/botocore/blob/develop/CHANGELOG.rst>`__
+* `License <https://github.com/boto/botocore/blob/develop/LICENSE.txt>`__
+
+
+

+ 86 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore-1.20.109.dist-info/NOTICE

@@ -0,0 +1,86 @@
+Botocore
+Copyright 2012-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+
+----
+
+Botocore includes a vendorized copy of the requests python library to ease installation.
+
+Requests License
+================
+
+Copyright 2013 Kenneth Reitz
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+The requests library also includes some vendorized python libraries to ease installation.
+
+Urllib3 License
+===============
+
+This is the MIT license: http://www.opensource.org/licenses/mit-license.php
+
+Copyright 2008-2011 Andrey Petrov and contributors (see CONTRIBUTORS.txt),
+Modifications copyright 2012 Kenneth Reitz.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this
+software and associated documentation files (the "Software"), to deal in the Software
+without restriction, including without limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
+to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
+FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+Chardet License
+===============
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301  USA
+
+Bundle of CA Root Certificates
+==============================
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301

+ 893 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore-1.20.109.dist-info/RECORD

@@ -0,0 +1,893 @@
+botocore/__init__.py,sha256=i85bdlkpgjSrHTF2vMKruVA5_pN4iKqGyk5yr_YJW-w,3881
+botocore/args.py,sha256=mPsN2uo5HmKbTV5R1AYMox1HvZCWLc2tIR9zGJM4TuU,16199
+botocore/auth.py,sha256=39qP9Z8N13G28sLrs7YXLTH4Qwt2_5plhalpBeXrSiw,35095
+botocore/awsrequest.py,sha256=mrlHl_t1Pa9LvEi4StA0N8drrrZAvadnqVO4rwwYy4M,23613
+botocore/cacert.pem,sha256=7CEXfLHxDwvDpwVu0y_2lfJYk63cU-KUKI_DL1Lq8Uo,271088
+botocore/client.py,sha256=iu88y7EOz3g6kK1gaJrOZ8csJO5IC_5gkwJWAAoNpvU,42883
+botocore/compat.py,sha256=YnE7scEQQqTGoRadWXOw-1jeRmK7vKiV229_7p2Vyag,11970
+botocore/config.py,sha256=ZGCeAGSNu4BPkuxwUYMRSBw8i4z8V_Wl8S5coGeoybQ,12721
+botocore/configloader.py,sha256=wR5bFZKieBrIXX9Y2psWZNEQQKMCjKdOi1V1ejPjRmg,9580
+botocore/configprovider.py,sha256=tv6AKtSFsnvfGgRB6L6NIIuIdPnT7nA6m79Ve9012hY,22235
+botocore/credentials.py,sha256=jGh_v8GXQxlwZN7kRpEUQYBL0hCW_69IQP-5m4bAPGU,81776
+botocore/discovery.py,sha256=5dCzl2kuyRy7Qj_wKyvFzxx9goELNY1qbe50FW95-cs,11031
+botocore/endpoint.py,sha256=s8PWp2zFbS5NoXZq62vFVm8ka8VWM9svmKUfQq-uQmM,13811
+botocore/errorfactory.py,sha256=GC3K0O7bUvE_ltyVMwKADJNBO_845lBX0NfPNMgxv8c,3727
+botocore/eventstream.py,sha256=25tm7SI5ldVRQSTRjY54t9s_bbz8IU6zs7kGw9AfxZ4,20517
+botocore/exceptions.py,sha256=mh3suiva2gzbfsOWDtRFqWAkZWzpj8ffjqBfRdX300g,20546
+botocore/handlers.py,sha256=3_GEF8ZCVTmIOQ53uUqkFJzZsvSNc9wSJ-Mi8au-5eM,46277
+botocore/history.py,sha256=mM6u8qvmPpvYRLEaZi8O0sBFygw3p647kAtBuHfjfFI,1748
+botocore/hooks.py,sha256=1iYWMRy2AkhMgY7TLHP97-FSfLbtewu5LXyfXLWK_yQ,24573
+botocore/httpsession.py,sha256=3aVwp1EXDKLGgvnmFgohgSNEIr9EC6at9D2PsR_P9og,14173
+botocore/loaders.py,sha256=JvpfDdPCJvMJgxwPEo7iTPXJa3Q2-ubJ-VepCTYmVz4,17355
+botocore/model.py,sha256=ONyXZrjoi9GHYYz83yaZGW2KV_sUvQgSAEx60eFHxBM,28562
+botocore/monitoring.py,sha256=nMQw4M4YvwLLaoM1QAoD93zjoxIo2unPdfcgv-5DkhY,20586
+botocore/paginate.py,sha256=LTxwYtsayhuM6U0ghRRzsRE80B_z5xPdHUVuTWo1P6I,27128
+botocore/parsers.py,sha256=U-6QgvtSPw7ZfUy2VsO_xoGL_xULscuDO-P7LrqWB3o,42469
+botocore/regions.py,sha256=GBWDzd8PqQdocFHyOvs1UzTF367LmR0cGrtoAUCiPAU,8975
+botocore/response.py,sha256=EotKYK__m3i-OAaYpZ66KyiiRlCa5ClOqZPH500kCeA,6434
+botocore/retryhandler.py,sha256=KmT3OA-x3IWxNegMF7j1Yz5C5vuybCsZvcSkXc2XNd8,13781
+botocore/serialize.py,sha256=mMKNkR7fi50GphaS2VkqJZgxBQWgoKILxUldYH8Z274,30575
+botocore/session.py,sha256=MVrz2MavjUJo2smDYdIxtkpMzJjh47XpH24oOOBgUPY,43966
+botocore/signers.py,sha256=wDRI_s_t0wJvZR8XI_8iJ44jPRcG2ZInSJXO3m46fyE,28234
+botocore/stub.py,sha256=2p6lbTnvUcuEqFR9HRL6MbmhWGH7CyFQ0YxyhavAdUI,14361
+botocore/translate.py,sha256=RteQ6FyDou98NspaETe6zyGextA_48CjrSFwDDLm65c,3412
+botocore/utils.py,sha256=ucnu60xboYxCL0cQ99cGeGjxCoc39Wkq-yJcw7SSGwc,91508
+botocore/validate.py,sha256=-W8BlDw_BWQpF1Wipee-yXo2uoPmtb6ArwU6zzLY2Oo,12682
+botocore/waiter.py,sha256=j8McxDVxMXHJvkzE41kMtm3EFT71wxDBsUT9-Am8V-E,14070
+botocore/crt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
+botocore/crt/auth.py,sha256=yRcDB4LEFMERuaoB6jw-qJ7oUKbU9AbH0zhl2YJtf_4,11961
+botocore/data/_retry.json,sha256=9YkW5V-FMGzj8zwHX1Payit1aRaKjbaqKtKqmePpfXU,7025
+botocore/data/endpoints.json,sha256=EY5WNwRN70KXaOFIFMzWCF91BDNRLGjH6MnbXsi9d-0,308468
+botocore/data/accessanalyzer/2019-11-01/paginators-1.json,sha256=yUJZGsec7sCCbedZgSGk62dqw-XPjH1IkA7t7ke5UY0,1394
+botocore/data/accessanalyzer/2019-11-01/service-2.json,sha256=7caZa2NCGht4HpUFJVMpVxia4cdVACb9BIQZtVJGRr4,121657
+botocore/data/acm/2015-12-08/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/acm/2015-12-08/paginators-1.json,sha256=oB2exj3JKzcsLCvfBeMqYawlxz6YghtvUQlwOfdTY4g,203
+botocore/data/acm/2015-12-08/service-2.json,sha256=iHClU6An9xw5zUxV8ahQy2shfEvoRJ_zn5JFswtfrEs,67086
+botocore/data/acm/2015-12-08/waiters-2.json,sha256=S3uw0vWaMVDBNCST96n0BIyzhiBFuX0Oqp9C-SCxYeE,874
+botocore/data/acm-pca/2017-08-22/examples-1.json,sha256=mPd7boHY9w4xI-wG9j9rE088o-AWzYV37JIZ20tLApc,42
+botocore/data/acm-pca/2017-08-22/paginators-1.json,sha256=q2wFRetchlBt43qtOCTJ_Qw49u-LnRgmPdEn1j_j50A,537
+botocore/data/acm-pca/2017-08-22/service-2.json,sha256=D23sldKydPMtZA8WJaH8PRqHi51zcCdbzpNt6jPBbsg,122984
+botocore/data/acm-pca/2017-08-22/waiters-2.json,sha256=n3xTUowKBA8Z3mziFgM-fMJ4noI1fWr09aEAtumPVbk,1928
+botocore/data/alexaforbusiness/2017-11-09/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/alexaforbusiness/2017-11-09/paginators-1.json,sha256=0u4lJeVThQLN2lU7dhkhF3_tUwPkkGov6B1nQ1U6Z-I,2256
+botocore/data/alexaforbusiness/2017-11-09/service-2.json,sha256=twt11LD1qr35b23VbdlNjzkk-MU0chJI1TIoqqihHJk,204602
+botocore/data/amp/2020-08-01/paginators-1.json,sha256=VRdsvxhDJXmE2TiIXzjNUgR6yTVUn6PAmFgMR7mWy_M,191
+botocore/data/amp/2020-08-01/service-2.json,sha256=Fpth5WG1j2Fb999ivZ68BtvPL-CvFYgQwpC1OaefV0I,19287
+botocore/data/amplify/2017-07-25/paginators-1.json,sha256=XJ4xwNrUExhAxy-8K8JJAPnBhdRZO7FB6NGTrgr_qZQ,685
+botocore/data/amplify/2017-07-25/service-2.json,sha256=g22uYOlPV6PsvRN4c9o2T8-Us5bVt2oNS8b9-INzDX4,114210
+botocore/data/amplifybackend/2020-08-11/paginators-1.json,sha256=0JG13-2KlCwca-Pwz7d5Mp3WIttu4BpwDusqxMXF9XY,186
+botocore/data/amplifybackend/2020-08-11/service-2.json,sha256=u6gKY2z_zVPVSULzWrbdznAkS-AsTlcutkZG57gALMg,131743
+botocore/data/apigateway/2015-07-09/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/apigateway/2015-07-09/paginators-1.json,sha256=uF5UrIAT2kB9DRO8Om3uiXlkhwxluAyHfDPR2Wm1sSE,2812
+botocore/data/apigateway/2015-07-09/service-2.json,sha256=Se8KP8EAGF137LcQz2jwEbpNyrtmP2M66Y38J4KqVlg,369235
+botocore/data/apigatewaymanagementapi/2018-11-29/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/apigatewaymanagementapi/2018-11-29/service-2.json,sha256=goGcf0oYX_57cmiIavQ22Yq_Nk2ZKGiLFTRck9yu9iw,7498
+botocore/data/apigatewayv2/2018-11-29/paginators-1.json,sha256=auWh91zAZKEKRTA0qdDSA_eeveKmFAqH20BdEd3wM6M,1626
+botocore/data/apigatewayv2/2018-11-29/service-2.json,sha256=MHR2t9sxPU8f0-IbEaiFwW_bHGl072h1kJTLQMz7C-4,460647
+botocore/data/appconfig/2019-10-09/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/appconfig/2019-10-09/service-2.json,sha256=bN7VO0MW6hlNlDNtpW0CR3dfdbkH-mgPHOy8kSZ_Mcs,83634
+botocore/data/appflow/2020-08-23/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/appflow/2020-08-23/service-2.json,sha256=2Y10IqZpCRsd1urLa9ZI9mAeN0qy5kNXSiOy_yZSEPo,137861
+botocore/data/appintegrations/2020-07-29/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/appintegrations/2020-07-29/service-2.json,sha256=s8M0FghMAGFNuUvoL3B3karhqesEGBlVDfJY_ldN4pA,21917
+botocore/data/application-autoscaling/2016-02-06/examples-1.json,sha256=TRI_WZvx16j8jDh12FsT5mdlkUnI2-LOWBQk-qFVIOs,9536
+botocore/data/application-autoscaling/2016-02-06/paginators-1.json,sha256=Yg5NHu8W50qc_r8JCtkNGMbKd861R4w8wQFdrbV0rR0,751
+botocore/data/application-autoscaling/2016-02-06/service-2.json,sha256=32XIGtzDY4IYcJ3EqRIniFKxmlSlQkM7gd3OYWqrNsY,156472
+botocore/data/application-insights/2018-11-25/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/application-insights/2018-11-25/service-2.json,sha256=zv2y4pMZM49SZEFy3xHCGy6sd1oTeb1qLaCdZ-rvlEY,74549
+botocore/data/applicationcostprofiler/2020-09-10/paginators-1.json,sha256=2by8SKjvkqf2tkVd1NxlMiNsOoEUr6V3LekGj4k4yWg,205
+botocore/data/applicationcostprofiler/2020-09-10/service-2.json,sha256=6f2ALTQAEchk94_h0xaN-5me42Vm9CAgmn5nFLpyxEk,17034
+botocore/data/appmesh/2018-10-01/paginators-1.json,sha256=-TPoHMW78DG37BJz5SNi67CsUIs4PTTccyUhlXtMBm4,665
+botocore/data/appmesh/2018-10-01/service-2.json,sha256=GC3tX41LcCL2uVuEwTtUxyPBiOzL0ReD5tnawdGmV1s,73589
+botocore/data/appmesh/2019-01-25/paginators-1.json,sha256=z6PCEVS0COSk5Nf9KXgXsZ3I9gcq9whv7yonh8s1YMM,1334
+botocore/data/appmesh/2019-01-25/service-2.json,sha256=saNZ-CPbMxdmqHEGX8IPk2M3PPpYwyfRTb1ub5LXXas,234320
+botocore/data/apprunner/2020-05-15/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/apprunner/2020-05-15/service-2.json,sha256=uigZ0mu82PmJEPHgkgEIkHl14nD8RlDxRbXC23BNP3M,86507
+botocore/data/appstream/2016-12-01/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/appstream/2016-12-01/paginators-1.json,sha256=agUpesJpo5f8dC0kH0m0asMYWn4N4MUHae5LK8W0Hwo,1584
+botocore/data/appstream/2016-12-01/service-2.json,sha256=1QfRLA2B4Q2xZQfsG51RnfyIqGfvTbMBjr9CUhNHwvE,152365
+botocore/data/appstream/2016-12-01/waiters-2.json,sha256=3vm18B_pbfSz_IE9ckMWSSC0e9xCiPY1tYigPfqrsS8,1263
+botocore/data/appsync/2017-07-25/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/appsync/2017-07-25/paginators-1.json,sha256=Sen5q2rZ1X5KfTsHbBZ85KKzyiH56LDBVjKlhXDwEA4,1179
+botocore/data/appsync/2017-07-25/service-2.json,sha256=U7K6MFnJfXuMCQhoq283sWoJ25RHvJvAfso8XvzfhfQ,109802
+botocore/data/athena/2017-05-18/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/athena/2017-05-18/paginators-1.json,sha256=lLXYrCWDDFVhjAdFEhKyoc0-zEe2YYUM4nR9vXRBDgE,1330
+botocore/data/athena/2017-05-18/service-2.json,sha256=Lvjdy-ZEzSub2ZDxTA6GuCWZYDWtyioJsTWc_KN0pao,103639
+botocore/data/auditmanager/2017-07-25/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/auditmanager/2017-07-25/service-2.json,sha256=nHZgFrzPY6CWg7vZTX6D9mY_sd1uWWq6jD8uY3pkAaA,147851
+botocore/data/autoscaling/2011-01-01/examples-1.json,sha256=gMJHSbhOq_Vm3RZdiir4U_ks9I1Upuk3Cw9k__S6b6M,48575
+botocore/data/autoscaling/2011-01-01/paginators-1.json,sha256=RuAb8lpTOgSKomJDDU1h1M0MDPT6tcWb4c99ue_Q5lo,1866
+botocore/data/autoscaling/2011-01-01/service-2.json,sha256=2zdAwgjiFSePGwZHgarwOm4FvprzjJep2HnC4FimoCs,285798
+botocore/data/autoscaling-plans/2018-01-06/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/autoscaling-plans/2018-01-06/paginators-1.json,sha256=Au_RY0jJAvQZ-sAmZQk8FXYyrw1rDVD4YILlb6sDxh8,389
+botocore/data/autoscaling-plans/2018-01-06/service-2.json,sha256=RVwARu-40518JuDHDaE4eHbUahIk4akZuRQYvHxKqa4,54480
+botocore/data/backup/2018-11-15/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/backup/2018-11-15/service-2.json,sha256=ojYXVjuuCINDEmqsE7r778-_4OeTnDbKK9f6WGSCKhQ,182744
+botocore/data/batch/2016-08-10/examples-1.json,sha256=ERdq8yzTPl3S9M4_tJm1PW4PcY0Jw6fiMO1Y_n3yWBI,17063
+botocore/data/batch/2016-08-10/paginators-1.json,sha256=Q7E05nA5EKoj1ZocRVisF_AD8iXORg7gqLK512JWUVM,723
+botocore/data/batch/2016-08-10/service-2.json,sha256=GOcT5W8OWHckTkozqZwh2VGH8H0bMzg2JFSYlsEhq8Q,179917
+botocore/data/braket/2019-09-01/paginators-1.json,sha256=EHB0Nu4QUhrclqJqA7c8TjXurFAFU-CFaHXiKwuAzbU,359
+botocore/data/braket/2019-09-01/service-2.json,sha256=bYK7xfTZhkGGnG-ZYZMJLCql5Ijf7Tdn1d3KnB4L8Zw,26690
+botocore/data/budgets/2016-10-20/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/budgets/2016-10-20/paginators-1.json,sha256=DOIq_Y1E4STTYDhSobjUdhqe9jDE5OOuQbuI1sR7RfQ,1304
+botocore/data/budgets/2016-10-20/service-2.json,sha256=azPcucc5iOInwF67-n0vo3EMScxJYytRZcODkDY-p3I,77075
+botocore/data/ce/2017-10-25/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/ce/2017-10-25/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/ce/2017-10-25/service-2.json,sha256=_c5d4MQv4zITLpaDZEtNmnPNUOltG-648_-9EVBA3Lo,208232
+botocore/data/chime/2018-05-01/paginators-1.json,sha256=eU07vcRnjLd-9RmN_aGGPffN0ZXkpMRFYD_XbcyDy3A,343
+botocore/data/chime/2018-05-01/service-2.json,sha256=P0EwMYoVTE5c19NsdafPtqGKu3Tp-WgjrnHxswjwCrE,433740
+botocore/data/cloud9/2017-09-23/examples-1.json,sha256=RcBwWNW3hitJbXnPI0Ib9AwZbCUq4lllN9qnwI2MFxU,9019
+botocore/data/cloud9/2017-09-23/paginators-1.json,sha256=lET7E3FWErLA8In260otKfr3_9oVSr5OTO1zcrBi28w,380
+botocore/data/cloud9/2017-09-23/service-2.json,sha256=2HoDLde-2d_hV6QklPYZubYrj7fX0V35trhQZ2UopU8,38051
+botocore/data/clouddirectory/2016-05-10/paginators-1.json,sha256=y8GPuHURJmdagJ3QAI5mxkAzKvdCZwcnfYt3Z-qwgAU,2808
+botocore/data/clouddirectory/2016-05-10/service-2.json,sha256=ZIjBC0fe-l7RWhxmAwTASKo8OqPSPee1GGsH5Go42Hc,229185
+botocore/data/clouddirectory/2017-01-11/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/clouddirectory/2017-01-11/paginators-1.json,sha256=gIqmeqo-8lsyEDEVDFvc1RJfd0T7c9xN6SdMnxGvSpw,3342
+botocore/data/clouddirectory/2017-01-11/service-2.json,sha256=ZN0o_vklfZQcZ_xz0D3Vxz-Ata_kY8WspdVvPhswhPI,235220
+botocore/data/cloudformation/2010-05-15/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/cloudformation/2010-05-15/paginators-1.json,sha256=S3juZIAy42X7X-9SZ3gWyNscrGk5ioQ-bkdMrQl9Siw,2538
+botocore/data/cloudformation/2010-05-15/service-2.json,sha256=QnaqYeZSLGNl3D6kgb9L_Q1Q6u_Su8NFxK2WXu2e1HE,420416
+botocore/data/cloudformation/2010-05-15/waiters-2.json,sha256=wWgwvGSEJEoiWXmGTPF5CYAOLFXwhRuEqR8LoHTCUJc,7901
+botocore/data/cloudfront/2014-05-31/paginators-1.json,sha256=I7u4h1MFflBvFJemcrLHSn7uOrEeDFc7ecWGqwDxGF8,1126
+botocore/data/cloudfront/2014-05-31/service-2.json,sha256=4MdA1whbH4xS6nxk9Bbq_20w7Utc5L38lQv5WmOzR_c,144492
+botocore/data/cloudfront/2014-05-31/waiters-2.json,sha256=jzREqDxfIg2KbmPYOmDoYgDvy8mWAEK0w_NmEoCqhHI,1184
+botocore/data/cloudfront/2014-10-21/paginators-1.json,sha256=I7u4h1MFflBvFJemcrLHSn7uOrEeDFc7ecWGqwDxGF8,1126
+botocore/data/cloudfront/2014-10-21/service-2.json,sha256=E0Umk_pX7ll7dTLiqRagIHKZiRLmaYvN6-t9_jZU16s,147479
+botocore/data/cloudfront/2014-10-21/waiters-2.json,sha256=jzREqDxfIg2KbmPYOmDoYgDvy8mWAEK0w_NmEoCqhHI,1184
+botocore/data/cloudfront/2014-11-06/paginators-1.json,sha256=I7u4h1MFflBvFJemcrLHSn7uOrEeDFc7ecWGqwDxGF8,1126
+botocore/data/cloudfront/2014-11-06/service-2.json,sha256=SOKAXJJdFK2fZsAJnfIMCTBKm2r6h4IaoCcR837dGAM,147700
+botocore/data/cloudfront/2014-11-06/waiters-2.json,sha256=jzREqDxfIg2KbmPYOmDoYgDvy8mWAEK0w_NmEoCqhHI,1184
+botocore/data/cloudfront/2015-04-17/paginators-1.json,sha256=I7u4h1MFflBvFJemcrLHSn7uOrEeDFc7ecWGqwDxGF8,1126
+botocore/data/cloudfront/2015-04-17/service-2.json,sha256=OJbOdEYaGCEcGUoGaEvTb0Il4dCf9sQ8ZAvHpsCtOFs,150842
+botocore/data/cloudfront/2015-04-17/waiters-2.json,sha256=jzREqDxfIg2KbmPYOmDoYgDvy8mWAEK0w_NmEoCqhHI,1184
+botocore/data/cloudfront/2015-07-27/paginators-1.json,sha256=I7u4h1MFflBvFJemcrLHSn7uOrEeDFc7ecWGqwDxGF8,1126
+botocore/data/cloudfront/2015-07-27/service-2.json,sha256=a7NsU2TTqmBpbWyEQ1HPaIzTKpErk8Vh2jTL8bnAiQU,154636
+botocore/data/cloudfront/2015-07-27/waiters-2.json,sha256=jzREqDxfIg2KbmPYOmDoYgDvy8mWAEK0w_NmEoCqhHI,1184
+botocore/data/cloudfront/2015-09-17/paginators-1.json,sha256=I7u4h1MFflBvFJemcrLHSn7uOrEeDFc7ecWGqwDxGF8,1126
+botocore/data/cloudfront/2015-09-17/service-2.json,sha256=DkSmH6crv4IoVJ_aqqnABOsD9P5YLabp8PmkrT_pQyI,130784
+botocore/data/cloudfront/2015-09-17/waiters-2.json,sha256=jzREqDxfIg2KbmPYOmDoYgDvy8mWAEK0w_NmEoCqhHI,1184
+botocore/data/cloudfront/2016-01-13/paginators-1.json,sha256=I7u4h1MFflBvFJemcrLHSn7uOrEeDFc7ecWGqwDxGF8,1126
+botocore/data/cloudfront/2016-01-13/service-2.json,sha256=Ej9MObIm0JhxshQMQnOwYJ4vB0OaIt_WNPPUs4w1jRw,133880
+botocore/data/cloudfront/2016-01-13/waiters-2.json,sha256=jzREqDxfIg2KbmPYOmDoYgDvy8mWAEK0w_NmEoCqhHI,1184
+botocore/data/cloudfront/2016-01-28/paginators-1.json,sha256=I7u4h1MFflBvFJemcrLHSn7uOrEeDFc7ecWGqwDxGF8,1126
+botocore/data/cloudfront/2016-01-28/service-2.json,sha256=YovRuitkg8V3QowW867Z4ADqMFkZZvH2xhk6NWg3tNY,133424
+botocore/data/cloudfront/2016-01-28/waiters-2.json,sha256=jzREqDxfIg2KbmPYOmDoYgDvy8mWAEK0w_NmEoCqhHI,1184
+botocore/data/cloudfront/2016-08-01/paginators-1.json,sha256=I7u4h1MFflBvFJemcrLHSn7uOrEeDFc7ecWGqwDxGF8,1126
+botocore/data/cloudfront/2016-08-01/service-2.json,sha256=gyNH67busvLNPkXdPe8vT_R1_7kaOFrehY1vZTQ-m0k,148384
+botocore/data/cloudfront/2016-08-01/waiters-2.json,sha256=jzREqDxfIg2KbmPYOmDoYgDvy8mWAEK0w_NmEoCqhHI,1184
+botocore/data/cloudfront/2016-08-20/paginators-1.json,sha256=I7u4h1MFflBvFJemcrLHSn7uOrEeDFc7ecWGqwDxGF8,1126
+botocore/data/cloudfront/2016-08-20/service-2.json,sha256=A_bOItD3n7BIUEUCChsppdZF53QmZTh6dr7u-GQsV70,150982
+botocore/data/cloudfront/2016-08-20/waiters-2.json,sha256=jzREqDxfIg2KbmPYOmDoYgDvy8mWAEK0w_NmEoCqhHI,1184
+botocore/data/cloudfront/2016-09-07/paginators-1.json,sha256=I7u4h1MFflBvFJemcrLHSn7uOrEeDFc7ecWGqwDxGF8,1126
+botocore/data/cloudfront/2016-09-07/service-2.json,sha256=hex7sCwsKiyCriVT6wX-zlX5dIbEFq3s0VYoaLasdYo,151766
+botocore/data/cloudfront/2016-09-07/waiters-2.json,sha256=jzREqDxfIg2KbmPYOmDoYgDvy8mWAEK0w_NmEoCqhHI,1184
+botocore/data/cloudfront/2016-09-29/paginators-1.json,sha256=I7u4h1MFflBvFJemcrLHSn7uOrEeDFc7ecWGqwDxGF8,1126
+botocore/data/cloudfront/2016-09-29/service-2.json,sha256=65iFTwzLzBiLeeiq6DlM_xPa5Rf0KXbJw6Lm6Gx6zZ0,194806
+botocore/data/cloudfront/2016-09-29/waiters-2.json,sha256=jzREqDxfIg2KbmPYOmDoYgDvy8mWAEK0w_NmEoCqhHI,1184
+botocore/data/cloudfront/2016-11-25/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/cloudfront/2016-11-25/paginators-1.json,sha256=I7u4h1MFflBvFJemcrLHSn7uOrEeDFc7ecWGqwDxGF8,1126
+botocore/data/cloudfront/2016-11-25/service-2.json,sha256=C9ZmNpON37wQO9z2ybGc_xp8bpXvuCf8FIyLQezg4yQ,197970
+botocore/data/cloudfront/2016-11-25/waiters-2.json,sha256=jzREqDxfIg2KbmPYOmDoYgDvy8mWAEK0w_NmEoCqhHI,1184
+botocore/data/cloudfront/2017-03-25/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/cloudfront/2017-03-25/paginators-1.json,sha256=I7u4h1MFflBvFJemcrLHSn7uOrEeDFc7ecWGqwDxGF8,1126
+botocore/data/cloudfront/2017-03-25/service-2.json,sha256=FYENqjVgG09p7vwNe24ENePH9hTZdDXScd4INlTblAo,206093
+botocore/data/cloudfront/2017-03-25/waiters-2.json,sha256=JboqzXjlni8p-wiVKBz1jRj-mFpkryqueCgI1hD7WPA,1184
+botocore/data/cloudfront/2017-10-30/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/cloudfront/2017-10-30/paginators-1.json,sha256=I7u4h1MFflBvFJemcrLHSn7uOrEeDFc7ecWGqwDxGF8,1126
+botocore/data/cloudfront/2017-10-30/service-2.json,sha256=mDjyofrasyhvEUbC9THtbQWV9xQ2qVXneayrak1XCwo,264716
+botocore/data/cloudfront/2017-10-30/waiters-2.json,sha256=JboqzXjlni8p-wiVKBz1jRj-mFpkryqueCgI1hD7WPA,1184
+botocore/data/cloudfront/2018-06-18/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/cloudfront/2018-06-18/paginators-1.json,sha256=I7u4h1MFflBvFJemcrLHSn7uOrEeDFc7ecWGqwDxGF8,1126
+botocore/data/cloudfront/2018-06-18/service-2.json,sha256=NuGTf1rjaEfCNkrQ4kN5Y78lIkNfiDc2C0K1mDPFrm0,267331
+botocore/data/cloudfront/2018-06-18/waiters-2.json,sha256=JboqzXjlni8p-wiVKBz1jRj-mFpkryqueCgI1hD7WPA,1184
+botocore/data/cloudfront/2018-11-05/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/cloudfront/2018-11-05/paginators-1.json,sha256=I7u4h1MFflBvFJemcrLHSn7uOrEeDFc7ecWGqwDxGF8,1126
+botocore/data/cloudfront/2018-11-05/service-2.json,sha256=y--2DnK94Lb7SO65PgueFvMGYY_w6cmzmzHgMnhaxi0,273141
+botocore/data/cloudfront/2018-11-05/waiters-2.json,sha256=JboqzXjlni8p-wiVKBz1jRj-mFpkryqueCgI1hD7WPA,1184
+botocore/data/cloudfront/2019-03-26/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/cloudfront/2019-03-26/paginators-1.json,sha256=I7u4h1MFflBvFJemcrLHSn7uOrEeDFc7ecWGqwDxGF8,1126
+botocore/data/cloudfront/2019-03-26/service-2.json,sha256=JkCRkXBcIpbcLpNmld_AyiCjeDk6_TILPjIT8m3y_Ek,281937
+botocore/data/cloudfront/2019-03-26/waiters-2.json,sha256=qt7oBhQ-B52-397Q88q0EJoFpDWuOZM7CZpaFhX1xgM,1184
+botocore/data/cloudfront/2020-05-31/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/cloudfront/2020-05-31/paginators-1.json,sha256=I7u4h1MFflBvFJemcrLHSn7uOrEeDFc7ecWGqwDxGF8,1126
+botocore/data/cloudfront/2020-05-31/service-2.json,sha256=mN1GVrnDsMvhklR5dF2oDGEP3pecXS29PeIScBLsInc,461478
+botocore/data/cloudfront/2020-05-31/waiters-2.json,sha256=qt7oBhQ-B52-397Q88q0EJoFpDWuOZM7CZpaFhX1xgM,1184
+botocore/data/cloudhsm/2014-05-30/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/cloudhsm/2014-05-30/paginators-1.json,sha256=pe-X06JkfqlENEk-25nE_w_q3QQXkdMnQ5cOG1NPi6E,409
+botocore/data/cloudhsm/2014-05-30/service-2.json,sha256=q7r5DXA4jVuS-IiTT-TQPIjF15TsIZd63ndjPNToB-U,54694
+botocore/data/cloudhsmv2/2017-04-28/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/cloudhsmv2/2017-04-28/paginators-1.json,sha256=VvCnjrdoGz3Lb-gi5YSOAhhAHzB50i0vIks0GaA2nS0,512
+botocore/data/cloudhsmv2/2017-04-28/service-2.json,sha256=Hveu65bxxfMtFuwowx1yaNADOtDfrw7RqPrhRKOdQDQ,44006
+botocore/data/cloudsearch/2011-02-01/service-2.json,sha256=kj2flFc1nvY1esVU0Nfogz6XKNbPPWDPjfdYFb6a6xs,84791
+botocore/data/cloudsearch/2013-01-01/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/cloudsearch/2013-01-01/service-2.json,sha256=_Eq9RHXw5Kbik4FRtnSCWhIxjU7eYfWUyS9PgtDOozM,96274
+botocore/data/cloudsearchdomain/2013-01-01/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/cloudsearchdomain/2013-01-01/service-2.json,sha256=35-MVRfJCSogOlXaE3cqiuRsrihHiCmWQSI4a5ibtuE,43643
+botocore/data/cloudtrail/2013-11-01/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/cloudtrail/2013-11-01/paginators-1.json,sha256=ggKtbA2YkG5iizUUn6ld5ULNKCi95euhJbuMD4T30Us,578
+botocore/data/cloudtrail/2013-11-01/service-2.json,sha256=XSPZMF3_ZiuBYYFlJCeznZDTC4Ea4Qc_-EqHsY6Asfo,109504
+botocore/data/cloudwatch/2010-08-01/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/cloudwatch/2010-08-01/paginators-1.json,sha256=mmffksIbGFhQWQmdQMzBsqe1ljv6izWb6PKIPt44DOk,896
+botocore/data/cloudwatch/2010-08-01/service-2.json,sha256=V4tH0DAEuLOSuFI8OrQ_fi91PypDY8SeQ5Ii5dB-5i0,180385
+botocore/data/cloudwatch/2010-08-01/waiters-2.json,sha256=MloXSzqs1ZkzyWAP2NrkVyNkIE63Hbk24II7PCuUxl0,644
+botocore/data/codeartifact/2018-09-22/paginators-1.json,sha256=iuFF8H-ApMcRKCQk1_8RBZOcVbTYP5DlGFs3rR6fVss,1036
+botocore/data/codeartifact/2018-09-22/paginators-1.sdk-extras.json,sha256=kNVDIOe3C5yL0xTWSrW2xDchpno4Xozz60DY53uxNEA,444
+botocore/data/codeartifact/2018-09-22/service-2.json,sha256=JoFVg6rtVRxwgZ-b62xNbLPVeRDBcJ-4hPaN80NJ5Sg,146972
+botocore/data/codebuild/2016-10-06/examples-1.json,sha256=_-tVq2XM1YDuzv78VwIj_WjyXHu-yrIPyxzTtTbdFJ8,9778
+botocore/data/codebuild/2016-10-06/paginators-1.json,sha256=bbKaGCdRO-JDOzUHKIVi1sEU9h8xDj6Yso9CNiszoRA,1932
+botocore/data/codebuild/2016-10-06/service-2.json,sha256=03JxBYu1OG2CDjVD2rYfRgMUwFvDlP1zJxwHPHGLGqg,225093
+botocore/data/codecommit/2015-04-13/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/codecommit/2015-04-13/paginators-1.json,sha256=2w92BpzUce0gSVEaZH0la2r8ZT_MDtxoLc6RG-dpln4,1206
+botocore/data/codecommit/2015-04-13/service-2.json,sha256=czk9rKGK_KNTbYPbEqUvbnF_YmqpgseKD5dy4jICAuc,342963
+botocore/data/codedeploy/2014-10-06/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/codedeploy/2014-10-06/paginators-1.json,sha256=riyMuhePXvzjx3lAoHiIaOi0U6v2lCVd65qX4UWPoxo,1313
+botocore/data/codedeploy/2014-10-06/service-2.json,sha256=EPrNHfci7tkoF-g3fbekaNpDzH35UrF3zWKIUd6D68c,219565
+botocore/data/codedeploy/2014-10-06/waiters-2.json,sha256=OARBxBeZTRUui1WztkVtUn7Q2lAh3-Bemczgk455MGQ,662
+botocore/data/codeguru-reviewer/2019-09-19/paginators-1.json,sha256=0bkbq9IDAtNTQOShBQuJVNtb8xgFFUYNdzOcl3ri_DM,223
+botocore/data/codeguru-reviewer/2019-09-19/service-2.json,sha256=wz0arbY-h0tHpbjD5mbx1ujrzUUC-kUndAX-xxpC_WI,86763
+botocore/data/codeguru-reviewer/2019-09-19/waiters-2.json,sha256=EQFLlkzQaBRQud3fWQ_cc6IfcJQKiEKtb5spPRUXoiM,1351
+botocore/data/codeguruprofiler/2019-07-18/paginators-1.json,sha256=d7DXbQ-GmZLDQRjjpAO-vzvm7OEA-pNKfPUyA9rgaag,195
+botocore/data/codeguruprofiler/2019-07-18/service-2.json,sha256=bwtjGiewXMcWG-dNWGG8x938ZpHzoAEqvcp6IciaH7c,103037
+botocore/data/codepipeline/2015-07-09/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/codepipeline/2015-07-09/paginators-1.json,sha256=ByCPPtDklOQb3pknB6dm-lSbZmhKLshJq1XF0BZInYw,1025
+botocore/data/codepipeline/2015-07-09/service-2.json,sha256=Jz723PNXMR-FWmBcNT15uP3CwPSDNnIPyCeGoWuMxr4,172763
+botocore/data/codestar/2017-04-19/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/codestar/2017-04-19/paginators-1.json,sha256=3r-icSh_oPAVyAdyLoPtkZehAQXuKwEJJan-PFrl6N4,689
+botocore/data/codestar/2017-04-19/service-2.json,sha256=ENniYvtGiDRcQyK8hpXtf_qG0luuNjgoOMXX4mHgvzs,55261
+botocore/data/codestar-connections/2019-12-01/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/codestar-connections/2019-12-01/service-2.json,sha256=ryruHjOw46hl0C1xeZD033sYgB1zXA0GHkbcxFSzP0Q,29154
+botocore/data/codestar-notifications/2019-10-15/paginators-1.json,sha256=bD6rBB54kEd5ns5mM8KWWE2Gfs6rNkRWTLyvKHai9OA,531
+botocore/data/codestar-notifications/2019-10-15/service-2.json,sha256=sKPGWpYdr1mj_NjQ36sjD9CMVijVMDrn5YfP4LpmVyY,36505
+botocore/data/cognito-identity/2014-06-30/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/cognito-identity/2014-06-30/paginators-1.json,sha256=iRnVNYNjXj4riBW6sjwmAF2p9fSX2MkfoM5W_Y9_tkE,197
+botocore/data/cognito-identity/2014-06-30/service-2.json,sha256=0krj0ddhBUtpv5kfLixmV7IWsrZLVv0W1bnw4M3MZx0,69663
+botocore/data/cognito-idp/2016-04-18/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/cognito-idp/2016-04-18/paginators-1.json,sha256=RdlZ6K9kobwkGd7v3X15eeU_1MTpNNWwHD35RwB4keA,1527
+botocore/data/cognito-idp/2016-04-18/service-2.json,sha256=D5BfT4VvzeDJucT9EoYg9-GmKjmHMmtrq76mZMFy758,418432
+botocore/data/cognito-sync/2014-06-30/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/cognito-sync/2014-06-30/service-2.json,sha256=VJyjBbC4UshbTvxbeCubZcOgAWQJZTXsgT505b5835Q,59424
+botocore/data/comprehend/2017-11-27/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/comprehend/2017-11-27/paginators-1.json,sha256=R3Or-qTw53Del1P4h-pvPe3y4Fh8y07ilf4nrXdxEl8,1649
+botocore/data/comprehend/2017-11-27/service-2.json,sha256=dmZ444Wf_ne1YsUxus5pq0X_ZJ2TxZTKLyTJi7OhKuE,229227
+botocore/data/comprehendmedical/2018-10-30/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/comprehendmedical/2018-10-30/service-2.json,sha256=ZjfNMiImV7KNBArFlesMqMAjxFHX9qCrkH7xCSG6yBc,73668
+botocore/data/compute-optimizer/2019-11-01/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/compute-optimizer/2019-11-01/service-2.json,sha256=vfCQ6sdfYy51m08U6Ly8J0uJ4AU8_3nDsn9ODa1qQXg,136641
+botocore/data/config/2014-11-12/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/config/2014-11-12/paginators-1.json,sha256=WaryYtWiZ6hzuvw3zAxXJDYAqITfe2Mn3bjnEEv05j0,5832
+botocore/data/config/2014-11-12/service-2.json,sha256=QA_gvzYOSTSFAZe-A78qZ7bditWTemGXAaFYUhP3SZo,342055
+botocore/data/connect/2017-08-08/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/connect/2017-08-08/paginators-1.json,sha256=p55L5p1N8K3wmuGjtzmaSLKSW0ZpTF67aZ_umhRCFDc,4121
+botocore/data/connect/2017-08-08/service-2.json,sha256=u3DirhW9E6H7rAHzTGGlS1EVrXr_xFE5MZ5Zf0xAtAk,280662
+botocore/data/connect-contact-lens/2020-08-21/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/connect-contact-lens/2020-08-21/service-2.json,sha256=ozEIEhokNmwtSFo13D9ux5gNjRkhmuNbDiTQLj28Z4o,11742
+botocore/data/connectparticipant/2018-09-07/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/connectparticipant/2018-09-07/service-2.json,sha256=s3LazrlPTuQuKuR0qmwV32jf0KYIfkIIS91LP28HUfQ,29113
+botocore/data/cur/2017-01-06/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/cur/2017-01-06/paginators-1.json,sha256=svrnnDA-WDB_TSjNDhx_3bXmieM10GBn4TRFNlZNPHg,209
+botocore/data/cur/2017-01-06/service-2.json,sha256=cI3EFfaS9gXhutUp0BmuhB_yAlJEjzxTRrBY894XahU,12610
+botocore/data/customer-profiles/2020-08-15/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/customer-profiles/2020-08-15/service-2.json,sha256=ZJ_jGpSefUnICOs1BVZ8TcDxO6J3lEP2R_LRMLOjFN4,117183
+botocore/data/databrew/2017-07-25/paginators-1.json,sha256=3lpwrzV1qFwugiBSFLsJBX3PDFWAjukKC3M_dy4SARE,1154
+botocore/data/databrew/2017-07-25/service-2.json,sha256=j2pq9h8Shty0vCnDsyz4tIpKbaxvOatxORJBSkpIKEE,128580
+botocore/data/dataexchange/2017-07-25/paginators-1.json,sha256=4t3KQ_GF_EQ51VMYR6sDdXG7ZK0VgEQ8NaUCBi_vbxA,678
+botocore/data/dataexchange/2017-07-25/service-2.json,sha256=dA4ie6DisS2Z7Nav55o7RzJTYQSnkIBD5vdwArZO7es,92870
+botocore/data/datapipeline/2012-10-29/paginators-1.json,sha256=JdrA68aI3fnPWh2_ecOxC5DtcFz4OkiO8GvsBkzOgUw,554
+botocore/data/datapipeline/2012-10-29/service-2.json,sha256=3jYD8V81pS4OuslouRvtKaMMXYAgU4BWMxXu07nR1zM,59913
+botocore/data/datasync/2018-11-09/paginators-1.json,sha256=OTxZXjoijv0y3dCqSgmbXidkpsOxdvViwEvduFFVp7g,842
+botocore/data/datasync/2018-11-09/service-2.json,sha256=vsdqxpUYGGYZAwSaxUfc-mG4vx2qw8_g-HLwNYmRviQ,126990
+botocore/data/dax/2017-04-19/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/dax/2017-04-19/paginators-1.json,sha256=OOhBXs1nXQbwQO2dybisWoE6M5Z7WrPyQUCAyGgfEiA,1175
+botocore/data/dax/2017-04-19/service-2.json,sha256=bgPhlQLT-gEcCcqIpWomSNdv0CR_33a9RjGm3ZDpCC4,68163
+botocore/data/detective/2018-10-26/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/detective/2018-10-26/service-2.json,sha256=KiZhP3_tAZzjOLmzPRpCCqB4lRx8bIbbLVQRaC1GSgA,37904
+botocore/data/devicefarm/2015-06-23/examples-1.json,sha256=wdpt38a_TwMz2oW8PJcJpYcPD9GBkM_IhNzaseKTgGA,42737
+botocore/data/devicefarm/2015-06-23/paginators-1.json,sha256=dsBpWrsUYvlphjtWSswDS3BYoWFzpq3sqwpOK4ER5vA,2870
+botocore/data/devicefarm/2015-06-23/service-2.json,sha256=EZnl6dE9i2Kjp4ShHEfqmBir8ekD9UIc52VXUEvpT0s,236537
+botocore/data/devops-guru/2020-12-01/paginators-1.json,sha256=q0s5fuRuNF_ZYIZbTqqLO2FPVBL7i1_VoRglD6GcnkI,1862
+botocore/data/devops-guru/2020-12-01/service-2.json,sha256=vmjW4z_77TVvHlatmJoMi5Nr_s9E3cMQ6Gt7LTwVLd4,103555
+botocore/data/directconnect/2012-10-25/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/directconnect/2012-10-25/paginators-1.json,sha256=xeMiI713ZrL0L4eTYXOT8iXsmsiguus1SZdRE7OWYCo,643
+botocore/data/directconnect/2012-10-25/service-2.json,sha256=1WOiU2cyzG-43DSbeflad5IpvTXqUaMB7HJod40dnOo,167256
+botocore/data/discovery/2015-11-01/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/discovery/2015-11-01/paginators-1.json,sha256=UqiJ6bQ62X3yZhhuMCqlJXNc5bhmH7qG0HV706ysxSo,1055
+botocore/data/discovery/2015-11-01/service-2.json,sha256=VSPnP0qtFKlx-Gxzu3ZvX85kN8L-FRJSR_SWclvP48U,88773
+botocore/data/dlm/2018-01-12/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/dlm/2018-01-12/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/dlm/2018-01-12/service-2.json,sha256=AAXKNhB5VBIEV8FhtX38fdx2mnwqxP_j0VAs8ULS9vU,41620
+botocore/data/dms/2016-01-01/examples-1.json,sha256=iCQo3bJNgMHcB0zQCIqDjqgCZO_oNnwEGvjpz05EN04,35109
+botocore/data/dms/2016-01-01/paginators-1.json,sha256=Y3SZaT-h8ftXIrqxEa-ITfC6Bin1V9vBGh6xMm3zXXQ,2332
+botocore/data/dms/2016-01-01/service-2.json,sha256=_xJwbIiNHxwj8hl_BbRBwAWAIo7Nt6lUBU_jxXlbKec,320028
+botocore/data/dms/2016-01-01/waiters-2.json,sha256=q_cVn5QLry8e5ZZquSwUs7tJo5LQnnQfswzEpsF45F8,11781
+botocore/data/docdb/2014-10-31/paginators-1.json,sha256=Lc8FwQvudtu-XOnFfOh-qM6pOrsnlRajew2PKY6ZtZk,2318
+botocore/data/docdb/2014-10-31/service-2.json,sha256=598KICwyVBWI4-XD3iAAqpKT5QxY5VC45eDgyAB4-iI,225440
+botocore/data/docdb/2014-10-31/service-2.sdk-extras.json,sha256=U_PgxwtPhWl8ZwLlxYiXD4ZQ4iy605x4miYT38nMvnM,561
+botocore/data/docdb/2014-10-31/waiters-2.json,sha256=8bYoMOMz2Tb0aGdtlPhvlMel075q1n7BRnCpQ-Bcc1c,2398
+botocore/data/ds/2015-04-16/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/ds/2015-04-16/paginators-1.json,sha256=SV69o2USVtkPd6dvoxW0SO48tNMG78YiLzGiWrq59es,1551
+botocore/data/ds/2015-04-16/service-2.json,sha256=PzifaOqzu1uVTfq_NDGDutDycHeCOeE4HyezHxOzfno,179049
+botocore/data/dynamodb/2012-08-10/examples-1.json,sha256=cZ5PBzQtSA9b1ZN39RffvUM54Tqf_h5-AQA7zSBVK4Q,16947
+botocore/data/dynamodb/2012-08-10/paginators-1.json,sha256=U84oi-heJVXxjHM1enODt6qI5J117zh0YoM4BHwZZ18,1103
+botocore/data/dynamodb/2012-08-10/service-2.json,sha256=jOgXUk0pK5fCZBAumTHCqj3Lm0EOl2cK7VP8oPWtGCw,403534
+botocore/data/dynamodb/2012-08-10/waiters-2.json,sha256=G_iaXR3xZP3M8lpMR1olm2p-EvK6InTidNZnUUqPL70,727
+botocore/data/dynamodbstreams/2012-08-10/examples-1.json,sha256=LF2m4pmyTs0G8NR6AhmybL0E2F9WHfnbxz5q31DtjAg,7693
+botocore/data/dynamodbstreams/2012-08-10/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/dynamodbstreams/2012-08-10/service-2.json,sha256=uIcDIAxhioEqJaChjfVD4fE3Jh7S0SVv-e8NqOKLKqU,32516
+botocore/data/ebs/2019-11-02/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/ebs/2019-11-02/service-2.json,sha256=XE5YNey5jw1jHO6E8fH7w89XF1HadKkTplnfDQqCDng,34016
+botocore/data/ec2/2014-09-01/paginators-1.json,sha256=XpA8TZvmBGGraKlRGE-U-YeLIBN1ZvbcyE8Wh8uuIDM,1271
+botocore/data/ec2/2014-09-01/service-2.json,sha256=g3DViTT4mmGeKxoN0bqbl-0AndJID1vh5iOnhJcATlk,539923
+botocore/data/ec2/2014-09-01/waiters-2.json,sha256=HG1xDu-8ICfvY1n_YV9i0ylufepFUYmDd0dLkQxwKuY,8548
+botocore/data/ec2/2014-10-01/paginators-1.json,sha256=Uns0O6V6ZIXI09iZdCY77w-CBHbes_siW5vFU-bpE1w,1439
+botocore/data/ec2/2014-10-01/service-2.json,sha256=SJQZUwN8Poi1qZjoKekkUDZMzxVgh1JEezXu85AuPX4,566499
+botocore/data/ec2/2014-10-01/waiters-2.json,sha256=UDhKYGIrItEq2e56vKMh6yLdn_YfsfTYsmankCjsR3k,11040
+botocore/data/ec2/2015-03-01/paginators-1.json,sha256=Uns0O6V6ZIXI09iZdCY77w-CBHbes_siW5vFU-bpE1w,1439
+botocore/data/ec2/2015-03-01/service-2.json,sha256=yg7MGHYAL-yI2xA5dZ1_-FyPWLh_C8ZvRJfV0ZSW-Z4,588390
+botocore/data/ec2/2015-03-01/waiters-2.json,sha256=UDhKYGIrItEq2e56vKMh6yLdn_YfsfTYsmankCjsR3k,11040
+botocore/data/ec2/2015-04-15/paginators-1.json,sha256=Uns0O6V6ZIXI09iZdCY77w-CBHbes_siW5vFU-bpE1w,1439
+botocore/data/ec2/2015-04-15/service-2.json,sha256=GgdUgnyrx65mPXWHdUX1CxBrdQkUVuQkIFufN6tIHiA,715324
+botocore/data/ec2/2015-04-15/waiters-2.json,sha256=1iUHJTDrTvb5_HbDMbVVzC4Ex1S97GZl-tnP70MaDEY,11546
+botocore/data/ec2/2015-10-01/paginators-1.json,sha256=Vom5HeCc0UgDyEyYKw3piztolJ3IIxz_tIhEX61TvM8,1793
+botocore/data/ec2/2015-10-01/service-2.json,sha256=dmQdClL90tFYkUzQeHRAWyb5Ae_YsUV2urf5lYe9Rxs,847080
+botocore/data/ec2/2015-10-01/waiters-2.json,sha256=8sXo9xWtm1IZMKcm9Ne42ha-9XDTVP_fZUejgA1tw3E,14823
+botocore/data/ec2/2016-04-01/paginators-1.json,sha256=Vom5HeCc0UgDyEyYKw3piztolJ3IIxz_tIhEX61TvM8,1793
+botocore/data/ec2/2016-04-01/service-2.json,sha256=YGX9U8JvAjWHLZnONpuJFyNJ5sMEilCiu9A8oPJqA1M,878250
+botocore/data/ec2/2016-04-01/waiters-2.json,sha256=ZjSjdDS-pisO_MoRjsulXMshrcU5qNJd4m1bOBQ9mKQ,15259
+botocore/data/ec2/2016-09-15/examples-1.json,sha256=Dv18Ql8faOeBMQlenC7HBzlgrNQXNeokvLsyFf6Q_yY,110174
+botocore/data/ec2/2016-09-15/paginators-1.json,sha256=Vom5HeCc0UgDyEyYKw3piztolJ3IIxz_tIhEX61TvM8,1793
+botocore/data/ec2/2016-09-15/service-2.json,sha256=40e47h21ZRjZDx_8gm3nUT8Lr9G31mnyADMBeR-EPok,891280
+botocore/data/ec2/2016-09-15/waiters-2.json,sha256=1ZtptOEInU4p-4ZQFXbC5lxZ8XNsseki72qxLO2dX4M,14875
+botocore/data/ec2/2016-11-15/examples-1.json,sha256=5w5qjgsBwMxuBU2lig7azfh5Gs5no5DAtVb_DhNHkUM,147951
+botocore/data/ec2/2016-11-15/paginators-1.json,sha256=CZAVryTUIHj9egGLnlttzgpv0V6QxwDlEee822jOTQE,19045
+botocore/data/ec2/2016-11-15/service-2.json,sha256=88iMCIeZFIKz2rydqiGS8-hhfQd8GRuKozcufnbkPPQ,2146959
+botocore/data/ec2/2016-11-15/waiters-2.json,sha256=EWIl9L4Ls9LYUc0OrNzsM1N7fjSSr7ctAFLzi6ouJjU,16156
+botocore/data/ec2-instance-connect/2018-04-02/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/ec2-instance-connect/2018-04-02/service-2.json,sha256=9F5sHym93CRixSrIg_blTgubvYKD_ueG-alOQ2iqF7Q,8831
+botocore/data/ecr/2015-09-21/examples-1.json,sha256=cFx-qAY3SfNXEHCMe7I9RTWxV-Jtlo8moRHGDZ5UCAM,6603
+botocore/data/ecr/2015-09-21/paginators-1.json,sha256=gjYaRhycm_Qrw4cny2Xqh8-WtuZp4IqY-Iwmgu1LqV4,1216
+botocore/data/ecr/2015-09-21/service-2.json,sha256=di3G3Q7pFAzC7l-U4MOlyg8SMPpeL5bGoUsbSPdmSe0,116588
+botocore/data/ecr/2015-09-21/waiters-2.json,sha256=j4QQUhn_PYN87gWoaY1j1RR-lv7KjzPItwwn1WMYkB8,1482
+botocore/data/ecr-public/2020-10-30/paginators-1.json,sha256=EEmON1DSCdAARd-o_S_RiZ6rXcWO8AZbYlx4UMyZEGE,711
+botocore/data/ecr-public/2020-10-30/service-2.json,sha256=yQQxQHmBQyx--YPVPh3EVSN4DIylb_9X_2jn41nMyNk,81582
+botocore/data/ecs/2014-11-13/examples-1.json,sha256=Os-F9xud11tWbiSWvbMYs3Ol-Rw2gv4jNDC3BaWvp5c,27987
+botocore/data/ecs/2014-11-13/paginators-1.json,sha256=QvX9UjcLte0AnWIxWdMxODwyrDqqIGPFiZGS8pGuf3M,1389
+botocore/data/ecs/2014-11-13/service-2.json,sha256=pL-5S-XGvnCmbHOwCi3h8WCyuP7SEpMNkPMClXvFK3Q,455198
+botocore/data/ecs/2014-11-13/waiters-2.json,sha256=F4d_a7_xVQIib5MpmSitTQBxupfL0Z9NqxOibIA6Igs,2246
+botocore/data/efs/2015-02-01/examples-1.json,sha256=u9MZsZ8RTgkK9dU2FxwGdPpvOE96O99GXVcokLll-7k,8699
+botocore/data/efs/2015-02-01/paginators-1.json,sha256=Aa6anup_5bXZxDamNHHtkSv0qhzisc5sxGsZQxI71u8,517
+botocore/data/efs/2015-02-01/service-2.json,sha256=IEP5gPRop0FnpiiXpSmmiRf0Jg-_mV8S_TlNBOhkv2g,106905
+botocore/data/eks/2017-11-01/examples-1.json,sha256=4fN72FfOaomnSPd9gITeUa4DiewLLqONMMdqXN9SGb4,4474
+botocore/data/eks/2017-11-01/paginators-1.json,sha256=QONxuysFNl5CgMkvRa6YU6aExgdfFRCCJzztp6B0aTo,1214
+botocore/data/eks/2017-11-01/service-2.json,sha256=DcMiDB6whFbAqX3AnQtPyMAYuccZZGPkW7KRPmqTMck,157280
+botocore/data/eks/2017-11-01/service-2.sdk-extras.json,sha256=pmn0V8Su5NiqW8Y3X-IBtzD1Bz_JANtKgU4fsr-i_bM,107
+botocore/data/eks/2017-11-01/waiters-2.json,sha256=vQVgG9hljw62gDZpDpvLBCa35LFfmnznIaeY2xAUvPk,4046
+botocore/data/elastic-inference/2017-07-25/paginators-1.json,sha256=t1OswldbiUvR3fUJS_-AbIukdJ-LmbdPeYOPJ4m8jIw,201
+botocore/data/elastic-inference/2017-07-25/service-2.json,sha256=Xq1xNSGCLfD56xCvESejbMNWN63GbdOYgeAYqzQ2X10,17450
+botocore/data/elasticache/2014-09-30/paginators-1.json,sha256=YkZxwpICpidoDrIimyr0yFGYg_T0emkSfhlNfPOfVMA,2171
+botocore/data/elasticache/2014-09-30/service-2.json,sha256=g4xh0vIu6yGt3ilzFkPVilbQJQKiJhCrvnUn3gJbyQ0,223047
+botocore/data/elasticache/2014-09-30/waiters-2.json,sha256=mIVMN9SNrvDJ2iW_uXAA-N5ptxGmDw964Sv89zKAs-g,3719
+botocore/data/elasticache/2015-02-02/examples-1.json,sha256=iWpOlje8s2EFHlnYNgjHX2DpC7teIKmeA7f6e51u00I,111590
+botocore/data/elasticache/2015-02-02/paginators-1.json,sha256=rJYWolohFencd77Rs_MNM7LfoohhClFhbVCbf1hTRvo,3021
+botocore/data/elasticache/2015-02-02/service-2.json,sha256=99nonbCPEBuq7urVE3K8vwkzLQwC7i0KBUNjlJW9u0w,366055
+botocore/data/elasticache/2015-02-02/waiters-2.json,sha256=N6NTYHqUoktWaIjapl3RDepPknxNlIbb8a0wnS0HB_E,5118
+botocore/data/elasticbeanstalk/2010-12-01/examples-1.json,sha256=EuEpZEobhGxWPfRosGTFNWYs8zRFVtkQtLXD8M_5fm0,37449
+botocore/data/elasticbeanstalk/2010-12-01/paginators-1.json,sha256=qM8N07fmdTtnZBXFiyFeW31EjqjmDWb-viwc19UyF5o,934
+botocore/data/elasticbeanstalk/2010-12-01/service-2.json,sha256=Yp3gaSsOSwMBbAhJJbGbmnFsMEKdSyx-Q50g4C77QdU,194813
+botocore/data/elasticbeanstalk/2010-12-01/waiters-2.json,sha256=nS1qW0cVQpjnVhpONryvuFWWW4JwJYSW82ooLigmCu0,1463
+botocore/data/elastictranscoder/2012-09-25/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/elastictranscoder/2012-09-25/paginators-1.json,sha256=xHyxPQTUGKK7Vj_z_1E46xAI6BwZC8IvDFuZ3DXD4BY,559
+botocore/data/elastictranscoder/2012-09-25/service-2.json,sha256=rEuZOQoR0ZsOxhfX8KT4SHdRHUeU5FBp7REdjj_WODo,201124
+botocore/data/elastictranscoder/2012-09-25/waiters-2.json,sha256=ePD8qEyUXJMnroVmvrubritF3re95gdBAETq6do-Uh8,613
+botocore/data/elb/2012-06-01/examples-1.json,sha256=NE6HcGypE87pOfvGkxKi_QD-UJ_qWHG2_Q9ynk6V9xA,30446
+botocore/data/elb/2012-06-01/paginators-1.json,sha256=udADJnjh3b-REUTKNlC9yYaRI6aOiXfx3demJA1Msxg,373
+botocore/data/elb/2012-06-01/service-2.json,sha256=AbHUQ3ofl549SmiF-ZykzmLcxZrh7RTeWj1OYHsn1wc,97940
+botocore/data/elb/2012-06-01/waiters-2.json,sha256=9NjB-6qbZ5pHxElH90T-4YPEBdXHCA9QHdcF96gTbP0,1527
+botocore/data/elbv2/2015-12-01/examples-1.json,sha256=4Qxoz28hEDW8u1O7iGLKnH9NNb7Po5qybLFQtvtR7ss,44281
+botocore/data/elbv2/2015-12-01/paginators-1.json,sha256=wtIfS6A6vl7MQPq0zkaEk9BUn8YRov0XE-FywxEhMuE,1198
+botocore/data/elbv2/2015-12-01/service-2.json,sha256=CCmS5FpGoso_i_wwRB9fg4TMdd-4g4I7DDmo_fWodGA,158477
+botocore/data/elbv2/2015-12-01/waiters-2.json,sha256=k-g2ypXqfbW4ktwuK1iVKpApIncFhOPemhbs7pf7cW8,2371
+botocore/data/emr/2009-03-31/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/emr/2009-03-31/paginators-1.json,sha256=4EzVWE6TiQt5Mklp197KH8t17OiwaOVgVnBGK4y_HiQ,1357
+botocore/data/emr/2009-03-31/service-2.json,sha256=MdaFJcBXbgprAOYSSSvNdsfPZ0gTWklRfdJfaUhW25c,239826
+botocore/data/emr/2009-03-31/waiters-2.json,sha256=pMh5RSVHgFU-DlrH0dSf4IibHo9Hddmg9DvaR4a0Z90,2073
+botocore/data/emr-containers/2020-10-01/paginators-1.json,sha256=MYBKRtzVjIT2SOsmAhnwNXefuIHMN4MalWtnVyL-ZtA,532
+botocore/data/emr-containers/2020-10-01/service-2.json,sha256=i-gN5LmGAod_mpYKwmmtGqTpHBjJdRC-Z2HI66CdcWw,50337
+botocore/data/es/2015-01-01/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/es/2015-01-01/paginators-1.json,sha256=sbfve7QYejJgHClHTY4PgdwH4A-PJlY2y0XZ0qRCq9Q,1022
+botocore/data/es/2015-01-01/service-2.json,sha256=5ZQkrRovTsszgGw8Sj4x-NYyGU6SAzhYjTRMrspMueI,180199
+botocore/data/events/2014-02-03/service-2.json,sha256=6wZ7XKpOPLLD453dej8bmrbqZDuyBOT3lGbCl3EUP0E,37700
+botocore/data/events/2015-10-07/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/events/2015-10-07/paginators-1.json,sha256=A4gA5VY4LAnP_3iCOI-P0-c5nVH5ntM9hOh3gytyGco,504
+botocore/data/events/2015-10-07/service-2.json,sha256=zLg0cJ_Jvs9Hg3EhBKDjwg5I56qYVUe48RVzZFJ12o8,190993
+botocore/data/finspace/2021-03-12/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/finspace/2021-03-12/service-2.json,sha256=O4deoRkE6fassOQsyQeNDGSQ-M8fo_q1LCZMyBTCWYI,21065
+botocore/data/finspace-data/2020-07-13/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/finspace-data/2020-07-13/service-2.json,sha256=Jw8XTJG2gEFZi5cwefUroj4YFSgmPGwcRoKcNWyWJYg,14463
+botocore/data/firehose/2015-08-04/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/firehose/2015-08-04/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/firehose/2015-08-04/service-2.json,sha256=VL2EhJGIMwjbcut_oyjf4_FgpJ3L-dxLMF4h2bqkR2s,161235
+botocore/data/fis/2020-12-01/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/fis/2020-12-01/service-2.json,sha256=dhRFG5DcFY_JggLltJYjarsOhhWhpiS6fYHr6FsbZbg,52299
+botocore/data/fms/2018-01-01/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/fms/2018-01-01/paginators-1.json,sha256=vJml-Q0ilNreIxvqEeOQJCzrfQ5a54OfH2sDWx-wXL0,889
+botocore/data/fms/2018-01-01/service-2.json,sha256=V85stG1kp8_2l5vk9SO5gk84l3Tz-7ZT1VNNEmg6CcE,127815
+botocore/data/forecast/2018-06-26/paginators-1.json,sha256=zrhMw6WbfKbbGRcrCcoffi4JenzMg2i9Hy0QHqqmuyM,1251
+botocore/data/forecast/2018-06-26/service-2.json,sha256=GUvMDPrsD6lpJ-wFyeRsYsvmyuIl9qfHPvj7hFfYpe0,168179
+botocore/data/forecastquery/2018-06-26/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/forecastquery/2018-06-26/service-2.json,sha256=HOX7LQZ8tDHGaZmsM5aKU6Bc08kkX__TSbSslPgSODI,6718
+botocore/data/frauddetector/2019-11-15/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/frauddetector/2019-11-15/service-2.json,sha256=DbMtOrj2cXD0VrBi8bzE-yYdF8FHMSKHKj3-0-kJ11U,135481
+botocore/data/fsx/2018-03-01/paginators-1.json,sha256=en4KT-vHYiE0kgUWM_iSazaHH0VUnz4se8qoIL2T_dE,526
+botocore/data/fsx/2018-03-01/service-2.json,sha256=0GHdh0cfJMOBSp_ws5ZefdO76D2GotqbAjz0Llqs5CA,168800
+botocore/data/gamelift/2015-10-01/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/gamelift/2015-10-01/paginators-1.json,sha256=69hZYmz2-_BbL_Ld_O2N4-08CcN0rNq9TLnXzJv0n2U,3410
+botocore/data/gamelift/2015-10-01/service-2.json,sha256=WJWfMVKwo2JQjm1E9JsEzbVdPqa-pv_KCK1AP3lPLzw,538117
+botocore/data/glacier/2012-06-01/examples-1.json,sha256=hR-1NmWo9lL0Cdqnr6x95Ywu_VfJucv0T4OveUp-S4o,27536
+botocore/data/glacier/2012-06-01/paginators-1.json,sha256=RAeqGFOs4GRiC-DuphMOBHWljwDfqBQINYf1qA2LbNA,628
+botocore/data/glacier/2012-06-01/service-2.json,sha256=u5LqMPZV_LwRFOnMnuvBZyt5H7BL6f09epRy8UueZmk,155214
+botocore/data/glacier/2012-06-01/waiters-2.json,sha256=hzoyJJT1wJh9lq1_z4MK2ZBj98TGRhroii0kbeFXnJw,785
+botocore/data/globalaccelerator/2018-08-08/paginators-1.json,sha256=4GYzbyIuUgkwH_vac8b3GpD7CoogR3khMr1rYEzlwfw,1449
+botocore/data/globalaccelerator/2018-08-08/service-2.json,sha256=47SalFfPlLPDe2t6gEvRo6l2DFGDEuNL2JLahyD-XQQ,147365
+botocore/data/glue/2017-03-31/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/glue/2017-03-31/paginators-1.json,sha256=4jJFU3pydUY0CCJ_kaSVf-eVMySeoVfQZmWY0bxlhhk,3219
+botocore/data/glue/2017-03-31/service-2.json,sha256=a4rkX27q71OEJKnzCFXzULuNmrGHZJp-xkpPzOvwGNg,534462
+botocore/data/greengrass/2017-06-07/paginators-1.json,sha256=LphzapxioJkdlNs-zU4IVmg_pjswwy8RuDPq79sbW64,3366
+botocore/data/greengrass/2017-06-07/service-2.json,sha256=SaOwj6D-jWlgOH8k3PuafYsY1YmlGKoJhz8sbLp4HWQ,216581
+botocore/data/greengrassv2/2020-11-30/paginators-1.json,sha256=geNY9pksg1eDuJ9mpqk1iee_t8zQuFBrBG_O6eaZ7GU,1283
+botocore/data/greengrassv2/2020-11-30/service-2.json,sha256=c28arL550Bb6BYDUIM8Zt-iUO-DXOyO-x-W829I3Uos,114665
+botocore/data/groundstation/2019-05-23/paginators-1.json,sha256=tkDyg164QjzW1SHWmd_YLlb1IwcPwhMgacHwhsGiPPA,1068
+botocore/data/groundstation/2019-05-23/service-2.json,sha256=IzFxRJDC-sdejaqnqqjLRXHwtbyDRj_viaGewMKykmA,71858
+botocore/data/guardduty/2017-11-28/paginators-1.json,sha256=yaLFl-Q_Uxr0q10MntGfCbq-X1eoAEcvV6iviXVNr5E,1369
+botocore/data/guardduty/2017-11-28/service-2.json,sha256=6pVVzb2Trju4wBWvmp9_nvlVJTLX1-7bOYY0RcNzhng,180020
+botocore/data/health/2016-08-04/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/health/2016-08-04/paginators-1.json,sha256=yiHNcdPNOcqngUnAvp1BUD8e9oWSgqGS-T0Esl6r8vI,1397
+botocore/data/health/2016-08-04/service-2.json,sha256=4J0AYHn2ZJxDRy1DH6uIFZ_BPumtMedxLKUCqIwWDE8,77839
+botocore/data/healthlake/2017-07-01/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/healthlake/2017-07-01/service-2.json,sha256=nzLwbjxgzHJrnlqtasFQiTC3RAUTWDAS_6Hoeeva8x0,26838
+botocore/data/honeycode/2020-03-01/paginators-1.json,sha256=cnk1BhE_liXxeC-i488hcyCnoy0Q33DKvCjuPshM3mY,639
+botocore/data/honeycode/2020-03-01/paginators-1.sdk-extras.json,sha256=GKeBufTakf_0HwoEF4uO9EJ6MUkXZ1A84t9SkfmhVLo,550
+botocore/data/honeycode/2020-03-01/service-2.json,sha256=nqjJWVK4xg2HkU2npGeHftIWrnu2o1BMugDGc6ab4OU,72504
+botocore/data/iam/2010-05-08/examples-1.json,sha256=erkX6JZCsLnpN3_S6IEFxMhmYQ3GS0hlhkOtmm1iq34,36635
+botocore/data/iam/2010-05-08/paginators-1.json,sha256=_Q1fu4xBsA9VXNUiBGonyMgqHCH73ZSA4WhLoh_N06E,5671
+botocore/data/iam/2010-05-08/service-2.json,sha256=ATJFUwa2KzB_G_UuizWW1AJeohq5kHh3meiXbXzDB_w,615184
+botocore/data/iam/2010-05-08/waiters-2.json,sha256=sC6nS5oxMDEinb4z8GAMfZvFfPVWBzL_j1chnAT_z4k,1462
+botocore/data/identitystore/2020-06-15/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/identitystore/2020-06-15/service-2.json,sha256=22ikyEjBdN-57m_aUTWIQQ9bJZNNYsXfyeJoCwb9P7M,18695
+botocore/data/imagebuilder/2019-12-02/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/imagebuilder/2019-12-02/service-2.json,sha256=3HgtPck6d8tUrnNb3Bb46Zy5LJOVWjZqItUSqsJsQGw,178128
+botocore/data/importexport/2010-06-01/paginators-1.json,sha256=Etmobek-KI_4Gx8vLRBQsy6nYiRvog88hJCCXuRESZQ,215
+botocore/data/importexport/2010-06-01/service-2.json,sha256=YhhOo0SgwD5k5DsgpPmW9SGOZYkiTnwx_T11WYNGcPo,33582
+botocore/data/inspector/2015-08-18/service-2.json,sha256=uHo82k_AcZJR4OdAQc0lu87wzTr682bOjTTt1zWZ22o,81021
+botocore/data/inspector/2016-02-16/examples-1.json,sha256=EoIoRt_vSBIFaQ8UnXLRGL2W5H50CW9rscWvZ012w-g,36903
+botocore/data/inspector/2016-02-16/paginators-1.json,sha256=weo6-A-gbXJmE6B8bFERy0jQdJHvIDANiZLITbP_9ZQ,1610
+botocore/data/inspector/2016-02-16/service-2.json,sha256=IfdjaSREkCmZ6SBfW-iEtEI67LCBpCvzdUGiG1TvAw8,126033
+botocore/data/iot/2015-05-28/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/iot/2015-05-28/paginators-1.json,sha256=L_tfLpB89DjAWcGg52E9Rb-BzeZm205PYzXgq_VdaG4,9086
+botocore/data/iot/2015-05-28/service-2.json,sha256=KYTVs8AI98C715ZXNoJXDPccF0F_TP3gVevUdPG2sME,667697
+botocore/data/iot-data/2015-05-28/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/iot-data/2015-05-28/service-2.json,sha256=KC5V2BiDfFGxxevWQwQeZL784Cuung4plPw6XO7s2jU,14659
+botocore/data/iot-jobs-data/2017-09-29/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/iot-jobs-data/2017-09-29/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/iot-jobs-data/2017-09-29/service-2.json,sha256=Z_D1WR30rGj8w7EEC1I8JkFmmmblB-dHvblo9Lpxe64,20210
+botocore/data/iot1click-devices/2018-05-14/paginators-1.json,sha256=tZrEjZru_lPLHHvNWfoSGdewQrMSASM4QoteB9gmBuQ,349
+botocore/data/iot1click-devices/2018-05-14/service-2.json,sha256=pdgzxou8uC8mqlKfS5W7kASvZYgHBUDvuXuOzJqPGso,33798
+botocore/data/iot1click-projects/2018-05-14/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/iot1click-projects/2018-05-14/paginators-1.json,sha256=pPCk6aIAl86n6twV40lkG4ktlf2QMoD0hsOjjiUMwHc,353
+botocore/data/iot1click-projects/2018-05-14/service-2.json,sha256=qTgJz0HoxSrSAigFpV4Hb7jkiHldo7GD-yFtDaoB2SA,35062
+botocore/data/iotanalytics/2017-11-27/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/iotanalytics/2017-11-27/paginators-1.json,sha256=X_pDdHN034STvHt8ULopV8fu0e5gyFt8Z1dj17AfZQY,895
+botocore/data/iotanalytics/2017-11-27/service-2.json,sha256=q6gDPDfdjYbg36FU9Qy3fR1kdVQfJd0H5pZtTUhM1B8,133278
+botocore/data/iotdeviceadvisor/2020-09-18/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/iotdeviceadvisor/2020-09-18/service-2.json,sha256=AApPlllQ2dYuFYz-THrcjlP8EryvmpFNlm_7In9UZmU,33496
+botocore/data/iotevents/2018-07-27/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/iotevents/2018-07-27/service-2.json,sha256=j84wCjwmKu5g_D_Sz28Syi6iyp_91kb6OzLsA0x1GLs,126421
+botocore/data/iotevents-data/2018-10-23/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/iotevents-data/2018-10-23/service-2.json,sha256=T4bZYHofuKxwg2Lo-LTbl-JfzvF-kgjnxGwT32k1i4Q,52730
+botocore/data/iotfleethub/2020-11-03/paginators-1.json,sha256=E1zXLzaqEyOgzwC0sWIIHboXro29efEvDgF1aA3ZaB8,170
+botocore/data/iotfleethub/2020-11-03/service-2.json,sha256=JxTQOOJkEtW0gJSLaVJCnqz-xzxYJ85BScYP5QbdIFw,19647
+botocore/data/iotsecuretunneling/2018-10-05/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/iotsecuretunneling/2018-10-05/service-2.json,sha256=9fgY0Q4enfDSMEBE23Cmv397AIHHV7zabFeJKKCfVkY,16457
+botocore/data/iotsitewise/2019-12-02/paginators-1.json,sha256=Gu78xVg8wWB8JjHwnYS-FTZNbvbdMvea0CL56z_yRNY,2349
+botocore/data/iotsitewise/2019-12-02/service-2.json,sha256=3Ded2a8TdwP3rZHtIIH5HlxjzG7kd1iKG8dH17e5wm0,232156
+botocore/data/iotsitewise/2019-12-02/waiters-2.json,sha256=qVN5Ie90YeUrNZqZKgckPkyTBYdKjgEbbrlsx-3RXUw,2237
+botocore/data/iotthingsgraph/2018-09-06/paginators-1.json,sha256=3329WY0CXoFVg2osoDFw4kPWYxWK559asARwgffXvbw,1730
+botocore/data/iotthingsgraph/2018-09-06/service-2.json,sha256=WbHcdp-iPsmypkag6JT_rHFqZHN3SlLh9b9Qd5AOY8A,82968
+botocore/data/iotwireless/2020-11-22/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/iotwireless/2020-11-22/service-2.json,sha256=eDXCaXyeLznHUAOPBR8LhW3ssHGbpwigvLkAV4FLi88,137285
+botocore/data/ivs/2020-07-14/paginators-1.json,sha256=QibJ2axvh2Gp9C80kOHE6Ac5RxI-El9k6jxWbVtHyqw,875
+botocore/data/ivs/2020-07-14/service-2.json,sha256=vOdCez0kREN9Un0WYuliKZgWJc0r5oblLu7Nbn9XBmk,68753
+botocore/data/kafka/2018-11-14/paginators-1.json,sha256=mygKsot1_iqBOz1cXX8osov1-iGJzOfpdgS7rw-29OY,1238
+botocore/data/kafka/2018-11-14/service-2.json,sha256=Q0Z5XHLp10l-a-GcGdeSZqHhVFHGl76g4tjs7VND0Ck,143602
+botocore/data/kendra/2019-02-03/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/kendra/2019-02-03/service-2.json,sha256=MFiRhkzYM88mqbywbCKtUFhVlLHzIccpMMNAyU9KPog,234671
+botocore/data/kinesis/2013-12-02/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/kinesis/2013-12-02/paginators-1.json,sha256=eZiGGoaaWjeoI9dTFxmn3qfhXeccl9Oz54JGCCFM_Rw,1233
+botocore/data/kinesis/2013-12-02/service-2.json,sha256=QcAg-Yu8bpzCVjfPi6Udbhmmp5f7nswXc8iug1wmyDU,129779
+botocore/data/kinesis/2013-12-02/waiters-2.json,sha256=O09l7u4uKnojQ0nCnGvABSm0pUXaLj8vvi2Y7sfH_9w,615
+botocore/data/kinesis-video-archived-media/2017-09-30/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/kinesis-video-archived-media/2017-09-30/paginators-1.json,sha256=XyX8SoEsdWM6VuFVJebVA875_-Y2hQq8L_kz-lB1f9k,189
+botocore/data/kinesis-video-archived-media/2017-09-30/service-2.json,sha256=Y9hIBQq9oQJafV5Eel1FxD_mvSzU94lI8BvzFo1z9u8,70752
+botocore/data/kinesis-video-media/2017-09-30/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/kinesis-video-media/2017-09-30/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/kinesis-video-media/2017-09-30/service-2.json,sha256=Xd37ErgL2okNWtotHfLNFLKTCBFfeY-h0v7Xu91RkaU,12534
+botocore/data/kinesis-video-signaling/2019-12-04/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/kinesis-video-signaling/2019-12-04/service-2.json,sha256=7iH-zkZrMXK_L_hwceC5dlHCeb8gRCwDN43u6HrIXxw,9267
+botocore/data/kinesisanalytics/2015-08-14/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/kinesisanalytics/2015-08-14/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/kinesisanalytics/2015-08-14/service-2.json,sha256=GLXBJgJmvfCSgsp64XHxS3sytzSHi65NDxZbxMM8ECg,121269
+botocore/data/kinesisanalyticsv2/2018-05-23/paginators-1.json,sha256=h0PaVL-E3iktRZymfIReETS-ONbZPDSpk1NlovHHOtA,376
+botocore/data/kinesisanalyticsv2/2018-05-23/service-2.json,sha256=eUpvKrLBOdfJBTmY2HBOWBDXWx_E9fwiUth9OjAsbL4,201980
+botocore/data/kinesisvideo/2017-09-30/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/kinesisvideo/2017-09-30/paginators-1.json,sha256=UzLFBTdp899FIGCxVnUQDV5fRz_8fjBssgWzJCqYInE,370
+botocore/data/kinesisvideo/2017-09-30/service-2.json,sha256=pKS3gB3RziY5DDpDDyVCBrraq_DpyL0K4Gzlae0jrkY,54039
+botocore/data/kms/2014-11-01/examples-1.json,sha256=kyh-jvdaPhofKicdjMA5EI2TOj3CAOj8fX9eQa4Js-c,40028
+botocore/data/kms/2014-11-01/paginators-1.json,sha256=JdqHUZD-Dp2Aw-FAvmmFnGJu6jlG_4IstL9IngWJ-zE,777
+botocore/data/kms/2014-11-01/service-2.json,sha256=ZoeM_N9H9FWSc_gvwdIO5914ryNvM_qENg6nimFuBgQ,319102
+botocore/data/lakeformation/2017-03-31/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/lakeformation/2017-03-31/service-2.json,sha256=6x9BBrBkgP0Cu7F5bF-3mtWuOWMCf707w4fpLWJfgPA,70403
+botocore/data/lambda/2014-11-11/service-2.json,sha256=PJ47oYyRWSO7m307osuRTkqGZRfMnbIeaDmPRmHfaQQ,38698
+botocore/data/lambda/2015-03-31/examples-1.json,sha256=_TOXptTVZUFkSxrkaq_JpIKLxUYjRcK_TpC_0itGHLg,52811
+botocore/data/lambda/2015-03-31/paginators-1.json,sha256=kZmW8eZdHYG2SGtQDBHpP-UbDRv2kqDG5NybATYL3lU,1765
+botocore/data/lambda/2015-03-31/service-2.json,sha256=quJPTBtMRqWHTGVdPRKYEY54Imz9MKEnkvi6v8TJu7g,225372
+botocore/data/lambda/2015-03-31/waiters-2.json,sha256=qV1_fjCv7TSv26lqQtSduj_xvZVNPoH5ecZ5zATwwls,1753
+botocore/data/lex-models/2017-04-19/examples-1.json,sha256=-kjqWUEuF7MvyP2OQ4OAtIVHzKT1U1pcQe1G6zWlW1U,23899
+botocore/data/lex-models/2017-04-19/paginators-1.json,sha256=NmghgFUthvQgC3SqXuZBn-6vnUJ5ey3MZYBpRF7YMqI,1686
+botocore/data/lex-models/2017-04-19/service-2.json,sha256=m9SQkQN4RIOmwwRWX00HPfu-ForHUfnzHCeFC9IHxjE,193970
+botocore/data/lex-runtime/2016-11-28/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/lex-runtime/2016-11-28/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/lex-runtime/2016-11-28/service-2.json,sha256=czC9uHOC3hyg3ADvc4RCIRk_nAbFx4oquGuJ0AS6b4s,76631
+botocore/data/lexv2-models/2020-08-07/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/lexv2-models/2020-08-07/service-2.json,sha256=0RkWQhmiJK_yk5af-YhVAdreQUhNPjyr8JHWXdRgU_A,274407
+botocore/data/lexv2-runtime/2020-08-07/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/lexv2-runtime/2020-08-07/service-2.json,sha256=ZPcGfpqs96Y3Eq0teLauZm9mzY3p6aK-GLKKWmw-w7E,68330
+botocore/data/license-manager/2018-08-01/paginators-1.json,sha256=u83kulrKizQ1RsV1wfSx_UjFbm72dCbztJd3m2qKZwc,1012
+botocore/data/license-manager/2018-08-01/service-2.json,sha256=OwlbELGEx94TvGxvpncHhT8PiLbZYG-13wkSK1odCrc,133386
+botocore/data/lightsail/2016-11-28/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/lightsail/2016-11-28/paginators-1.json,sha256=9EaLlqeMLm1cO4A5z-uPznc4OgcKMLV3tbvMLdSjZF4,2925
+botocore/data/lightsail/2016-11-28/service-2.json,sha256=bh5yrHG35GGtgeyrdYM5uF6DqePCrgQmMPMEDxQiYjY,551666
+botocore/data/location/2020-11-19/paginators-1.json,sha256=pPDG1y8SNbZUNGc42Czk6lPsGQF7FIfiLIgR1jGJ90s,1468
+botocore/data/location/2020-11-19/service-2.json,sha256=n-1ZC8Dm8cmymGLlyeqxGgYknpGtRa3gEE1pXbfWQzI,175050
+botocore/data/logs/2014-03-28/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/logs/2014-03-28/paginators-1.json,sha256=BZi5730yJHjuG_E2BuxMN3znR1tuJrg_ueiaO6xWua4,1590
+botocore/data/logs/2014-03-28/service-2.json,sha256=2fOK5F0iMueXcmOH3EiLsOgWbtNuxSeeSvmmhxDzeck,118870
+botocore/data/lookoutequipment/2020-12-15/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/lookoutequipment/2020-12-15/service-2.json,sha256=Oyx-Uzk81oTzoSkJYlL540uo2XNuIys0C2luqewgKJE,78634
+botocore/data/lookoutmetrics/2017-07-25/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/lookoutmetrics/2017-07-25/service-2.json,sha256=g-7EvHAAmnm5sYEs7z3OlpDv4jm8w8y3TOI830cQBFU,84806
+botocore/data/lookoutvision/2020-11-20/paginators-1.json,sha256=Vp3_Ai5TV_gQPZZMT56WU1gCkieJ7PzhSkKbgfVHhIQ,519
+botocore/data/lookoutvision/2020-11-20/service-2.json,sha256=BpetNMje30eQtdB7PtsG6E40wSbdDcfkXQSOyYRP8Tk,71741
+botocore/data/machinelearning/2014-12-12/examples-1.json,sha256=mPd7boHY9w4xI-wG9j9rE088o-AWzYV37JIZ20tLApc,42
+botocore/data/machinelearning/2014-12-12/paginators-1.json,sha256=80ddAOlwUPt-mXpDtk3eJqnm7lB95-DjTW6-G6eqmJc,679
+botocore/data/machinelearning/2014-12-12/service-2.json,sha256=YSYLADWBpNX_DzR73nAuvjDgMjivI5WaCSuaiPZIlgU,173603
+botocore/data/machinelearning/2014-12-12/waiters-2.json,sha256=_tyML4Sw4VQBk8fUWh1bUQjlcooL1hgRpvkqxKxEeCY,1902
+botocore/data/macie/2017-12-19/examples-1.json,sha256=mPd7boHY9w4xI-wG9j9rE088o-AWzYV37JIZ20tLApc,42
+botocore/data/macie/2017-12-19/paginators-1.json,sha256=tsm3lRqk1K3zOYsS3-YBiMgsuP8xxXcdOy5C3uYzqQo,367
+botocore/data/macie/2017-12-19/service-2.json,sha256=RLV9-WmrPnXVcgJ9Zh18lMAr3XVzpYLK4PU4Vf4MCVE,20042
+botocore/data/macie2/2020-01-01/paginators-1.json,sha256=c9qOLXZJAZk74H05OwT13gvv-HO6o9CAjOlRVPPgNEM,1790
+botocore/data/macie2/2020-01-01/service-2.json,sha256=jmtu7cdfnDDsXMikWtiWSrprtf5pdJRrWjNHmO8JZrM,352498
+botocore/data/managedblockchain/2018-09-24/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/managedblockchain/2018-09-24/service-2.json,sha256=0SFymdvkRP2Z7L8xQwg5HTKU5wj3IXUAmjnHOV5MvqQ,106077
+botocore/data/marketplace-catalog/2018-09-17/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/marketplace-catalog/2018-09-17/service-2.json,sha256=33aQZHyXMUkLvbXQ69vyeN8SxdBsYy7_HIariPDTpeg,31257
+botocore/data/marketplace-entitlement/2017-01-11/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/marketplace-entitlement/2017-01-11/paginators-1.json,sha256=xFY_-BU5Ho7OPWDGn_aX-WwguHOeDyE1N4F-7nlw2KA,194
+botocore/data/marketplace-entitlement/2017-01-11/service-2.json,sha256=g0FbtVpxwUVfYxNCgrXidNa4z6zI2SVRVajusOVJiCY,8526
+botocore/data/marketplacecommerceanalytics/2015-07-01/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/marketplacecommerceanalytics/2015-07-01/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/marketplacecommerceanalytics/2015-07-01/service-2.json,sha256=x5x3rPO28G4W7Ni0cthu0WemCjYUN7mc6-7L02eGX-g,15955
+botocore/data/mediaconnect/2018-11-14/paginators-1.json,sha256=eLSSYtUt5P6pIGAMpvReOQWKy1REmVakMRtMjk6k1Ik,685
+botocore/data/mediaconnect/2018-11-14/service-2.json,sha256=O9J84DT5HQTwIbXE_7fw8liYxrVHMIP-Cnsw6pt2wpg,167530
+botocore/data/mediaconnect/2018-11-14/waiters-2.json,sha256=bZzKt8OYBuvnYAP3OV9R2sBvTqOtVyOo5-MBYv6BWis,2679
+botocore/data/mediaconvert/2017-08-29/paginators-1.json,sha256=XtVkBZdug_R7jlAQkwBNEbs8cZKzZA244SKTQ7hFaxA,835
+botocore/data/mediaconvert/2017-08-29/service-2.json,sha256=FbsYesJu9CD4BESYnlYStutSfX-01V5jqV5ZtbrjfGo,808846
+botocore/data/medialive/2017-10-14/paginators-1.json,sha256=JELbmeu9JLpOWu3OHQbWFxzCReITsDADgM6xRuQQTeo,1740
+botocore/data/medialive/2017-10-14/service-2.json,sha256=bHssEhmRk9vxVoTws-9fg5OuC4qbaUBUSTvv0EYIFUs,596262
+botocore/data/medialive/2017-10-14/waiters-2.json,sha256=b_hbDPWhJ0CFqgNI7FDET3WrWAFbxFA179_iIaUH_2o,6988
+botocore/data/mediapackage/2017-10-12/paginators-1.json,sha256=Hkze_cyn0q7t1o4PHpf079W6jE_g7l8tGQf7x-t3ocs,531
+botocore/data/mediapackage/2017-10-12/service-2.json,sha256=juaNBptpq6Ap6LwaY4oJq2wJtmudZmLQFkZSRFfsd-w,104110
+botocore/data/mediapackage-vod/2018-11-07/paginators-1.json,sha256=uyOY7MfVXvY7qil_RhqS9KThRg9A3_8LB6C8en49Z3k,551
+botocore/data/mediapackage-vod/2018-11-07/service-2.json,sha256=FxPycnvhM0c37szUQDBNBK9sopnBpEgc79xZR_jccAQ,67613
+botocore/data/mediastore/2017-09-01/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/mediastore/2017-09-01/paginators-1.json,sha256=0XO8tEPJl9J7qprTHPQQt6dC7GrjIoqoCn4AcAbjiyM,191
+botocore/data/mediastore/2017-09-01/service-2.json,sha256=jT4AlUVxdZU8VzSHjzIcpmxIYkbL9iKG3Y-qbO7-Dmw,43431
+botocore/data/mediastore-data/2017-09-01/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/mediastore-data/2017-09-01/paginators-1.json,sha256=iGhEIo_9ydhnm5jAD4K6mIgNGZ51FKUA4AlfMlG0sao,181
+botocore/data/mediastore-data/2017-09-01/service-2.json,sha256=1mMEpwhf5OYmuN8rC-BmHpCAjg0rgzrUaqTzntx3loI,20678
+botocore/data/mediatailor/2018-04-23/paginators-1.json,sha256=y4NTjw_yETiK4id-9XfS0ZQxexMjCJLmdptUrvaQ4ig,1006
+botocore/data/mediatailor/2018-04-23/service-2.json,sha256=2u--2MRjQUzuEa2R8LUOJ_FfhhpOZGiEZn_DnuzgCTg,111567
+botocore/data/meteringmarketplace/2016-01-14/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/meteringmarketplace/2016-01-14/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/meteringmarketplace/2016-01-14/service-2.json,sha256=5jRbvCNMpiKCMTMM-sBbkFFvrQ7-C7M0v7sTuvgK7Hc,26686
+botocore/data/mgh/2017-05-31/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/mgh/2017-05-31/paginators-1.json,sha256=c6aCKzKnKp8Z0d-UNEY7VdDUCTIDdQhspIghXobWm5o,958
+botocore/data/mgh/2017-05-31/service-2.json,sha256=qg-Hh2cQln5QR6dKLPkfMTuFHPGd5izHWhdxnyNhWqc,53601
+botocore/data/mgn/2020-02-26/paginators-1.json,sha256=3Krevr034E-a2kZUxuNwP0UUNCKaKS3jjXXKwiHTL5Q,706
+botocore/data/mgn/2020-02-26/service-2.json,sha256=VkkJzB5h7suHEFZjPbImAM6LdK1sV3wA58gD_ryLhIg,79193
+botocore/data/migrationhub-config/2019-06-30/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/migrationhub-config/2019-06-30/service-2.json,sha256=pRMQZh2DJ6EHC-ALJDXSV8mizhB6MLPzbdKD2J0Tsms,11731
+botocore/data/mobile/2017-07-01/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/mobile/2017-07-01/paginators-1.json,sha256=QWwTFfnKV_AnwK-xCcXFK6bJDEHfSe4A8ollJulmrpE,350
+botocore/data/mobile/2017-07-01/service-2.json,sha256=iN_C36LA8aSC3y4YfUR6Y7XotVWLN21y9loCSWP3S6o,27007
+botocore/data/mq/2017-11-27/paginators-1.json,sha256=JZRhf6w_8oFT1nPyeTQNU09bR1-xrJn09KOtiOPO2Rg,193
+botocore/data/mq/2017-11-27/service-2.json,sha256=l8dOVaaIwNj9tyWfY_q7we8gHwfbkTRZWriCDs1BMqI,155665
+botocore/data/mturk/2017-01-17/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/mturk/2017-01-17/paginators-1.json,sha256=NFfGwUHHAX0lwKOB92RJHnfVkFP5IvDCtM1FnTJ-A0g,1591
+botocore/data/mturk/2017-01-17/service-2.json,sha256=wOyVTvXBODcUSmw9i00HDbOfX3X3YAIcUeJ_AizE-es,123908
+botocore/data/mwaa/2020-07-01/paginators-1.json,sha256=ggep_PmvO9S8tClL3v6oAmOMYV4qZcZt06URX5M9658,195
+botocore/data/mwaa/2020-07-01/service-2.json,sha256=3SiR2CfT6fAigz51mHEHiXB7PS066527B2_7k2tL4AI,55025
+botocore/data/neptune/2014-10-31/examples-1.json,sha256=mPd7boHY9w4xI-wG9j9rE088o-AWzYV37JIZ20tLApc,42
+botocore/data/neptune/2014-10-31/paginators-1.json,sha256=xyM20YGLeLmrcQLPCwsZyoKYjnR22WxjWce_EUhRpIs,2709
+botocore/data/neptune/2014-10-31/service-2.json,sha256=JP4sNBBIcRWIidLUjgc33dvwM0dAocv542qso9jxZo0,300446
+botocore/data/neptune/2014-10-31/service-2.sdk-extras.json,sha256=U_PgxwtPhWl8ZwLlxYiXD4ZQ4iy605x4miYT38nMvnM,561
+botocore/data/neptune/2014-10-31/waiters-2.json,sha256=8bYoMOMz2Tb0aGdtlPhvlMel075q1n7BRnCpQ-Bcc1c,2398
+botocore/data/network-firewall/2020-11-12/paginators-1.json,sha256=Um5MKogmZMm9dLbwujecP_akUYAJgk6ljOPwa59G0Z8,698
+botocore/data/network-firewall/2020-11-12/service-2.json,sha256=S-KyzYVbc0uzZZrdvWH7wEtvF-Pq75nz7PYGsazFw7E,161139
+botocore/data/networkmanager/2019-07-05/paginators-1.json,sha256=UGQnQa2byTh0mFwADLDoYfb44Y91hTelBHWs7-34W2c,1633
+botocore/data/networkmanager/2019-07-05/service-2.json,sha256=G7eJYoJaNtJw7HxpnyyovgNaa_Kjfydtq1UF_QcPVIQ,88543
+botocore/data/nimble/2020-08-01/paginators-1.json,sha256=RYBLUZYSUmd1xf_-lf7tXkpwKugjgChPKp5mED1HpH8,1390
+botocore/data/nimble/2020-08-01/service-2.json,sha256=NAs0xxDp3solidjKo6v2BpFdGsv9FXv-X13CYaEuTR8,245072
+botocore/data/opsworks/2013-02-18/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/opsworks/2013-02-18/paginators-1.json,sha256=Z7xh6Z3rU23wP3DvH7dA_6rESCx1av8E7ABInwpMRY4,197
+botocore/data/opsworks/2013-02-18/service-2.json,sha256=U0KSXKH6j9BGA9zP5EKewoumsj2vJV0Z0nmFcVJZDlA,273984
+botocore/data/opsworks/2013-02-18/waiters-2.json,sha256=2crmFuAdFm1n1gXfrbBHg_w-b0aaCPtBiXxHzp1N-LI,7578
+botocore/data/opsworkscm/2016-11-01/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/opsworkscm/2016-11-01/paginators-1.json,sha256=rozfOtYjgHVB4_nRCx9wz3_FEi0EYUK0v5gbhAN2oQQ,686
+botocore/data/opsworkscm/2016-11-01/service-2.json,sha256=h8278syoReaiYN42i6j_WAnWYL51quYoXeaokgUWvSs,80030
+botocore/data/opsworkscm/2016-11-01/waiters-2.json,sha256=nTnFtemD7H4YJ99PqmULXNfZeNb18T1sxitQXDntJ2o,582
+botocore/data/organizations/2016-11-28/examples-1.json,sha256=H-s8eMAzogFkvDj193d_NweczAUFsyrDfjFEE_77BFQ,50009
+botocore/data/organizations/2016-11-28/paginators-1.json,sha256=q7RjxA1l-62dDheys7Z3_Ayp04TpUyeTHIW5z2DWb1s,2789
+botocore/data/organizations/2016-11-28/service-2.json,sha256=ig9P9D1Ea_9vlvs9HlgfithA4Vs-SkiSb8AxMBs9DTk,248985
+botocore/data/outposts/2019-12-03/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/outposts/2019-12-03/service-2.json,sha256=0r77e6ksyvdQCHiIiykpZHrhWXrvQK68ixge-u_8WIM,21120
+botocore/data/personalize/2018-05-22/paginators-1.json,sha256=4OjzxEo2872jI9-ubrPrcH6OKID_qVI0kXMzPzBerw0,2059
+botocore/data/personalize/2018-05-22/service-2.json,sha256=Gxw5cbD36QUoXWktuT1vM57cladS1280Mqtdo1eCYoE,150601
+botocore/data/personalize-events/2018-03-22/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/personalize-events/2018-03-22/service-2.json,sha256=XXsZS76bVg962endbWa-QyYoQFy6q3eUcpBeub9fN6I,11493
+botocore/data/personalize-runtime/2018-05-22/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/personalize-runtime/2018-05-22/service-2.json,sha256=bgFz1hNq8rn-eYzLig-H0nRlJfjCPvXwD9O8sEaNxwA,10277
+botocore/data/pi/2018-02-27/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/pi/2018-02-27/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/pi/2018-02-27/service-2.json,sha256=yELYGk07iK4GqhguSzZ6iksk2C1uVL5sHUjiPL6FZx0,32920
+botocore/data/pinpoint/2016-12-01/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/pinpoint/2016-12-01/service-2.json,sha256=KoA3H9hQMVRuEkcJFUVnmYMd7wAr4Pv6yoOcVBxYM4M,685469
+botocore/data/pinpoint-email/2018-07-26/paginators-1.json,sha256=G74a7tI3gD77zuNQfj6bfDHtriSA2qhAWh6Su9Tw6Bc,914
+botocore/data/pinpoint-email/2018-07-26/service-2.json,sha256=slL-fctCZWsagKBIttrs2ChbdV5kN1D6WyEETQ1X_rE,164665
+botocore/data/pinpoint-sms-voice/2018-09-05/service-2.json,sha256=PpAvi3rO4RZiGI0PWiwM2xzcX_puYqMhQDUxmhbxmHA,24187
+botocore/data/polly/2016-06-10/examples-1.json,sha256=-uFGLZQ6nTWN0cCt3DVe5TWPh8TbmBGwBTOpcW1Uq00,5102
+botocore/data/polly/2016-06-10/paginators-1.json,sha256=IJnO61fPCtuJPYshmxGjm9ZzkXfOxEvsL0acyUPG55E,463
+botocore/data/polly/2016-06-10/service-2.json,sha256=sNeWFhpLxwKgu0x2vKItPMF6kTn5-urxyTST_Je8dJk,46118
+botocore/data/pricing/2017-10-15/examples-1.json,sha256=W-OhucttKVtU75b7MxVPsVqfDMiioRCUvUX6W74tCtg,4187
+botocore/data/pricing/2017-10-15/paginators-1.json,sha256=0COgyKyqHLJyEk61t7lPUsgEbMHYI3FTRn8v5lotDyQ,654
+botocore/data/pricing/2017-10-15/service-2.json,sha256=k2PmaM2fJkiLWrAoUql3o1jKX6XJYFWkXxJxMkOQKTM,13863
+botocore/data/proton/2020-07-20/paginators-1.json,sha256=erEWoIAQdgvTvhLYLHHZ5VnRIpGq6CpdkSgrTCEtPXU,1624
+botocore/data/proton/2020-07-20/service-2.json,sha256=CgExgjFQjZbGdx80YwJDlq6AlytP15X5bjMm4_fMhTU,161278
+botocore/data/proton/2020-07-20/waiters-2.json,sha256=-rK_SbZF_SDQYwUyFDN9mHvt0SqDULMsvpeRoPPccvE,5798
+botocore/data/qldb/2019-01-02/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/qldb/2019-01-02/service-2.json,sha256=Z2TmqDytL8ItC0Jpx01IRgaQoGiCTfVyX_n03_kdDP0,65098
+botocore/data/qldb-session/2019-07-11/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/qldb-session/2019-07-11/service-2.json,sha256=MNnl_h8CFhAxYWA05kLZhGiqQLmeSj73ihmcSYwe8KA,18034
+botocore/data/quicksight/2018-04-01/paginators-1.json,sha256=y3FOfsNJCjDHEOj8JilyUNsPctr3acyFfFSTH6S0fj8,2477
+botocore/data/quicksight/2018-04-01/paginators-1.sdk-extras.json,sha256=97ssQ37_P6G1HkxUPGmv_VjmwoxKQFx317H3jAQJFD0,1745
+botocore/data/quicksight/2018-04-01/service-2.json,sha256=WYeaCbnPUlz10NQfzAYExywuZjW8ll3OnsJnhmbF8Ss,445474
+botocore/data/ram/2018-01-04/paginators-1.json,sha256=68WO6NwCy0OQL3rko-MRoZ0l1F2vhih8z8F3sse3R3g,1085
+botocore/data/ram/2018-01-04/service-2.json,sha256=p2BMXOHjnVaCdYm_pERexpH4kDLrg8vLCtx6x2-XHS8,73667
+botocore/data/rds/2014-09-01/paginators-1.json,sha256=CKMhQjYqNQB1hiHNi4vCNIVtQvu29SM_ySRhqxTKfOQ,3095
+botocore/data/rds/2014-09-01/service-2.json,sha256=wNNc81NVVzYUums08_BY4x2WYi7w7CggTAXPZkQuQmU,326067
+botocore/data/rds/2014-09-01/waiters-2.json,sha256=9BpCCotIHKKeyJHD5Bo1fdRi6EnHK6jyJJx_9wswzCQ,2645
+botocore/data/rds/2014-10-31/examples-1.json,sha256=Pa_Dpbo8pg0O9rZRPEuFXsgnzT6XUqIfwHpXauQnc0M,57903
+botocore/data/rds/2014-10-31/paginators-1.json,sha256=gxbRPoTeho8KRwONU9sm5dEDY8pyoRTL1Hkxko9uWLs,6492
+botocore/data/rds/2014-10-31/service-2.json,sha256=vffpwXsYdHGWnd1hJXtnSML2G20CqHU7ucD8hVC8tNg,800222
+botocore/data/rds/2014-10-31/service-2.sdk-extras.json,sha256=NWqAyPauBSLTPFOO_wMu4XZ7VTkw7nY8QjCorphUpTM,1345
+botocore/data/rds/2014-10-31/waiters-2.json,sha256=Q_Aak0l4paCixskVZ0p9GCodMpEU01yn9fXs7heS-XM,7436
+botocore/data/rds-data/2018-08-01/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/rds-data/2018-08-01/service-2.json,sha256=f_j6VCkjcCkIvgwBN0Bli_zDCWHxH3sw4gU2bR5aMjU,33674
+botocore/data/redshift/2012-12-01/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/redshift/2012-12-01/paginators-1.json,sha256=jqDbGxb5jlCXh46ZBm36LRX0bhm57INYUCXXuIkQtq8,4880
+botocore/data/redshift/2012-12-01/service-2.json,sha256=ld2aOGHyYulubRT6vCqEdIXOKJ1gxUOn0Na06xM2-OI,447499
+botocore/data/redshift/2012-12-01/waiters-2.json,sha256=mvax_COD6X10xa7Toxa2DsrarFdKFg9kOWbIKRLahS4,2344
+botocore/data/redshift-data/2019-12-20/paginators-1.json,sha256=pTodaTjP4vyeMJ1vi2z6dXlhZ8bzMbG5tszVa5ecXNI,972
+botocore/data/redshift-data/2019-12-20/paginators-1.sdk-extras.json,sha256=UZq2Z0iNiqOovkDKsQDRL7mLznTmcTB6uWAHDosl3tk,296
+botocore/data/redshift-data/2019-12-20/service-2.json,sha256=fPOh36TqVijMmOfoo3846DK2qX1wYAJujnsfaDq888c,43699
+botocore/data/rekognition/2016-06-27/examples-1.json,sha256=pEUj6cF9yKB10eaE3lAAObBMc4nV3Jak105Ro2A3ZMc,20327
+botocore/data/rekognition/2016-06-27/paginators-1.json,sha256=tu1bvTlI_KVhRQfRO3-6iyRBikv44_O-e-ds1FNIlNY,1010
+botocore/data/rekognition/2016-06-27/service-2.json,sha256=n03NDJ7i15TonDs3wEGSV8Vo0EKV-NBnedxI7KC_oOM,276264
+botocore/data/rekognition/2016-06-27/waiters-2.json,sha256=KRKVzu37WzZwVdazhDURGYo_qTbgIDDIhBTPyvTt1lg,1542
+botocore/data/resource-groups/2017-11-27/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/resource-groups/2017-11-27/paginators-1.json,sha256=k1XV_MZrDEKU1boAc5CsYD_1DRfpjPfB1D1cnFLZuOE,623
+botocore/data/resource-groups/2017-11-27/service-2.json,sha256=KBpq9lxVkbVBaAZjz_L5BoAMAvV_Ap-ih4WD0Li87uE,67863
+botocore/data/resourcegroupstaggingapi/2017-01-26/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/resourcegroupstaggingapi/2017-01-26/paginators-1.json,sha256=_NdoJ81VYpnX6AtSk2EBR7zAQf0S5WSbVxXq33ZXghU,684
+botocore/data/resourcegroupstaggingapi/2017-01-26/service-2.json,sha256=ws8EpJej_OtlnLPOzzCV9tGbURb88hzzmgxgN5Bv-ck,42232
+botocore/data/robomaker/2018-06-29/paginators-1.json,sha256=zHASRcWF0d1i1iWFCA6xa2VkSgv-WXj48_kEUGAlhqQ,2001
+botocore/data/robomaker/2018-06-29/service-2.json,sha256=SRnGRSfnWt5msdkFl9hAX7dVZiQhOZ41avBMdPNOPlQ,212511
+botocore/data/route53/2013-04-01/examples-1.json,sha256=C3c7hhO4Y2jbpqrTEGNc7x007deldIJsNVDxdhaH_T8,29631
+botocore/data/route53/2013-04-01/paginators-1.json,sha256=IGMVaJOCZLVTk47msZgS1_HHJbDdZbK9PGuAZRd1uOc,1220
+botocore/data/route53/2013-04-01/service-2.json,sha256=UvBnyCK3Y6wKCds5itJQ9MESgU7GeS_FhzvnqZygvyk,379894
+botocore/data/route53/2013-04-01/waiters-2.json,sha256=s6BzW8AQ9pEM5yCsRa64E7lfUvhX5vxNARuiAtZwjsU,338
+botocore/data/route53domains/2014-05-15/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/route53domains/2014-05-15/paginators-1.json,sha256=1LDajyibbsCjW_kqSE_jaF3xg0CFPFTpkyt_TRm3X6g,538
+botocore/data/route53domains/2014-05-15/service-2.json,sha256=u37o7SMoCyWHzQQOIzcvYisj2_E4VU2U333AcII3ERE,113510
+botocore/data/route53resolver/2018-04-01/paginators-1.json,sha256=-QI7-WtlfLYjaRHNFypYJ2F4kbJI_FWCWGh8zg7HpSQ,2600
+botocore/data/route53resolver/2018-04-01/paginators-1.sdk-extras.json,sha256=3XJ5UEbB_NT-xjx41jRgxgoNKMWuUL-bcLPzf9n1o9I,806
+botocore/data/route53resolver/2018-04-01/service-2.json,sha256=Cvtuk8SjdOqUhpQJ4H5Xn5-ImtD55Xd_pb0-D-2YzzA,214303
+botocore/data/s3/2006-03-01/examples-1.json,sha256=bGw9MrbmwHRES_w7kwW-Hr31-Js7JGP_oxoE4Tw21b4,57596
+botocore/data/s3/2006-03-01/paginators-1.json,sha256=w9y0i0AX9O0ekVoSr9YGPc-NmebCH6eSMLPoTN4hbBU,1567
+botocore/data/s3/2006-03-01/service-2.json,sha256=IqbcLWa4NlnIEp56bDcFLkXv2f_RzRPb_UxxaJXAJzs,716580
+botocore/data/s3/2006-03-01/waiters-2.json,sha256=m0RJIxnJW7u6emLjY1201rmfeKxgz1f7VDU7qKJOI4c,1436
+botocore/data/s3control/2018-08-20/paginators-1.json,sha256=mQbakYLFsRf-PwUykRHaPqhJ5lmg7TydWKz85l_Wv0g,225
+botocore/data/s3control/2018-08-20/service-2.json,sha256=Bo6w66MmmfEbgaEQrUZYSVVvNAPwQOojstJ2auF_Upo,222077
+botocore/data/s3outposts/2017-07-25/paginators-1.json,sha256=V9E3emIvJCuNtz7oykP0DsozISAdwBBzWQu_zQ2TTdg,189
+botocore/data/s3outposts/2017-07-25/service-2.json,sha256=4VcoooVCRHvNKuVciL-JmVE8JEIPgQ1Q4aVuEtoCTkU,10594
+botocore/data/sagemaker/2017-07-24/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/sagemaker/2017-07-24/paginators-1.json,sha256=msdDlqDGlnQ80Wl1Ojk2DGCANOBY0vFKiZlWOvxkY9s,9517
+botocore/data/sagemaker/2017-07-24/service-2.json,sha256=HAoKHTRCUsGfq3gheTJHQY7r1UzwzUVd2o9FD18ujfY,1166052
+botocore/data/sagemaker/2017-07-24/waiters-2.json,sha256=bB3Lsb9Cdn2R5N-CPRDmlDcIi0HQ7QztLx5lm2SjvPU,4716
+botocore/data/sagemaker-a2i-runtime/2019-11-07/paginators-1.json,sha256=X0gq-uz_QUVGPACQxWwKf6n-ZZ-MsaXi3huDYMOu10o,199
+botocore/data/sagemaker-a2i-runtime/2019-11-07/service-2.json,sha256=qrWE_hp4sDB0aIU15utG4gSBSDquPSd1dkSOsdpbRl8,18686
+botocore/data/sagemaker-edge/2020-09-23/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/sagemaker-edge/2020-09-23/service-2.json,sha256=oq4EMKq0BkJd31bxw2ai4G4k3o1-cBd8T2w9Vj3OdjE,6393
+botocore/data/sagemaker-featurestore-runtime/2020-07-01/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/sagemaker-featurestore-runtime/2020-07-01/service-2.json,sha256=SwLq9iX9cNe-q2jwktwnlbcYdNv2RXzRPlVY5gDjuG8,15177
+botocore/data/sagemaker-runtime/2017-05-13/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/sagemaker-runtime/2017-05-13/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/sagemaker-runtime/2017-05-13/service-2.json,sha256=wElA28pQlbnqv7REzieGr8yTRmRGlzghy85sypJy09g,11823
+botocore/data/savingsplans/2019-06-28/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/savingsplans/2019-06-28/service-2.json,sha256=0fcsiTtnhqmuzeRxfvIfUkxgu-kLzrpMypbu6XTzEQw,35886
+botocore/data/schemas/2019-12-02/paginators-1.json,sha256=JG7VhSHU5MW5ZSEzWuvc0fcOMdYngtguHEeVk1fPoro,830
+botocore/data/schemas/2019-12-02/service-2.json,sha256=97FNOnTYcw3jg_-BZhKAaRRMt3hg_Blzh0kXux05DI8,99619
+botocore/data/schemas/2019-12-02/waiters-2.json,sha256=t1IowU2djOrDdhK7r7dmmVfVARz1Zp31Dl3MPtnqy5I,824
+botocore/data/sdb/2009-04-15/paginators-1.json,sha256=3KF7ZF879CPbTIZ8drlqnq5S3aFHdubXunwekE3ARG4,317
+botocore/data/sdb/2009-04-15/service-2.json,sha256=unrwOjr6Fv_CN9tPYucNhv5QpfFviMT77F7_HPP4prk,44405
+botocore/data/secretsmanager/2017-10-17/examples-1.json,sha256=ZUKSgYbxCnQ9GjkimtPYzgKdyIStaoNxw5ywI_2lcek,20907
+botocore/data/secretsmanager/2017-10-17/paginators-1.json,sha256=wFoEW6m_jRSAAt8D1r54a9XXWnZerkFn83sHj413-ww,188
+botocore/data/secretsmanager/2017-10-17/service-2.json,sha256=RWQbJPHOdfyD6w9b7zpIzG8YbW8ufEwAh8EgrKhLABY,145075
+botocore/data/secretsmanager/2017-10-17/service-2.sdk-extras.json,sha256=IEA3uxtjPY8I1on-q2W9-tozHHIVmneQyB6gCTcYTro,120
+botocore/data/securityhub/2018-10-26/paginators-1.json,sha256=zKF05dS1QpwTbDdKsuaDUDkxX5UPUpWmwYuw4b0C2Uk,1048
+botocore/data/securityhub/2018-10-26/service-2.json,sha256=D0A1ISphmfTKIrTS6-2gpz5KOcc6gJ4cHwHfZtk8Y3A,521706
+botocore/data/serverlessrepo/2017-09-08/paginators-1.json,sha256=6mp7kgpraGJSmfK8vEcMsz_LdDUfQN9dI4kjn83wRhY,543
+botocore/data/serverlessrepo/2017-09-08/service-2.json,sha256=p06iUOiTKr9hN6PcRbdsselmZfehZY76Gr_-OUIisPk,113865
+botocore/data/service-quotas/2019-06-24/paginators-1.json,sha256=e9hZphztzUJpLy1e7mpXUhwobjRsYyLMWkY1DYQfRpw,1149
+botocore/data/service-quotas/2019-06-24/service-2.json,sha256=6uYme7zL4EauAOCiGUz1PbcOcTZe2JMr5se5tMep6JI,48790
+botocore/data/servicecatalog/2015-12-10/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/servicecatalog/2015-12-10/paginators-1.json,sha256=ghdoop27a-JBxcfHGVvA0vMp9y_Z-MY1R7TuRQCrmP4,2996
+botocore/data/servicecatalog/2015-12-10/service-2.json,sha256=PVqDGq0HaG_HgyTDJbiwXxjhr3hm5ZeFGZufbkLV6Tg,274649
+botocore/data/servicecatalog-appregistry/2020-06-24/paginators-1.json,sha256=bdEho04D8rDyQDCPNLrFMj1L2ZgOXAXjFiH4GNmpkhU,731
+botocore/data/servicecatalog-appregistry/2020-06-24/service-2.json,sha256=K_tjpFTBW6fsaMILIsur3Nlv-Cywmqy4OuDaU94mw20,47134
+botocore/data/servicediscovery/2017-03-14/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/servicediscovery/2017-03-14/paginators-1.json,sha256=sKu-j-WBHT8KpiemY4vgLiQkV1Ub2GtqLbYiUxdkjjE,683
+botocore/data/servicediscovery/2017-03-14/service-2.json,sha256=8wEKvOGuR_MnAb7CZfL84_oISWRYLUL6FmmPELd72nY,132052
+botocore/data/ses/2010-12-01/examples-1.json,sha256=LdOG9qOcWahQ6xYBc3_UEV-teA96yJJSesbf0fNI8Bw,28834
+botocore/data/ses/2010-12-01/paginators-1.json,sha256=G_7q2KFDP0LwwEUoCgd9qikwYlHoaFwDjQ_3CtWBVPw,883
+botocore/data/ses/2010-12-01/service-2.json,sha256=3gDoSlMYixeRYrvLqJPkmVyQtUM4HSfMxC3t09GO7tQ,266193
+botocore/data/ses/2010-12-01/waiters-2.json,sha256=4GF4zY3Tg43WiGAVWSJeabII8bSEU7_ElsMj_G3Bt68,380
+botocore/data/sesv2/2019-09-27/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/sesv2/2019-09-27/service-2.json,sha256=oC3mBF0V-soNduyxEMKonG6gW_9DyiZ6nweQHx3q3Io,292431
+botocore/data/shield/2016-06-02/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/shield/2016-06-02/paginators-1.json,sha256=MRQd38Sw6vMYcdoF_zRIXAdMaDQHs_indt6OtJxi0BE,361
+botocore/data/shield/2016-06-02/service-2.json,sha256=bXsNtATM1syd0hPP0j2TyfVhrvv2boZ3EkrEEdsOTW0,91815
+botocore/data/signer/2017-08-25/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/signer/2017-08-25/paginators-1.json,sha256=vjItW2pdi1KsZB_HwJEZqWIDJNHlrKbyxSuN6x8LHkU,526
+botocore/data/signer/2017-08-25/service-2.json,sha256=X6FnkVoERJhpNWMmTL6eheNoICJl7mCkwks8Hr13BMk,65273
+botocore/data/signer/2017-08-25/waiters-2.json,sha256=ZvZgSYJd2QhWkeR1jaM1ECQ8295slZ6oDEFLtA2tYRE,607
+botocore/data/sms/2016-10-24/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/sms/2016-10-24/paginators-1.json,sha256=-hjimmtmqb13Nn5a5N7IfTXJO31BBcEXxMabaXv-2Rs,865
+botocore/data/sms/2016-10-24/service-2.json,sha256=megldDcf0jUxo4ixl8pCbg1uHyncY6MrXm8ygkmOeu8,88848
+botocore/data/sms-voice/2018-09-05/service-2.json,sha256=iwI9gcqNG3dJd6sQlx1LdoplleQCt8_ohy4CJGpzkZY,26723
+botocore/data/snowball/2016-06-30/examples-1.json,sha256=q_R4KbfIA1y7zg_AK1oGCFtOXeIgA21GGA_eBLKdFcU,18204
+botocore/data/snowball/2016-06-30/paginators-1.json,sha256=Vs2ZSHW-G1zQ0hKYyTdP9dOssUAH5Ea7aRzNFz2O6lw,878
+botocore/data/snowball/2016-06-30/service-2.json,sha256=gAnRy2cak9gkgnO5FOQQmD9WwFVrai5AHMMS_J1dHPk,97964
+botocore/data/sns/2010-03-31/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/sns/2010-03-31/paginators-1.json,sha256=a5cU7i3ZYF5D-u8S4oYs5kDUAAeav2kcWeG21u8RjPg,1241
+botocore/data/sns/2010-03-31/service-2.json,sha256=8n-HtMXJIWJ7ZPhtJ3OUIjhgcMmwlKB9chz5MfVIJ0I,127602
+botocore/data/sqs/2012-11-05/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/sqs/2012-11-05/paginators-1.json,sha256=fwyodl-UMt13laxQWAtCY9DEgncIy3mWPV-tS9M5m50,363
+botocore/data/sqs/2012-11-05/service-2.json,sha256=B1V1By5VEsc0WT_PAF3xEnDsKtVNe_Mhrl4_ASwTB_Q,128276
+botocore/data/ssm/2014-11-06/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/ssm/2014-11-06/paginators-1.json,sha256=p9BN0PD8d3NRM0OG4UuBJSXmaBvJlIcnKMHIQJw-6k8,8443
+botocore/data/ssm/2014-11-06/service-2.json,sha256=1vvbFSyHKAyXBAFku9E-cSS4D0dCGR53MNk-LSHPPlg,738947
+botocore/data/ssm/2014-11-06/waiters-2.json,sha256=CnHT6xOXDRGZ4mmEcwcrNaZ3NssvmbanB7NCRiCLDqE,1338
+botocore/data/ssm-contacts/2021-05-03/paginators-1.json,sha256=pCKpSnKbNF7zu_J7hNKHEBtyhv4iNjr8I1g0wCrv1i0,1030
+botocore/data/ssm-contacts/2021-05-03/service-2.json,sha256=rXYY3EiSVhhYl4sLxl6I-Bn_K5C0zhpXrL9NIe8cFfk,66681
+botocore/data/ssm-incidents/2018-05-10/paginators-1.json,sha256=wWpYZwGZbJ7wHH2fIDA3Gao2WSQjnjEzueIgT6h8A6o,1089
+botocore/data/ssm-incidents/2018-05-10/service-2.json,sha256=I8TwRmfEQI5zdzg_P23KAITnD-7kuewTTQqzqdttTEc,86719
+botocore/data/ssm-incidents/2018-05-10/waiters-2.json,sha256=1xhj2BSaBj_CCZlCG7wTLL4ZB0e8_Uuq97DXjf7rADI,1465
+botocore/data/sso/2019-06-10/paginators-1.json,sha256=IScw_JafDnQ5pGRs-y61MtR0d4glhFcZR5D-8KLn2-Y,356
+botocore/data/sso/2019-06-10/service-2.json,sha256=6yN3_3OM_sRKQRCMDOO2RS_KZMRmQgYOhSF--yGbSZs,14142
+botocore/data/sso-admin/2020-07-20/paginators-1.json,sha256=x9iZp8Ikbe9MbLEcZ2j37tMihxTiA0h0hqcf8e_Tqw0,1888
+botocore/data/sso-admin/2020-07-20/service-2.json,sha256=NlN1G1h41tCuIkYyE06a6yUcMypjLWfbGerQMH_PMF0,83029
+botocore/data/sso-oidc/2019-06-10/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/sso-oidc/2019-06-10/service-2.json,sha256=b-KyPT81ajU5JAcyY19LolhhP3nJk2fe69FYpxm8wHg,17105
+botocore/data/stepfunctions/2016-11-23/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/stepfunctions/2016-11-23/paginators-1.json,sha256=PNwTIZVCSCLLftzOmFPcc9ClpKUvGSRgHlGjKlUcqtg,696
+botocore/data/stepfunctions/2016-11-23/service-2.json,sha256=WEylX3xOWITnsJ2PiGIODWtwCK45aYpg6AqHv-FnS3M,104249
+botocore/data/storagegateway/2013-06-30/examples-1.json,sha256=2-mBPJqbSFv2f3t6KqdtrU5dW0Z49zylBvFGmoQEAk8,49947
+botocore/data/storagegateway/2013-06-30/paginators-1.json,sha256=xinZcEJUcO4hsTa3TxMl6HAggFplRjfyCPtZr8wCsBc,1967
+botocore/data/storagegateway/2013-06-30/service-2.json,sha256=YPNI2OJyCSdeveSA6wyZ02l53-k4YyfwtyYRdJgPcj4,315040
+botocore/data/sts/2011-06-15/examples-1.json,sha256=3Zxrln-XpbZd4B_sF7M4lysyRvf3gNoSHWV0A2igILE,8797
+botocore/data/sts/2011-06-15/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/sts/2011-06-15/service-2.json,sha256=LM7XkftTG4pf21yzxyrwUUbLoEzob6-x0Kww3pMlpmA,112986
+botocore/data/support/2013-04-15/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/support/2013-04-15/paginators-1.json,sha256=b74jGAMdiNu8tKXAfyVILd2DpHqQx91qieo1BlSXpK8,363
+botocore/data/support/2013-04-15/service-2.json,sha256=_oHSP0nDxMI0fUU9h11vPVdndGlUzOlBl0jZmU8-urs,70072
+botocore/data/swf/2012-01-25/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/swf/2012-01-25/paginators-1.json,sha256=tOiP-8y-iuvOSJM35cQg6qCE0ai5dd5IWenCE1BH_yk,1496
+botocore/data/swf/2012-01-25/service-2.json,sha256=ABeq_cbkd_DeYGBkM2pFrogCgGOIusdAPfJtlWvOX58,337670
+botocore/data/synthetics/2017-10-11/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/synthetics/2017-10-11/service-2.json,sha256=k3sp8AFbxcksykGhk674wdW1uZ1jsCuoBD55b4J1zlA,52764
+botocore/data/textract/2018-06-27/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/textract/2018-06-27/service-2.json,sha256=EEMVpZGDFf9aCyd5SNEAMxUYHenDTaePPrz_lfwRg-g,57620
+botocore/data/timestream-query/2018-11-01/paginators-1.json,sha256=nkyzdiA2Bn-h0s3yR2PRMtmKA4eariiqDMeWCQoF_lE,275
+botocore/data/timestream-query/2018-11-01/service-2.json,sha256=wOgNZJHddcgEAmv5lKkFMXyO5J5p_5A1qtGYbR60vJY,15890
+botocore/data/timestream-write/2018-11-01/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/timestream-write/2018-11-01/service-2.json,sha256=ITJrT60JttQtAWtNz3cRGXx7vaEFcYRYcMuHLXaavl4,43859
+botocore/data/transcribe/2017-10-26/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/transcribe/2017-10-26/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/transcribe/2017-10-26/service-2.json,sha256=gNiiJYmTE_kXCjFNPJIrmOqDdR-__zb4lu7BHeaz9_4,108154
+botocore/data/transfer/2018-11-05/paginators-1.json,sha256=VwdOVzNOBGYGJ92vP90uXvAZTzg7oYPcg8M3DZMvAMM,185
+botocore/data/transfer/2018-11-05/service-2.json,sha256=THeScKO71wHRp6UiZPI4LZUhOzCf5YwfU6xP2jTNULI,126822
+botocore/data/translate/2017-07-01/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/translate/2017-07-01/paginators-1.json,sha256=eE-1ycW-V5DQ_8t4NsRrfJYKhUnAaS7d5OyOimdaOaA,209
+botocore/data/translate/2017-07-01/service-2.json,sha256=dtQYyhgxaou3jEqZh4se-On9bwtDBOlqn6cysQTz_bI,56268
+botocore/data/waf/2015-08-24/examples-1.json,sha256=6OPuCnLynJIfGO-Vxhb9ZZV9ktEKhpByvf2jSwAg-DY,29749
+botocore/data/waf/2015-08-24/paginators-1.json,sha256=ulE-ztimMiePJZAVUJkWb57N9b2OKV7xz_GIOHCw7PM,2717
+botocore/data/waf/2015-08-24/service-2.json,sha256=qzeXgt5IzL9BJWRnuFwMBypqRB20-5jwTv_cFzqbgFQ,401091
+botocore/data/waf-regional/2016-11-28/examples-1.json,sha256=6OPuCnLynJIfGO-Vxhb9ZZV9ktEKhpByvf2jSwAg-DY,29749
+botocore/data/waf-regional/2016-11-28/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/waf-regional/2016-11-28/service-2.json,sha256=MUV7lGGyeMJgWFDmd7EhjDp3cD8_r94UePAjioyojPU,410513
+botocore/data/wafv2/2019-07-29/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/wafv2/2019-07-29/service-2.json,sha256=wxCV5Vj0I9QPxtawDG5E-Quf9QvJ_djLG9EycXn3meQ,259004
+botocore/data/wellarchitected/2020-03-31/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/wellarchitected/2020-03-31/service-2.json,sha256=aBzyQiqMrAu6Mk2ZGlGPUfmXLZ6-IPorgKfDN6TSJ5Y,77387
+botocore/data/workdocs/2016-05-01/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/workdocs/2016-05-01/paginators-1.json,sha256=WelpdBk6ha0FSERhF5mNXDcI2d5diQGQxq8IdZAV1zc,1515
+botocore/data/workdocs/2016-05-01/service-2.json,sha256=G3rK70ZApaa3Ja4lZj2fCbCjMVKG-LJ_euKj1-szZ0Q,128947
+botocore/data/worklink/2018-09-25/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/worklink/2018-09-25/service-2.json,sha256=JjFfrw3qNoI9xlFb-KYvlCpM4GelHQ13gXSsafl1aPM,60247
+botocore/data/workmail/2017-10-01/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/workmail/2017-10-01/paginators-1.json,sha256=BBc1TkyyOK3DEt3aQpwKwxHj-Qc7ip3WUd1BSwlddzs,1355
+botocore/data/workmail/2017-10-01/service-2.json,sha256=P-2yXhO-oKEw08bBQLFezc2MUtKz8R8tVs094NkJWiA,131393
+botocore/data/workmailmessageflow/2019-05-01/paginators-1.json,sha256=hIQ7AbLBsY4fPSNLVMg0dS45m6cjZKFTjbp3ZLh4zj8,23
+botocore/data/workmailmessageflow/2019-05-01/service-2.json,sha256=mkZsEXbDpO_D6mXQwH2wgqbOnahCldpVkS-H83cbNIg,8540
+botocore/data/workspaces/2015-04-08/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/workspaces/2015-04-08/paginators-1.json,sha256=0zFVdQOhyRVmZBxS34a0_4YjrhYOGT5rRZB-NM2Fjcg,1334
+botocore/data/workspaces/2015-04-08/service-2.json,sha256=BVq76t5fC_zTx5o9pbIMh_WJQDA6s0mjKCRecr-5SqY,145061
+botocore/data/xray/2016-04-12/examples-1.json,sha256=K3b6mgYkitvcecSlJT-iV_EQATmvOySs66iKJI5qx0g,44
+botocore/data/xray/2016-04-12/paginators-1.json,sha256=tSrFKg6DSoVm8MhrLX1557JrZ1uL_1EOaObu_pGOqx4,1508
+botocore/data/xray/2016-04-12/service-2.json,sha256=QCwicyZ2fbcEur9sM6ndhG6x3Cf8i2yvSFXnJ-azjk4,111292
+botocore/docs/__init__.py,sha256=u8q1PqNQdRnL9XMgVAGKLSp_wJOLBBum7EiDFS_zUfQ,1543
+botocore/docs/client.py,sha256=Pa_XEdgDacXHfRL6v1jh2g2yY6h2NpHk-FaxXalNDQ8,11726
+botocore/docs/docstring.py,sha256=8_HzHVdKsIxM2fqMO1AF0dP9mhjBb7kUPISlLxedGe4,3699
+botocore/docs/example.py,sha256=-zLJxpQGMoIcnlmMpDi_ksjKmqvWS6e8B_UzRYbVwA4,8751
+botocore/docs/method.py,sha256=HUPj-vJuI_l9EsiH26CleY2YJZwd0m73H17e6NLPzC8,11548
+botocore/docs/paginator.py,sha256=BewxWFPSueXBElIlsFpZAzCHSwCoewp-q9O6ywG2mDo,7046
+botocore/docs/params.py,sha256=ZDWQacPeYjFo13cflN0c1a60IXBOqpZYjZDb1p3Z26w,9561
+botocore/docs/service.py,sha256=MOD5Sd1-2vtTr8CwjpIyYbWb0a70u_u80B7XEbOAIVQ,3986
+botocore/docs/shape.py,sha256=tIcJ_EIAZIpjI7u3-KJySfwarNWzlnqccOIs9QpIyaQ,5372
+botocore/docs/sharedexample.py,sha256=RWe-sQv6gQAMfs8NsIppWQmftd0eriLaEnKhcVKVzkE,9326
+botocore/docs/utils.py,sha256=Iu72WFt__x44s-U2_VitHBFmEr-Ky-Nz_c3b5syoyjY,7176
+botocore/docs/waiter.py,sha256=2JwQel4QVkuuOT4pm-jb9NgQnZHRWoZMcjsaMuZmm6o,4823
+botocore/docs/bcdoc/__init__.py,sha256=V2g87AefB2DOD9_3xIF5k9Nv5ttb4_gNJOVvSF0Mp3s,588
+botocore/docs/bcdoc/docstringparser.py,sha256=jrOjpdwkZCGh04gIoLBpP9QAXmR9V3I1yjHxQz9IOMM,5889
+botocore/docs/bcdoc/restdoc.py,sha256=5xUdalLFANMoPwB3J6iMdMJhVO7WYb1X-sT7cVgI3LM,7226
+botocore/docs/bcdoc/style.py,sha256=Zf7DB_WSQgfseH3mnXMqKkE0Q8eC_iNYw3w_Pkx63os,11833
+botocore/retries/__init__.py,sha256=YaZ6AwMRyuDBs5fOvl-PAvxQxZE2RBlcad2JmLOMo8k,121
+botocore/retries/adaptive.py,sha256=DHMfs4wLKIeXZGYoyVcrJFrnxQzrYn2tC4-X_KYuPX4,4191
+botocore/retries/base.py,sha256=qFzWgxkZnUVEWEa5-vRh7p4HqCNnTru5-XKUe20bXpg,813
+botocore/retries/bucket.py,sha256=yy2DVenDQn6TO3OwmGD5xgMXeDyLgCukABrf_kmmH54,4020
+botocore/retries/quota.py,sha256=cWqqVOfSoF4ClKzOP4WQCxFzfkv0_cwAYw4uw6_lB4g,1963
+botocore/retries/special.py,sha256=4gU3XIL-WD_lrKe6oupJ0KFVt7SiKhFnKO6yWFD_jxc,1611
+botocore/retries/standard.py,sha256=KXHNWHOY6yY0wRdzIzeUNSzT4gmP55fvBdBor2hwFDY,19655
+botocore/retries/throttling.py,sha256=xQ3zUNtEkB8h4hKBXToKJ_c9S5YCKCt3CrbRfg7gYwk,1788
+botocore/vendored/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
+botocore/vendored/six.py,sha256=A6hdJZVjI3t_geebZ9BzUvwRrIXo0lfwzQlM2LcKyas,30098
+botocore/vendored/requests/__init__.py,sha256=Pu8JNWAMzj9l8E0Qs4rU7clTOfxVIA6OuUKJkJDmvvc,227
+botocore/vendored/requests/exceptions.py,sha256=zZhHieXgR1teqbvuo_9OrwDMHnrvRtulW97VfzumQv4,2517
+botocore/vendored/requests/packages/__init__.py,sha256=aXkbNCjM_WhryRBocE4AaA_p7-CTxL5LOutY7XzKm4s,62
+botocore/vendored/requests/packages/urllib3/__init__.py,sha256=7uI_78C-tSc_R3WqYcZ_AG39aLEs8GNsaDBEMNG2bXI,190
+botocore/vendored/requests/packages/urllib3/exceptions.py,sha256=za-cEwBqxBKOqqKTaIVAMdH3j1nDRqi-MtdojdpU4Wc,4374
+botocore-1.20.109.dist-info/LICENSE.txt,sha256=DVQuDIgE45qn836wDaWnYhSdxoLXgpRRKH4RuTjpRZQ,10174
+botocore-1.20.109.dist-info/METADATA,sha256=RDzIM7zHhYAwms1iuFGI5heWIdNFO-WrduMyx8mz97I,5615
+botocore-1.20.109.dist-info/NOTICE,sha256=EngvHu56Vj2p8NF_NeI3lEcCDlxepA-x5i5i2-1jyTk,3636
+botocore-1.20.109.dist-info/WHEEL,sha256=Z-nyYpwrcSqxfdux5Mbn_DQ525iP7J2DG3JgGvOYyTQ,110
+botocore-1.20.109.dist-info/top_level.txt,sha256=IdlNr9dnwi3lQt66dKnShE5HBUhIqBFqJmVhm11aijk,9
+botocore-1.20.109.dist-info/RECORD,,

+ 6 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore-1.20.109.dist-info/WHEEL

@@ -0,0 +1,6 @@
+Wheel-Version: 1.0
+Generator: bdist_wheel (0.36.2)
+Root-Is-Purelib: true
+Tag: py2-none-any
+Tag: py3-none-any
+

+ 1 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore-1.20.109.dist-info/top_level.txt

@@ -0,0 +1 @@
+botocore

+ 98 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/__init__.py

@@ -0,0 +1,98 @@
+# Copyright (c) 2012-2013 Mitch Garnaat http://garnaat.org/
+# Copyright 2012-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"). You
+# may not use this file except in compliance with the License. A copy of
+# the License is located at
+#
+# http://aws.amazon.com/apache2.0/
+#
+# or in the "license" file accompanying this file. This file is
+# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+# ANY KIND, either express or implied. See the License for the specific
+# language governing permissions and limitations under the License.
+
+import os
+import re
+import logging
+
+__version__ = '1.20.109'
+
+
+class NullHandler(logging.Handler):
+    def emit(self, record):
+        pass
+
+# Configure default logger to do nothing
+log = logging.getLogger('botocore')
+log.addHandler(NullHandler())
+
+
+_first_cap_regex = re.compile('(.)([A-Z][a-z]+)')
+_end_cap_regex = re.compile('([a-z0-9])([A-Z])')
+# The regex below handles the special case where some acronym
+# name is pluralized, e.g GatewayARNs, ListWebACLs, SomeCNAMEs.
+_special_case_transform = re.compile('[A-Z]{2,}s$')
+# Prepopulate the cache with special cases that don't match
+# our regular transformation.
+_xform_cache = {
+    ('CreateCachediSCSIVolume', '_'): 'create_cached_iscsi_volume',
+    ('CreateCachediSCSIVolume', '-'): 'create-cached-iscsi-volume',
+    ('DescribeCachediSCSIVolumes', '_'): 'describe_cached_iscsi_volumes',
+    ('DescribeCachediSCSIVolumes', '-'): 'describe-cached-iscsi-volumes',
+    ('DescribeStorediSCSIVolumes', '_'): 'describe_stored_iscsi_volumes',
+    ('DescribeStorediSCSIVolumes', '-'): 'describe-stored-iscsi-volumes',
+    ('CreateStorediSCSIVolume', '_'): 'create_stored_iscsi_volume',
+    ('CreateStorediSCSIVolume', '-'): 'create-stored-iscsi-volume',
+    ('ListHITsForQualificationType', '_'): 'list_hits_for_qualification_type',
+    ('ListHITsForQualificationType', '-'): 'list-hits-for-qualification-type',
+    ('ExecutePartiQLStatement', '_'): 'execute_partiql_statement',
+    ('ExecutePartiQLStatement', '-'): 'execute-partiql-statement',
+    ('ExecutePartiQLTransaction', '_'): 'execute_partiql_transaction',
+    ('ExecutePartiQLTransaction', '-'): 'execute-partiql-transaction',
+    ('ExecutePartiQLBatch', '_'): 'execute_partiql_batch',
+    ('ExecutePartiQLBatch', '-'): 'execute-partiql-batch',
+}
+# The items in this dict represent partial renames to apply globally to all
+# services which might have a matching argument or operation. This way a
+# common mis-translation can be fixed without having to call out each
+# individual case.
+ScalarTypes = ('string', 'integer', 'boolean', 'timestamp', 'float', 'double')
+
+BOTOCORE_ROOT = os.path.dirname(os.path.abspath(__file__))
+
+
+# Used to specify anonymous (unsigned) request signature
+class UNSIGNED(object):
+    def __copy__(self):
+        return self
+
+    def __deepcopy__(self, memodict):
+        return self
+
+
+UNSIGNED = UNSIGNED()
+
+
+def xform_name(name, sep='_', _xform_cache=_xform_cache):
+    """Convert camel case to a "pythonic" name.
+
+    If the name contains the ``sep`` character, then it is
+    returned unchanged.
+
+    """
+    if sep in name:
+        # If the sep is in the name, assume that it's already
+        # transformed and return the string unchanged.
+        return name
+    key = (name, sep)
+    if key not in _xform_cache:
+        if _special_case_transform.search(name) is not None:
+            is_special = _special_case_transform.search(name)
+            matched = is_special.group()
+            # Replace something like ARNs, ACLs with _arns, _acls.
+            name = name[:-len(matched)] + sep + matched.lower()
+        s1 = _first_cap_regex.sub(r'\1' + sep + r'\2', name)
+        transformed = _end_cap_regex.sub(r'\1' + sep + r'\2', s1).lower()
+        _xform_cache[key] = transformed
+    return _xform_cache[key]

+ 370 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/args.py

@@ -0,0 +1,370 @@
+# Copyright 2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"). You
+# may not use this file except in compliance with the License. A copy of
+# the License is located at
+#
+# http://aws.amazon.com/apache2.0/
+#
+# or in the "license" file accompanying this file. This file is
+# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+# ANY KIND, either express or implied. See the License for the specific
+# language governing permissions and limitations under the License.
+"""Internal module to help with normalizing botocore client args.
+
+This module (and all function/classes within this module) should be
+considered internal, and *not* a public API.
+
+"""
+import copy
+import logging
+import socket
+
+import botocore.exceptions
+import botocore.serialize
+import botocore.utils
+from botocore.signers import RequestSigner
+from botocore.config import Config
+from botocore.endpoint import EndpointCreator
+
+
+logger = logging.getLogger(__name__)
+
+
+VALID_REGIONAL_ENDPOINTS_CONFIG = [
+    'legacy',
+    'regional',
+]
+LEGACY_GLOBAL_STS_REGIONS = [
+    'ap-northeast-1',
+    'ap-south-1',
+    'ap-southeast-1',
+    'ap-southeast-2',
+    'aws-global',
+    'ca-central-1',
+    'eu-central-1',
+    'eu-north-1',
+    'eu-west-1',
+    'eu-west-2',
+    'eu-west-3',
+    'sa-east-1',
+    'us-east-1',
+    'us-east-2',
+    'us-west-1',
+    'us-west-2',
+]
+
+
+class ClientArgsCreator(object):
+    def __init__(self, event_emitter, user_agent, response_parser_factory,
+                 loader, exceptions_factory, config_store):
+        self._event_emitter = event_emitter
+        self._user_agent = user_agent
+        self._response_parser_factory = response_parser_factory
+        self._loader = loader
+        self._exceptions_factory = exceptions_factory
+        self._config_store = config_store
+
+    def get_client_args(self, service_model, region_name, is_secure,
+                        endpoint_url, verify, credentials, scoped_config,
+                        client_config, endpoint_bridge):
+        final_args = self.compute_client_args(
+            service_model, client_config, endpoint_bridge, region_name,
+            endpoint_url, is_secure, scoped_config)
+
+        service_name = final_args['service_name']
+        parameter_validation = final_args['parameter_validation']
+        endpoint_config = final_args['endpoint_config']
+        protocol = final_args['protocol']
+        config_kwargs = final_args['config_kwargs']
+        s3_config = final_args['s3_config']
+        partition = endpoint_config['metadata'].get('partition', None)
+        socket_options = final_args['socket_options']
+
+        signing_region = endpoint_config['signing_region']
+        endpoint_region_name = endpoint_config['region_name']
+
+        event_emitter = copy.copy(self._event_emitter)
+        signer = RequestSigner(
+            service_model.service_id, signing_region,
+            endpoint_config['signing_name'],
+            endpoint_config['signature_version'],
+            credentials, event_emitter
+        )
+
+        config_kwargs['s3'] = s3_config
+        new_config = Config(**config_kwargs)
+        endpoint_creator = EndpointCreator(event_emitter)
+
+        endpoint = endpoint_creator.create_endpoint(
+            service_model, region_name=endpoint_region_name,
+            endpoint_url=endpoint_config['endpoint_url'], verify=verify,
+            response_parser_factory=self._response_parser_factory,
+            max_pool_connections=new_config.max_pool_connections,
+            proxies=new_config.proxies,
+            timeout=(new_config.connect_timeout, new_config.read_timeout),
+            socket_options=socket_options,
+            client_cert=new_config.client_cert,
+            proxies_config=new_config.proxies_config)
+
+        serializer = botocore.serialize.create_serializer(
+            protocol, parameter_validation)
+        response_parser = botocore.parsers.create_parser(protocol)
+        return {
+            'serializer': serializer,
+            'endpoint': endpoint,
+            'response_parser': response_parser,
+            'event_emitter': event_emitter,
+            'request_signer': signer,
+            'service_model': service_model,
+            'loader': self._loader,
+            'client_config': new_config,
+            'partition': partition,
+            'exceptions_factory': self._exceptions_factory
+        }
+
+    def compute_client_args(self, service_model, client_config,
+                            endpoint_bridge, region_name, endpoint_url,
+                            is_secure, scoped_config):
+        service_name = service_model.endpoint_prefix
+        protocol = service_model.metadata['protocol']
+        parameter_validation = True
+        if client_config and not client_config.parameter_validation:
+            parameter_validation = False
+        elif scoped_config:
+            raw_value = scoped_config.get('parameter_validation')
+            if raw_value is not None:
+                parameter_validation = botocore.utils.ensure_boolean(raw_value)
+
+        # Override the user agent if specified in the client config.
+        user_agent = self._user_agent
+        if client_config is not None:
+            if client_config.user_agent is not None:
+                user_agent = client_config.user_agent
+            if client_config.user_agent_extra is not None:
+                user_agent += ' %s' % client_config.user_agent_extra
+
+        s3_config = self.compute_s3_config(client_config)
+        endpoint_config = self._compute_endpoint_config(
+            service_name=service_name,
+            region_name=region_name,
+            endpoint_url=endpoint_url,
+            is_secure=is_secure,
+            endpoint_bridge=endpoint_bridge,
+            s3_config=s3_config,
+        )
+        # Create a new client config to be passed to the client based
+        # on the final values. We do not want the user to be able
+        # to try to modify an existing client with a client config.
+        config_kwargs = dict(
+            region_name=endpoint_config['region_name'],
+            signature_version=endpoint_config['signature_version'],
+            user_agent=user_agent)
+        if client_config is not None:
+            config_kwargs.update(
+                connect_timeout=client_config.connect_timeout,
+                read_timeout=client_config.read_timeout,
+                max_pool_connections=client_config.max_pool_connections,
+                proxies=client_config.proxies,
+                proxies_config=client_config.proxies_config,
+                retries=client_config.retries,
+                client_cert=client_config.client_cert,
+                inject_host_prefix=client_config.inject_host_prefix,
+            )
+        self._compute_retry_config(config_kwargs)
+        s3_config = self.compute_s3_config(client_config)
+        return {
+            'service_name': service_name,
+            'parameter_validation': parameter_validation,
+            'user_agent': user_agent,
+            'endpoint_config': endpoint_config,
+            'protocol': protocol,
+            'config_kwargs': config_kwargs,
+            's3_config': s3_config,
+            'socket_options': self._compute_socket_options(scoped_config)
+        }
+
+    def compute_s3_config(self, client_config):
+        s3_configuration = self._config_store.get_config_variable('s3')
+
+        # Next specific client config values takes precedence over
+        # specific values in the scoped config.
+        if client_config is not None:
+            if client_config.s3 is not None:
+                if s3_configuration is None:
+                    s3_configuration = client_config.s3
+                else:
+                    # The current s3_configuration dictionary may be
+                    # from a source that only should be read from so
+                    # we want to be safe and just make a copy of it to modify
+                    # before it actually gets updated.
+                    s3_configuration = s3_configuration.copy()
+                    s3_configuration.update(client_config.s3)
+
+        return s3_configuration
+
+    def _compute_endpoint_config(self, service_name, region_name, endpoint_url,
+                                 is_secure, endpoint_bridge, s3_config):
+        resolve_endpoint_kwargs = {
+            'service_name': service_name,
+            'region_name': region_name,
+            'endpoint_url': endpoint_url,
+            'is_secure': is_secure,
+            'endpoint_bridge': endpoint_bridge,
+        }
+        if service_name == 's3':
+            return self._compute_s3_endpoint_config(
+                s3_config=s3_config, **resolve_endpoint_kwargs)
+        if service_name == 'sts':
+            return self._compute_sts_endpoint_config(**resolve_endpoint_kwargs)
+        return self._resolve_endpoint(**resolve_endpoint_kwargs)
+
+    def _compute_s3_endpoint_config(self, s3_config,
+                                    **resolve_endpoint_kwargs):
+        force_s3_global = self._should_force_s3_global(
+            resolve_endpoint_kwargs['region_name'], s3_config)
+        if force_s3_global:
+            resolve_endpoint_kwargs['region_name'] = None
+        endpoint_config = self._resolve_endpoint(**resolve_endpoint_kwargs)
+        self._set_region_if_custom_s3_endpoint(
+            endpoint_config, resolve_endpoint_kwargs['endpoint_bridge'])
+        # For backwards compatibility reasons, we want to make sure the
+        # client.meta.region_name will remain us-east-1 if we forced the
+        # endpoint to be the global region. Specifically, if this value
+        # changes to aws-global, it breaks logic where a user is checking
+        # for us-east-1 as the global endpoint such as in creating buckets.
+        if force_s3_global and endpoint_config['region_name'] == 'aws-global':
+            endpoint_config['region_name'] = 'us-east-1'
+        return endpoint_config
+
+    def _should_force_s3_global(self, region_name, s3_config):
+        s3_regional_config = 'legacy'
+        if s3_config and 'us_east_1_regional_endpoint' in s3_config:
+            s3_regional_config = s3_config['us_east_1_regional_endpoint']
+            self._validate_s3_regional_config(s3_regional_config)
+        return (
+            s3_regional_config == 'legacy' and
+            region_name in ['us-east-1', None]
+        )
+
+    def _validate_s3_regional_config(self, config_val):
+        if config_val not in VALID_REGIONAL_ENDPOINTS_CONFIG:
+            raise botocore.exceptions.\
+                InvalidS3UsEast1RegionalEndpointConfigError(
+                    s3_us_east_1_regional_endpoint_config=config_val)
+
+    def _set_region_if_custom_s3_endpoint(self, endpoint_config,
+                                          endpoint_bridge):
+        # If a user is providing a custom URL, the endpoint resolver will
+        # refuse to infer a signing region. If we want to default to s3v4,
+        # we have to account for this.
+        if endpoint_config['signing_region'] is None \
+                and endpoint_config['region_name'] is None:
+            endpoint = endpoint_bridge.resolve('s3')
+            endpoint_config['signing_region'] = endpoint['signing_region']
+            endpoint_config['region_name'] = endpoint['region_name']
+
+    def _compute_sts_endpoint_config(self, **resolve_endpoint_kwargs):
+        endpoint_config = self._resolve_endpoint(**resolve_endpoint_kwargs)
+        if self._should_set_global_sts_endpoint(
+                resolve_endpoint_kwargs['region_name'],
+                resolve_endpoint_kwargs['endpoint_url']):
+            self._set_global_sts_endpoint(
+                endpoint_config, resolve_endpoint_kwargs['is_secure'])
+        return endpoint_config
+
+    def _should_set_global_sts_endpoint(self, region_name, endpoint_url):
+        if endpoint_url:
+            return False
+        return (
+            self._get_sts_regional_endpoints_config() == 'legacy' and
+            region_name in LEGACY_GLOBAL_STS_REGIONS
+        )
+
+    def _get_sts_regional_endpoints_config(self):
+        sts_regional_endpoints_config = self._config_store.get_config_variable(
+            'sts_regional_endpoints')
+        if not sts_regional_endpoints_config:
+            sts_regional_endpoints_config = 'legacy'
+        if sts_regional_endpoints_config not in \
+                VALID_REGIONAL_ENDPOINTS_CONFIG:
+            raise botocore.exceptions.InvalidSTSRegionalEndpointsConfigError(
+                sts_regional_endpoints_config=sts_regional_endpoints_config)
+        return sts_regional_endpoints_config
+
+    def _set_global_sts_endpoint(self, endpoint_config, is_secure):
+        scheme = 'https' if is_secure else 'http'
+        endpoint_config['endpoint_url'] = '%s://sts.amazonaws.com' % scheme
+        endpoint_config['signing_region'] = 'us-east-1'
+
+    def _resolve_endpoint(self, service_name, region_name,
+                          endpoint_url, is_secure, endpoint_bridge):
+        return endpoint_bridge.resolve(
+            service_name, region_name, endpoint_url, is_secure)
+
+    def _compute_socket_options(self, scoped_config):
+        # This disables Nagle's algorithm and is the default socket options
+        # in urllib3.
+        socket_options = [(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)]
+        if scoped_config:
+            # Enables TCP Keepalive if specified in shared config file.
+            if self._ensure_boolean(scoped_config.get('tcp_keepalive', False)):
+                socket_options.append(
+                    (socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1))
+        return socket_options
+
+    def _compute_retry_config(self, config_kwargs):
+        self._compute_retry_max_attempts(config_kwargs)
+        self._compute_retry_mode(config_kwargs)
+
+    def _compute_retry_max_attempts(self, config_kwargs):
+        # There's a pre-existing max_attempts client config value that actually
+        # means max *retry* attempts.  There's also a `max_attempts` we pull
+        # from the config store that means *total attempts*, which includes the
+        # intitial request.  We can't change what `max_attempts` means in
+        # client config so we try to normalize everything to a new
+        # "total_max_attempts" variable.  We ensure that after this, the only
+        # configuration for "max attempts" is the 'total_max_attempts' key.
+        # An explicitly provided max_attempts in the client config
+        # overrides everything.
+        retries = config_kwargs.get('retries')
+        if retries is not None:
+            if 'total_max_attempts' in retries:
+                retries.pop('max_attempts', None)
+                return
+            if 'max_attempts' in retries:
+                value = retries.pop('max_attempts')
+                # client config max_attempts means total retries so we
+                # have to add one for 'total_max_attempts' to account
+                # for the initial request.
+                retries['total_max_attempts'] = value + 1
+                return
+        # Otherwise we'll check the config store which checks env vars,
+        # config files, etc.  There is no default value for max_attempts
+        # so if this returns None and we don't set a default value here.
+        max_attempts = self._config_store.get_config_variable('max_attempts')
+        if max_attempts is not None:
+            if retries is None:
+                retries = {}
+                config_kwargs['retries'] = retries
+            retries['total_max_attempts'] = max_attempts
+
+    def _compute_retry_mode(self, config_kwargs):
+        retries = config_kwargs.get('retries')
+        if retries is None:
+            retries = {}
+            config_kwargs['retries'] = retries
+        elif 'mode' in retries:
+            # If there's a retry mode explicitly set in the client config
+            # that overrides everything.
+            return
+        retry_mode = self._config_store.get_config_variable('retry_mode')
+        if retry_mode is None:
+            retry_mode = 'legacy'
+        retries['mode'] = retry_mode
+
+    def _ensure_boolean(self, val):
+        if isinstance(val, bool):
+            return val
+        else:
+            return val.lower() == 'true'

+ 868 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/auth.py

@@ -0,0 +1,868 @@
+# Copyright (c) 2012-2013 Mitch Garnaat http://garnaat.org/
+# Copyright 2012-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"). You
+# may not use this file except in compliance with the License. A copy of
+# the License is located at
+#
+# http://aws.amazon.com/apache2.0/
+#
+# or in the "license" file accompanying this file. This file is
+# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+# ANY KIND, either express or implied. See the License for the specific
+# language governing permissions and limitations under the License.
+import base64
+import calendar
+import datetime
+import functools
+from email.utils import formatdate
+from hashlib import sha1, sha256
+import hmac
+from io import BytesIO
+import logging
+from operator import itemgetter
+import time
+
+from botocore.compat import(
+    encodebytes, ensure_unicode, HTTPHeaders, json, parse_qs, quote,
+    six, unquote, urlsplit, urlunsplit, HAS_CRT, MD5_AVAILABLE
+)
+from botocore.exceptions import NoCredentialsError
+from botocore.utils import normalize_url_path, percent_encode_sequence
+
+logger = logging.getLogger(__name__)
+
+
+EMPTY_SHA256_HASH = (
+    'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855')
+# This is the buffer size used when calculating sha256 checksums.
+# Experimenting with various buffer sizes showed that this value generally
+# gave the best result (in terms of performance).
+PAYLOAD_BUFFER = 1024 * 1024
+ISO8601 = '%Y-%m-%dT%H:%M:%SZ'
+SIGV4_TIMESTAMP = '%Y%m%dT%H%M%SZ'
+SIGNED_HEADERS_BLACKLIST = [
+    'expect',
+    'user-agent',
+    'x-amzn-trace-id',
+]
+UNSIGNED_PAYLOAD = 'UNSIGNED-PAYLOAD'
+
+
+def _host_from_url(url):
+    # Given URL, derive value for host header. Ensure that value:
+    # 1) is lowercase
+    # 2) excludes port, if it was the default port
+    # 3) excludes userinfo
+    url_parts = urlsplit(url)
+    host = url_parts.hostname  # urlsplit's hostname is always lowercase
+    default_ports = {
+        'http': 80,
+        'https': 443
+    }
+    if url_parts.port is not None:
+        if url_parts.port != default_ports.get(url_parts.scheme):
+            host = '%s:%d' % (host, url_parts.port)
+    return host
+
+
+def _get_body_as_dict(request):
+    # For query services, request.data is form-encoded and is already a
+    # dict, but for other services such as rest-json it could be a json
+    # string or bytes. In those cases we attempt to load the data as a
+    # dict.
+    data = request.data
+    if isinstance(data, six.binary_type):
+        data = json.loads(data.decode('utf-8'))
+    elif isinstance(data, six.string_types):
+        data = json.loads(data)
+    return data
+
+
+class BaseSigner(object):
+    REQUIRES_REGION = False
+
+    def add_auth(self, request):
+        raise NotImplementedError("add_auth")
+
+
+class SigV2Auth(BaseSigner):
+    """
+    Sign a request with Signature V2.
+    """
+
+    def __init__(self, credentials):
+        self.credentials = credentials
+
+    def calc_signature(self, request, params):
+        logger.debug("Calculating signature using v2 auth.")
+        split = urlsplit(request.url)
+        path = split.path
+        if len(path) == 0:
+            path = '/'
+        string_to_sign = '%s\n%s\n%s\n' % (request.method,
+                                           split.netloc,
+                                           path)
+        lhmac = hmac.new(self.credentials.secret_key.encode('utf-8'),
+                         digestmod=sha256)
+        pairs = []
+        for key in sorted(params):
+            # Any previous signature should not be a part of this
+            # one, so we skip that particular key. This prevents
+            # issues during retries.
+            if key == 'Signature':
+                continue
+            value = six.text_type(params[key])
+            pairs.append(quote(key.encode('utf-8'), safe='') + '=' +
+                         quote(value.encode('utf-8'), safe='-_~'))
+        qs = '&'.join(pairs)
+        string_to_sign += qs
+        logger.debug('String to sign: %s', string_to_sign)
+        lhmac.update(string_to_sign.encode('utf-8'))
+        b64 = base64.b64encode(lhmac.digest()).strip().decode('utf-8')
+        return (qs, b64)
+
+    def add_auth(self, request):
+        # The auth handler is the last thing called in the
+        # preparation phase of a prepared request.
+        # Because of this we have to parse the query params
+        # from the request body so we can update them with
+        # the sigv2 auth params.
+        if self.credentials is None:
+            raise NoCredentialsError()
+        if request.data:
+            # POST
+            params = request.data
+        else:
+            # GET
+            params = request.params
+        params['AWSAccessKeyId'] = self.credentials.access_key
+        params['SignatureVersion'] = '2'
+        params['SignatureMethod'] = 'HmacSHA256'
+        params['Timestamp'] = time.strftime(ISO8601, time.gmtime())
+        if self.credentials.token:
+            params['SecurityToken'] = self.credentials.token
+        qs, signature = self.calc_signature(request, params)
+        params['Signature'] = signature
+        return request
+
+
+class SigV3Auth(BaseSigner):
+    def __init__(self, credentials):
+        self.credentials = credentials
+
+    def add_auth(self, request):
+        if self.credentials is None:
+            raise NoCredentialsError()
+        if 'Date' in request.headers:
+            del request.headers['Date']
+        request.headers['Date'] = formatdate(usegmt=True)
+        if self.credentials.token:
+            if 'X-Amz-Security-Token' in request.headers:
+                del request.headers['X-Amz-Security-Token']
+            request.headers['X-Amz-Security-Token'] = self.credentials.token
+        new_hmac = hmac.new(self.credentials.secret_key.encode('utf-8'),
+                            digestmod=sha256)
+        new_hmac.update(request.headers['Date'].encode('utf-8'))
+        encoded_signature = encodebytes(new_hmac.digest()).strip()
+        signature = ('AWS3-HTTPS AWSAccessKeyId=%s,Algorithm=%s,Signature=%s' %
+                     (self.credentials.access_key, 'HmacSHA256',
+                      encoded_signature.decode('utf-8')))
+        if 'X-Amzn-Authorization' in request.headers:
+            del request.headers['X-Amzn-Authorization']
+        request.headers['X-Amzn-Authorization'] = signature
+
+
+class SigV4Auth(BaseSigner):
+    """
+    Sign a request with Signature V4.
+    """
+    REQUIRES_REGION = True
+
+    def __init__(self, credentials, service_name, region_name):
+        self.credentials = credentials
+        # We initialize these value here so the unit tests can have
+        # valid values.  But these will get overriden in ``add_auth``
+        # later for real requests.
+        self._region_name = region_name
+        self._service_name = service_name
+
+    def _sign(self, key, msg, hex=False):
+        if hex:
+            sig = hmac.new(key, msg.encode('utf-8'), sha256).hexdigest()
+        else:
+            sig = hmac.new(key, msg.encode('utf-8'), sha256).digest()
+        return sig
+
+    def headers_to_sign(self, request):
+        """
+        Select the headers from the request that need to be included
+        in the StringToSign.
+        """
+        header_map = HTTPHeaders()
+        for name, value in request.headers.items():
+            lname = name.lower()
+            if lname not in SIGNED_HEADERS_BLACKLIST:
+                header_map[lname] = value
+        if 'host' not in header_map:
+            # TODO: We should set the host ourselves, instead of relying on our
+            # HTTP client to set it for us.
+            header_map['host'] = _host_from_url(request.url)
+        return header_map
+
+    def canonical_query_string(self, request):
+        # The query string can come from two parts.  One is the
+        # params attribute of the request.  The other is from the request
+        # url (in which case we have to re-split the url into its components
+        # and parse out the query string component).
+        if request.params:
+            return self._canonical_query_string_params(request.params)
+        else:
+            return self._canonical_query_string_url(urlsplit(request.url))
+
+    def _canonical_query_string_params(self, params):
+        # [(key, value), (key2, value2)]
+        key_val_pairs = []
+        for key in params:
+            value = str(params[key])
+            key_val_pairs.append((quote(key, safe='-_.~'),
+                                  quote(value, safe='-_.~')))
+        sorted_key_vals = []
+        # Sort by the URI-encoded key names, and in the case of
+        # repeated keys, then sort by the value.
+        for key, value in sorted(key_val_pairs):
+            sorted_key_vals.append('%s=%s' % (key, value))
+        canonical_query_string = '&'.join(sorted_key_vals)
+        return canonical_query_string
+
+    def _canonical_query_string_url(self, parts):
+        canonical_query_string = ''
+        if parts.query:
+            # [(key, value), (key2, value2)]
+            key_val_pairs = []
+            for pair in parts.query.split('&'):
+                key, _, value = pair.partition('=')
+                key_val_pairs.append((key, value))
+            sorted_key_vals = []
+            # Sort by the URI-encoded key names, and in the case of
+            # repeated keys, then sort by the value.
+            for key, value in sorted(key_val_pairs):
+                sorted_key_vals.append('%s=%s' % (key, value))
+            canonical_query_string = '&'.join(sorted_key_vals)
+        return canonical_query_string
+
+    def canonical_headers(self, headers_to_sign):
+        """
+        Return the headers that need to be included in the StringToSign
+        in their canonical form by converting all header keys to lower
+        case, sorting them in alphabetical order and then joining
+        them into a string, separated by newlines.
+        """
+        headers = []
+        sorted_header_names = sorted(set(headers_to_sign))
+        for key in sorted_header_names:
+            value = ','.join(self._header_value(v) for v in
+                             headers_to_sign.get_all(key))
+            headers.append('%s:%s' % (key, ensure_unicode(value)))
+        return '\n'.join(headers)
+
+    def _header_value(self, value):
+        # From the sigv4 docs:
+        # Lowercase(HeaderName) + ':' + Trimall(HeaderValue)
+        #
+        # The Trimall function removes excess white space before and after
+        # values, and converts sequential spaces to a single space.
+        return ' '.join(value.split())
+
+    def signed_headers(self, headers_to_sign):
+        l = ['%s' % n.lower().strip() for n in set(headers_to_sign)]
+        l = sorted(l)
+        return ';'.join(l)
+
+    def payload(self, request):
+        if not self._should_sha256_sign_payload(request):
+            # When payload signing is disabled, we use this static string in
+            # place of the payload checksum.
+            return UNSIGNED_PAYLOAD
+        request_body = request.body
+        if request_body and hasattr(request_body, 'seek'):
+            position = request_body.tell()
+            read_chunksize = functools.partial(request_body.read,
+                                               PAYLOAD_BUFFER)
+            checksum = sha256()
+            for chunk in iter(read_chunksize, b''):
+                checksum.update(chunk)
+            hex_checksum = checksum.hexdigest()
+            request_body.seek(position)
+            return hex_checksum
+        elif request_body:
+            # The request serialization has ensured that
+            # request.body is a bytes() type.
+            return sha256(request_body).hexdigest()
+        else:
+            return EMPTY_SHA256_HASH
+
+    def _should_sha256_sign_payload(self, request):
+        # Payloads will always be signed over insecure connections.
+        if not request.url.startswith('https'):
+            return True
+
+        # Certain operations may have payload signing disabled by default.
+        # Since we don't have access to the operation model, we pass in this
+        # bit of metadata through the request context.
+        return request.context.get('payload_signing_enabled', True)
+
+    def canonical_request(self, request):
+        cr = [request.method.upper()]
+        path = self._normalize_url_path(urlsplit(request.url).path)
+        cr.append(path)
+        cr.append(self.canonical_query_string(request))
+        headers_to_sign = self.headers_to_sign(request)
+        cr.append(self.canonical_headers(headers_to_sign) + '\n')
+        cr.append(self.signed_headers(headers_to_sign))
+        if 'X-Amz-Content-SHA256' in request.headers:
+            body_checksum = request.headers['X-Amz-Content-SHA256']
+        else:
+            body_checksum = self.payload(request)
+        cr.append(body_checksum)
+        return '\n'.join(cr)
+
+    def _normalize_url_path(self, path):
+        normalized_path = quote(normalize_url_path(path), safe='/~')
+        return normalized_path
+
+    def scope(self, request):
+        scope = [self.credentials.access_key]
+        scope.append(request.context['timestamp'][0:8])
+        scope.append(self._region_name)
+        scope.append(self._service_name)
+        scope.append('aws4_request')
+        return '/'.join(scope)
+
+    def credential_scope(self, request):
+        scope = []
+        scope.append(request.context['timestamp'][0:8])
+        scope.append(self._region_name)
+        scope.append(self._service_name)
+        scope.append('aws4_request')
+        return '/'.join(scope)
+
+    def string_to_sign(self, request, canonical_request):
+        """
+        Return the canonical StringToSign as well as a dict
+        containing the original version of all headers that
+        were included in the StringToSign.
+        """
+        sts = ['AWS4-HMAC-SHA256']
+        sts.append(request.context['timestamp'])
+        sts.append(self.credential_scope(request))
+        sts.append(sha256(canonical_request.encode('utf-8')).hexdigest())
+        return '\n'.join(sts)
+
+    def signature(self, string_to_sign, request):
+        key = self.credentials.secret_key
+        k_date = self._sign(('AWS4' + key).encode('utf-8'),
+                            request.context['timestamp'][0:8])
+        k_region = self._sign(k_date, self._region_name)
+        k_service = self._sign(k_region, self._service_name)
+        k_signing = self._sign(k_service, 'aws4_request')
+        return self._sign(k_signing, string_to_sign, hex=True)
+
+    def add_auth(self, request):
+        if self.credentials is None:
+            raise NoCredentialsError()
+        datetime_now = datetime.datetime.utcnow()
+        request.context['timestamp'] = datetime_now.strftime(SIGV4_TIMESTAMP)
+        # This could be a retry.  Make sure the previous
+        # authorization header is removed first.
+        self._modify_request_before_signing(request)
+        canonical_request = self.canonical_request(request)
+        logger.debug("Calculating signature using v4 auth.")
+        logger.debug('CanonicalRequest:\n%s', canonical_request)
+        string_to_sign = self.string_to_sign(request, canonical_request)
+        logger.debug('StringToSign:\n%s', string_to_sign)
+        signature = self.signature(string_to_sign, request)
+        logger.debug('Signature:\n%s', signature)
+
+        self._inject_signature_to_request(request, signature)
+
+    def _inject_signature_to_request(self, request, signature):
+        l = ['AWS4-HMAC-SHA256 Credential=%s' % self.scope(request)]
+        headers_to_sign = self.headers_to_sign(request)
+        l.append('SignedHeaders=%s' % self.signed_headers(headers_to_sign))
+        l.append('Signature=%s' % signature)
+        request.headers['Authorization'] = ', '.join(l)
+        return request
+
+    def _modify_request_before_signing(self, request):
+        if 'Authorization' in request.headers:
+            del request.headers['Authorization']
+        self._set_necessary_date_headers(request)
+        if self.credentials.token:
+            if 'X-Amz-Security-Token' in request.headers:
+                del request.headers['X-Amz-Security-Token']
+            request.headers['X-Amz-Security-Token'] = self.credentials.token
+
+        if not request.context.get('payload_signing_enabled', True):
+            if 'X-Amz-Content-SHA256' in request.headers:
+                del request.headers['X-Amz-Content-SHA256']
+            request.headers['X-Amz-Content-SHA256'] = UNSIGNED_PAYLOAD
+
+    def _set_necessary_date_headers(self, request):
+        # The spec allows for either the Date _or_ the X-Amz-Date value to be
+        # used so we check both.  If there's a Date header, we use the date
+        # header.  Otherwise we use the X-Amz-Date header.
+        if 'Date' in request.headers:
+            del request.headers['Date']
+            datetime_timestamp = datetime.datetime.strptime(
+                request.context['timestamp'], SIGV4_TIMESTAMP)
+            request.headers['Date'] = formatdate(
+                int(calendar.timegm(datetime_timestamp.timetuple())))
+            if 'X-Amz-Date' in request.headers:
+                del request.headers['X-Amz-Date']
+        else:
+            if 'X-Amz-Date' in request.headers:
+                del request.headers['X-Amz-Date']
+            request.headers['X-Amz-Date'] = request.context['timestamp']
+
+
+class S3SigV4Auth(SigV4Auth):
+    def _modify_request_before_signing(self, request):
+        super(S3SigV4Auth, self)._modify_request_before_signing(request)
+        if 'X-Amz-Content-SHA256' in request.headers:
+            del request.headers['X-Amz-Content-SHA256']
+
+        request.headers['X-Amz-Content-SHA256'] = self.payload(request)
+
+    def _should_sha256_sign_payload(self, request):
+        # S3 allows optional body signing, so to minimize the performance
+        # impact, we opt to not SHA256 sign the body on streaming uploads,
+        # provided that we're on https.
+        client_config = request.context.get('client_config')
+        s3_config = getattr(client_config, 's3', None)
+
+        # The config could be None if it isn't set, or if the customer sets it
+        # to None.
+        if s3_config is None:
+            s3_config = {}
+
+        # The explicit configuration takes precedence over any implicit
+        # configuration.
+        sign_payload = s3_config.get('payload_signing_enabled', None)
+        if sign_payload is not None:
+            return sign_payload
+
+        # We require that both content-md5 be present and https be enabled
+        # to implicitly disable body signing. The combination of TLS and
+        # content-md5 is sufficiently secure and durable for us to be
+        # confident in the request without body signing.
+        if not request.url.startswith('https') or \
+                'Content-MD5' not in request.headers:
+            return True
+
+        # If the input is streaming we disable body signing by default.
+        if request.context.get('has_streaming_input', False):
+            return False
+
+        # If the S3-specific checks had no results, delegate to the generic
+        # checks.
+        return super(S3SigV4Auth, self)._should_sha256_sign_payload(request)
+
+    def _normalize_url_path(self, path):
+        # For S3, we do not normalize the path.
+        return path
+
+
+class SigV4QueryAuth(SigV4Auth):
+    DEFAULT_EXPIRES = 3600
+
+    def __init__(self, credentials, service_name, region_name,
+                 expires=DEFAULT_EXPIRES):
+        super(SigV4QueryAuth, self).__init__(credentials, service_name,
+                                             region_name)
+        self._expires = expires
+
+    def _modify_request_before_signing(self, request):
+        # We automatically set this header, so if it's the auto-set value we
+        # want to get rid of it since it doesn't make sense for presigned urls.
+        content_type = request.headers.get('content-type')
+        blacklisted_content_type = (
+            'application/x-www-form-urlencoded; charset=utf-8'
+        )
+        if content_type == blacklisted_content_type:
+            del request.headers['content-type']
+
+        # Note that we're not including X-Amz-Signature.
+        # From the docs: "The Canonical Query String must include all the query
+        # parameters from the preceding table except for X-Amz-Signature.
+        signed_headers = self.signed_headers(self.headers_to_sign(request))
+
+        auth_params = {
+            'X-Amz-Algorithm': 'AWS4-HMAC-SHA256',
+            'X-Amz-Credential': self.scope(request),
+            'X-Amz-Date': request.context['timestamp'],
+            'X-Amz-Expires': self._expires,
+            'X-Amz-SignedHeaders': signed_headers,
+        }
+        if self.credentials.token is not None:
+            auth_params['X-Amz-Security-Token'] = self.credentials.token
+        # Now parse the original query string to a dict, inject our new query
+        # params, and serialize back to a query string.
+        url_parts = urlsplit(request.url)
+        # parse_qs makes each value a list, but in our case we know we won't
+        # have repeated keys so we know we have single element lists which we
+        # can convert back to scalar values.
+        query_dict = dict(
+            [(k, v[0]) for k, v in
+             parse_qs(url_parts.query, keep_blank_values=True).items()])
+        # The spec is particular about this.  It *has* to be:
+        # https://<endpoint>?<operation params>&<auth params>
+        # You can't mix the two types of params together, i.e just keep doing
+        # new_query_params.update(op_params)
+        # new_query_params.update(auth_params)
+        # percent_encode_sequence(new_query_params)
+        operation_params = ''
+        if request.data:
+            # We also need to move the body params into the query string. To
+            # do this, we first have to convert it to a dict.
+            query_dict.update(_get_body_as_dict(request))
+            request.data = ''
+        if query_dict:
+            operation_params = percent_encode_sequence(query_dict) + '&'
+        new_query_string = (operation_params +
+                            percent_encode_sequence(auth_params))
+        # url_parts is a tuple (and therefore immutable) so we need to create
+        # a new url_parts with the new query string.
+        # <part>   - <index>
+        # scheme   - 0
+        # netloc   - 1
+        # path     - 2
+        # query    - 3  <-- we're replacing this.
+        # fragment - 4
+        p = url_parts
+        new_url_parts = (p[0], p[1], p[2], new_query_string, p[4])
+        request.url = urlunsplit(new_url_parts)
+
+    def _inject_signature_to_request(self, request, signature):
+        # Rather than calculating an "Authorization" header, for the query
+        # param quth, we just append an 'X-Amz-Signature' param to the end
+        # of the query string.
+        request.url += '&X-Amz-Signature=%s' % signature
+
+
+class S3SigV4QueryAuth(SigV4QueryAuth):
+    """S3 SigV4 auth using query parameters.
+
+    This signer will sign a request using query parameters and signature
+    version 4, i.e a "presigned url" signer.
+
+    Based off of:
+
+    http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html
+
+    """
+    def _normalize_url_path(self, path):
+        # For S3, we do not normalize the path.
+        return path
+
+    def payload(self, request):
+        # From the doc link above:
+        # "You don't include a payload hash in the Canonical Request, because
+        # when you create a presigned URL, you don't know anything about the
+        # payload. Instead, you use a constant string "UNSIGNED-PAYLOAD".
+        return UNSIGNED_PAYLOAD
+
+
+class S3SigV4PostAuth(SigV4Auth):
+    """
+    Presigns a s3 post
+
+    Implementation doc here:
+    http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-UsingHTTPPOST.html
+    """
+    def add_auth(self, request):
+        datetime_now = datetime.datetime.utcnow()
+        request.context['timestamp'] = datetime_now.strftime(SIGV4_TIMESTAMP)
+
+        fields = {}
+        if request.context.get('s3-presign-post-fields', None) is not None:
+            fields = request.context['s3-presign-post-fields']
+
+        policy = {}
+        conditions = []
+        if request.context.get('s3-presign-post-policy', None) is not None:
+            policy = request.context['s3-presign-post-policy']
+            if policy.get('conditions', None) is not None:
+                conditions = policy['conditions']
+
+        policy['conditions'] = conditions
+
+        fields['x-amz-algorithm'] = 'AWS4-HMAC-SHA256'
+        fields['x-amz-credential'] = self.scope(request)
+        fields['x-amz-date'] = request.context['timestamp']
+
+        conditions.append({'x-amz-algorithm': 'AWS4-HMAC-SHA256'})
+        conditions.append({'x-amz-credential': self.scope(request)})
+        conditions.append({'x-amz-date': request.context['timestamp']})
+
+        if self.credentials.token is not None:
+            fields['x-amz-security-token'] = self.credentials.token
+            conditions.append({'x-amz-security-token': self.credentials.token})
+
+        # Dump the base64 encoded policy into the fields dictionary.
+        fields['policy'] = base64.b64encode(
+            json.dumps(policy).encode('utf-8')).decode('utf-8')
+
+        fields['x-amz-signature'] = self.signature(fields['policy'], request)
+
+        request.context['s3-presign-post-fields'] = fields
+        request.context['s3-presign-post-policy'] = policy
+
+
+class HmacV1Auth(BaseSigner):
+
+    # List of Query String Arguments of Interest
+    QSAOfInterest = ['accelerate', 'acl', 'cors', 'defaultObjectAcl',
+                     'location', 'logging', 'partNumber', 'policy',
+                     'requestPayment', 'torrent',
+                     'versioning', 'versionId', 'versions', 'website',
+                     'uploads', 'uploadId', 'response-content-type',
+                     'response-content-language', 'response-expires',
+                     'response-cache-control', 'response-content-disposition',
+                     'response-content-encoding', 'delete', 'lifecycle',
+                     'tagging', 'restore', 'storageClass', 'notification',
+                     'replication', 'requestPayment', 'analytics', 'metrics',
+                     'inventory', 'select', 'select-type']
+
+    def __init__(self, credentials, service_name=None, region_name=None):
+        self.credentials = credentials
+
+    def sign_string(self, string_to_sign):
+        new_hmac = hmac.new(self.credentials.secret_key.encode('utf-8'),
+                            digestmod=sha1)
+        new_hmac.update(string_to_sign.encode('utf-8'))
+        return encodebytes(new_hmac.digest()).strip().decode('utf-8')
+
+    def canonical_standard_headers(self, headers):
+        interesting_headers = ['content-md5', 'content-type', 'date']
+        hoi = []
+        if 'Date' in headers:
+            del headers['Date']
+        headers['Date'] = self._get_date()
+        for ih in interesting_headers:
+            found = False
+            for key in headers:
+                lk = key.lower()
+                if headers[key] is not None and lk == ih:
+                    hoi.append(headers[key].strip())
+                    found = True
+            if not found:
+                hoi.append('')
+        return '\n'.join(hoi)
+
+    def canonical_custom_headers(self, headers):
+        hoi = []
+        custom_headers = {}
+        for key in headers:
+            lk = key.lower()
+            if headers[key] is not None:
+                if lk.startswith('x-amz-'):
+                    custom_headers[lk] = ','.join(v.strip() for v in
+                                                  headers.get_all(key))
+        sorted_header_keys = sorted(custom_headers.keys())
+        for key in sorted_header_keys:
+            hoi.append("%s:%s" % (key, custom_headers[key]))
+        return '\n'.join(hoi)
+
+    def unquote_v(self, nv):
+        """
+        TODO: Do we need this?
+        """
+        if len(nv) == 1:
+            return nv
+        else:
+            return (nv[0], unquote(nv[1]))
+
+    def canonical_resource(self, split, auth_path=None):
+        # don't include anything after the first ? in the resource...
+        # unless it is one of the QSA of interest, defined above
+        # NOTE:
+        # The path in the canonical resource should always be the
+        # full path including the bucket name, even for virtual-hosting
+        # style addressing.  The ``auth_path`` keeps track of the full
+        # path for the canonical resource and would be passed in if
+        # the client was using virtual-hosting style.
+        if auth_path is not None:
+            buf = auth_path
+        else:
+            buf = split.path
+        if split.query:
+            qsa = split.query.split('&')
+            qsa = [a.split('=', 1) for a in qsa]
+            qsa = [self.unquote_v(a) for a in qsa
+                   if a[0] in self.QSAOfInterest]
+            if len(qsa) > 0:
+                qsa.sort(key=itemgetter(0))
+                qsa = ['='.join(a) for a in qsa]
+                buf += '?'
+                buf += '&'.join(qsa)
+        return buf
+
+    def canonical_string(self, method, split, headers, expires=None,
+                         auth_path=None):
+        cs = method.upper() + '\n'
+        cs += self.canonical_standard_headers(headers) + '\n'
+        custom_headers = self.canonical_custom_headers(headers)
+        if custom_headers:
+            cs += custom_headers + '\n'
+        cs += self.canonical_resource(split, auth_path=auth_path)
+        return cs
+
+    def get_signature(self, method, split, headers, expires=None,
+                      auth_path=None):
+        if self.credentials.token:
+            del headers['x-amz-security-token']
+            headers['x-amz-security-token'] = self.credentials.token
+        string_to_sign = self.canonical_string(method,
+                                               split,
+                                               headers,
+                                               auth_path=auth_path)
+        logger.debug('StringToSign:\n%s', string_to_sign)
+        return self.sign_string(string_to_sign)
+
+    def add_auth(self, request):
+        if self.credentials is None:
+            raise NoCredentialsError
+        logger.debug("Calculating signature using hmacv1 auth.")
+        split = urlsplit(request.url)
+        logger.debug('HTTP request method: %s', request.method)
+        signature = self.get_signature(request.method, split,
+                                       request.headers,
+                                       auth_path=request.auth_path)
+        self._inject_signature(request, signature)
+
+    def _get_date(self):
+        return formatdate(usegmt=True)
+
+    def _inject_signature(self, request, signature):
+        if 'Authorization' in request.headers:
+            # We have to do this because request.headers is not
+            # normal dictionary.  It has the (unintuitive) behavior
+            # of aggregating repeated setattr calls for the same
+            # key value.  For example:
+            # headers['foo'] = 'a'; headers['foo'] = 'b'
+            # list(headers) will print ['foo', 'foo'].
+            del request.headers['Authorization']
+        request.headers['Authorization'] = (
+            "AWS %s:%s" % (self.credentials.access_key, signature))
+
+
+class HmacV1QueryAuth(HmacV1Auth):
+    """
+    Generates a presigned request for s3.
+
+    Spec from this document:
+
+    http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html
+    #RESTAuthenticationQueryStringAuth
+
+    """
+    DEFAULT_EXPIRES = 3600
+
+    def __init__(self, credentials, expires=DEFAULT_EXPIRES):
+        self.credentials = credentials
+        self._expires = expires
+
+    def _get_date(self):
+        return str(int(time.time() + int(self._expires)))
+
+    def _inject_signature(self, request, signature):
+        query_dict = {}
+        query_dict['AWSAccessKeyId'] = self.credentials.access_key
+        query_dict['Signature'] = signature
+
+        for header_key in request.headers:
+            lk = header_key.lower()
+            # For query string requests, Expires is used instead of the
+            # Date header.
+            if header_key == 'Date':
+                query_dict['Expires'] = request.headers['Date']
+            # We only want to include relevant headers in the query string.
+            # These can be anything that starts with x-amz, is Content-MD5,
+            # or is Content-Type.
+            elif lk.startswith('x-amz-') or lk in ['content-md5',
+                                                   'content-type']:
+                query_dict[lk] = request.headers[lk]
+        # Combine all of the identified headers into an encoded
+        # query string
+        new_query_string = percent_encode_sequence(query_dict)
+
+        # Create a new url with the presigned url.
+        p = urlsplit(request.url)
+        if p[3]:
+            # If there was a pre-existing query string, we should
+            # add that back before injecting the new query string.
+            new_query_string = '%s&%s' % (p[3], new_query_string)
+        new_url_parts = (p[0], p[1], p[2], new_query_string, p[4])
+        request.url = urlunsplit(new_url_parts)
+
+
+class HmacV1PostAuth(HmacV1Auth):
+    """
+    Generates a presigned post for s3.
+
+    Spec from this document:
+
+    http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingHTTPPOST.html
+    """
+    def add_auth(self, request):
+        fields = {}
+        if request.context.get('s3-presign-post-fields', None) is not None:
+            fields = request.context['s3-presign-post-fields']
+
+        policy = {}
+        conditions = []
+        if request.context.get('s3-presign-post-policy', None) is not None:
+            policy = request.context['s3-presign-post-policy']
+            if policy.get('conditions', None) is not None:
+                conditions = policy['conditions']
+
+        policy['conditions'] = conditions
+
+        fields['AWSAccessKeyId'] = self.credentials.access_key
+
+        if self.credentials.token is not None:
+            fields['x-amz-security-token'] = self.credentials.token
+            conditions.append({'x-amz-security-token': self.credentials.token})
+
+        # Dump the base64 encoded policy into the fields dictionary.
+        fields['policy'] = base64.b64encode(
+            json.dumps(policy).encode('utf-8')).decode('utf-8')
+
+        fields['signature'] = self.sign_string(fields['policy'])
+
+        request.context['s3-presign-post-fields'] = fields
+        request.context['s3-presign-post-policy'] = policy
+
+
+AUTH_TYPE_MAPS = {
+    'v2': SigV2Auth,
+    'v3': SigV3Auth,
+    'v3https': SigV3Auth,
+    's3': HmacV1Auth,
+    's3-query': HmacV1QueryAuth,
+    's3-presign-post': HmacV1PostAuth,
+    's3v4-presign-post': S3SigV4PostAuth,
+}
+
+# Define v4 signers depending on if CRT is present
+if HAS_CRT:
+    from botocore.crt.auth import CRT_AUTH_TYPE_MAPS
+    AUTH_TYPE_MAPS.update(CRT_AUTH_TYPE_MAPS)
+else:
+    AUTH_TYPE_MAPS.update({
+        'v4': SigV4Auth,
+        'v4-query': SigV4QueryAuth,
+        's3v4': S3SigV4Auth,
+        's3v4-query': S3SigV4QueryAuth,
+    })

+ 623 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/awsrequest.py

@@ -0,0 +1,623 @@
+# Copyright (c) 2012-2013 Mitch Garnaat http://garnaat.org/
+# Copyright 2012-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"). You
+# may not use this file except in compliance with the License. A copy of
+# the License is located at
+#
+# http://aws.amazon.com/apache2.0/
+#
+# or in the "license" file accompanying this file. This file is
+# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+# ANY KIND, either express or implied. See the License for the specific
+# language governing permissions and limitations under the License.
+import io
+import sys
+import logging
+import functools
+import socket
+
+import urllib3.util
+from urllib3.connection import VerifiedHTTPSConnection
+from urllib3.connection import HTTPConnection
+from urllib3.connectionpool import HTTPConnectionPool
+from urllib3.connectionpool import HTTPSConnectionPool
+
+import botocore.utils
+from botocore.compat import six
+from botocore.compat import HTTPHeaders, HTTPResponse, urlunsplit, urlsplit, \
+     urlencode, MutableMapping
+from botocore.exceptions import UnseekableStreamError
+
+
+logger = logging.getLogger(__name__)
+
+
+class AWSHTTPResponse(HTTPResponse):
+    # The *args, **kwargs is used because the args are slightly
+    # different in py2.6 than in py2.7/py3.
+    def __init__(self, *args, **kwargs):
+        self._status_tuple = kwargs.pop('status_tuple')
+        HTTPResponse.__init__(self, *args, **kwargs)
+
+    def _read_status(self):
+        if self._status_tuple is not None:
+            status_tuple = self._status_tuple
+            self._status_tuple = None
+            return status_tuple
+        else:
+            return HTTPResponse._read_status(self)
+
+
+class AWSConnection(object):
+    """Mixin for HTTPConnection that supports Expect 100-continue.
+
+    This when mixed with a subclass of httplib.HTTPConnection (though
+    technically we subclass from urllib3, which subclasses
+    httplib.HTTPConnection) and we only override this class to support Expect
+    100-continue, which we need for S3.  As far as I can tell, this is
+    general purpose enough to not be specific to S3, but I'm being
+    tentative and keeping it in botocore because I've only tested
+    this against AWS services.
+
+    """
+    def __init__(self, *args, **kwargs):
+        super(AWSConnection, self).__init__(*args, **kwargs)
+        self._original_response_cls = self.response_class
+        # We'd ideally hook into httplib's states, but they're all
+        # __mangled_vars so we use our own state var.  This variable is set
+        # when we receive an early response from the server.  If this value is
+        # set to True, any calls to send() are noops.  This value is reset to
+        # false every time _send_request is called.  This is to workaround the
+        # fact that py2.6 (and only py2.6) has a separate send() call for the
+        # body in _send_request, as opposed to endheaders(), which is where the
+        # body is sent in all versions > 2.6.
+        self._response_received = False
+        self._expect_header_set = False
+
+    def close(self):
+        super(AWSConnection, self).close()
+        # Reset all of our instance state we were tracking.
+        self._response_received = False
+        self._expect_header_set = False
+        self.response_class = self._original_response_cls
+
+    def _send_request(self, method, url, body, headers, *args, **kwargs):
+        self._response_received = False
+        if headers.get('Expect', b'') == b'100-continue':
+            self._expect_header_set = True
+        else:
+            self._expect_header_set = False
+            self.response_class = self._original_response_cls
+        rval = super(AWSConnection, self)._send_request(
+            method, url, body, headers, *args, **kwargs)
+        self._expect_header_set = False
+        return rval
+
+    def _convert_to_bytes(self, mixed_buffer):
+        # Take a list of mixed str/bytes and convert it
+        # all into a single bytestring.
+        # Any six.text_types will be encoded as utf-8.
+        bytes_buffer = []
+        for chunk in mixed_buffer:
+            if isinstance(chunk, six.text_type):
+                bytes_buffer.append(chunk.encode('utf-8'))
+            else:
+                bytes_buffer.append(chunk)
+        msg = b"\r\n".join(bytes_buffer)
+        return msg
+
+    def _send_output(self, message_body=None, *args, **kwargs):
+        self._buffer.extend((b"", b""))
+        msg = self._convert_to_bytes(self._buffer)
+        del self._buffer[:]
+        # If msg and message_body are sent in a single send() call,
+        # it will avoid performance problems caused by the interaction
+        # between delayed ack and the Nagle algorithm.
+        if isinstance(message_body, bytes):
+            msg += message_body
+            message_body = None
+        self.send(msg)
+        if self._expect_header_set:
+            # This is our custom behavior.  If the Expect header was
+            # set, it will trigger this custom behavior.
+            logger.debug("Waiting for 100 Continue response.")
+            # Wait for 1 second for the server to send a response.
+            if urllib3.util.wait_for_read(self.sock, 1):
+                self._handle_expect_response(message_body)
+                return
+            else:
+                # From the RFC:
+                # Because of the presence of older implementations, the
+                # protocol allows ambiguous situations in which a client may
+                # send "Expect: 100-continue" without receiving either a 417
+                # (Expectation Failed) status or a 100 (Continue) status.
+                # Therefore, when a client sends this header field to an origin
+                # server (possibly via a proxy) from which it has never seen a
+                # 100 (Continue) status, the client SHOULD NOT wait for an
+                # indefinite period before sending the request body.
+                logger.debug("No response seen from server, continuing to "
+                             "send the response body.")
+        if message_body is not None:
+            # message_body was not a string (i.e. it is a file), and
+            # we must run the risk of Nagle.
+            self.send(message_body)
+
+    def _consume_headers(self, fp):
+        # Most servers (including S3) will just return
+        # the CLRF after the 100 continue response.  However,
+        # some servers (I've specifically seen this for squid when
+        # used as a straight HTTP proxy) will also inject a
+        # Connection: keep-alive header.  To account for this
+        # we'll read until we read '\r\n', and ignore any headers
+        # that come immediately after the 100 continue response.
+        current = None
+        while current != b'\r\n':
+            current = fp.readline()
+
+    def _handle_expect_response(self, message_body):
+        # This is called when we sent the request headers containing
+        # an Expect: 100-continue header and received a response.
+        # We now need to figure out what to do.
+        fp = self.sock.makefile('rb', 0)
+        try:
+            maybe_status_line = fp.readline()
+            parts = maybe_status_line.split(None, 2)
+            if self._is_100_continue_status(maybe_status_line):
+                self._consume_headers(fp)
+                logger.debug("100 Continue response seen, "
+                             "now sending request body.")
+                self._send_message_body(message_body)
+            elif len(parts) == 3 and parts[0].startswith(b'HTTP/'):
+                # From the RFC:
+                # Requirements for HTTP/1.1 origin servers:
+                #
+                # - Upon receiving a request which includes an Expect
+                #   request-header field with the "100-continue"
+                #   expectation, an origin server MUST either respond with
+                #   100 (Continue) status and continue to read from the
+                #   input stream, or respond with a final status code.
+                #
+                # So if we don't get a 100 Continue response, then
+                # whatever the server has sent back is the final response
+                # and don't send the message_body.
+                logger.debug("Received a non 100 Continue response "
+                             "from the server, NOT sending request body.")
+                status_tuple = (parts[0].decode('ascii'),
+                                int(parts[1]), parts[2].decode('ascii'))
+                response_class = functools.partial(
+                    AWSHTTPResponse, status_tuple=status_tuple)
+                self.response_class = response_class
+                self._response_received = True
+        finally:
+            fp.close()
+
+    def _send_message_body(self, message_body):
+        if message_body is not None:
+            self.send(message_body)
+
+    def send(self, str):
+        if self._response_received:
+            logger.debug("send() called, but reseponse already received. "
+                         "Not sending data.")
+            return
+        return super(AWSConnection, self).send(str)
+
+    def _is_100_continue_status(self, maybe_status_line):
+        parts = maybe_status_line.split(None, 2)
+        # Check for HTTP/<version> 100 Continue\r\n
+        return (
+            len(parts) >= 3 and parts[0].startswith(b'HTTP/') and
+            parts[1] == b'100')
+
+
+class AWSHTTPConnection(AWSConnection, HTTPConnection):
+    """ An HTTPConnection that supports 100 Continue behavior. """
+
+
+class AWSHTTPSConnection(AWSConnection, VerifiedHTTPSConnection):
+    """ An HTTPSConnection that supports 100 Continue behavior. """
+
+
+class AWSHTTPConnectionPool(HTTPConnectionPool):
+    ConnectionCls = AWSHTTPConnection
+
+
+class AWSHTTPSConnectionPool(HTTPSConnectionPool):
+    ConnectionCls = AWSHTTPSConnection
+
+
+def prepare_request_dict(request_dict, endpoint_url, context=None,
+                         user_agent=None):
+    """
+    This method prepares a request dict to be created into an
+    AWSRequestObject. This prepares the request dict by adding the
+    url and the user agent to the request dict.
+
+    :type request_dict: dict
+    :param request_dict:  The request dict (created from the
+        ``serialize`` module).
+
+    :type user_agent: string
+    :param user_agent: The user agent to use for this request.
+
+    :type endpoint_url: string
+    :param endpoint_url: The full endpoint url, which contains at least
+        the scheme, the hostname, and optionally any path components.
+    """
+    r = request_dict
+    if user_agent is not None:
+        headers = r['headers']
+        headers['User-Agent'] = user_agent
+    host_prefix = r.get('host_prefix')
+    url = _urljoin(endpoint_url, r['url_path'], host_prefix)
+    if r['query_string']:
+        # NOTE: This is to avoid circular import with utils. This is being
+        # done to avoid moving classes to different modules as to not cause
+        # breaking chainges.
+        percent_encode_sequence = botocore.utils.percent_encode_sequence
+        encoded_query_string = percent_encode_sequence(r['query_string'])
+        if '?' not in url:
+            url += '?%s' % encoded_query_string
+        else:
+            url += '&%s' % encoded_query_string
+    r['url'] = url
+    r['context'] = context
+    if context is None:
+        r['context'] = {}
+
+
+def create_request_object(request_dict):
+    """
+    This method takes a request dict and creates an AWSRequest object
+    from it.
+
+    :type request_dict: dict
+    :param request_dict:  The request dict (created from the
+        ``prepare_request_dict`` method).
+
+    :rtype: ``botocore.awsrequest.AWSRequest``
+    :return: An AWSRequest object based on the request_dict.
+
+    """
+    r = request_dict
+    request_object = AWSRequest(
+        method=r['method'], url=r['url'], data=r['body'], headers=r['headers'])
+    request_object.context = r['context']
+    return request_object
+
+
+def _urljoin(endpoint_url, url_path, host_prefix):
+    p = urlsplit(endpoint_url)
+    # <part>   - <index>
+    # scheme   - p[0]
+    # netloc   - p[1]
+    # path     - p[2]
+    # query    - p[3]
+    # fragment - p[4]
+    if not url_path or url_path == '/':
+        # If there's no path component, ensure the URL ends with
+        # a '/' for backwards compatibility.
+        if not p[2]:
+            new_path = '/'
+        else:
+            new_path = p[2]
+    elif p[2].endswith('/') and url_path.startswith('/'):
+        new_path = p[2][:-1] + url_path
+    else:
+        new_path = p[2] + url_path
+
+    new_netloc = p[1]
+    if host_prefix is not None:
+        new_netloc = host_prefix + new_netloc
+
+    reconstructed = urlunsplit((p[0], new_netloc, new_path, p[3], p[4]))
+    return reconstructed
+
+
+class AWSRequestPreparer(object):
+    """
+    This class performs preparation on AWSRequest objects similar to that of
+    the PreparedRequest class does in the requests library. However, the logic
+    has been boiled down to meet the specific use cases in botocore. Of note
+    there are the following differences:
+        This class does not heavily prepare the URL. Requests performed many
+        validations and corrections to ensure the URL is properly formatted.
+        Botocore either performs these validations elsewhere or otherwise
+        consistently provides well formatted URLs.
+
+        This class does not heavily prepare the body. Body preperation is
+        simple and supports only the cases that we document: bytes and
+        file-like objects to determine the content-length. This will also
+        additionally prepare a body that is a dict to be url encoded params
+        string as some signers rely on this. Finally, this class does not
+        support multipart file uploads.
+
+        This class does not prepare the method, auth or cookies.
+    """
+    def prepare(self, original):
+        method = original.method
+        url = self._prepare_url(original)
+        body = self._prepare_body(original)
+        headers = self._prepare_headers(original, body)
+        stream_output = original.stream_output
+
+        return AWSPreparedRequest(method, url, headers, body, stream_output)
+
+    def _prepare_url(self, original):
+        url = original.url
+        if original.params:
+            params = urlencode(list(original.params.items()), doseq=True)
+            url = '%s?%s' % (url, params)
+        return url
+
+    def _prepare_headers(self, original, prepared_body=None):
+        headers = HeadersDict(original.headers.items())
+
+        # If the transfer encoding or content length is already set, use that
+        if 'Transfer-Encoding' in headers or 'Content-Length' in headers:
+            return headers
+
+        # Ensure we set the content length when it is expected
+        if original.method not in ('GET', 'HEAD', 'OPTIONS'):
+            length = self._determine_content_length(prepared_body)
+            if length is not None:
+                headers['Content-Length'] = str(length)
+            else:
+                # Failed to determine content length, using chunked
+                # NOTE: This shouldn't ever happen in practice
+                body_type = type(prepared_body)
+                logger.debug('Failed to determine length of %s', body_type)
+                headers['Transfer-Encoding'] = 'chunked'
+
+        return headers
+
+    def _to_utf8(self, item):
+        key, value = item
+        if isinstance(key, six.text_type):
+            key = key.encode('utf-8')
+        if isinstance(value, six.text_type):
+            value = value.encode('utf-8')
+        return key, value
+
+    def _prepare_body(self, original):
+        """Prepares the given HTTP body data."""
+        body = original.data
+        if body == b'':
+            body = None
+
+        if isinstance(body, dict):
+            params = [self._to_utf8(item) for item in body.items()]
+            body = urlencode(params, doseq=True)
+
+        return body
+
+    def _determine_content_length(self, body):
+        # No body, content length of 0
+        if not body:
+            return 0
+
+        # Try asking the body for it's length
+        try:
+            return len(body)
+        except (AttributeError, TypeError) as e:
+            pass
+
+        # Try getting the length from a seekable stream
+        if hasattr(body, 'seek') and hasattr(body, 'tell'):
+            try:
+                orig_pos = body.tell()
+                body.seek(0, 2)
+                end_file_pos = body.tell()
+                body.seek(orig_pos)
+                return end_file_pos - orig_pos
+            except io.UnsupportedOperation:
+                # in case when body is, for example, io.BufferedIOBase object
+                # it has "seek" method which throws "UnsupportedOperation"
+                # exception in such case we want to fall back to "chunked"
+                # encoding
+                pass
+        # Failed to determine the length
+        return None
+
+
+class AWSRequest(object):
+    """Represents the elements of an HTTP request.
+
+    This class was originally inspired by requests.models.Request, but has been
+    boiled down to meet the specific use cases in botocore. That being said this
+    class (even in requests) is effectively a named-tuple.
+    """
+
+    _REQUEST_PREPARER_CLS = AWSRequestPreparer
+
+    def __init__(self,
+                 method=None,
+                 url=None,
+                 headers=None,
+                 data=None,
+                 params=None,
+                 auth_path=None,
+                 stream_output=False):
+
+        self._request_preparer = self._REQUEST_PREPARER_CLS()
+
+        # Default empty dicts for dict params.
+        params = {} if params is None else params
+
+        self.method = method
+        self.url = url
+        self.headers = HTTPHeaders()
+        self.data = data
+        self.params = params
+        self.auth_path = auth_path
+        self.stream_output = stream_output
+
+        if headers is not None:
+            for key, value in headers.items():
+                self.headers[key] = value
+
+        # This is a dictionary to hold information that is used when
+        # processing the request. What is inside of ``context`` is open-ended.
+        # For example, it may have a timestamp key that is used for holding
+        # what the timestamp is when signing the request. Note that none
+        # of the information that is inside of ``context`` is directly
+        # sent over the wire; the information is only used to assist in
+        # creating what is sent over the wire.
+        self.context = {}
+
+    def prepare(self):
+        """Constructs a :class:`AWSPreparedRequest <AWSPreparedRequest>`."""
+        return self._request_preparer.prepare(self)
+
+    @property
+    def body(self):
+        body = self.prepare().body
+        if isinstance(body, six.text_type):
+            body = body.encode('utf-8')
+        return body
+
+
+class AWSPreparedRequest(object):
+    """A data class representing a finalized request to be sent over the wire.
+
+    Requests at this stage should be treated as final, and the properties of
+    the request should not be modified.
+
+    :ivar method: The HTTP Method
+    :ivar url: The full url
+    :ivar headers: The HTTP headers to send.
+    :ivar body: The HTTP body.
+    :ivar stream_output: If the response for this request should be streamed.
+    """
+    def __init__(self, method, url, headers, body, stream_output):
+        self.method = method
+        self.url = url
+        self.headers = headers
+        self.body = body
+        self.stream_output = stream_output
+
+    def __repr__(self):
+        fmt = (
+            '<AWSPreparedRequest stream_output=%s, method=%s, url=%s, '
+            'headers=%s>'
+        )
+        return fmt % (self.stream_output, self.method, self.url, self.headers)
+
+    def reset_stream(self):
+        """Resets the streaming body to it's initial position.
+
+        If the request contains a streaming body (a streamable file-like object)
+        seek to the object's initial position to ensure the entire contents of
+        the object is sent. This is a no-op for static bytes-like body types.
+        """
+        # Trying to reset a stream when there is a no stream will
+        # just immediately return.  It's not an error, it will produce
+        # the same result as if we had actually reset the stream (we'll send
+        # the entire body contents again if we need to).
+        # Same case if the body is a string/bytes/bytearray type.
+
+        non_seekable_types = (six.binary_type, six.text_type, bytearray)
+        if self.body is None or isinstance(self.body, non_seekable_types):
+            return
+        try:
+            logger.debug("Rewinding stream: %s", self.body)
+            self.body.seek(0)
+        except Exception as e:
+            logger.debug("Unable to rewind stream: %s", e)
+            raise UnseekableStreamError(stream_object=self.body)
+
+
+class AWSResponse(object):
+    """A data class representing an HTTP response.
+
+    This class was originally inspired by requests.models.Response, but has
+    been boiled down to meet the specific use cases in botocore. This has
+    effectively been reduced to a named tuple.
+
+    :ivar url: The full url.
+    :ivar status_code: The status code of the HTTP response.
+    :ivar headers: The HTTP headers received.
+    :ivar body: The HTTP response body.
+    """
+
+    def __init__(self, url, status_code, headers, raw):
+        self.url = url
+        self.status_code = status_code
+        self.headers = HeadersDict(headers)
+        self.raw = raw
+
+        self._content = None
+
+    @property
+    def content(self):
+        """Content of the response as bytes."""
+
+        if self._content is None:
+            # Read the contents.
+            # NOTE: requests would attempt to call stream and fall back
+            # to a custom generator that would call read in a loop, but
+            # we don't rely on this behavior
+            self._content = bytes().join(self.raw.stream()) or bytes()
+
+        return self._content
+
+    @property
+    def text(self):
+        """Content of the response as a proper text type.
+
+        Uses the encoding type provided in the reponse headers to decode the
+        response content into a proper text type. If the encoding is not
+        present in the headers, UTF-8 is used as a default.
+        """
+        encoding = botocore.utils.get_encoding_from_headers(self.headers)
+        if encoding:
+            return self.content.decode(encoding)
+        else:
+            return self.content.decode('utf-8')
+
+
+class _HeaderKey(object):
+    def __init__(self, key):
+        self._key = key
+        self._lower = key.lower()
+
+    def __hash__(self):
+        return hash(self._lower)
+
+    def __eq__(self, other):
+        return isinstance(other, _HeaderKey) and self._lower == other._lower
+
+    def __str__(self):
+        return self._key
+
+    def __repr__(self):
+        return repr(self._key)
+
+
+class HeadersDict(MutableMapping):
+    """A case-insenseitive dictionary to represent HTTP headers. """
+    def __init__(self, *args, **kwargs):
+        self._dict = {}
+        self.update(*args, **kwargs)
+
+    def __setitem__(self, key, value):
+        self._dict[_HeaderKey(key)] = value
+
+    def __getitem__(self, key):
+        return self._dict[_HeaderKey(key)]
+
+    def __delitem__(self, key):
+        del self._dict[_HeaderKey(key)]
+
+    def __iter__(self):
+        return (str(key) for key in self._dict)
+
+    def __len__(self):
+        return len(self._dict)
+
+    def __repr__(self):
+        return repr(self._dict)
+
+    def copy(self):
+        return HeadersDict(self.items())

+ 4433 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/cacert.pem

@@ -0,0 +1,4433 @@
+
+# Issuer: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA
+# Subject: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA
+# Label: "GlobalSign Root CA"
+# Serial: 4835703278459707669005204
+# MD5 Fingerprint: 3e:45:52:15:09:51:92:e1:b7:5d:37:9f:b1:87:29:8a
+# SHA1 Fingerprint: b1:bc:96:8b:d4:f4:9d:62:2a:a8:9a:81:f2:15:01:52:a4:1d:82:9c
+# SHA256 Fingerprint: eb:d4:10:40:e4:bb:3e:c7:42:c9:e3:81:d3:1e:f2:a4:1a:48:b6:68:5c:96:e7:ce:f3:c1:df:6c:d4:33:1c:99
+-----BEGIN CERTIFICATE-----
+MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG
+A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv
+b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw
+MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i
+YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT
+aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ
+jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp
+xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp
+1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG
+snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ
+U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8
+9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E
+BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B
+AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz
+yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE
+38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP
+AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad
+DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME
+HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
+-----END CERTIFICATE-----
+
+# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R2
+# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R2
+# Label: "GlobalSign Root CA - R2"
+# Serial: 4835703278459682885658125
+# MD5 Fingerprint: 94:14:77:7e:3e:5e:fd:8f:30:bd:41:b0:cf:e7:d0:30
+# SHA1 Fingerprint: 75:e0:ab:b6:13:85:12:27:1c:04:f8:5f:dd:de:38:e4:b7:24:2e:fe
+# SHA256 Fingerprint: ca:42:dd:41:74:5f:d0:b8:1e:b9:02:36:2c:f9:d8:bf:71:9d:a1:bd:1b:1e:fc:94:6f:5b:4c:99:f4:2c:1b:9e
+-----BEGIN CERTIFICATE-----
+MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4G
+A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNp
+Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1
+MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEG
+A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI
+hvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6ErPL
+v4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8
+eoLrvozps6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklq
+tTleiDTsvHgMCJiEbKjNS7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzd
+C9XZzPnqJworc5HGnRusyMvo4KD0L5CLTfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pa
+zq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6CygPCm48CAwEAAaOBnDCB
+mTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm+IH
+V2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5n
+bG9iYWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG
+3lm0mi3f3BmGLjANBgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4Gs
+J0/WwbgcQ3izDJr86iw8bmEbTUsp9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO
+291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu01yiPqFbQfXf5WRDLenVOavS
+ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd
+AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
+TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
+-----END CERTIFICATE-----
+
+# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only
+# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only
+# Label: "Verisign Class 3 Public Primary Certification Authority - G3"
+# Serial: 206684696279472310254277870180966723415
+# MD5 Fingerprint: cd:68:b6:a7:c7:c4:ce:75:e0:1d:4f:57:44:61:92:09
+# SHA1 Fingerprint: 13:2d:0d:45:53:4b:69:97:cd:b2:d5:c3:39:e2:55:76:60:9b:5c:c6
+# SHA256 Fingerprint: eb:04:cf:5e:b1:f3:9a:fa:76:2f:2b:b1:20:f2:96:cb:a5:20:c1:b9:7d:b1:58:95:65:b8:1c:b9:a1:7b:72:44
+-----BEGIN CERTIFICATE-----
+MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQsw
+CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl
+cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu
+LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT
+aWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
+dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD
+VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT
+aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ
+bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu
+IENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg
+LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMu6nFL8eB8aHm8b
+N3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1EUGO+i2t
+KmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGu
+kxUccLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBm
+CC+Vk7+qRy+oRpfwEuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJ
+Xwzw3sJ2zq/3avL6QaaiMxTJ5Xpj055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWu
+imi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAERSWwauSCPc/L8my/uRan2Te
+2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5fj267Cz3qWhMe
+DGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC
+/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565p
+F4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGt
+TxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ==
+-----END CERTIFICATE-----
+
+# Issuer: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited
+# Subject: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited
+# Label: "Entrust.net Premium 2048 Secure Server CA"
+# Serial: 946069240
+# MD5 Fingerprint: ee:29:31:bc:32:7e:9a:e6:e8:b5:f7:51:b4:34:71:90
+# SHA1 Fingerprint: 50:30:06:09:1d:97:d4:f5:ae:39:f7:cb:e7:92:7d:7d:65:2d:34:31
+# SHA256 Fingerprint: 6d:c4:71:72:e0:1c:bc:b0:bf:62:58:0d:89:5f:e2:b8:ac:9a:d4:f8:73:80:1e:0c:10:b9:c8:37:d2:1e:b1:77
+-----BEGIN CERTIFICATE-----
+MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML
+RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp
+bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5
+IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp
+ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0yOTA3
+MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3
+LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp
+YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG
+A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq
+K0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe
+sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX
+MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT
+XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/
+HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH
+4QIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV
+HQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJKoZIhvcNAQEFBQADggEBADub
+j1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPyT/4xmf3IDExo
+U8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf
+zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5b
+u/8j72gZyxKTJ1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+
+bYQLCIt+jerXmCHG8+c8eS9enNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/Er
+fF6adulZkMV8gzURZVE=
+-----END CERTIFICATE-----
+
+# Issuer: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust
+# Subject: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust
+# Label: "Baltimore CyberTrust Root"
+# Serial: 33554617
+# MD5 Fingerprint: ac:b6:94:a5:9c:17:e0:d7:91:52:9b:b1:97:06:a6:e4
+# SHA1 Fingerprint: d4:de:20:d0:5e:66:fc:53:fe:1a:50:88:2c:78:db:28:52:ca:e4:74
+# SHA256 Fingerprint: 16:af:57:a9:f6:76:b0:ab:12:60:95:aa:5e:ba:de:f2:2a:b3:11:19:d6:44:ac:95:cd:4b:93:db:f3:f2:6a:eb
+-----BEGIN CERTIFICATE-----
+MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ
+RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD
+VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX
+DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y
+ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy
+VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr
+mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr
+IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK
+mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu
+XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy
+dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye
+jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1
+BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3
+DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92
+9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx
+jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0
+Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz
+ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS
+R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
+-----END CERTIFICATE-----
+
+# Issuer: CN=AddTrust External CA Root O=AddTrust AB OU=AddTrust External TTP Network
+# Subject: CN=AddTrust External CA Root O=AddTrust AB OU=AddTrust External TTP Network
+# Label: "AddTrust External Root"
+# Serial: 1
+# MD5 Fingerprint: 1d:35:54:04:85:78:b0:3f:42:42:4d:bf:20:73:0a:3f
+# SHA1 Fingerprint: 02:fa:f3:e2:91:43:54:68:60:78:57:69:4d:f5:e4:5b:68:85:18:68
+# SHA256 Fingerprint: 68:7f:a4:51:38:22:78:ff:f0:c8:b1:1f:8d:43:d5:76:67:1c:6e:b2:bc:ea:b4:13:fb:83:d9:65:d0:6d:2f:f2
+-----BEGIN CERTIFICATE-----
+MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU
+MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs
+IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290
+MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux
+FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h
+bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v
+dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt
+H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9
+uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX
+mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX
+a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN
+E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0
+WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD
+VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0
+Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU
+cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx
+IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN
+AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH
+YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
+6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC
+Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX
+c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a
+mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
+-----END CERTIFICATE-----
+
+# Issuer: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc.
+# Subject: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc.
+# Label: "Entrust Root Certification Authority"
+# Serial: 1164660820
+# MD5 Fingerprint: d6:a5:c3:ed:5d:dd:3e:00:c1:3d:87:92:1f:1d:3f:e4
+# SHA1 Fingerprint: b3:1e:b1:b7:40:e3:6c:84:02:da:dc:37:d4:4d:f5:d4:67:49:52:f9
+# SHA256 Fingerprint: 73:c1:76:43:4f:1b:c6:d5:ad:f4:5b:0e:76:e7:27:28:7c:8d:e5:76:16:c1:e6:e6:14:1a:2b:2c:bc:7d:8e:4c
+-----BEGIN CERTIFICATE-----
+MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMC
+VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0
+Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW
+KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl
+cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0MloXDTI2MTEyNzIw
+NTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMTkw
+NwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSBy
+ZWZlcmVuY2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNV
+BAMTJEVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJ
+KoZIhvcNAQEBBQADggEPADCCAQoCggEBALaVtkNC+sZtKm9I35RMOVcF7sN5EUFo
+Nu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYszA9u3g3s+IIRe7bJWKKf4
+4LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOwwCj0Yzfv9
+KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGI
+rb68j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi
+94DkZfs0Nw4pgHBNrziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOB
+sDCBrTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAi
+gA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1MzQyWjAfBgNVHSMEGDAWgBRo
+kORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DHhmak8fdLQ/uE
+vW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA
+A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9t
+O1KzKtvn1ISMY/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6Zua
+AGAT/3B+XxFNSRuzFVJ7yVTav52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP
+9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTSW3iDVuycNsMm4hH2Z0kdkquM++v/
+eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0tHuu2guQOHXvgR1m
+0vdXcDazv/wor3ElhVsT/h5/WrQ8
+-----END CERTIFICATE-----
+
+# Issuer: CN=GeoTrust Global CA O=GeoTrust Inc.
+# Subject: CN=GeoTrust Global CA O=GeoTrust Inc.
+# Label: "GeoTrust Global CA"
+# Serial: 144470
+# MD5 Fingerprint: f7:75:ab:29:fb:51:4e:b7:77:5e:ff:05:3c:99:8e:f5
+# SHA1 Fingerprint: de:28:f4:a4:ff:e5:b9:2f:a3:c5:03:d1:a3:49:a7:f9:96:2a:82:12
+# SHA256 Fingerprint: ff:85:6a:2d:25:1d:cd:88:d3:66:56:f4:50:12:67:98:cf:ab:aa:de:40:79:9c:72:2d:e4:d2:b5:db:36:a7:3a
+-----BEGIN CERTIFICATE-----
+MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT
+MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i
+YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG
+EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg
+R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9
+9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq
+fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv
+iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU
+1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+
+bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW
+MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA
+ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l
+uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn
+Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS
+tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF
+PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un
+hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV
+5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw==
+-----END CERTIFICATE-----
+
+# Issuer: CN=GeoTrust Universal CA O=GeoTrust Inc.
+# Subject: CN=GeoTrust Universal CA O=GeoTrust Inc.
+# Label: "GeoTrust Universal CA"
+# Serial: 1
+# MD5 Fingerprint: 92:65:58:8b:a2:1a:31:72:73:68:5c:b4:a5:7a:07:48
+# SHA1 Fingerprint: e6:21:f3:35:43:79:05:9a:4b:68:30:9d:8a:2f:74:22:15:87:ec:79
+# SHA256 Fingerprint: a0:45:9b:9f:63:b2:25:59:f5:fa:5d:4c:6d:b3:f9:f7:2f:f1:93:42:03:35:78:f0:73:bf:1d:1b:46:cb:b9:12
+-----BEGIN CERTIFICATE-----
+MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEW
+MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVy
+c2FsIENBMB4XDTA0MDMwNDA1MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UE
+BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xHjAcBgNVBAMTFUdlb1RydXN0
+IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKYV
+VaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9tJPi8
+cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTT
+QjOgNB0eRXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFh
+F7em6fgemdtzbvQKoiFs7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2v
+c7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d8Lsrlh/eezJS/R27tQahsiFepdaVaH/w
+mZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7VqnJNk22CDtucvc+081xd
+VHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3CgaRr0BHdCX
+teGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZ
+f9hBZ3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfRe
+Bi9Fi1jUIxaS5BZuKGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+
+nhutxx9z3SxPGWX9f5NAEC7S8O08ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB
+/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0XG0D08DYj3rWMB8GA1UdIwQY
+MBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG
+9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc
+aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fX
+IwjhmF7DWgh2qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzyn
+ANXH/KttgCJwpQzgXQQpAvvLoJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0z
+uzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsKxr2EoyNB3tZ3b4XUhRxQ4K5RirqN
+Pnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxFKyDuSN/n3QmOGKja
+QI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2DFKW
+koRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9
+ER/frslKxfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQt
+DF4JbAiXfKM9fJP/P6EUp8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/Sfuvm
+bJxPgWp6ZKy7PtXny3YuxadIwVyQD8vIP/rmMuGNG2+k5o7Y+SlIis5z/iw=
+-----END CERTIFICATE-----
+
+# Issuer: CN=GeoTrust Universal CA 2 O=GeoTrust Inc.
+# Subject: CN=GeoTrust Universal CA 2 O=GeoTrust Inc.
+# Label: "GeoTrust Universal CA 2"
+# Serial: 1
+# MD5 Fingerprint: 34:fc:b8:d0:36:db:9e:14:b3:c2:f2:db:8f:e4:94:c7
+# SHA1 Fingerprint: 37:9a:19:7b:41:85:45:35:0c:a6:03:69:f3:3c:2e:af:47:4f:20:79
+# SHA256 Fingerprint: a0:23:4f:3b:c8:52:7c:a5:62:8e:ec:81:ad:5d:69:89:5d:a5:68:0d:c9:1d:1c:b8:47:7f:33:f8:78:b9:5b:0b
+-----BEGIN CERTIFICATE-----
+MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEW
+MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVy
+c2FsIENBIDIwHhcNMDQwMzA0MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYD
+VQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1
+c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
+AQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0DE81
+WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUG
+FF+3Qs17j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdq
+XbboW0W63MOhBW9Wjo8QJqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxL
+se4YuU6W3Nx2/zu+z18DwPw76L5GG//aQMJS9/7jOvdqdzXQ2o3rXhhqMcceujwb
+KNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2WP0+GfPtDCapkzj4T8Fd
+IgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP20gaXT73
+y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRt
+hAAnZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgoc
+QIgfksILAAX/8sgCSqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4
+Lt1ZrtmhN79UNdxzMk+MBB4zsslG8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNV
+HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAfBgNV
+HSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8EBAMCAYYwDQYJ
+KoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z
+dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQ
+L1EuxBRa3ugZ4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgr
+Fg5fNuH8KrUwJM/gYwx7WBr+mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSo
+ag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpqA1Ihn0CoZ1Dy81of398j9tx4TuaY
+T1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpgY+RdM4kX2TGq2tbz
+GDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiPpm8m
+1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJV
+OCiNUW7dFGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH
+6aLcr34YEoP9VhdBLtUpgn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwX
+QMAJKOSLakhT2+zNVVXxxvjpoixMptEmX36vWkzaH6byHCx+rgIW0lbQL1dTR+iS
+-----END CERTIFICATE-----
+
+# Issuer: CN=Visa eCommerce Root O=VISA OU=Visa International Service Association
+# Subject: CN=Visa eCommerce Root O=VISA OU=Visa International Service Association
+# Label: "Visa eCommerce Root"
+# Serial: 25952180776285836048024890241505565794
+# MD5 Fingerprint: fc:11:b8:d8:08:93:30:00:6d:23:f9:7e:eb:52:1e:02
+# SHA1 Fingerprint: 70:17:9b:86:8c:00:a4:fa:60:91:52:22:3f:9f:3e:32:bd:e0:05:62
+# SHA256 Fingerprint: 69:fa:c9:bd:55:fb:0a:c7:8d:53:bb:ee:5c:f1:d5:97:98:9f:d0:aa:ab:20:a2:51:51:bd:f1:73:3e:e7:d1:22
+-----BEGIN CERTIFICATE-----
+MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBr
+MQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRl
+cm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv
+bW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2WhcNMjIwNjI0MDAxNjEyWjBrMQsw
+CQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5h
+dGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1l
+cmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h
+2mCxlCfLF9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4E
+lpF7sDPwsRROEW+1QK8bRaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdV
+ZqW1LS7YgFmypw23RuwhY/81q6UCzyr0TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq
+299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI/k4+oKsGGelT84ATB+0t
+vz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzsGHxBvfaL
+dXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD
+AgEGMB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUF
+AAOCAQEAX/FBfXxcCLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcR
+zCSs00Rsca4BIGsDoo8Ytyk6feUWYFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3
+LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pzzkWKsKZJ/0x9nXGIxHYdkFsd
+7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBuYQa7FkKMcPcw
+++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt
+398znM/jra6O1I7mT1GvFpLgXPYHDw==
+-----END CERTIFICATE-----
+
+# Issuer: CN=AAA Certificate Services O=Comodo CA Limited
+# Subject: CN=AAA Certificate Services O=Comodo CA Limited
+# Label: "Comodo AAA Services root"
+# Serial: 1
+# MD5 Fingerprint: 49:79:04:b0:eb:87:19:ac:47:b0:bc:11:51:9b:74:d0
+# SHA1 Fingerprint: d1:eb:23:a4:6d:17:d6:8f:d9:25:64:c2:f1:f1:60:17:64:d8:e3:49
+# SHA256 Fingerprint: d7:a7:a0:fb:5d:7e:27:31:d7:71:e9:48:4e:bc:de:f7:1d:5f:0c:3e:0a:29:48:78:2b:c8:3e:e0:ea:69:9e:f4
+-----BEGIN CERTIFICATE-----
+MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb
+MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow
+GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj
+YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL
+MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE
+BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM
+GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
+ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua
+BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe
+3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4
+YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR
+rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm
+ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU
+oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
+MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v
+QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t
+b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF
+AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q
+GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
+Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2
+G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi
+l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3
+smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
+-----END CERTIFICATE-----
+
+# Issuer: CN=QuoVadis Root Certification Authority O=QuoVadis Limited OU=Root Certification Authority
+# Subject: CN=QuoVadis Root Certification Authority O=QuoVadis Limited OU=Root Certification Authority
+# Label: "QuoVadis Root CA"
+# Serial: 985026699
+# MD5 Fingerprint: 27:de:36:fe:72:b7:00:03:00:9d:f4:f0:1e:6c:04:24
+# SHA1 Fingerprint: de:3f:40:bd:50:93:d3:9b:6c:60:f6:da:bc:07:62:01:00:89:76:c9
+# SHA256 Fingerprint: a4:5e:de:3b:bb:f0:9c:8a:e1:5c:72:ef:c0:72:68:d6:93:a2:1c:99:6f:d5:1e:67:ca:07:94:60:fd:6d:88:73
+-----BEGIN CERTIFICATE-----
+MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJC
+TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0
+aWZpY2F0aW9uIEF1dGhvcml0eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0
+aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAzMTkxODMzMzNaFw0yMTAzMTcxODMz
+MzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUw
+IwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQDEyVR
+dW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG
+9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Yp
+li4kVEAkOPcahdxYTMukJ0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2D
+rOpm2RgbaIr1VxqYuvXtdj182d6UajtLF8HVj71lODqV0D1VNk7feVcxKh7YWWVJ
+WCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeLYzcS19Dsw3sgQUSj7cug
+F+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWenAScOospU
+xbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCC
+Ak4wPQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVv
+dmFkaXNvZmZzaG9yZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREw
+ggENMIIBCQYJKwYBBAG+WAABMIH7MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNl
+IG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBh
+c3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFy
+ZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh
+Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYI
+KwYBBQUHAgEWFmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3T
+KbkGGew5Oanwl4Rqy+/fMIGuBgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rq
+y+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1p
+dGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYD
+VQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6tlCL
+MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSk
+fnIYj9lofFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf8
+7C9TqnN7Az10buYWnuulLsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1R
+cHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2xgI4JVrmcGmD+XcHXetwReNDWXcG31a0y
+mQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi5upZIof4l/UO/erMkqQW
+xFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi5nrQNiOK
+SnQ2+Q==
+-----END CERTIFICATE-----
+
+# Issuer: CN=QuoVadis Root CA 2 O=QuoVadis Limited
+# Subject: CN=QuoVadis Root CA 2 O=QuoVadis Limited
+# Label: "QuoVadis Root CA 2"
+# Serial: 1289
+# MD5 Fingerprint: 5e:39:7b:dd:f8:ba:ec:82:e9:ac:62:ba:0c:54:00:2b
+# SHA1 Fingerprint: ca:3a:fb:cf:12:40:36:4b:44:b2:16:20:88:80:48:39:19:93:7c:f7
+# SHA256 Fingerprint: 85:a0:dd:7d:d7:20:ad:b7:ff:05:f8:3d:54:2b:20:9d:c7:ff:45:28:f7:d6:77:b1:83:89:fe:a5:e5:c4:9e:86
+-----BEGIN CERTIFICATE-----
+MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x
+GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv
+b3QgQ0EgMjAeFw0wNjExMjQxODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNV
+BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W
+YWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCa
+GMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6XJxg
+Fyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55J
+WpzmM+Yklvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bB
+rrcCaoF6qUWD4gXmuVbBlDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp
++ARz8un+XJiM9XOva7R+zdRcAitMOeGylZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1
+ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt66/3FsvbzSUr5R/7mp/i
+Ucw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1JdxnwQ5hYIiz
+PtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og
+/zOhD7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UH
+oycR7hYQe7xFSkyyBNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuI
+yV77zGHcizN300QyNQliBJIWENieJ0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1Ud
+EwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBQahGK8SEwzJQTU7tD2
+A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGUa6FJpEcwRTEL
+MAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT
+ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2f
+BluornFdLwUvZ+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzn
+g/iN/Ae42l9NLmeyhP3ZRPx3UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2Bl
+fF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodmVjB3pjd4M1IQWK4/YY7yarHvGH5K
+WWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK+JDSV6IZUaUtl0Ha
+B0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrWIozc
+hLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPR
+TUIZ3Ph1WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWD
+mbA4CD/pXvk1B+TJYm5Xf6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0Z
+ohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y
+4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8VCLAAVBpQ570su9t+Oza
+8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u
+-----END CERTIFICATE-----
+
+# Issuer: CN=QuoVadis Root CA 3 O=QuoVadis Limited
+# Subject: CN=QuoVadis Root CA 3 O=QuoVadis Limited
+# Label: "QuoVadis Root CA 3"
+# Serial: 1478
+# MD5 Fingerprint: 31:85:3c:62:94:97:63:b9:aa:fd:89:4e:af:6f:e0:cf
+# SHA1 Fingerprint: 1f:49:14:f7:d8:74:95:1d:dd:ae:02:c0:be:fd:3a:2d:82:75:51:85
+# SHA256 Fingerprint: 18:f1:fc:7f:20:5d:f8:ad:dd:eb:7f:e0:07:dd:57:e3:af:37:5a:9c:4d:8d:73:54:6b:f4:f1:fe:d1:e1:8d:35
+-----BEGIN CERTIFICATE-----
+MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x
+GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv
+b3QgQ0EgMzAeFw0wNjExMjQxOTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNV
+BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W
+YWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDM
+V0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNggDhoB
+4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUr
+H556VOijKTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd
+8lyyBTNvijbO0BNO/79KDDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9Cabwv
+vWhDFlaJKjdhkf2mrk7AyxRllDdLkgbvBNDInIjbC3uBr7E9KsRlOni27tyAsdLT
+mZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwpp5ijJUMv7/FfJuGITfhe
+btfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8nT8KKdjc
+T5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDt
+WAEXMJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZ
+c6tsgLjoC2SToJyMGf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A
+4iLItLRkT9a6fUg+qGkM17uGcclzuD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYD
+VR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHTBgkrBgEEAb5YAAMwgcUwgZMG
+CCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmljYXRlIGNvbnN0
+aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0
+aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVu
+dC4wLQYIKwYBBQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2Nw
+czALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4G
+A1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4ywLQoUmkRzBFMQswCQYDVQQGEwJC
+TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UEAxMSUXVvVmFkaXMg
+Um9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZVqyM0
+7ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSem
+d1o417+shvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd
++LJ2w/w4E6oM3kJpK27zPOuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B
+4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadN
+t54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp8kokUvd0/bpO5qgdAm6x
+DYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBCbjPsMZ57
+k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6s
+zHXug/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0j
+Wy10QJLZYxkNc91pvGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeT
+mJlglFwjz1onl14LBQaTNx47aTbrqZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK
+4SVhM7JZG+Ju1zdXtg2pEto=
+-----END CERTIFICATE-----
+
+# Issuer: O=SECOM Trust.net OU=Security Communication RootCA1
+# Subject: O=SECOM Trust.net OU=Security Communication RootCA1
+# Label: "Security Communication Root CA"
+# Serial: 0
+# MD5 Fingerprint: f1:bc:63:6a:54:e0:b5:27:f5:cd:e7:1a:e3:4d:6e:4a
+# SHA1 Fingerprint: 36:b1:2b:49:f9:81:9e:d7:4c:9e:bc:38:0f:c6:56:8f:5d:ac:b2:f7
+# SHA256 Fingerprint: e7:5e:72:ed:9f:56:0e:ec:6e:b4:80:00:73:a4:3f:c3:ad:19:19:5a:39:22:82:01:78:95:97:4a:99:02:6b:6c
+-----BEGIN CERTIFICATE-----
+MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEY
+MBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21t
+dW5pY2F0aW9uIFJvb3RDQTEwHhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5
+WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYD
+VQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEwggEiMA0GCSqGSIb3
+DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw8yl8
+9f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJ
+DKaVv0uMDPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9
+Ms+k2Y7CI9eNqPPYJayX5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/N
+QV3Is00qVUarH9oe4kA92819uZKAnDfdDJZkndwi92SL32HeFZRSFaB9UslLqCHJ
+xrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2JChzAgMBAAGjPzA9MB0G
+A1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYwDwYDVR0T
+AQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vG
+kl3g0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfr
+Uj94nK9NrvjVT8+amCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5
+Bw+SUEmK3TGXX8npN6o7WWWXlDLJs58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJU
+JRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ6rBK+1YWc26sTfcioU+tHXot
+RSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAiFL39vmwLAw==
+-----END CERTIFICATE-----
+
+# Issuer: CN=Sonera Class2 CA O=Sonera
+# Subject: CN=Sonera Class2 CA O=Sonera
+# Label: "Sonera Class 2 Root CA"
+# Serial: 29
+# MD5 Fingerprint: a3:ec:75:0f:2e:88:df:fa:48:01:4e:0b:5c:48:6f:fb
+# SHA1 Fingerprint: 37:f7:6d:e6:07:7c:90:c5:b1:3e:93:1a:b7:41:10:b4:f2:e4:9a:27
+# SHA256 Fingerprint: 79:08:b4:03:14:c1:38:10:0b:51:8d:07:35:80:7f:fb:fc:f8:51:8a:00:95:33:71:05:ba:38:6b:15:3d:d9:27
+-----BEGIN CERTIFICATE-----
+MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEP
+MA0GA1UEChMGU29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAx
+MDQwNjA3Mjk0MFoXDTIxMDQwNjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNV
+BAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJhIENsYXNzMiBDQTCCASIwDQYJKoZI
+hvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3/Ei9vX+ALTU74W+o
+Z6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybTdXnt
+5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s
+3TmVToMGf+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2Ej
+vOr7nQKV0ba5cTppCD8PtOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu
+8nYybieDwnPz3BjotJPqdURrBGAgcVeHnfO+oJAjPYok4doh28MCAwEAAaMzMDEw
+DwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITTXjwwCwYDVR0PBAQDAgEG
+MA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt0jSv9zil
+zqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/
+3DEIcbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvD
+FNr450kkkdAdavphOe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6
+Tk6ezAyNlNzZRZxe7EJQY670XcSxEtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2
+ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLHllpwrN9M
+-----END CERTIFICATE-----
+
+# Issuer: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com
+# Subject: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com
+# Label: "XRamp Global CA Root"
+# Serial: 107108908803651509692980124233745014957
+# MD5 Fingerprint: a1:0b:44:b3:ca:10:d8:00:6e:9d:0f:d8:0f:92:0a:d1
+# SHA1 Fingerprint: b8:01:86:d1:eb:9c:86:a5:41:04:cf:30:54:f3:4c:52:b7:e5:58:c6
+# SHA256 Fingerprint: ce:cd:dc:90:50:99:d8:da:df:c5:b1:d2:09:b7:37:cb:e2:c1:8c:fb:2c:10:c0:ff:0b:cf:0d:32:86:fc:1a:a2
+-----BEGIN CERTIFICATE-----
+MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCB
+gjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk
+MCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRY
+UmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQxMTAxMTcx
+NDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3
+dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2Vy
+dmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB
+dXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS6
+38eMpSe2OAtp87ZOqCwuIR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCP
+KZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMxfoArtYzAQDsRhtDLooY2YKTVMIJt2W7Q
+DxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FEzG+gSqmUsE3a56k0enI4
+qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqsAxcZZPRa
+JSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNVi
+PvryxS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0P
+BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASs
+jVy16bYbMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0
+eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQEwDQYJKoZIhvcNAQEFBQAD
+ggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc/Kh4ZzXxHfAR
+vbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt
+qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLa
+IR9NmXmd4c8nnxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSy
+i6mx5O+aGtA9aZnuqCij4Tyz8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQ
+O+7ETPTsJ3xCwnR8gooJybQDJbw=
+-----END CERTIFICATE-----
+
+# Issuer: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority
+# Subject: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority
+# Label: "Go Daddy Class 2 CA"
+# Serial: 0
+# MD5 Fingerprint: 91:de:06:25:ab:da:fd:32:17:0c:bb:25:17:2a:84:67
+# SHA1 Fingerprint: 27:96:ba:e6:3f:18:01:e2:77:26:1b:a0:d7:77:70:02:8f:20:ee:e4
+# SHA256 Fingerprint: c3:84:6b:f2:4b:9e:93:ca:64:27:4c:0e:c6:7c:1e:cc:5e:02:4f:fc:ac:d2:d7:40:19:35:0e:81:fe:54:6a:e4
+-----BEGIN CERTIFICATE-----
+MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh
+MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE
+YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3
+MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo
+ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg
+MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN
+ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA
+PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w
+wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi
+EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY
+avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+
+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE
+sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h
+/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5
+IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj
+YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD
+ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy
+OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P
+TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ
+HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER
+dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf
+ReYNnyicsbkqWletNw+vHX/bvZ8=
+-----END CERTIFICATE-----
+
+# Issuer: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority
+# Subject: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority
+# Label: "Starfield Class 2 CA"
+# Serial: 0
+# MD5 Fingerprint: 32:4a:4b:bb:c8:63:69:9b:be:74:9a:c6:dd:1d:46:24
+# SHA1 Fingerprint: ad:7e:1c:28:b0:64:ef:8f:60:03:40:20:14:c3:d0:e3:37:0e:b5:8a
+# SHA256 Fingerprint: 14:65:fa:20:53:97:b8:76:fa:a6:f0:a9:95:8e:55:90:e4:0f:cc:7f:aa:4f:b7:c2:c8:67:75:21:fb:5f:b6:58
+-----BEGIN CERTIFICATE-----
+MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzEl
+MCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMp
+U3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQw
+NjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBoMQswCQYDVQQGEwJVUzElMCMGA1UE
+ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZp
+ZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqGSIb3
+DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf
+8MOh2tTYbitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN
++lq2cwQlZut3f+dZxkqZJRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0
+X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVmepsZGD3/cVE8MC5fvj13c7JdBmzDI1aa
+K4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSNF4Azbl5KXZnJHoe0nRrA
+1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HFMIHCMB0G
+A1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fR
+zt0fhvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0
+YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBD
+bGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8w
+DQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGsafPzWdqbAYcaT1epoXkJKtv3
+L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLMPUxA2IGvd56D
+eruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl
+xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynp
+VSJYACPq4xJDKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEY
+WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q=
+-----END CERTIFICATE-----
+
+# Issuer: O=Government Root Certification Authority
+# Subject: O=Government Root Certification Authority
+# Label: "Taiwan GRCA"
+# Serial: 42023070807708724159991140556527066870
+# MD5 Fingerprint: 37:85:44:53:32:45:1f:20:f0:f3:95:e1:25:c4:43:4e
+# SHA1 Fingerprint: f4:8b:11:bf:de:ab:be:94:54:20:71:e6:41:de:6b:be:88:2b:40:b9
+# SHA256 Fingerprint: 76:00:29:5e:ef:e8:5b:9e:1f:d6:24:db:76:06:2a:aa:ae:59:81:8a:54:d2:77:4c:d4:c0:b2:c0:11:31:e1:b3
+-----BEGIN CERTIFICATE-----
+MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/
+MQswCQYDVQQGEwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmlj
+YXRpb24gQXV0aG9yaXR5MB4XDTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1ow
+PzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dvdmVybm1lbnQgUm9vdCBDZXJ0aWZp
+Y2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB
+AJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qNw8XR
+IePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1q
+gQdW8or5BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKy
+yhwOeYHWtXBiCAEuTk8O1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAts
+F/tnyMKtsc2AtJfcdgEWFelq16TheEfOhtX7MfP6Mb40qij7cEwdScevLJ1tZqa2
+jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wovJ5pGfaENda1UhhXcSTvx
+ls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7Q3hub/FC
+VGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHK
+YS1tB6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoH
+EgKXTiCQ8P8NHuJBO9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThN
+Xo+EHWbNxWCWtFJaBYmOlXqYwZE8lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1Ud
+DgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNVHRMEBTADAQH/MDkGBGcqBwAE
+MTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg209yewDL7MTqK
+UWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ
+TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyf
+qzvS/3WXy6TjZwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaK
+ZEk9GhiHkASfQlK3T8v+R0F2Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFE
+JPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlUD7gsL0u8qV1bYH+Mh6XgUmMqvtg7
+hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6QzDxARvBMB1uUO07+1
+EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+HbkZ6Mm
+nD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WX
+udpVBrkk7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44Vbnz
+ssQwmSNOXfJIoRIM3BKQCZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDe
+LMDDav7v3Aun+kbfYNucpllQdSNpc5Oy+fwC00fmcc4QAu4njIT/rEUNE1yDMuAl
+pYYsfPQS
+-----END CERTIFICATE-----
+
+# Issuer: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com
+# Subject: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com
+# Label: "DigiCert Assured ID Root CA"
+# Serial: 17154717934120587862167794914071425081
+# MD5 Fingerprint: 87:ce:0b:7b:2a:0e:49:00:e1:58:71:9b:37:a8:93:72
+# SHA1 Fingerprint: 05:63:b8:63:0d:62:d7:5a:bb:c8:ab:1e:4b:df:b5:a8:99:b2:4d:43
+# SHA256 Fingerprint: 3e:90:99:b5:01:5e:8f:48:6c:00:bc:ea:9d:11:1e:e7:21:fa:ba:35:5a:89:bc:f1:df:69:56:1e:3d:c6:32:5c
+-----BEGIN CERTIFICATE-----
+MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv
+b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG
+EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl
+cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi
+MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c
+JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP
+mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+
+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4
+VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/
+AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB
+AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW
+BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
+pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC
+dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf
+fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm
+NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx
+H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
+-----END CERTIFICATE-----
+
+# Issuer: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com
+# Subject: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com
+# Label: "DigiCert Global Root CA"
+# Serial: 10944719598952040374951832963794454346
+# MD5 Fingerprint: 79:e4:a9:84:0d:7d:3a:96:d7:c0:4f:e2:43:4c:89:2e
+# SHA1 Fingerprint: a8:98:5d:3a:65:e5:e5:c4:b2:d7:d6:6d:40:c6:dd:2f:b1:9c:54:36
+# SHA256 Fingerprint: 43:48:a0:e9:44:4c:78:cb:26:5e:05:8d:5e:89:44:b4:d8:4f:96:62:bd:26:db:25:7f:89:34:a4:43:c7:01:61
+-----BEGIN CERTIFICATE-----
+MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
+QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT
+MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
+b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG
+9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB
+CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97
+nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt
+43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P
+T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4
+gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO
+BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR
+TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw
+DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr
+hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg
+06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF
+PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls
+YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
+CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
+-----END CERTIFICATE-----
+
+# Issuer: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com
+# Subject: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com
+# Label: "DigiCert High Assurance EV Root CA"
+# Serial: 3553400076410547919724730734378100087
+# MD5 Fingerprint: d4:74:de:57:5c:39:b2:d3:9c:85:83:c5:c0:65:49:8a
+# SHA1 Fingerprint: 5f:b7:ee:06:33:e2:59:db:ad:0c:4c:9a:e6:d3:8f:1a:61:c7:dc:25
+# SHA256 Fingerprint: 74:31:e5:f4:c3:c1:ce:46:90:77:4f:0b:61:e0:54:40:88:3b:a9:a0:1e:d0:0b:a6:ab:d7:80:6e:d3:b1:18:cf
+-----BEGIN CERTIFICATE-----
+MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j
+ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL
+MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3
+LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug
+RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm
++9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW
+PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM
+xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB
+Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3
+hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg
+EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF
+MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA
+FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec
+nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z
+eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF
+hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2
+Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
+vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep
++OkuE6N36B9K
+-----END CERTIFICATE-----
+
+# Issuer: CN=Class 2 Primary CA O=Certplus
+# Subject: CN=Class 2 Primary CA O=Certplus
+# Label: "Certplus Class 2 Primary CA"
+# Serial: 177770208045934040241468760488327595043
+# MD5 Fingerprint: 88:2c:8c:52:b8:a2:3c:f3:f7:bb:03:ea:ae:ac:42:0b
+# SHA1 Fingerprint: 74:20:74:41:72:9c:dd:92:ec:79:31:d8:23:10:8d:c2:81:92:e2:bb
+# SHA256 Fingerprint: 0f:99:3c:8a:ef:97:ba:af:56:87:14:0e:d5:9a:d1:82:1b:b4:af:ac:f0:aa:9a:58:b5:d5:7a:33:8a:3a:fb:cb
+-----BEGIN CERTIFICATE-----
+MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAw
+PTELMAkGA1UEBhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFz
+cyAyIFByaW1hcnkgQ0EwHhcNOTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9
+MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2VydHBsdXMxGzAZBgNVBAMTEkNsYXNz
+IDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANxQ
+ltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR5aiR
+VhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyL
+kcAbmXuZVg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCd
+EgETjdyAYveVqUSISnFOYFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yas
+H7WLO7dDWWuwJKZtkIvEcupdM5i3y95ee++U8Rs+yskhwcWYAqqi9lt3m/V+llU0
+HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRMECDAGAQH/AgEKMAsGA1Ud
+DwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJYIZIAYb4
+QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMu
+Y29tL0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/
+AN9WM2K191EBkOvDP9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8
+yfFC82x/xXp8HVGIutIKPidd3i1RTtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMR
+FcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+7UCmnYR0ObncHoUW2ikbhiMA
+ybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW//1IMwrh3KWB
+kJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7
+l7+ijrRU
+-----END CERTIFICATE-----
+
+# Issuer: CN=DST Root CA X3 O=Digital Signature Trust Co.
+# Subject: CN=DST Root CA X3 O=Digital Signature Trust Co.
+# Label: "DST Root CA X3"
+# Serial: 91299735575339953335919266965803778155
+# MD5 Fingerprint: 41:03:52:dc:0f:f7:50:1b:16:f0:02:8e:ba:6f:45:c5
+# SHA1 Fingerprint: da:c9:02:4f:54:d8:f6:df:94:93:5f:b1:73:26:38:ca:6a:d7:7c:13
+# SHA256 Fingerprint: 06:87:26:03:31:a7:24:03:d9:09:f1:05:e6:9b:cf:0d:32:e1:bd:24:93:ff:c6:d9:20:6d:11:bc:d6:77:07:39
+-----BEGIN CERTIFICATE-----
+MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/
+MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
+DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow
+PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD
+Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
+AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O
+rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq
+OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b
+xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw
+7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD
+aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
+HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG
+SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69
+ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr
+AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz
+R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5
+JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo
+Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
+-----END CERTIFICATE-----
+
+# Issuer: CN=SwissSign Gold CA - G2 O=SwissSign AG
+# Subject: CN=SwissSign Gold CA - G2 O=SwissSign AG
+# Label: "SwissSign Gold CA - G2"
+# Serial: 13492815561806991280
+# MD5 Fingerprint: 24:77:d9:a8:91:d1:3b:fa:88:2d:c2:ff:f8:cd:33:93
+# SHA1 Fingerprint: d8:c5:38:8a:b7:30:1b:1b:6e:d4:7a:e6:45:25:3a:6f:9f:1a:27:61
+# SHA256 Fingerprint: 62:dd:0b:e9:b9:f5:0a:16:3e:a0:f8:e7:5c:05:3b:1e:ca:57:ea:55:c8:68:8f:64:7c:68:81:f2:c8:35:7b:95
+-----BEGIN CERTIFICATE-----
+MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV
+BAYTAkNIMRUwEwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2ln
+biBHb2xkIENBIC0gRzIwHhcNMDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBF
+MQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dpc3NTaWduIEFHMR8wHQYDVQQDExZT
+d2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
+CgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUqt2/8
+76LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+
+bbqBHH5CjCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c
+6bM8K8vzARO/Ws/BtQpgvd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqE
+emA8atufK+ze3gE/bk3lUIbLtK/tREDFylqM2tIrfKjuvqblCqoOpd8FUrdVxyJd
+MmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvRAiTysybUa9oEVeXBCsdt
+MDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuendjIj3o02y
+MszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69y
+FGkOpeUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPi
+aG59je883WX0XaxR7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxM
+gI93e2CaHt+28kgeDrpOVG2Y4OGiGqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCB
+qTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUWyV7
+lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64OfPAeGZe6Drn
+8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov
+L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe6
+45R88a7A3hfm5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczO
+UYrHUDFu4Up+GC9pWbY9ZIEr44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5
+O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOfMke6UiI0HTJ6CVanfCU2qT1L2sCC
+bwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6mGu6uLftIdxf+u+yv
+GPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxpmo/a
+77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCC
+hdiDyyJkvC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid3
+92qgQmwLOM7XdVAyksLfKzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEpp
+Ld6leNcG2mqeSz53OiATIgHQv2ieY2BrNU0LbbqhPcCT4H8js1WtciVORvnSFu+w
+ZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6LqjviOvrv1vA+ACOzB2+htt
+Qc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ
+-----END CERTIFICATE-----
+
+# Issuer: CN=SwissSign Silver CA - G2 O=SwissSign AG
+# Subject: CN=SwissSign Silver CA - G2 O=SwissSign AG
+# Label: "SwissSign Silver CA - G2"
+# Serial: 5700383053117599563
+# MD5 Fingerprint: e0:06:a1:c9:7d:cf:c9:fc:0d:c0:56:75:96:d8:62:13
+# SHA1 Fingerprint: 9b:aa:e5:9f:56:ee:21:cb:43:5a:be:25:93:df:a7:f0:40:d1:1d:cb
+# SHA256 Fingerprint: be:6c:4d:a2:bb:b9:ba:59:b6:f3:93:97:68:37:42:46:c3:c0:05:99:3f:a9:8f:02:0d:1d:ed:be:d4:8a:81:d5
+-----BEGIN CERTIFICATE-----
+MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UE
+BhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWdu
+IFNpbHZlciBDQSAtIEcyMB4XDTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0Nlow
+RzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMY
+U3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
+MIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644N0Mv
+Fz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7br
+YT7QbNHm+/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieF
+nbAVlDLaYQ1HTWBCrpJH6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH
+6ATK72oxh9TAtvmUcXtnZLi2kUpCe2UuMGoM9ZDulebyzYLs2aFK7PayS+VFheZt
+eJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5hqAaEuSh6XzjZG6k4sIN/
+c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5FZGkECwJ
+MoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRH
+HTBsROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTf
+jNFusB3hB48IHpmccelM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb6
+5i/4z3GcRm25xBWNOHkDRUjvxF3XCO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOB
+rDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU
+F6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRBtjpbO8tFnb0c
+wpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0
+cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIB
+AHPGgeAn0i0P4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShp
+WJHckRE1qTodvBqlYJ7YH39FkWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9
+xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L3XWgwF15kIwb4FDm3jH+mHtwX6WQ
+2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx/uNncqCxv1yL5PqZ
+IseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFaDGi8
+aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2X
+em1ZqSqPe97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQR
+dAtq/gsD/KNVV4n+SsuuWxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/
+OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJDIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+
+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ubDgEj8Z+7fNzcbBGXJbLy
+tGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u
+-----END CERTIFICATE-----
+
+# Issuer: CN=GeoTrust Primary Certification Authority O=GeoTrust Inc.
+# Subject: CN=GeoTrust Primary Certification Authority O=GeoTrust Inc.
+# Label: "GeoTrust Primary Certification Authority"
+# Serial: 32798226551256963324313806436981982369
+# MD5 Fingerprint: 02:26:c3:01:5e:08:30:37:43:a9:d0:7d:cf:37:e6:bf
+# SHA1 Fingerprint: 32:3c:11:8e:1b:f7:b8:b6:52:54:e2:e2:10:0d:d6:02:90:37:f0:96
+# SHA256 Fingerprint: 37:d5:10:06:c5:12:ea:ab:62:64:21:f1:ec:8c:92:01:3f:c5:f8:2a:e9:8e:e5:33:eb:46:19:b8:de:b4:d0:6c
+-----BEGIN CERTIFICATE-----
+MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBY
+MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMo
+R2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEx
+MjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgxCzAJBgNVBAYTAlVTMRYwFAYDVQQK
+Ew1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQcmltYXJ5IENlcnRp
+ZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
+AQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9
+AWbK7hWNb6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjA
+ZIVcFU2Ix7e64HXprQU9nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE0
+7e9GceBrAqg1cmuXm2bgyxx5X9gaBGgeRwLmnWDiNpcB3841kt++Z8dtd1k7j53W
+kBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGttm/81w7a4DSwDRp35+MI
+mO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4G
+A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJ
+KoZIhvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ1
+6CePbJC/kRYkRj5KTs4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl
+4b7UVXGYNTq+k+qurUKykG/g/CFNNWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6K
+oKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHaFloxt/m0cYASSJlyc1pZU8Fj
+UjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG1riR/aYNKxoU
+AT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk=
+-----END CERTIFICATE-----
+
+# Issuer: CN=thawte Primary Root CA O=thawte, Inc. OU=Certification Services Division/(c) 2006 thawte, Inc. - For authorized use only
+# Subject: CN=thawte Primary Root CA O=thawte, Inc. OU=Certification Services Division/(c) 2006 thawte, Inc. - For authorized use only
+# Label: "thawte Primary Root CA"
+# Serial: 69529181992039203566298953787712940909
+# MD5 Fingerprint: 8c:ca:dc:0b:22:ce:f5:be:72:ac:41:1a:11:a8:d8:12
+# SHA1 Fingerprint: 91:c6:d6:ee:3e:8a:c8:63:84:e5:48:c2:99:29:5c:75:6c:81:7b:81
+# SHA256 Fingerprint: 8d:72:2f:81:a9:c1:13:c0:79:1d:f1:36:a2:96:6d:b2:6c:95:0a:97:1d:b4:6b:41:99:f4:ea:54:b7:8b:fb:9f
+-----BEGIN CERTIFICATE-----
+MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCB
+qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf
+Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw
+MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV
+BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3MDAwMDAwWhcNMzYw
+NzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5j
+LjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYG
+A1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
+IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFs
+W0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta
+3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk
+6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6
+Sk/KaAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94J
+NqR32HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA
+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XP
+r87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7ORtvzw6WfU
+DW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeEuzLlQRHAd9mz
+YJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX
+xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2
+/qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/
+LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7
+jVaMaA==
+-----END CERTIFICATE-----
+
+# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G5 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2006 VeriSign, Inc. - For authorized use only
+# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G5 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2006 VeriSign, Inc. - For authorized use only
+# Label: "VeriSign Class 3 Public Primary Certification Authority - G5"
+# Serial: 33037644167568058970164719475676101450
+# MD5 Fingerprint: cb:17:e4:31:67:3e:e2:09:fe:45:57:93:f3:0a:fa:1c
+# SHA1 Fingerprint: 4e:b6:d5:78:49:9b:1c:cf:5f:58:1e:ad:56:be:3d:9b:67:44:a5:e5
+# SHA256 Fingerprint: 9a:cf:ab:7e:43:c8:d8:80:d0:6b:26:2a:94:de:ee:e4:b4:65:99:89:c3:d0:ca:f1:9b:af:64:05:e4:1a:b7:df
+-----BEGIN CERTIFICATE-----
+MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB
+yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
+ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp
+U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW
+ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0
+aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL
+MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW
+ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln
+biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp
+U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y
+aXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1
+nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex
+t0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz
+SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG
+BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+
+rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/
+NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E
+BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH
+BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
+aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv
+MzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE
+p6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y
+5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK
+WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ
+4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N
+hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
+-----END CERTIFICATE-----
+
+# Issuer: CN=SecureTrust CA O=SecureTrust Corporation
+# Subject: CN=SecureTrust CA O=SecureTrust Corporation
+# Label: "SecureTrust CA"
+# Serial: 17199774589125277788362757014266862032
+# MD5 Fingerprint: dc:32:c3:a7:6d:25:57:c7:68:09:9d:ea:2d:a9:a2:d1
+# SHA1 Fingerprint: 87:82:c6:c3:04:35:3b:cf:d2:96:92:d2:59:3e:7d:44:d9:34:ff:11
+# SHA256 Fingerprint: f1:c1:b5:0a:e5:a2:0d:d8:03:0e:c9:f6:bc:24:82:3d:d3:67:b5:25:57:59:b4:e7:1b:61:fc:e9:f7:37:5d:73
+-----BEGIN CERTIFICATE-----
+MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBI
+MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x
+FzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIz
+MTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENv
+cnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCCASIwDQYJKoZIhvcN
+AQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQXOZEz
+Zum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO
+0gMdA+9tDWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIao
+wW8xQmxSPmjL8xk037uHGFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj
+7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b01k/unK8RCSc43Oz969XL0Imnal0ugBS
+8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmHursCAwEAAaOBnTCBmjAT
+BgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB
+/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCeg
+JYYjaHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGC
+NxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt3
+6Z3q059c4EVlew3KW+JwULKUBRSuSceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/
+3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHfmbx8IVQr5Fiiu1cprp6poxkm
+D5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZnMUFdAvnZyPS
+CPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR
+3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=
+-----END CERTIFICATE-----
+
+# Issuer: CN=Secure Global CA O=SecureTrust Corporation
+# Subject: CN=Secure Global CA O=SecureTrust Corporation
+# Label: "Secure Global CA"
+# Serial: 9751836167731051554232119481456978597
+# MD5 Fingerprint: cf:f4:27:0d:d4:ed:dc:65:16:49:6d:3d:da:bf:6e:de
+# SHA1 Fingerprint: 3a:44:73:5a:e5:81:90:1f:24:86:61:46:1e:3b:9c:c4:5f:f5:3a:1b
+# SHA256 Fingerprint: 42:00:f5:04:3a:c8:59:0e:bb:52:7d:20:9e:d1:50:30:29:fb:cb:d4:1c:a1:b5:06:ec:27:f1:5a:de:7d:ac:69
+-----BEGIN CERTIFICATE-----
+MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBK
+MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x
+GTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkx
+MjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3Qg
+Q29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jxYDiJ
+iQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa
+/FHtaMbQbqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJ
+jnIFHovdRIWCQtBJwB1g8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnI
+HmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYVHDGA76oYa8J719rO+TMg1fW9ajMtgQT7
+sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi0XPnj3pDAgMBAAGjgZ0w
+gZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQF
+MAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCsw
+KaAnoCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsG
+AQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0L
+URYD7xh8yOOvaliTFGCRsoTciE6+OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXO
+H0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cnCDpOGR86p1hcF895P4vkp9Mm
+I50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/53CYNv6ZHdAbY
+iNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc
+f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW
+-----END CERTIFICATE-----
+
+# Issuer: CN=COMODO Certification Authority O=COMODO CA Limited
+# Subject: CN=COMODO Certification Authority O=COMODO CA Limited
+# Label: "COMODO Certification Authority"
+# Serial: 104350513648249232941998508985834464573
+# MD5 Fingerprint: 5c:48:dc:f7:42:72:ec:56:94:6d:1c:cc:71:35:80:75
+# SHA1 Fingerprint: 66:31:bf:9e:f7:4f:9e:b6:c9:d5:a6:0c:ba:6a:be:d1:f7:bd:ef:7b
+# SHA256 Fingerprint: 0c:2c:d6:3d:f7:80:6f:a3:99:ed:e8:09:11:6b:57:5b:f8:79:89:f0:65:18:f9:80:8c:86:05:03:17:8b:af:66
+-----BEGIN CERTIFICATE-----
+MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCB
+gTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
+A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV
+BAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEyMDEwMDAw
+MDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl
+YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P
+RE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0
+aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3
+UcEbVASY06m/weaKXTuH+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI
+2GqGd0S7WWaXUF601CxwRM/aN5VCaTwwxHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8
+Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV4EajcNxo2f8ESIl33rXp
++2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA1KGzqSX+
+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5O
+nKVIrLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW
+/zAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6g
+PKA6hjhodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9u
+QXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOCAQEAPpiem/Yb6dc5t3iuHXIY
+SdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CPOGEIqB6BCsAv
+IC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/
+RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4
+zJVSk/BwJVmcIGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5dd
+BA6+C4OmF4O5MBKgxTMVBbkN+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IB
+ZQ==
+-----END CERTIFICATE-----
+
+# Issuer: CN=Network Solutions Certificate Authority O=Network Solutions L.L.C.
+# Subject: CN=Network Solutions Certificate Authority O=Network Solutions L.L.C.
+# Label: "Network Solutions Certificate Authority"
+# Serial: 116697915152937497490437556386812487904
+# MD5 Fingerprint: d3:f3:a6:16:c0:fa:6b:1d:59:b1:2d:96:4d:0e:11:2e
+# SHA1 Fingerprint: 74:f8:a3:c3:ef:e7:b3:90:06:4b:83:90:3c:21:64:60:20:e5:df:ce
+# SHA256 Fingerprint: 15:f0:ba:00:a3:ac:7a:f3:ac:88:4c:07:2b:10:11:a0:77:bd:77:c0:97:f4:01:64:b2:f8:59:8a:bd:83:86:0c
+-----BEGIN CERTIFICATE-----
+MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBi
+MQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu
+MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3Jp
+dHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMxMjM1OTU5WjBiMQswCQYDVQQGEwJV
+UzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydO
+ZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwz
+c7MEL7xxjOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPP
+OCwGJgl6cvf6UDL4wpPTaaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rl
+mGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXTcrA/vGp97Eh/jcOrqnErU2lBUzS1sLnF
+BgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc/Qzpf14Dl847ABSHJ3A4
+qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMBAAGjgZcw
+gZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIB
+BjAPBgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwu
+bmV0c29sc3NsLmNvbS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3Jp
+dHkuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc8
+6fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q4LqILPxFzBiwmZVRDuwduIj/
+h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/GGUsyfJj4akH
+/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv
+wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHN
+pGxlaKFJdlxDydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
+-----END CERTIFICATE-----
+
+# Issuer: CN=COMODO ECC Certification Authority O=COMODO CA Limited
+# Subject: CN=COMODO ECC Certification Authority O=COMODO CA Limited
+# Label: "COMODO ECC Certification Authority"
+# Serial: 41578283867086692638256921589707938090
+# MD5 Fingerprint: 7c:62:ff:74:9d:31:53:5e:68:4a:d5:78:aa:1e:bf:23
+# SHA1 Fingerprint: 9f:74:4e:9f:2b:4d:ba:ec:0f:31:2c:50:b6:56:3b:8e:2d:93:c3:11
+# SHA256 Fingerprint: 17:93:92:7a:06:14:54:97:89:ad:ce:2f:8f:34:f7:f0:b6:6d:0f:3a:e3:a3:b8:4d:21:ec:15:db:ba:4f:ad:c7
+-----BEGIN CERTIFICATE-----
+MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL
+MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE
+BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT
+IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw
+MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy
+ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N
+T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv
+biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR
+FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J
+cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW
+BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/
+BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm
+fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv
+GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
+-----END CERTIFICATE-----
+
+# Issuer: CN=OISTE WISeKey Global Root GA CA O=WISeKey OU=Copyright (c) 2005/OISTE Foundation Endorsed
+# Subject: CN=OISTE WISeKey Global Root GA CA O=WISeKey OU=Copyright (c) 2005/OISTE Foundation Endorsed
+# Label: "OISTE WISeKey Global Root GA CA"
+# Serial: 86718877871133159090080555911823548314
+# MD5 Fingerprint: bc:6c:51:33:a7:e9:d3:66:63:54:15:72:1b:21:92:93
+# SHA1 Fingerprint: 59:22:a1:e1:5a:ea:16:35:21:f8:98:39:6a:46:46:b0:44:1b:0f:a9
+# SHA256 Fingerprint: 41:c9:23:86:6a:b4:ca:d6:b7:ad:57:80:81:58:2e:02:07:97:a6:cb:df:4f:ff:78:ce:83:96:b3:89:37:d7:f5
+-----BEGIN CERTIFICATE-----
+MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCB
+ijELMAkGA1UEBhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHly
+aWdodCAoYykgMjAwNTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNl
+ZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQSBDQTAeFw0w
+NTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYDVQQGEwJDSDEQMA4G
+A1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIwIAYD
+VQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBX
+SVNlS2V5IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
+MIIBCgKCAQEAy0+zAJs9Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxR
+VVuuk+g3/ytr6dTqvirdqFEr12bDYVxgAsj1znJ7O7jyTmUIms2kahnBAbtzptf2
+w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbDd50kc3vkDIzh2TbhmYsF
+mQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ/yxViJGg
+4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t9
+4B3RLoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYw
+DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQw
+EAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOx
+SPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vImMMkQyh2I+3QZH4VFvbBsUfk2
+ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4+vg1YFkCExh8
+vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa
+hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZi
+Fj4A4xylNoEYokxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ
+/L7fCg0=
+-----END CERTIFICATE-----
+
+# Issuer: CN=Certigna O=Dhimyotis
+# Subject: CN=Certigna O=Dhimyotis
+# Label: "Certigna"
+# Serial: 18364802974209362175
+# MD5 Fingerprint: ab:57:a6:5b:7d:42:82:19:b5:d8:58:26:28:5e:fd:ff
+# SHA1 Fingerprint: b1:2e:13:63:45:86:a4:6f:1a:b2:60:68:37:58:2d:c4:ac:fd:94:97
+# SHA256 Fingerprint: e3:b6:a2:db:2e:d7:ce:48:84:2f:7a:c5:32:41:c7:b7:1d:54:14:4b:fb:40:c1:1f:3f:1d:0b:42:f5:ee:a1:2d
+-----BEGIN CERTIFICATE-----
+MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNV
+BAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4X
+DTA3MDYyOTE1MTMwNVoXDTI3MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQ
+BgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwIQ2VydGlnbmEwggEiMA0GCSqGSIb3
+DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7qXOEm7RFHYeGifBZ4
+QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyHGxny
+gQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbw
+zBfsV1/pogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q
+130yGLMLLGq/jj8UEYkgDncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2
+JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKfIrjxwo1p3Po6WAbfAgMBAAGjgbwwgbkw
+DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQtCRZvgHyUtVF9lo53BEw
+ZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJBgNVBAYT
+AkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzj
+AQ/JSP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG
+9w0BAQUFAAOCAQEAhQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8h
+bV6lUmPOEvjvKtpv6zf+EwLHyzs+ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFnc
+fca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1kluPBS1xp81HlDQwY9qcEQCYsuu
+HWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY1gkIl2PlwS6w
+t0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw
+WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
+-----END CERTIFICATE-----
+
+# Issuer: CN=Deutsche Telekom Root CA 2 O=Deutsche Telekom AG OU=T-TeleSec Trust Center
+# Subject: CN=Deutsche Telekom Root CA 2 O=Deutsche Telekom AG OU=T-TeleSec Trust Center
+# Label: "Deutsche Telekom Root CA 2"
+# Serial: 38
+# MD5 Fingerprint: 74:01:4a:91:b1:08:c4:58:ce:47:cd:f0:dd:11:53:08
+# SHA1 Fingerprint: 85:a4:08:c0:9c:19:3e:5d:51:58:7d:cd:d6:13:30:fd:8c:de:37:bf
+# SHA256 Fingerprint: b6:19:1a:50:d0:c3:97:7f:7d:a9:9b:cd:aa:c8:6a:22:7d:ae:b9:67:9e:c7:0b:a3:b0:c9:d9:22:71:c1:70:d3
+-----BEGIN CERTIFICATE-----
+MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEc
+MBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2Vj
+IFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENB
+IDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5MjM1OTAwWjBxMQswCQYDVQQGEwJE
+RTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxl
+U2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290
+IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEU
+ha88EOQ5bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhC
+QN/Po7qCWWqSG6wcmtoIKyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1Mjwr
+rFDa1sPeg5TKqAyZMg4ISFZbavva4VhYAUlfckE8FQYBjl2tqriTtM2e66foai1S
+NNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aKSe5TBY8ZTNXeWHmb0moc
+QqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTVjlsB9WoH
+txa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAP
+BgNVHRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC
+AQEAlGRZrTlk5ynrE/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756Abrsp
+tJh6sTtU6zkXR34ajgv8HzFZMQSyzhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpa
+IzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8rZ7/gFnkm0W09juwzTkZmDLl
+6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4Gdyd1Lx+4ivn+
+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU
+Cm26OWMohpLzGITY+9HPBVZkVw==
+-----END CERTIFICATE-----
+
+# Issuer: CN=Cybertrust Global Root O=Cybertrust, Inc
+# Subject: CN=Cybertrust Global Root O=Cybertrust, Inc
+# Label: "Cybertrust Global Root"
+# Serial: 4835703278459682877484360
+# MD5 Fingerprint: 72:e4:4a:87:e3:69:40:80:77:ea:bc:e3:f4:ff:f0:e1
+# SHA1 Fingerprint: 5f:43:e5:b1:bf:f8:78:8c:ac:1c:c7:ca:4a:9a:c6:22:2b:cc:34:c6
+# SHA256 Fingerprint: 96:0a:df:00:63:e9:63:56:75:0c:29:65:dd:0a:08:67:da:0b:9c:bd:6e:77:71:4a:ea:fb:23:49:ab:39:3d:a3
+-----BEGIN CERTIFICATE-----
+MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYG
+A1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2Jh
+bCBSb290MB4XDTA2MTIxNTA4MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UE
+ChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBS
+b290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+Mi8vRRQZhP/8NN5
+7CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW0ozS
+J8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2y
+HLtgwEZLAfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iP
+t3sMpTjr3kfb1V05/Iin89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNz
+FtApD0mpSPCzqrdsxacwOUBdrsTiXSZT8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAY
+XSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/
+MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2MDSgMqAw
+hi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3Js
+MB8GA1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUA
+A4IBAQBW7wojoFROlZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMj
+Wqd8BfP9IjsO0QbE2zZMcwSO5bAi5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUx
+XOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2hO0j9n0Hq0V+09+zv+mKts2o
+omcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+TX3EJIrduPuoc
+A06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW
+WL1WMRJOEcgh4LMRkWXbtKaIOM5V
+-----END CERTIFICATE-----
+
+# Issuer: O=Chunghwa Telecom Co., Ltd. OU=ePKI Root Certification Authority
+# Subject: O=Chunghwa Telecom Co., Ltd. OU=ePKI Root Certification Authority
+# Label: "ePKI Root Certification Authority"
+# Serial: 28956088682735189655030529057352760477
+# MD5 Fingerprint: 1b:2e:00:ca:26:06:90:3d:ad:fe:6f:15:68:d3:6b:b3
+# SHA1 Fingerprint: 67:65:0d:f1:7e:8e:7e:5b:82:40:a4:f4:56:4b:cf:e2:3d:69:c6:f0
+# SHA256 Fingerprint: c0:a6:f4:dc:63:a2:4b:fd:cf:54:ef:2a:6a:08:2a:0a:72:de:35:80:3e:2f:f5:ff:52:7a:e5:d8:72:06:df:d5
+-----BEGIN CERTIFICATE-----
+MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBe
+MQswCQYDVQQGEwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0
+ZC4xKjAoBgNVBAsMIWVQS0kgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe
+Fw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMxMjdaMF4xCzAJBgNVBAYTAlRXMSMw
+IQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEqMCgGA1UECwwhZVBL
+SSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF
+AAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAH
+SyZbCUNsIZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAh
+ijHyl3SJCRImHJ7K2RKilTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3X
+DZoTM1PRYfl61dd4s5oz9wCGzh1NlDivqOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1
+TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX12ruOzjjK9SXDrkb5wdJ
+fzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0OWQqraffA
+sgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uU
+WH1+ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLS
+nT0IFaUQAS2zMnaolQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pH
+dmX2Os+PYhcZewoozRrSgx4hxyy/vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJip
+NiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXiZo1jDiVN1Rmy5nk3pyKdVDEC
+AwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/QkqiMAwGA1UdEwQF
+MAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH
+ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGB
+uvl2ICO1J2B01GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6Yl
+PwZpVnPDimZI+ymBV3QGypzqKOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkP
+JXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdVxrsStZf0X4OFunHB2WyBEXYKCrC/
+gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEPNXubrjlpC2JgQCA2
+j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+rGNm6
+5ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUB
+o2M3IUxExJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS
+/jQ6fbjpKdx2qcgw+BRxgMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2z
+Gp1iro2C6pSe3VkQw63d4k3jMdXH7OjysP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTE
+W9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmODBCEIZ43ygknQW/2xzQ+D
+hNQ+IIX3Sj0rnP0qCglN6oH4EZw=
+-----END CERTIFICATE-----
+
+# Issuer: O=certSIGN OU=certSIGN ROOT CA
+# Subject: O=certSIGN OU=certSIGN ROOT CA
+# Label: "certSIGN ROOT CA"
+# Serial: 35210227249154
+# MD5 Fingerprint: 18:98:c0:d6:e9:3a:fc:f9:b0:f5:0c:f7:4b:01:44:17
+# SHA1 Fingerprint: fa:b7:ee:36:97:26:62:fb:2d:b0:2a:f6:bf:03:fd:e8:7c:4b:2f:9b
+# SHA256 Fingerprint: ea:a9:62:c4:fa:4a:6b:af:eb:e4:15:19:6d:35:1c:cd:88:8d:4f:53:f3:fa:8a:e6:d7:c4:66:a9:4e:60:42:bb
+-----BEGIN CERTIFICATE-----
+MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYT
+AlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBD
+QTAeFw0wNjA3MDQxNzIwMDRaFw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJP
+MREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTCC
+ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7IJUqOtdu0KBuqV5Do
+0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHHrfAQ
+UySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5d
+RdY4zTW2ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQ
+OA7+j0xbm0bqQfWwCHTD0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwv
+JoIQ4uNllAoEwF73XVv4EOLQunpL+943AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08C
+AwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAcYwHQYDVR0O
+BBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IBAQA+0hyJ
+LjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecY
+MnQ8SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ
+44gx+FkagQnIl6Z0x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6I
+Jd1hJyMctTEHBDa0GpC9oHRxUIltvBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNw
+i/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7NzTogVZ96edhBiIL5VaZVDADlN
+9u6wWk5JRFRYX0KD
+-----END CERTIFICATE-----
+
+# Issuer: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only
+# Subject: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only
+# Label: "GeoTrust Primary Certification Authority - G3"
+# Serial: 28809105769928564313984085209975885599
+# MD5 Fingerprint: b5:e8:34:36:c9:10:44:58:48:70:6d:2e:83:d4:b8:05
+# SHA1 Fingerprint: 03:9e:ed:b8:0b:e7:a0:3c:69:53:89:3b:20:d2:d9:32:3a:4c:2a:fd
+# SHA256 Fingerprint: b4:78:b8:12:25:0d:f8:78:63:5c:2a:a7:ec:7d:15:5e:aa:62:5e:e8:29:16:e2:cd:29:43:61:88:6c:d1:fb:d4
+-----BEGIN CERTIFICATE-----
+MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCB
+mDELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsT
+MChjKSAyMDA4IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s
+eTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv
+cml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIzNTk1OVowgZgxCzAJ
+BgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg
+MjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0
+BgNVBAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg
+LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz
++uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5jK/BGvESyiaHAKAxJcCGVn2TAppMSAmUm
+hsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdEc5IiaacDiGydY8hS2pgn
+5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3CIShwiP/W
+JmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exAL
+DmKudlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZC
+huOl1UcCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw
+HQYDVR0OBBYEFMR5yo6hTgMdHNxr2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IB
+AQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9cr5HqQ6XErhK8WTTOd8lNNTB
+zU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbEAp7aDHdlDkQN
+kv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD
+AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUH
+SJsMC8tJP33st/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2G
+spki4cErx5z481+oghLrGREt
+-----END CERTIFICATE-----
+
+# Issuer: CN=thawte Primary Root CA - G2 O=thawte, Inc. OU=(c) 2007 thawte, Inc. - For authorized use only
+# Subject: CN=thawte Primary Root CA - G2 O=thawte, Inc. OU=(c) 2007 thawte, Inc. - For authorized use only
+# Label: "thawte Primary Root CA - G2"
+# Serial: 71758320672825410020661621085256472406
+# MD5 Fingerprint: 74:9d:ea:60:24:c4:fd:22:53:3e:cc:3a:72:d9:29:4f
+# SHA1 Fingerprint: aa:db:bc:22:23:8f:c4:01:a1:27:bb:38:dd:f4:1d:db:08:9e:f0:12
+# SHA256 Fingerprint: a4:31:0d:50:af:18:a6:44:71:90:37:2a:86:af:af:8b:95:1f:fb:43:1d:83:7f:1e:56:88:b4:59:71:ed:15:57
+-----BEGIN CERTIFICATE-----
+MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDEL
+MAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMp
+IDIwMDcgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAi
+BgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMjAeFw0wNzExMDUwMDAw
+MDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh
+d3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBGb3Ig
+YXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9v
+dCBDQSAtIEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/
+BebfowJPDQfGAFG6DAJSLSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6
+papu+7qzcMBniKI11KOasf2twu8x+qi58/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8E
+BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUmtgAMADna3+FGO6Lts6K
+DPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUNG4k8VIZ3
+KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41ox
+XZ3Krr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg==
+-----END CERTIFICATE-----
+
+# Issuer: CN=thawte Primary Root CA - G3 O=thawte, Inc. OU=Certification Services Division/(c) 2008 thawte, Inc. - For authorized use only
+# Subject: CN=thawte Primary Root CA - G3 O=thawte, Inc. OU=Certification Services Division/(c) 2008 thawte, Inc. - For authorized use only
+# Label: "thawte Primary Root CA - G3"
+# Serial: 127614157056681299805556476275995414779
+# MD5 Fingerprint: fb:1b:5d:43:8a:94:cd:44:c6:76:f2:43:4b:47:e7:31
+# SHA1 Fingerprint: f1:8b:53:8d:1b:e9:03:b6:a6:f0:56:43:5b:17:15:89:ca:f3:6b:f2
+# SHA256 Fingerprint: 4b:03:f4:58:07:ad:70:f2:1b:fc:2c:ae:71:c9:fd:e4:60:4c:06:4c:f5:ff:b6:86:ba:e5:db:aa:d7:fd:d3:4c
+-----BEGIN CERTIFICATE-----
+MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCB
+rjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf
+Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw
+MDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNV
+BAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0wODA0MDIwMDAwMDBa
+Fw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhhd3Rl
+LCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9u
+MTgwNgYDVQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXpl
+ZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEcz
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsr8nLPvb2FvdeHsbnndm
+gcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2AtP0LMqmsywCPLLEHd5N/8
+YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC+BsUa0Lf
+b1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS9
+9irY7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2S
+zhkGcuYMXDhpxwTWvGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUk
+OQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNV
+HQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJKoZIhvcNAQELBQADggEBABpA
+2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweKA3rD6z8KLFIW
+oCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu
+t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7c
+KUGRIjxpp7sC8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fM
+m7v/OeZWYdMKp8RcTGB7BXcmer/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZu
+MdRAGmI0Nj81Aa6sY6A=
+-----END CERTIFICATE-----
+
+# Issuer: CN=GeoTrust Primary Certification Authority - G2 O=GeoTrust Inc. OU=(c) 2007 GeoTrust Inc. - For authorized use only
+# Subject: CN=GeoTrust Primary Certification Authority - G2 O=GeoTrust Inc. OU=(c) 2007 GeoTrust Inc. - For authorized use only
+# Label: "GeoTrust Primary Certification Authority - G2"
+# Serial: 80682863203381065782177908751794619243
+# MD5 Fingerprint: 01:5e:d8:6b:bd:6f:3d:8e:a1:31:f8:12:e0:98:73:6a
+# SHA1 Fingerprint: 8d:17:84:d5:37:f3:03:7d:ec:70:fe:57:8b:51:9a:99:e6:10:d7:b0
+# SHA256 Fingerprint: 5e:db:7a:c4:3b:82:a0:6a:87:61:e8:d7:be:49:79:eb:f2:61:1f:7d:d7:9b:f9:1c:1c:6b:56:6a:21:9e:d7:66
+-----BEGIN CERTIFICATE-----
+MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDEL
+MAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChj
+KSAyMDA3IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2
+MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
+eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1OVowgZgxCzAJBgNV
+BAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykgMjAw
+NyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNV
+BAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH
+MjB2MBAGByqGSM49AgEGBSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcL
+So17VDs6bl8VAsBQps8lL33KSLjHUGMcKiEIfJo22Av+0SbFWDEwKCXzXV2juLal
+tJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO
+BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+EVXVMAoG
+CCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGT
+qQ7mndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBucz
+rD6ogRLQy7rQkgu2npaqBA+K
+-----END CERTIFICATE-----
+
+# Issuer: CN=VeriSign Universal Root Certification Authority O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2008 VeriSign, Inc. - For authorized use only
+# Subject: CN=VeriSign Universal Root Certification Authority O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2008 VeriSign, Inc. - For authorized use only
+# Label: "VeriSign Universal Root Certification Authority"
+# Serial: 85209574734084581917763752644031726877
+# MD5 Fingerprint: 8e:ad:b5:01:aa:4d:81:e4:8c:1d:d1:e1:14:00:95:19
+# SHA1 Fingerprint: 36:79:ca:35:66:87:72:30:4d:30:a5:fb:87:3b:0f:a7:7b:b7:0d:54
+# SHA256 Fingerprint: 23:99:56:11:27:a5:71:25:de:8c:ef:ea:61:0d:df:2f:a0:78:b5:c8:06:7f:4e:82:82:90:bf:b8:60:e8:4b:3c
+-----BEGIN CERTIFICATE-----
+MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCB
+vTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
+ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJp
+U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MTgwNgYDVQQDEy9W
+ZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe
+Fw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJVUzEX
+MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0
+IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9y
+IGF1dGhvcml6ZWQgdXNlIG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNh
+bCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF
+AAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj1mCOkdeQmIN65lgZOIzF
+9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGPMiJhgsWH
+H26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+H
+LL729fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN
+/BMReYTtXlT2NJ8IAfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPT
+rJ9VAMf2CGqUuV/c4DPxhGD5WycRtPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1Ud
+EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0GCCsGAQUFBwEMBGEwX6FdoFsw
+WTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgs
+exkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud
+DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4
+sAPmLGd75JR3Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+
+seQxIcaBlVZaDrHC1LGmWazxY8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz
+4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTxP/jgdFcrGJ2BtMQo2pSXpXDrrB2+
+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+PwGZsY6rp2aQW9IHR
+lRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4mJO3
+7M2CYfE45k+XmCpajQ==
+-----END CERTIFICATE-----
+
+# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G4 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2007 VeriSign, Inc. - For authorized use only
+# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G4 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2007 VeriSign, Inc. - For authorized use only
+# Label: "VeriSign Class 3 Public Primary Certification Authority - G4"
+# Serial: 63143484348153506665311985501458640051
+# MD5 Fingerprint: 3a:52:e1:e7:fd:6f:3a:e3:6f:f3:6f:99:1b:f9:22:41
+# SHA1 Fingerprint: 22:d5:d8:df:8f:02:31:d1:8d:f7:9d:b7:cf:8a:2d:64:c9:3f:6c:3a
+# SHA256 Fingerprint: 69:dd:d7:ea:90:bb:57:c9:3e:13:5d:c8:5e:a6:fc:d5:48:0b:60:32:39:bd:c4:54:fc:75:8b:2a:26:cf:7f:79
+-----BEGIN CERTIFICATE-----
+MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjEL
+MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW
+ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2ln
+biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp
+U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y
+aXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjELMAkG
+A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJp
+U2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwg
+SW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2ln
+biBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5
+IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8Utpkmw4tXNherJI9/gHm
+GUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGzrl0Bp3ve
+fLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUw
+AwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJ
+aW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYj
+aHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMW
+kf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMDA2gAMGUCMGYhDBgmYFo4e1ZC
+4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIxAJw9SDkjOVga
+FRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA==
+-----END CERTIFICATE-----
+
+# Issuer: CN=NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny O=NetLock Kft. OU=Tan\xfas\xedtv\xe1nykiad\xf3k (Certification Services)
+# Subject: CN=NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny O=NetLock Kft. OU=Tan\xfas\xedtv\xe1nykiad\xf3k (Certification Services)
+# Label: "NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny"
+# Serial: 80544274841616
+# MD5 Fingerprint: c5:a1:b7:ff:73:dd:d6:d7:34:32:18:df:fc:3c:ad:88
+# SHA1 Fingerprint: 06:08:3f:59:3f:15:a1:04:a0:69:a4:6b:a9:03:d0:06:b7:97:09:91
+# SHA256 Fingerprint: 6c:61:da:c3:a2:de:f0:31:50:6b:e0:36:d2:a6:fe:40:19:94:fb:d1:3d:f9:c8:d4:66:59:92:74:c4:46:ec:98
+-----BEGIN CERTIFICATE-----
+MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQG
+EwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3
+MDUGA1UECwwuVGFuw7pzw610dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNl
+cnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBBcmFueSAoQ2xhc3MgR29sZCkgRsWR
+dGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgxMjA2MTUwODIxWjCB
+pzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxOZXRM
+b2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlm
+aWNhdGlvbiBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNz
+IEdvbGQpIEbFkXRhbsO6c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
+MIIBCgKCAQEAxCRec75LbRTDofTjl5Bu0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrT
+lF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw/HpYzY6b7cNGbIRwXdrz
+AZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAkH3B5r9s5
+VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRG
+ILdwfzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2
+BJtr+UBdADTHLpl1neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAG
+AQH/AgEEMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2M
+U9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwWqZw8UQCgwBEIBaeZ5m8BiFRh
+bvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTtaYtOUZcTh5m2C
++C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC
+bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2F
+uLjbvrW5KfnaNwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2
+XjG4Kvte9nHfRCaexOYNkbQudZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E=
+-----END CERTIFICATE-----
+
+# Issuer: CN=Staat der Nederlanden Root CA - G2 O=Staat der Nederlanden
+# Subject: CN=Staat der Nederlanden Root CA - G2 O=Staat der Nederlanden
+# Label: "Staat der Nederlanden Root CA - G2"
+# Serial: 10000012
+# MD5 Fingerprint: 7c:a5:0f:f8:5b:9a:7d:6d:30:ae:54:5a:e3:42:a2:8a
+# SHA1 Fingerprint: 59:af:82:79:91:86:c7:b4:75:07:cb:cf:03:57:46:eb:04:dd:b7:16
+# SHA256 Fingerprint: 66:8c:83:94:7d:a6:3b:72:4b:ec:e1:74:3c:31:a0:e6:ae:d0:db:8e:c5:b3:1b:e3:77:bb:78:4f:91:b6:71:6f
+-----BEGIN CERTIFICATE-----
+MIIFyjCCA7KgAwIBAgIEAJiWjDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJO
+TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFh
+dCBkZXIgTmVkZXJsYW5kZW4gUm9vdCBDQSAtIEcyMB4XDTA4MDMyNjExMTgxN1oX
+DTIwMDMyNTExMDMxMFowWjELMAkGA1UEBhMCTkwxHjAcBgNVBAoMFVN0YWF0IGRl
+ciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5lZGVybGFuZGVuIFJv
+b3QgQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVZ5291
+qj5LnLW4rJ4L5PnZyqtdj7U5EILXr1HgO+EASGrP2uEGQxGZqhQlEq0i6ABtQ8Sp
+uOUfiUtnvWFI7/3S4GCI5bkYYCjDdyutsDeqN95kWSpGV+RLufg3fNU254DBtvPU
+Z5uW6M7XxgpT0GtJlvOjCwV3SPcl5XCsMBQgJeN/dVrlSPhOewMHBPqCYYdu8DvE
+pMfQ9XQ+pV0aCPKbJdL2rAQmPlU6Yiile7Iwr/g3wtG61jj99O9JMDeZJiFIhQGp
+5Rbn3JBV3w/oOM2ZNyFPXfUib2rFEhZgF1XyZWampzCROME4HYYEhLoaJXhena/M
+UGDWE4dS7WMfbWV9whUYdMrhfmQpjHLYFhN9C0lK8SgbIHRrxT3dsKpICT0ugpTN
+GmXZK4iambwYfp/ufWZ8Pr2UuIHOzZgweMFvZ9C+X+Bo7d7iscksWXiSqt8rYGPy
+5V6548r6f1CGPqI0GAwJaCgRHOThuVw+R7oyPxjMW4T182t0xHJ04eOLoEq9jWYv
+6q012iDTiIJh8BIitrzQ1aTsr1SIJSQ8p22xcik/Plemf1WvbibG/ufMQFxRRIEK
+eN5KzlW/HdXZt1bv8Hb/C3m1r737qWmRRpdogBQ2HbN/uymYNqUg+oJgYjOk7Na6
+B6duxc8UpufWkjTYgfX8HV2qXB72o007uPc5AgMBAAGjgZcwgZQwDwYDVR0TAQH/
+BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcCARYxaHR0cDov
+L3d3dy5wa2lvdmVyaGVpZC5ubC9wb2xpY2llcy9yb290LXBvbGljeS1HMjAOBgNV
+HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJFoMocVHYnitfGsNig0jQt8YojrMA0GCSqG
+SIb3DQEBCwUAA4ICAQCoQUpnKpKBglBu4dfYszk78wIVCVBR7y29JHuIhjv5tLyS
+CZa59sCrI2AGeYwRTlHSeYAz+51IvuxBQ4EffkdAHOV6CMqqi3WtFMTC6GY8ggen
+5ieCWxjmD27ZUD6KQhgpxrRW/FYQoAUXvQwjf/ST7ZwaUb7dRUG/kSS0H4zpX897
+IZmflZ85OkYcbPnNe5yQzSipx6lVu6xiNGI1E0sUOlWDuYaNkqbG9AclVMwWVxJK
+gnjIFNkXgiYtXSAfea7+1HAWFpWD2DU5/1JddRwWxRNVz0fMdWVSSt7wsKfkCpYL
++63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxL
+vJxxcypFURmFzI79R6d0lR2o0a9OF7FpJsKqeFdbxU2n5Z4FF5TKsl+gSRiNNOkm
+bEgeqmiSBeGCc1qb3AdbCG19ndeNIdn8FCCqwkXfP+cAslHkwvgFuXkajDTznlvk
+N1trSt8sV4pAWja63XVECDdCcAz+3F4hoKOKwJCcaNpQ5kUQR3i2TtJlycM33+FC
+Y7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoVIPVVYpbtbZNQvOSqeK3Z
+ywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm66+KAQ==
+-----END CERTIFICATE-----
+
+# Issuer: CN=Hongkong Post Root CA 1 O=Hongkong Post
+# Subject: CN=Hongkong Post Root CA 1 O=Hongkong Post
+# Label: "Hongkong Post Root CA 1"
+# Serial: 1000
+# MD5 Fingerprint: a8:0d:6f:39:78:b9:43:6d:77:42:6d:98:5a:cc:23:ca
+# SHA1 Fingerprint: d6:da:a8:20:8d:09:d2:15:4d:24:b5:2f:cb:34:6e:b2:58:b2:8a:58
+# SHA256 Fingerprint: f9:e6:7d:33:6c:51:00:2a:c0:54:c6:32:02:2d:66:dd:a2:e7:e3:ff:f1:0a:d0:61:ed:31:d8:bb:b4:10:cf:b2
+-----BEGIN CERTIFICATE-----
+MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsx
+FjAUBgNVBAoTDUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3Qg
+Um9vdCBDQSAxMB4XDTAzMDUxNTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkG
+A1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdr
+b25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
+AQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1ApzQ
+jVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEn
+PzlTCeqrauh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjh
+ZY4bXSNmO7ilMlHIhqqhqZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9
+nnV0ttgCXjqQesBCNnLsak3c78QA3xMYV18meMjWCnl3v/evt3a5pQuEF10Q6m/h
+q5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNVHRMBAf8ECDAGAQH/AgED
+MA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7ih9legYsC
+mEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI3
+7piol7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clB
+oiMBdDhViw+5LmeiIAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJs
+EhTkYY2sEJCehFC78JZvRZ+K88psT/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpO
+fMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilTc4afU9hDDl3WY4JxHYB0yvbi
+AmvZWg==
+-----END CERTIFICATE-----
+
+# Issuer: CN=SecureSign RootCA11 O=Japan Certification Services, Inc.
+# Subject: CN=SecureSign RootCA11 O=Japan Certification Services, Inc.
+# Label: "SecureSign RootCA11"
+# Serial: 1
+# MD5 Fingerprint: b7:52:74:e2:92:b4:80:93:f2:75:e4:cc:d7:f2:ea:26
+# SHA1 Fingerprint: 3b:c4:9f:48:f8:f3:73:a0:9c:1e:bd:f8:5b:b1:c3:65:c7:d8:11:b3
+# SHA256 Fingerprint: bf:0f:ee:fb:9e:3a:58:1a:d5:f9:e9:db:75:89:98:57:43:d2:61:08:5c:4d:31:4f:6f:5d:72:59:aa:42:16:12
+-----BEGIN CERTIFICATE-----
+MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDEr
+MCkGA1UEChMiSmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoG
+A1UEAxMTU2VjdXJlU2lnbiBSb290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0
+MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSswKQYDVQQKEyJKYXBhbiBDZXJ0aWZp
+Y2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1cmVTaWduIFJvb3RD
+QTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvLTJsz
+i1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8
+h9uuywGOwvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOV
+MdrAG/LuYpmGYz+/3ZMqg6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9
+UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rPO7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni
+8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitAbpSACW22s293bzUIUPsC
+h8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZXt94wDgYD
+VR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEB
+AKChOBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xm
+KbabfSVSSUOrTC4rbnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQ
+X5Ucv+2rIrVls4W6ng+4reV6G4pQOh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWr
+QbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01y8hSyn+B/tlr0/cR7SXf+Of5
+pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061lgeLKBObjBmN
+QSdJQO7e5iNEOdyhIta6A/I=
+-----END CERTIFICATE-----
+
+# Issuer: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd.
+# Subject: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd.
+# Label: "Microsec e-Szigno Root CA 2009"
+# Serial: 14014712776195784473
+# MD5 Fingerprint: f8:49:f4:03:bc:44:2d:83:be:48:69:7d:29:64:fc:b1
+# SHA1 Fingerprint: 89:df:74:fe:5c:f4:0f:4a:80:f9:e3:37:7d:54:da:91:e1:01:31:8e
+# SHA256 Fingerprint: 3c:5f:81:fe:a5:fa:b8:2c:64:bf:a2:ea:ec:af:cd:e8:e0:77:fc:86:20:a7:ca:e5:37:16:3d:f3:6e:db:f3:78
+-----BEGIN CERTIFICATE-----
+MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYD
+VQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0
+ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0G
+CSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTAeFw0wOTA2MTYxMTMwMThaFw0y
+OTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3Qx
+FjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3pp
+Z25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o
+dTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvP
+kd6mJviZpWNwrZuuyjNAfW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tc
+cbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG0IMZfcChEhyVbUr02MelTTMuhTlAdX4U
+fIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKApxn1ntxVUwOXewdI/5n7
+N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm1HxdrtbC
+xkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1
++rUCAwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G
+A1UdDgQWBBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPM
+Pcu1SCOhGnqmKrs0aDAbBgNVHREEFDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqG
+SIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0olZMEyL/azXm4Q5DwpL7v8u8h
+mLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfXI/OMn74dseGk
+ddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775
+tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c
+2Pm2G2JwCz02yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5t
+HMN1Rq41Bab2XD0h7lbwyYIiLXpUq3DDfSJlgnCW
+-----END CERTIFICATE-----
+
+# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3
+# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3
+# Label: "GlobalSign Root CA - R3"
+# Serial: 4835703278459759426209954
+# MD5 Fingerprint: c5:df:b8:49:ca:05:13:55:ee:2d:ba:1a:c3:3e:b0:28
+# SHA1 Fingerprint: d6:9b:56:11:48:f0:1c:77:c5:45:78:c1:09:26:df:5b:85:69:76:ad
+# SHA256 Fingerprint: cb:b5:22:d7:b7:f1:27:ad:6a:01:13:86:5b:df:1c:d4:10:2e:7d:07:59:af:63:5a:7c:f4:72:0d:c9:63:c5:3b
+-----BEGIN CERTIFICATE-----
+MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G
+A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp
+Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4
+MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG
+A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI
+hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8
+RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT
+gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm
+KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd
+QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ
+XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw
+DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o
+LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU
+RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp
+jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK
+6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX
+mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs
+Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH
+WD9f
+-----END CERTIFICATE-----
+
+# Issuer: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068
+# Subject: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068
+# Label: "Autoridad de Certificacion Firmaprofesional CIF A62634068"
+# Serial: 6047274297262753887
+# MD5 Fingerprint: 73:3a:74:7a:ec:bb:a3:96:a6:c2:e4:e2:c8:9b:c0:c3
+# SHA1 Fingerprint: ae:c5:fb:3f:c8:e1:bf:c4:e5:4f:03:07:5a:9a:e8:00:b7:f7:b6:fa
+# SHA256 Fingerprint: 04:04:80:28:bf:1f:28:64:d4:8f:9a:d4:d8:32:94:36:6a:82:88:56:55:3f:3b:14:30:3f:90:14:7f:5d:40:ef
+-----BEGIN CERTIFICATE-----
+MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UE
+BhMCRVMxQjBABgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1h
+cHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEy
+MzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIwQAYDVQQDDDlBdXRvcmlkYWQgZGUg
+Q2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBBNjI2MzQwNjgwggIi
+MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDDUtd9
+thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQM
+cas9UX4PB99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefG
+L9ItWY16Ck6WaVICqjaY7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15i
+NA9wBj4gGFrO93IbJWyTdBSTo3OxDqqHECNZXyAFGUftaI6SEspd/NYrspI8IM/h
+X68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyIplD9amML9ZMWGxmPsu2b
+m8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctXMbScyJCy
+Z/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirja
+EbsXLZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/T
+KI8xWVvTyQKmtFLKbpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF
+6NkBiDkal4ZkQdU7hwxu+g/GvUgUvzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVh
+OSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1UdEwEB/wQIMAYBAf8CAQEwDgYD
+VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNHDhpkLzCBpgYD
+VR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp
+cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBv
+ACAAZABlACAAbABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBl
+AGwAbwBuAGEAIAAwADgAMAAxADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF
+661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx51tkljYyGOylMnfX40S2wBEqgLk9
+am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qkR71kMrv2JYSiJ0L1
+ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaPT481
+PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS
+3a/DTg4fJl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5k
+SeTy36LssUzAKh3ntLFlosS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF
+3dvd6qJ2gHN99ZwExEWN57kci57q13XRcrHedUTnQn3iV2t93Jm8PYMo6oCTjcVM
+ZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoRsaS8I8nkvof/uZS2+F0g
+StRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTDKCOM/icz
+Q0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQB
+jLMi6Et8Vcad+qMUu2WFbm5PEn4KPJ2V
+-----END CERTIFICATE-----
+
+# Issuer: CN=Izenpe.com O=IZENPE S.A.
+# Subject: CN=Izenpe.com O=IZENPE S.A.
+# Label: "Izenpe.com"
+# Serial: 917563065490389241595536686991402621
+# MD5 Fingerprint: a6:b0:cd:85:80:da:5c:50:34:a3:39:90:2f:55:67:73
+# SHA1 Fingerprint: 2f:78:3d:25:52:18:a7:4a:65:39:71:b5:2c:a2:9c:45:15:6f:e9:19
+# SHA256 Fingerprint: 25:30:cc:8e:98:32:15:02:ba:d9:6f:9b:1f:ba:1b:09:9e:2d:29:9e:0f:45:48:bb:91:4f:36:3b:c0:d4:53:1f
+-----BEGIN CERTIFICATE-----
+MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4
+MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6
+ZW5wZS5jb20wHhcNMDcxMjEzMTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYD
+VQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5j
+b20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ03rKDx6sp4boFmVq
+scIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAKClaO
+xdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6H
+LmYRY2xU+zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFX
+uaOKmMPsOzTFlUFpfnXCPCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQD
+yCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxTOTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+
+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbKF7jJeodWLBoBHmy+E60Q
+rLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK0GqfvEyN
+BjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8L
+hij+0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIB
+QFqNeb+Lz0vPqhbBleStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+
+HMh3/1uaD7euBUbl8agW7EekFwIDAQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2lu
+Zm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+SVpFTlBFIFMuQS4gLSBDSUYg
+QTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBGNjIgUzgxQzBB
+BgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx
+MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
+AQYwHQYDVR0OBBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUA
+A4ICAQB4pgwWSp9MiDrAyw6lFn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWb
+laQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbgakEyrkgPH7UIBzg/YsfqikuFgba56
+awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8qhT/AQKM6WfxZSzwo
+JNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Csg1lw
+LDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCT
+VyvehQP5aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGk
+LhObNA5me0mrZJfQRsN5nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJb
+UjWumDqtujWTI6cfSN01RpiyEGjkpTHCClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/
+QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZoQ0iy2+tzJOeRf1SktoA+
+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1ZWrOZyGls
+QyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw==
+-----END CERTIFICATE-----
+
+# Issuer: CN=Chambers of Commerce Root - 2008 O=AC Camerfirma S.A.
+# Subject: CN=Chambers of Commerce Root - 2008 O=AC Camerfirma S.A.
+# Label: "Chambers of Commerce Root - 2008"
+# Serial: 11806822484801597146
+# MD5 Fingerprint: 5e:80:9e:84:5a:0e:65:0b:17:02:f3:55:18:2a:3e:d7
+# SHA1 Fingerprint: 78:6a:74:ac:76:ab:14:7f:9c:6a:30:50:ba:9e:a8:7e:fe:9a:ce:3c
+# SHA256 Fingerprint: 06:3e:4a:fa:c4:91:df:d3:32:f3:08:9b:85:42:e9:46:17:d8:93:d7:fe:94:4e:10:a7:93:7e:e2:9d:96:93:c0
+-----BEGIN CERTIFICATE-----
+MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYD
+VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0
+IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3
+MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xKTAnBgNVBAMTIENoYW1iZXJz
+IG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEyMjk1MFoXDTM4MDcz
+MTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBj
+dXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIw
+EAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEp
+MCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0G
+CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW9
+28sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKAXuFixrYp4YFs8r/lfTJq
+VKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorjh40G072Q
+DuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR
+5gN/ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfL
+ZEFHcpOrUMPrCXZkNNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05a
+Sd+pZgvMPMZ4fKecHePOjlO+Bd5gD2vlGts/4+EhySnB8esHnFIbAURRPHsl18Tl
+UlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331lubKgdaX8ZSD6e2wsWsSaR6s
++12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ0wlf2eOKNcx5
+Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj
+ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAx
+hduub+84Mxh2EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNV
+HQ4EFgQU+SSsD7K1+HnA+mCIG8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1
++HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpN
+YWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29t
+L2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVy
+ZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAt
+IDIwMDiCCQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRV
+HSAAMCowKAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20w
+DQYJKoZIhvcNAQEFBQADggIBAJASryI1wqM58C7e6bXpeHxIvj99RZJe6dqxGfwW
+PJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH3qLPaYRgM+gQDROpI9CF
+5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbURWpGqOt1
+glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaH
+FoI6M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2
+pSB7+R5KBWIBpih1YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MD
+xvbxrN8y8NmBGuScvfaAFPDRLLmF9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QG
+tjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcKzBIKinmwPQN/aUv0NCB9szTq
+jktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvGnrDQWzilm1De
+fhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg
+OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZ
+d0jQ
+-----END CERTIFICATE-----
+
+# Issuer: CN=Global Chambersign Root - 2008 O=AC Camerfirma S.A.
+# Subject: CN=Global Chambersign Root - 2008 O=AC Camerfirma S.A.
+# Label: "Global Chambersign Root - 2008"
+# Serial: 14541511773111788494
+# MD5 Fingerprint: 9e:80:ff:78:01:0c:2e:c1:36:bd:fe:96:90:6e:08:f3
+# SHA1 Fingerprint: 4a:bd:ee:ec:95:0d:35:9c:89:ae:c7:52:a1:2c:5b:29:f6:d6:aa:0c
+# SHA256 Fingerprint: 13:63:35:43:93:34:a7:69:80:16:a0:d3:24:de:72:28:4e:07:9d:7b:52:20:bb:8f:bd:74:78:16:ee:be:ba:ca
+-----BEGIN CERTIFICATE-----
+MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYD
+VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0
+IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3
+MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD
+aGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMxNDBaFw0zODA3MzEx
+MjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3Vy
+cmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAG
+A1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAl
+BgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZI
+hvcNAQEBBQADggIPADCCAgoCggIBAMDfVtPkOpt2RbQT2//BthmLN0EYlVJH6xed
+KYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXfXjaOcNFccUMd2drvXNL7
+G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0ZJJ0YPP2
+zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4
+ddPB/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyG
+HoiMvvKRhI9lNNgATH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2
+Id3UwD2ln58fQ1DJu7xsepeY7s2MH/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3V
+yJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfeOx2YItaswTXbo6Al/3K1dh3e
+beksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSFHTynyQbehP9r
+6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh
+wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsog
+zCtLkykPAgMBAAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQW
+BBS5CcqcHtvTbDprru1U8VuTBjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDpr
+ru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UEBhMCRVUxQzBBBgNVBAcTOk1hZHJp
+ZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJmaXJtYS5jb20vYWRk
+cmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJmaXJt
+YSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiC
+CQDJzdPp1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCow
+KAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZI
+hvcNAQEFBQADggIBAICIf3DekijZBZRG/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZ
+UohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6ReAJ3spED8IXDneRRXoz
+X1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/sdZ7LoR/x
+fxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVz
+a2Mg9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yyd
+Yhz2rXzdpjEetrHHfoUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMd
+SqlapskD7+3056huirRXhOukP9DuqqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9O
+AP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETrP3iZ8ntxPjzxmKfFGBI/5rso
+M0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVqc5iJWzouE4ge
+v8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z
+09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B
+-----END CERTIFICATE-----
+
+# Issuer: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc.
+# Subject: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc.
+# Label: "Go Daddy Root Certificate Authority - G2"
+# Serial: 0
+# MD5 Fingerprint: 80:3a:bc:22:c1:e6:fb:8d:9b:3b:27:4a:32:1b:9a:01
+# SHA1 Fingerprint: 47:be:ab:c9:22:ea:e8:0e:78:78:34:62:a7:9f:45:c2:54:fd:e6:8b
+# SHA256 Fingerprint: 45:14:0b:32:47:eb:9c:c8:c5:b4:f0:d7:b5:30:91:f7:32:92:08:9e:6e:5a:63:e2:74:9d:d3:ac:a9:19:8e:da
+-----BEGIN CERTIFICATE-----
+MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx
+EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT
+EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp
+ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz
+NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH
+EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE
+AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw
+DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD
+E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH
+/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy
+DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh
+GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR
+tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA
+AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE
+FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX
+WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu
+9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr
+gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo
+2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO
+LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI
+4uJEvlz36hz1
+-----END CERTIFICATE-----
+
+# Issuer: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc.
+# Subject: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc.
+# Label: "Starfield Root Certificate Authority - G2"
+# Serial: 0
+# MD5 Fingerprint: d6:39:81:c6:52:7e:96:69:fc:fc:ca:66:ed:05:f2:96
+# SHA1 Fingerprint: b5:1c:06:7c:ee:2b:0c:3d:f8:55:ab:2d:92:f4:fe:39:d4:e7:0f:0e
+# SHA256 Fingerprint: 2c:e1:cb:0b:f9:d2:f9:e1:02:99:3f:be:21:51:52:c3:b2:dd:0c:ab:de:1c:68:e5:31:9b:83:91:54:db:b7:f5
+-----BEGIN CERTIFICATE-----
+MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx
+EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT
+HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs
+ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAw
+MFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6
+b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj
+aG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZp
+Y2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
+ggEBAL3twQP89o/8ArFvW59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMg
+nLRJdzIpVv257IzdIvpy3Cdhl+72WoTsbhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1
+HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNkN3mSwOxGXn/hbVNMYq/N
+Hwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7NfZTD4p7dN
+dloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0
+HZbUJtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO
+BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0G
+CSqGSIb3DQEBCwUAA4IBAQARWfolTwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjU
+sHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx4mcujJUDJi5DnUox9g61DLu3
+4jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUwF5okxBDgBPfg
+8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K
+pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1
+mMpYjn0q7pBZc2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0
+-----END CERTIFICATE-----
+
+# Issuer: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc.
+# Subject: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc.
+# Label: "Starfield Services Root Certificate Authority - G2"
+# Serial: 0
+# MD5 Fingerprint: 17:35:74:af:7b:61:1c:eb:f4:f9:3c:e2:ee:40:f9:a2
+# SHA1 Fingerprint: 92:5a:8f:8d:2c:6d:04:e0:66:5f:59:6a:ff:22:d8:63:e8:25:6f:3f
+# SHA256 Fingerprint: 56:8d:69:05:a2:c8:87:08:a4:b3:02:51:90:ed:cf:ed:b1:97:4a:60:6a:13:c6:e5:29:0f:cb:2a:e6:3e:da:b5
+-----BEGIN CERTIFICATE-----
+MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx
+EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT
+HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs
+ZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5
+MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNVBAYTAlVTMRAwDgYD
+VQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFy
+ZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2Vy
+dmljZXMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI
+hvcNAQEBBQADggEPADCCAQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20p
+OsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm2
+8xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4PahHQUw2eeBGg6345AWh1K
+Ts9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLPLJGmpufe
+hRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk
+6mFBrMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAw
+DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+q
+AdcwKziIorhtSpzyEZGDMA0GCSqGSIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMI
+bw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPPE95Dz+I0swSdHynVv/heyNXB
+ve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTyxQGjhdByPq1z
+qwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd
+iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn
+0q23KXB56jzaYyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCN
+sSi6
+-----END CERTIFICATE-----
+
+# Issuer: CN=AffirmTrust Commercial O=AffirmTrust
+# Subject: CN=AffirmTrust Commercial O=AffirmTrust
+# Label: "AffirmTrust Commercial"
+# Serial: 8608355977964138876
+# MD5 Fingerprint: 82:92:ba:5b:ef:cd:8a:6f:a6:3d:55:f9:84:f6:d6:b7
+# SHA1 Fingerprint: f9:b5:b6:32:45:5f:9c:be:ec:57:5f:80:dc:e9:6e:2c:c7:b2:78:b7
+# SHA256 Fingerprint: 03:76:ab:1d:54:c5:f9:80:3c:e4:b2:e2:01:a0:ee:7e:ef:7b:57:b6:36:e8:a9:3c:9b:8d:48:60:c9:6f:5f:a7
+-----BEGIN CERTIFICATE-----
+MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UE
+BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz
+dCBDb21tZXJjaWFsMB4XDTEwMDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDEL
+MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp
+cm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
+AQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6EqdbDuKP
+Hx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yr
+ba0F8PrVC8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPAL
+MeIrJmqbTFeurCA+ukV6BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1
+yHp52UKqK39c/s4mT6NmgTWvRLpUHhwwMmWd5jyTXlBOeuM61G7MGvv50jeuJCqr
+VwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNVHQ4EFgQUnZPGU4teyq8/
+nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ
+KoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYG
+XUPGhi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNj
+vbz4YYCanrHOQnDiqX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivt
+Z8SOyUOyXGsViQK8YvxO8rUzqrJv0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9g
+N53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0khsUlHRUe072o0EclNmsxZt9YC
+nlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8=
+-----END CERTIFICATE-----
+
+# Issuer: CN=AffirmTrust Networking O=AffirmTrust
+# Subject: CN=AffirmTrust Networking O=AffirmTrust
+# Label: "AffirmTrust Networking"
+# Serial: 8957382827206547757
+# MD5 Fingerprint: 42:65:ca:be:01:9a:9a:4c:a9:8c:41:49:cd:c0:d5:7f
+# SHA1 Fingerprint: 29:36:21:02:8b:20:ed:02:f5:66:c5:32:d1:d6:ed:90:9f:45:00:2f
+# SHA256 Fingerprint: 0a:81:ec:5a:92:97:77:f1:45:90:4a:f3:8d:5d:50:9f:66:b5:e2:c5:8f:cd:b5:31:05:8b:0e:17:f3:f0:b4:1b
+-----BEGIN CERTIFICATE-----
+MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UE
+BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz
+dCBOZXR3b3JraW5nMB4XDTEwMDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDEL
+MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp
+cm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
+AQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SEHi3y
+YJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbua
+kCNrmreIdIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRL
+QESxG9fhwoXA3hA/Pe24/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp
+6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gbh+0t+nvujArjqWaJGctB+d1ENmHP4ndG
+yH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNVHQ4EFgQUBx/S55zawm6i
+QLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ
+KoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfO
+tDIuUFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzu
+QY0x2+c06lkh1QF612S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZ
+Lgo/bNjR9eUJtGxUAArgFU2HdW23WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4u
+olu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9/ZFvgrG+CJPbFEfxojfHRZ48
+x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s=
+-----END CERTIFICATE-----
+
+# Issuer: CN=AffirmTrust Premium O=AffirmTrust
+# Subject: CN=AffirmTrust Premium O=AffirmTrust
+# Label: "AffirmTrust Premium"
+# Serial: 7893706540734352110
+# MD5 Fingerprint: c4:5d:0e:48:b6:ac:28:30:4e:0a:bc:f9:38:16:87:57
+# SHA1 Fingerprint: d8:a6:33:2c:e0:03:6f:b1:85:f6:63:4f:7d:6a:06:65:26:32:28:27
+# SHA256 Fingerprint: 70:a7:3f:7f:37:6b:60:07:42:48:90:45:34:b1:14:82:d5:bf:0e:69:8e:cc:49:8d:f5:25:77:eb:f2:e9:3b:9a
+-----BEGIN CERTIFICATE-----
+MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UE
+BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVz
+dCBQcmVtaXVtMB4XDTEwMDEyOTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkG
+A1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1U
+cnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxBLf
+qV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtnBKAQ
+JG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ
++jjeRFcV5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrS
+s8PhaJyJ+HoAVt70VZVs+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5
+HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmdGPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d7
+70O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5Rp9EixAqnOEhss/n/fauG
+V+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NIS+LI+H+S
+qHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S
+5u046uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4Ia
+C1nEWTJ3s7xgaVY5/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TX
+OwF0lkLgAOIua+rF7nKsu7/+6qqo+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYE
+FJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/
+BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByvMiPIs0laUZx2
+KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg
+Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B
+8OWycvpEgjNC6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQ
+MKSOyARiqcTtNd56l+0OOF6SL5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc
+0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK+4w1IX2COPKpVJEZNZOUbWo6xbLQ
+u4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmVBtWVyuEklut89pMF
+u+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFgIxpH
+YoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8
+GKa1qF60g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaO
+RtGdFNrHF+QFlozEJLUbzxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6e
+KeC2uAloGRwYQw==
+-----END CERTIFICATE-----
+
+# Issuer: CN=AffirmTrust Premium ECC O=AffirmTrust
+# Subject: CN=AffirmTrust Premium ECC O=AffirmTrust
+# Label: "AffirmTrust Premium ECC"
+# Serial: 8401224907861490260
+# MD5 Fingerprint: 64:b0:09:55:cf:b1:d5:99:e2:be:13:ab:a6:5d:ea:4d
+# SHA1 Fingerprint: b8:23:6b:00:2f:1d:16:86:53:01:55:6c:11:a4:37:ca:eb:ff:c3:bb
+# SHA256 Fingerprint: bd:71:fd:f6:da:97:e4:cf:62:d1:64:7a:dd:25:81:b0:7d:79:ad:f8:39:7e:b4:ec:ba:9c:5e:84:88:82:14:23
+-----BEGIN CERTIFICATE-----
+MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMC
+VVMxFDASBgNVBAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQ
+cmVtaXVtIEVDQzAeFw0xMDAxMjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJ
+BgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1UcnVzdDEgMB4GA1UEAwwXQWZmaXJt
+VHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNMF4bFZ0D
+0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQN8O9
+ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0G
+A1UdDgQWBBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4G
+A1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/Vs
+aobgxCd05DhT1wV/GzTjxi+zygk8N53X57hG8f2h4nECMEJZh0PUUd+60wkyWs6I
+flc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKMeQ==
+-----END CERTIFICATE-----
+
+# Issuer: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority
+# Subject: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority
+# Label: "Certum Trusted Network CA"
+# Serial: 279744
+# MD5 Fingerprint: d5:e9:81:40:c5:18:69:fc:46:2c:89:75:62:0f:aa:78
+# SHA1 Fingerprint: 07:e0:32:e0:20:b7:2c:3f:19:2f:06:28:a2:59:3a:19:a7:0f:06:9e
+# SHA256 Fingerprint: 5c:58:46:8d:55:f5:8e:49:7e:74:39:82:d2:b5:00:10:b6:d1:65:37:4a:cf:83:a7:d4:a3:2d:b7:68:c4:40:8e
+-----BEGIN CERTIFICATE-----
+MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBM
+MSIwIAYDVQQKExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5D
+ZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBU
+cnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIyMTIwNzM3WhcNMjkxMjMxMTIwNzM3
+WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMg
+Uy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSIw
+IAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rH
+UV+rpDKmYYe2bg+G0jACl/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LM
+TXPb865Px1bVWqeWifrzq2jUI4ZZJ88JJ7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVU
+BBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4fOQtf/WsX+sWn7Et0brM
+kUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0cvW0QM8x
+AcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNV
+HRMBAf8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNV
+HQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15y
+sHhE49wcrwn9I0j6vSrEuVUEtRCjjSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfL
+I9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1mS1FhIrlQgnXdAIv94nYmem8
+J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5ajZt3hrvJBW8qY
+VoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI
+03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw=
+-----END CERTIFICATE-----
+
+# Issuer: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA
+# Subject: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA
+# Label: "TWCA Root Certification Authority"
+# Serial: 1
+# MD5 Fingerprint: aa:08:8f:f6:f9:7b:b7:f2:b1:a7:1e:9b:ea:ea:bd:79
+# SHA1 Fingerprint: cf:9e:87:6d:d3:eb:fc:42:26:97:a3:b5:a3:7a:a0:76:a9:06:23:48
+# SHA256 Fingerprint: bf:d8:8f:e1:10:1c:41:ae:3e:80:1b:f8:be:56:35:0e:e9:ba:d1:a6:b9:bd:51:5e:dc:5c:6d:5b:87:11:ac:44
+-----BEGIN CERTIFICATE-----
+MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzES
+MBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFU
+V0NBIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMz
+WhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJVEFJV0FO
+LUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlm
+aWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
+AQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFE
+AcK0HMMxQhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HH
+K3XLfJ+utdGdIzdjp9xCoi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeX
+RfwZVzsrb+RH9JlF/h3x+JejiB03HFyP4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/z
+rX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1ry+UPizgN7gr8/g+YnzAx
+3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
+HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkq
+hkiG9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeC
+MErJk/9q56YAf4lCmtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdls
+XebQ79NqZp4VKIV66IIArB6nCWlWQtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62D
+lhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVYT0bf+215WfKEIlKuD8z7fDvn
+aspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocnyYh0igzyXxfkZ
+YiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw==
+-----END CERTIFICATE-----
+
+# Issuer: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2
+# Subject: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2
+# Label: "Security Communication RootCA2"
+# Serial: 0
+# MD5 Fingerprint: 6c:39:7d:a4:0e:55:59:b2:3f:d6:41:b1:12:50:de:43
+# SHA1 Fingerprint: 5f:3b:8c:f2:f8:10:b3:7d:78:b4:ce:ec:19:19:c3:73:34:b9:c7:74
+# SHA256 Fingerprint: 51:3b:2c:ec:b8:10:d4:cd:e5:dd:85:39:1a:df:c6:c2:dd:60:d8:7b:b7:36:d2:b5:21:48:4a:a4:7a:0e:be:f6
+-----BEGIN CERTIFICATE-----
+MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDEl
+MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMe
+U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoX
+DTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRy
+dXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3VyaXR5IENvbW11bmlj
+YXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANAV
+OVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGr
+zbl+dp+++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVM
+VAX3NuRFg3sUZdbcDE3R3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQ
+hNBqyjoGADdH5H5XTz+L62e4iKrFvlNVspHEfbmwhRkGeC7bYRr6hfVKkaHnFtWO
+ojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1KEOtOghY6rCcMU/Gt1SSw
+awNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8QIH4D5cs
+OPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3
+DQEBCwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpF
+coJxDjrSzG+ntKEju/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXc
+okgfGT+Ok+vx+hfuzU7jBBJV1uXk3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8
+t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6qtnRGEmyR7jTV7JqR50S+kDFy
+1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29mvVXIwAHIRc/
+SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03
+-----END CERTIFICATE-----
+
+# Issuer: CN=Hellenic Academic and Research Institutions RootCA 2011 O=Hellenic Academic and Research Institutions Cert. Authority
+# Subject: CN=Hellenic Academic and Research Institutions RootCA 2011 O=Hellenic Academic and Research Institutions Cert. Authority
+# Label: "Hellenic Academic and Research Institutions RootCA 2011"
+# Serial: 0
+# MD5 Fingerprint: 73:9f:4c:4b:73:5b:79:e9:fa:ba:1c:ef:6e:cb:d5:c9
+# SHA1 Fingerprint: fe:45:65:9b:79:03:5b:98:a1:61:b5:51:2e:ac:da:58:09:48:22:4d
+# SHA256 Fingerprint: bc:10:4f:15:a4:8b:e7:09:dc:a5:42:a7:e1:d4:b9:df:6f:05:45:27:e8:02:ea:a9:2d:59:54:44:25:8a:fe:71
+-----BEGIN CERTIFICATE-----
+MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1Ix
+RDBCBgNVBAoTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1
+dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1p
+YyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIFJvb3RDQSAyMDExMB4XDTExMTIw
+NjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYTAkdSMUQwQgYDVQQK
+EztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIENl
+cnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl
+c2VhcmNoIEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEB
+BQADggEPADCCAQoCggEBAKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPz
+dYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJ
+fel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa71HFK9+WXesyHgLacEns
+bgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u8yBRQlqD
+75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSP
+FEDH3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNV
+HRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp
+5dgTBCPuQSUwRwYDVR0eBEAwPqA8MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQu
+b3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQub3JnMA0GCSqGSIb3DQEBBQUA
+A4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVtXdMiKahsog2p
+6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8
+TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7
+dIsXRSZMFpGD/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8Acys
+Nnq/onN694/BtZqhFLKPM58N7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXI
+l7WdmplNsDz4SgCbZN2fOUvRJ9e4
+-----END CERTIFICATE-----
+
+# Issuer: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967
+# Subject: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967
+# Label: "Actalis Authentication Root CA"
+# Serial: 6271844772424770508
+# MD5 Fingerprint: 69:c1:0d:4f:07:a3:1b:c3:fe:56:3d:04:bc:11:f6:a6
+# SHA1 Fingerprint: f3:73:b3:87:06:5a:28:84:8a:f2:f3:4a:ce:19:2b:dd:c7:8e:9c:ac
+# SHA256 Fingerprint: 55:92:60:84:ec:96:3a:64:b9:6e:2a:be:01:ce:0b:a8:6a:64:fb:fe:bc:c7:aa:b5:af:c1:55:b3:7f:d7:60:66
+-----BEGIN CERTIFICATE-----
+MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UE
+BhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8w
+MzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290
+IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDkyMjExMjIwMlowazELMAkGA1UEBhMC
+SVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1
+ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENB
+MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNv
+UTufClrJwkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX
+4ay8IMKx4INRimlNAJZaby/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9
+KK3giq0itFZljoZUj5NDKd45RnijMCO6zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/
+gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1fYVEiVRvjRuPjPdA1Yprb
+rxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2oxgkg4YQ
+51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2F
+be8lEfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxe
+KF+w6D9Fz8+vm2/7hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4F
+v6MGn8i1zeQf1xcGDXqVdFUNaBr8EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbn
+fpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5jF66CyCU3nuDuP/jVo23Eek7
+jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLYiDrIn3hm7Ynz
+ezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt
+ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAL
+e3KHwGCmSUyIWOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70
+jsNjLiNmsGe+b7bAEzlgqqI0JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDz
+WochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKxK3JCaKygvU5a2hi/a5iB0P2avl4V
+SM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+Xlff1ANATIGk0k9j
+pwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC4yyX
+X04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+Ok
+fcvHlXHo2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7R
+K4X9p2jIugErsWx0Hbhzlefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btU
+ZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXemOR/qnuOf0GZvBeyqdn6/axag67XH/JJU
+LysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9vwGYT7JZVEc+NHt4bVaT
+LnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg==
+-----END CERTIFICATE-----
+
+# Issuer: O=Trustis Limited OU=Trustis FPS Root CA
+# Subject: O=Trustis Limited OU=Trustis FPS Root CA
+# Label: "Trustis FPS Root CA"
+# Serial: 36053640375399034304724988975563710553
+# MD5 Fingerprint: 30:c9:e7:1e:6b:e6:14:eb:65:b2:16:69:20:31:67:4d
+# SHA1 Fingerprint: 3b:c0:38:0b:33:c3:f6:a6:0c:86:15:22:93:d9:df:f5:4b:81:c0:04
+# SHA256 Fingerprint: c1:b4:82:99:ab:a5:20:8f:e9:63:0a:ce:55:ca:68:a0:3e:da:5a:51:9c:88:02:a0:d3:a6:73:be:8f:8e:55:7d
+-----BEGIN CERTIFICATE-----
+MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBF
+MQswCQYDVQQGEwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQL
+ExNUcnVzdGlzIEZQUyBSb290IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTEx
+MzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNVBAoTD1RydXN0aXMgTGltaXRlZDEc
+MBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQAD
+ggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQRUN+
+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihH
+iTHcDnlkH5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjj
+vSkCqPoc4Vu5g6hBSLwacY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA
+0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zto3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlB
+OrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEAAaNTMFEwDwYDVR0TAQH/
+BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAdBgNVHQ4E
+FgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01
+GX2cGE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmW
+zaD+vkAMXBJV+JOCyinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP4
+1BIy+Q7DsdwyhEQsb8tGD+pmQQ9P8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZE
+f1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHVl/9D7S3B2l0pKoU/rGXuhg8F
+jZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYliB6XzCGcKQEN
+ZetX2fNXlrtIzYE=
+-----END CERTIFICATE-----
+
+# Issuer: CN=Buypass Class 2 Root CA O=Buypass AS-983163327
+# Subject: CN=Buypass Class 2 Root CA O=Buypass AS-983163327
+# Label: "Buypass Class 2 Root CA"
+# Serial: 2
+# MD5 Fingerprint: 46:a7:d2:fe:45:fb:64:5a:a8:59:90:9b:78:44:9b:29
+# SHA1 Fingerprint: 49:0a:75:74:de:87:0a:47:fe:58:ee:f6:c7:6b:eb:c6:0b:12:40:99
+# SHA256 Fingerprint: 9a:11:40:25:19:7c:5b:b9:5d:94:e6:3d:55:cd:43:79:08:47:b6:46:b2:3c:df:11:ad:a4:a0:0e:ff:15:fb:48
+-----BEGIN CERTIFICATE-----
+MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd
+MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg
+Q2xhc3MgMiBSb290IENBMB4XDTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1ow
+TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw
+HgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB
+BQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1g1Lr
+6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPV
+L4O2fuPn9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC91
+1K2GScuVr1QGbNgGE41b/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHx
+MlAQTn/0hpPshNOOvEu/XAFOBz3cFIqUCqTqc/sLUegTBxj6DvEr0VQVfTzh97QZ
+QmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeffawrbD02TTqigzXsu8lkB
+arcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgIzRFo1clr
+Us3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLi
+FRhnBkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRS
+P/TizPJhk9H9Z2vXUq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN
+9SG9dKpN6nIDSdvHXx1iY8f93ZHsM+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxP
+AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMmAd+BikoL1Rpzz
+uvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAU18h
+9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s
+A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3t
+OluwlN5E40EIosHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo
++fsicdl9sz1Gv7SEr5AcD48Saq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7
+KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYdDnkM/crqJIByw5c/8nerQyIKx+u2
+DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWDLfJ6v9r9jv6ly0Us
+H8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0oyLQ
+I+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK7
+5t98biGCwWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h
+3PFaTWwyI0PurKju7koSCTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPz
+Y11aWOIv4x3kqdbQCtCev9eBCfHJxyYNrJgWVqA=
+-----END CERTIFICATE-----
+
+# Issuer: CN=Buypass Class 3 Root CA O=Buypass AS-983163327
+# Subject: CN=Buypass Class 3 Root CA O=Buypass AS-983163327
+# Label: "Buypass Class 3 Root CA"
+# Serial: 2
+# MD5 Fingerprint: 3d:3b:18:9e:2c:64:5a:e8:d5:88:ce:0e:f9:37:c2:ec
+# SHA1 Fingerprint: da:fa:f7:fa:66:84:ec:06:8f:14:50:bd:c7:c2:81:a5:bc:a9:64:57
+# SHA256 Fingerprint: ed:f7:eb:bc:a2:7a:2a:38:4d:38:7b:7d:40:10:c6:66:e2:ed:b4:84:3e:4c:29:b4:ae:1d:5b:93:32:e6:b2:4d
+-----BEGIN CERTIFICATE-----
+MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd
+MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg
+Q2xhc3MgMyBSb290IENBMB4XDTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFow
+TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw
+HgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB
+BQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRHsJ8Y
+ZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3E
+N3coTRiR5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9
+tznDDgFHmV0ST9tD+leh7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX
+0DJq1l1sDPGzbjniazEuOQAnFN44wOwZZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c
+/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH2xc519woe2v1n/MuwU8X
+KhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV/afmiSTY
+zIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvS
+O1UQRwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D
+34xFMFbG02SrZvPAXpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgP
+K9Dx2hzLabjKSWJtyNBjYt1gD1iqj6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3
+AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFEe4zf/lb+74suwv
+Tg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAACAj
+QTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV
+cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXS
+IGrs/CIBKM+GuIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2
+HJLw5QY33KbmkJs4j1xrG0aGQ0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsa
+O5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8ZORK15FTAaggiG6cX0S5y2CBNOxv
+033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2KSb12tjE8nVhz36u
+dmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz6MkE
+kbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg41
+3OEMXbugUZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvD
+u79leNKGef9JOxqDDPDeeOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq
+4/g7u9xN12TyUb7mqqta6THuBrxzvxNiCp/HuZc=
+-----END CERTIFICATE-----
+
+# Issuer: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center
+# Subject: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center
+# Label: "T-TeleSec GlobalRoot Class 3"
+# Serial: 1
+# MD5 Fingerprint: ca:fb:40:a8:4e:39:92:8a:1d:fe:8e:2f:c4:27:ea:ef
+# SHA1 Fingerprint: 55:a6:72:3e:cb:f2:ec:cd:c3:23:74:70:19:9d:2a:be:11:e3:81:d1
+# SHA256 Fingerprint: fd:73:da:d3:1c:64:4f:f1:b4:3b:ef:0c:cd:da:96:71:0b:9c:d9:87:5e:ca:7e:31:70:7a:f3:e9:6d:52:2b:bd
+-----BEGIN CERTIFICATE-----
+MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx
+KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd
+BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl
+YyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgxMDAxMTAyOTU2WhcNMzMxMDAxMjM1
+OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy
+aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50
+ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0G
+CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN
+8ELg63iIVl6bmlQdTQyK9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/
+RLyTPWGrTs0NvvAgJ1gORH8EGoel15YUNpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4
+hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZFiP0Zf3WHHx+xGwpzJFu5
+ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W0eDrXltM
+EnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGj
+QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1
+A/d2O2GCahKqGFPrAyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOy
+WL6ukK2YJ5f+AbGwUgC4TeQbIXQbfsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ
+1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzTucpH9sry9uetuUg/vBa3wW30
+6gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7hP0HHRwA11fXT
+91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml
+e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4p
+TpPDpFQUWw==
+-----END CERTIFICATE-----
+
+# Issuer: CN=EE Certification Centre Root CA O=AS Sertifitseerimiskeskus
+# Subject: CN=EE Certification Centre Root CA O=AS Sertifitseerimiskeskus
+# Label: "EE Certification Centre Root CA"
+# Serial: 112324828676200291871926431888494945866
+# MD5 Fingerprint: 43:5e:88:d4:7d:1a:4a:7e:fd:84:2e:52:eb:01:d4:6f
+# SHA1 Fingerprint: c9:a8:b9:e7:55:80:5e:58:e3:53:77:a7:25:eb:af:c3:7b:27:cc:d7
+# SHA256 Fingerprint: 3e:84:ba:43:42:90:85:16:e7:75:73:c0:99:2f:09:79:ca:08:4e:46:85:68:1f:f1:95:cc:ba:8a:22:9b:8a:76
+-----BEGIN CERTIFICATE-----
+MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1
+MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1
+czEoMCYGA1UEAwwfRUUgQ2VydGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYG
+CSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIwMTAxMDMwMTAxMDMwWhgPMjAzMDEy
+MTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlBUyBTZXJ0aWZpdHNl
+ZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRyZSBS
+b290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEB
+AQUAA4IBDwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUy
+euuOF0+W2Ap7kaJjbMeMTC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvO
+bntl8jixwKIy72KyaOBhU8E2lf/slLo2rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIw
+WFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw93X2PaRka9ZP585ArQ/d
+MtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtNP2MbRMNE
+1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYD
+VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/
+zQas8fElyalL1BSZMEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYB
+BQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEF
+BQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+RjxY6hUFaTlrg4wCQiZrxTFGGV
+v9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqMlIpPnTX/dqQG
+E5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u
+uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIW
+iAYLtqZLICjU3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/v
+GVCJYMzpJJUPwssd8m92kMfMdcGWxZ0=
+-----END CERTIFICATE-----
+
+# Issuer: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH
+# Subject: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH
+# Label: "D-TRUST Root Class 3 CA 2 2009"
+# Serial: 623603
+# MD5 Fingerprint: cd:e0:25:69:8d:47:ac:9c:89:35:90:f7:fd:51:3d:2f
+# SHA1 Fingerprint: 58:e8:ab:b0:36:15:33:fb:80:f7:9b:1b:6d:29:d3:ff:8d:5f:00:f0
+# SHA256 Fingerprint: 49:e7:a4:42:ac:f0:ea:62:87:05:00:54:b5:25:64:b6:50:e4:f4:9e:42:e3:48:d6:aa:38:e0:39:e9:57:b1:c1
+-----BEGIN CERTIFICATE-----
+MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRF
+MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBD
+bGFzcyAzIENBIDIgMjAwOTAeFw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NTha
+ME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMM
+HkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIwDQYJKoZIhvcNAQEB
+BQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOADER03
+UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42
+tSHKXzlABF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9R
+ySPocq60vFYJfxLLHLGvKZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsM
+lFqVlNpQmvH/pStmMaTJOKDfHR+4CS7zp+hnUquVH+BGPtikw8paxTGA6Eian5Rp
+/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUCAwEAAaOCARowggEWMA8G
+A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ4PGEMA4G
+A1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVj
+dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUy
+MENBJTIwMiUyMDIwMDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRl
+cmV2b2NhdGlvbmxpc3QwQ6BBoD+GPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3Js
+L2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAwOS5jcmwwDQYJKoZIhvcNAQEL
+BQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm2H6NMLVwMeni
+acfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0
+o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4K
+zCUqNQT4YJEVdT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8
+PIWmawomDeCTmGCufsYkl4phX5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3Y
+Johw1+qRzT65ysCQblrGXnRl11z+o+I=
+-----END CERTIFICATE-----
+
+# Issuer: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH
+# Subject: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH
+# Label: "D-TRUST Root Class 3 CA 2 EV 2009"
+# Serial: 623604
+# MD5 Fingerprint: aa:c6:43:2c:5e:2d:cd:c4:34:c0:50:4f:11:02:4f:b6
+# SHA1 Fingerprint: 96:c9:1b:0b:95:b4:10:98:42:fa:d0:d8:22:79:fe:60:fa:b9:16:83
+# SHA256 Fingerprint: ee:c5:49:6b:98:8c:e9:86:25:b9:34:09:2e:ec:29:08:be:d0:b0:f3:16:c2:d4:73:0c:84:ea:f1:f3:d3:48:81
+-----BEGIN CERTIFICATE-----
+MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRF
+MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBD
+bGFzcyAzIENBIDIgRVYgMjAwOTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUw
+NDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNV
+BAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAwOTCCASIwDQYJKoZI
+hvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfSegpn
+ljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM0
+3TP1YtHhzRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6Z
+qQTMFexgaDbtCHu39b+T7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lR
+p75mpoo6Kr3HGrHhFPC+Oh25z1uxav60sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8
+HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure3511H3a6UCAwEAAaOCASQw
+ggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyvcop9Ntea
+HNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFw
+Oi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xh
+c3MlMjAzJTIwQ0ElMjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1E
+RT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0MEagRKBChkBodHRwOi8vd3d3LmQt
+dHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xhc3NfM19jYV8yX2V2XzIwMDku
+Y3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+PPoeUSbrh/Yp
+3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05
+nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNF
+CSuGdXzfX2lXANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7na
+xpeG0ILD5EJt/rDiZE4OJudANCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqX
+KVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVvw9y4AyHqnxbxLFS1
+-----END CERTIFICATE-----
+
+# Issuer: CN=CA Disig Root R2 O=Disig a.s.
+# Subject: CN=CA Disig Root R2 O=Disig a.s.
+# Label: "CA Disig Root R2"
+# Serial: 10572350602393338211
+# MD5 Fingerprint: 26:01:fb:d8:27:a7:17:9a:45:54:38:1a:43:01:3b:03
+# SHA1 Fingerprint: b5:61:eb:ea:a4:de:e4:25:4b:69:1a:98:a5:57:47:c2:34:c7:d9:71
+# SHA256 Fingerprint: e2:3d:4a:03:6d:7b:70:e9:f5:95:b1:42:20:79:d2:b9:1e:df:bb:1f:b6:51:a0:63:3e:aa:8a:9d:c5:f8:07:03
+-----BEGIN CERTIFICATE-----
+MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNV
+BAYTAlNLMRMwEQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMu
+MRkwFwYDVQQDExBDQSBEaXNpZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQy
+MDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sxEzARBgNVBAcTCkJyYXRpc2xhdmEx
+EzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERpc2lnIFJvb3QgUjIw
+ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbCw3Oe
+NcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNH
+PWSb6WiaxswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3I
+x2ymrdMxp7zo5eFm1tL7A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbe
+QTg06ov80egEFGEtQX6sx3dOy1FU+16SGBsEWmjGycT6txOgmLcRK7fWV8x8nhfR
+yyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqVg8NTEQxzHQuyRpDRQjrO
+QG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa5Beny912
+H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJ
+QfYEkoopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUD
+i/ZnWejBBhG93c+AAk9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORs
+nLMOPReisjQS1n6yqEm70XooQL6iFh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1
+rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud
+DwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5uQu0wDQYJKoZI
+hvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM
+tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqf
+GopTpti72TVVsRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkb
+lvdhuDvEK7Z4bLQjb/D907JedR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka
++elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W81k/BfDxujRNt+3vrMNDcTa/F1bal
+TFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjxmHHEt38OFdAlab0i
+nSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01utI3
+gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18Dr
+G5gPcFw0sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3Os
+zMOl6W8KjptlwlCFtaOgUxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8x
+L4ysEr3vQCj8KWefshNPZiTEUxnpHikV7+ZtsH8tZ/3zbBt1RqPlShfppNcL
+-----END CERTIFICATE-----
+
+# Issuer: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV
+# Subject: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV
+# Label: "ACCVRAIZ1"
+# Serial: 6828503384748696800
+# MD5 Fingerprint: d0:a0:5a:ee:05:b6:09:94:21:a1:7d:f1:b2:29:82:02
+# SHA1 Fingerprint: 93:05:7a:88:15:c6:4f:ce:88:2f:fa:91:16:52:28:78:bc:53:64:17
+# SHA256 Fingerprint: 9a:6e:c0:12:e1:a7:da:9d:be:34:19:4d:47:8a:d7:c0:db:18:22:fb:07:1d:f1:29:81:49:6e:d1:04:38:41:13
+-----BEGIN CERTIFICATE-----
+MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UE
+AwwJQUNDVlJBSVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQsw
+CQYDVQQGEwJFUzAeFw0xMTA1MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQ
+BgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwHUEtJQUNDVjENMAsGA1UECgwEQUND
+VjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCb
+qau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gMjmoY
+HtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWo
+G2ioPej0RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpA
+lHPrzg5XPAOBOp0KoVdDaaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhr
+IA8wKFSVf+DuzgpmndFALW4ir50awQUZ0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/
+0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDGWuzndN9wrqODJerWx5eH
+k6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs78yM2x/47
+4KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMO
+m3WR5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpa
+cXpkatcnYGMN285J9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPl
+uUsXQA+xtrn13k/c4LOsOxFwYIRKQ26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYI
+KwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRwOi8vd3d3LmFjY3YuZXMvZmls
+ZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEuY3J0MB8GCCsG
+AQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2
+VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeT
+VfZW6oHlNsyMHj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIG
+CCsGAQUFBwICMIIBFB6CARAAQQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUA
+cgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBhAO0AegAgAGQAZQAgAGwAYQAgAEEA
+QwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUAYwBuAG8AbABvAGcA
+7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBjAHQA
+cgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAA
+QwBQAFMAIABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUA
+czAwBggrBgEFBQcCARYkaHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2Mu
+aHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRt
+aW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2MV9kZXIuY3JsMA4GA1Ud
+DwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZIhvcNAQEF
+BQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdp
+D70ER9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gU
+JyCpZET/LtZ1qmxNYEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+m
+AM/EKXMRNt6GGT6d7hmKG9Ww7Y49nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepD
+vV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJTS+xJlsndQAJxGJ3KQhfnlms
+tn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3sCPdK6jT2iWH
+7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h
+I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szA
+h1xA2syVP1XgNce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xF
+d3+YJ5oyXSrjhO7FmGYvliAd3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2H
+pPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3pEfbRD0tVNEYqi4Y7
+-----END CERTIFICATE-----
+
+# Issuer: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA
+# Subject: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA
+# Label: "TWCA Global Root CA"
+# Serial: 3262
+# MD5 Fingerprint: f9:03:7e:cf:e6:9e:3c:73:7a:2a:90:07:69:ff:2b:96
+# SHA1 Fingerprint: 9c:bb:48:53:f6:a4:f6:d3:52:a4:e8:32:52:55:60:13:f5:ad:af:65
+# SHA256 Fingerprint: 59:76:90:07:f7:68:5d:0f:cd:50:87:2f:9f:95:d5:75:5a:5b:2b:45:7d:81:f3:69:2b:61:0a:98:67:2f:0e:1b
+-----BEGIN CERTIFICATE-----
+MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcx
+EjAQBgNVBAoTCVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMT
+VFdDQSBHbG9iYWwgUm9vdCBDQTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5
+NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQKEwlUQUlXQU4tQ0ExEDAOBgNVBAsT
+B1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3QgQ0EwggIiMA0GCSqG
+SIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2CnJfF
+10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz
+0ALfUPZVr2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfCh
+MBwqoJimFb3u/Rk28OKRQ4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbH
+zIh1HrtsBv+baz4X7GGqcXzGHaL3SekVtTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc
+46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1WKKD+u4ZqyPpcC1jcxkt2
+yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99sy2sbZCi
+laLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYP
+oA/pyJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQA
+BDzfuBSO6N+pjWxnkjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcE
+qYSjMq+u7msXi7Kx/mzhkIyIqJdIzshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm
+4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
+/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6gcFGn90xHNcgL
+1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn
+LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WF
+H6vPNOw/KP4M8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNo
+RI2T9GRwoD2dKAXDOXC4Ynsg/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+
+nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlglPx4mI88k1HtQJAH32RjJMtOcQWh
+15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryPA9gK8kxkRr05YuWW
+6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3mi4TW
+nsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5j
+wa19hAM8EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWz
+aGHQRiapIVJpLesux+t3zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmy
+KwbQBM0=
+-----END CERTIFICATE-----
+
+# Issuer: CN=TeliaSonera Root CA v1 O=TeliaSonera
+# Subject: CN=TeliaSonera Root CA v1 O=TeliaSonera
+# Label: "TeliaSonera Root CA v1"
+# Serial: 199041966741090107964904287217786801558
+# MD5 Fingerprint: 37:41:49:1b:18:56:9a:26:f5:ad:c2:66:fb:40:a5:4c
+# SHA1 Fingerprint: 43:13:bb:96:f1:d5:86:9b:c1:4e:6a:92:f6:cf:f6:34:69:87:82:37
+# SHA256 Fingerprint: dd:69:36:fe:21:f8:f0:77:c1:23:a1:a5:21:c1:22:24:f7:22:55:b7:3e:03:a7:26:06:93:e8:a2:4b:0f:a3:89
+-----BEGIN CERTIFICATE-----
+MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAw
+NzEUMBIGA1UECgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJv
+b3QgQ0EgdjEwHhcNMDcxMDE4MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYD
+VQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwWVGVsaWFTb25lcmEgUm9vdCBDQSB2
+MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+6yfwIaPzaSZVfp3F
+VRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA3GV1
+7CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+X
+Z75Ljo1kB1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+
+/jXh7VB7qTCNGdMJjmhnXb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs
+81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxHoLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkm
+dtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3F0fUTPHSiXk+TT2YqGHe
+Oh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJoWjiUIMu
+sDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4
+pgd7gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fs
+slESl1MpWtTwEhDcTwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQ
+arMCpgKIv7NHfirZ1fpoeDVNAgMBAAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYD
+VR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qWDNXr+nuqF+gTEjANBgkqhkiG
+9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNmzqjMDfz1mgbl
+dxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx
+0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1Tj
+TQpgcmLNkQfWpb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBed
+Y2gea+zDTYa4EzAvXUYNR0PVG6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7
+Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpcc41teyWRyu5FrgZLAMzTsVlQ2jqI
+OylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOTJsjrDNYmiLbAJM+7
+vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2qReW
+t88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcn
+HL/EVlP6Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVx
+SK236thZiNSQvxaz2emsWWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY=
+-----END CERTIFICATE-----
+
+# Issuer: CN=E-Tugra Certification Authority O=E-Tu\u011fra EBG Bili\u015fim Teknolojileri ve Hizmetleri A.\u015e. OU=E-Tugra Sertifikasyon Merkezi
+# Subject: CN=E-Tugra Certification Authority O=E-Tu\u011fra EBG Bili\u015fim Teknolojileri ve Hizmetleri A.\u015e. OU=E-Tugra Sertifikasyon Merkezi
+# Label: "E-Tugra Certification Authority"
+# Serial: 7667447206703254355
+# MD5 Fingerprint: b8:a1:03:63:b0:bd:21:71:70:8a:6f:13:3a:bb:79:49
+# SHA1 Fingerprint: 51:c6:e7:08:49:06:6e:f3:92:d4:5c:a0:0d:6d:a3:62:8f:c3:52:39
+# SHA256 Fingerprint: b0:bf:d5:2b:b0:d7:d9:bd:92:bf:5d:4d:c1:3d:a2:55:c0:2c:54:2f:37:83:65:ea:89:39:11:f5:5e:55:f2:3c
+-----BEGIN CERTIFICATE-----
+MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNV
+BAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBC
+aWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNV
+BAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQDDB9FLVR1
+Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMwNTEyMDk0OFoXDTIz
+MDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExQDA+
+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhp
+em1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN
+ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
+MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA4vU/kwVRHoViVF56C/UY
+B4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vdhQd2h8y/L5VMzH2nPbxH
+D5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5KCKpbknSF
+Q9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEo
+q1+gElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3D
+k14opz8n8Y4e0ypQBaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcH
+fC425lAcP9tDJMW/hkd5s3kc91r0E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsut
+dEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gzrt48Ue7LE3wBf4QOXVGUnhMM
+ti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAqjqFGOjGY5RH8
+zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn
+rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUX
+U8u3Zg5mTPj5dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6
+Jyr+zE7S6E5UMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5
+XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAF
+Nzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAKkEh47U6YA5n+KGCR
+HTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jOXKqY
+GwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c
+77NCR807VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3
++GbHeJAAFS6LrVE1Uweoa2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WK
+vJUawSg5TB9D0pH0clmKuVb8P7Sd2nCcdlqMQ1DujjByTd//SffGqWfZbawCEeI6
+FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEVKV0jq9BgoRJP3vQXzTLl
+yb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gTDx4JnW2P
+AJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpD
+y4Q08ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8d
+NL/+I5c30jn6PQ0GC7TbO6Orb1wdtn7os4I07QZcJA==
+-----END CERTIFICATE-----
+
+# Issuer: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center
+# Subject: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center
+# Label: "T-TeleSec GlobalRoot Class 2"
+# Serial: 1
+# MD5 Fingerprint: 2b:9b:9e:e4:7b:6c:1f:00:72:1a:cc:c1:77:79:df:6a
+# SHA1 Fingerprint: 59:0d:2d:7d:88:4f:40:2e:61:7e:a5:62:32:17:65:cf:17:d8:94:e9
+# SHA256 Fingerprint: 91:e2:f5:78:8d:58:10:eb:a7:ba:58:73:7d:e1:54:8a:8e:ca:cd:01:45:98:bc:0b:14:3e:04:1b:17:05:25:52
+-----BEGIN CERTIFICATE-----
+MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx
+KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd
+BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl
+YyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgxMDAxMTA0MDE0WhcNMzMxMDAxMjM1
+OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy
+aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50
+ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0G
+CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUd
+AqSzm1nzHoqvNK38DcLZSBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiC
+FoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/FvudocP05l03Sx5iRUKrERLMjfTlH6VJi
+1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx9702cu+fjOlbpSD8DT6Iavq
+jnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGVWOHAD3bZ
+wI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGj
+QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/
+WSA2AHmgoCJrjNXyYdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhy
+NsZt+U2e+iKo4YFWz827n+qrkRk4r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPAC
+uvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNfvNoBYimipidx5joifsFvHZVw
+IEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR3p1m0IvVVGb6
+g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN
+9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlP
+BSeOE6Fuwg==
+-----END CERTIFICATE-----
+
+# Issuer: CN=Atos TrustedRoot 2011 O=Atos
+# Subject: CN=Atos TrustedRoot 2011 O=Atos
+# Label: "Atos TrustedRoot 2011"
+# Serial: 6643877497813316402
+# MD5 Fingerprint: ae:b9:c4:32:4b:ac:7f:5d:66:cc:77:94:bb:2a:77:56
+# SHA1 Fingerprint: 2b:b1:f5:3e:55:0c:1d:c5:f1:d4:e6:b7:6a:46:4b:55:06:02:ac:21
+# SHA256 Fingerprint: f3:56:be:a2:44:b7:a9:1e:b3:5d:53:ca:9a:d7:86:4a:ce:01:8e:2d:35:d5:f8:f9:6d:df:68:a6:f4:1a:a4:74
+-----BEGIN CERTIFICATE-----
+MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UE
+AwwVQXRvcyBUcnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQG
+EwJERTAeFw0xMTA3MDcxNDU4MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMM
+FUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsGA1UECgwEQXRvczELMAkGA1UEBhMC
+REUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCVhTuXbyo7LjvPpvMp
+Nb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr54rM
+VD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+
+SZFhyBH+DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ
+4J7sVaE3IqKHBAUsR320HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0L
+cp2AMBYHlT8oDv3FdU9T1nSatCQujgKRz3bFmx5VdJx4IbHwLfELn8LVlhgf8FQi
+eowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7Rl+lwrrw7GWzbITAPBgNV
+HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZbNshMBgG
+A1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3
+DQEBCwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8j
+vZfza1zv7v1Apt+hk6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kP
+DpFrdRbhIfzYJsdHt6bPWHJxfrrhTZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pc
+maHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a961qn8FYiqTxlVMYVqL2Gns2D
+lmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G3mB/ufNPRJLv
+KrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed
+-----END CERTIFICATE-----
+
+# Issuer: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited
+# Subject: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited
+# Label: "QuoVadis Root CA 1 G3"
+# Serial: 687049649626669250736271037606554624078720034195
+# MD5 Fingerprint: a4:bc:5b:3f:fe:37:9a:fa:64:f0:e2:fa:05:3d:0b:ab
+# SHA1 Fingerprint: 1b:8e:ea:57:96:29:1a:c9:39:ea:b8:0a:81:1a:73:73:c0:93:79:67
+# SHA256 Fingerprint: 8a:86:6f:d1:b2:76:b5:7e:57:8e:92:1c:65:82:8a:2b:ed:58:e9:f2:f2:88:05:41:34:b7:f1:f4:bf:c9:cc:74
+-----BEGIN CERTIFICATE-----
+MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQEL
+BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc
+BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00
+MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
+aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEgRzMwggIiMA0GCSqG
+SIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakEPBtV
+wedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWe
+rNrwU8lmPNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF341
+68Xfuw6cwI2H44g4hWf6Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh
+4Pw5qlPafX7PGglTvF0FBM+hSo+LdoINofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXp
+UhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/lg6AnhF4EwfWQvTA9xO+o
+abw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV7qJZjqlc
+3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/G
+KubX9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSt
+hfbZxbGL0eUQMk1fiyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KO
+Tk0k+17kBL5yG6YnLUlamXrXXAkgt3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOt
+zCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB
+BjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZIhvcNAQELBQAD
+ggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC
+MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2
+cDMT/uFPpiN3GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUN
+qXsCHKnQO18LwIE6PWThv6ctTr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5
+YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP+V04ikkwj+3x6xn0dxoxGE1nVGwv
+b2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh3jRJjehZrJ3ydlo2
+8hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fawx/k
+NSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNj
+ZgKAvQU6O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhp
+q1467HxpvMc7hU6eFbm0FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFt
+nh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOVhMJKzRwuJIczYOXD
+-----END CERTIFICATE-----
+
+# Issuer: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited
+# Subject: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited
+# Label: "QuoVadis Root CA 2 G3"
+# Serial: 390156079458959257446133169266079962026824725800
+# MD5 Fingerprint: af:0c:86:6e:bf:40:2d:7f:0b:3e:12:50:ba:12:3d:06
+# SHA1 Fingerprint: 09:3c:61:f3:8b:8b:dc:7d:55:df:75:38:02:05:00:e1:25:f5:c8:36
+# SHA256 Fingerprint: 8f:e4:fb:0a:f9:3a:4d:0d:67:db:0b:eb:b2:3e:37:c7:1b:f3:25:dc:bc:dd:24:0e:a0:4d:af:58:b4:7e:18:40
+-----BEGIN CERTIFICATE-----
+MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQEL
+BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc
+BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00
+MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
+aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIgRzMwggIiMA0GCSqG
+SIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFhZiFf
+qq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMW
+n4rjyduYNM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ym
+c5GQYaYDFCDy54ejiK2toIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+
+O7q414AB+6XrW7PFXmAqMaCvN+ggOp+oMiwMzAkd056OXbxMmO7FGmh77FOm6RQ1
+o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+lV0POKa2Mq1W/xPtbAd0j
+IaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZoL1NesNKq
+IcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz
+8eQQsSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43eh
+vNURG3YBZwjgQQvD6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l
+7ZizlWNof/k19N+IxWA1ksB8aRxhlRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALG
+cC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB
+BjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZIhvcNAQELBQAD
+ggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66
+AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RC
+roijQ1h5fq7KpVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0Ga
+W/ZZGYjeVYg3UQt4XAoeo0L9x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4n
+lv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgzdWqTHBLmYF5vHX/JHyPLhGGfHoJE
++V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6XU/IyAgkwo1jwDQHV
+csaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+NwmNtd
+dbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNg
+KCLjsZWDzYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeM
+HVOyToV7BjjHLPj4sHKNJeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4
+WSr2Rz0ZiC3oheGe7IUIarFsNMkd7EgrO3jtZsSOeWmD3n+M
+-----END CERTIFICATE-----
+
+# Issuer: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited
+# Subject: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited
+# Label: "QuoVadis Root CA 3 G3"
+# Serial: 268090761170461462463995952157327242137089239581
+# MD5 Fingerprint: df:7d:b9:ad:54:6f:68:a1:df:89:57:03:97:43:b0:d7
+# SHA1 Fingerprint: 48:12:bd:92:3c:a8:c4:39:06:e7:30:6d:27:96:e6:a4:cf:22:2e:7d
+# SHA256 Fingerprint: 88:ef:81:de:20:2e:b0:18:45:2e:43:f8:64:72:5c:ea:5f:bd:1f:c2:d9:d2:05:73:07:09:c5:d8:b8:69:0f:46
+-----BEGIN CERTIFICATE-----
+MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQEL
+BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc
+BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00
+MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
+aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMgRzMwggIiMA0GCSqG
+SIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286IxSR
+/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNu
+FoM7pmRLMon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXR
+U7Ox7sWTaYI+FrUoRqHe6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+c
+ra1AdHkrAj80//ogaX3T7mH1urPnMNA3I4ZyYUUpSFlob3emLoG+B01vr87ERROR
+FHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3UVDmrJqMz6nWB2i3ND0/k
+A9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f75li59wzw
+eyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634Ryl
+sSqiMd5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBp
+VzgeAVuNVejH38DMdyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0Q
+A4XN8f+MFrXBsj6IbGB/kE+V9/YtrQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+
+ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB
+BjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZIhvcNAQELBQAD
+ggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px
+KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnI
+FUBhynLWcKzSt/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5Wvv
+oxXqA/4Ti2Tk08HS6IT7SdEQTXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFg
+u/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9DuDcpmvJRPpq3t/O5jrFc/ZSXPsoaP
+0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGibIh6BJpsQBJFxwAYf
+3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmDhPbl
+8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+
+DhcI00iX0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HN
+PlopNLk9hM6xZdRZkZFWdSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/
+ywaZWWDYWGWVjUTR939+J399roD1B0y2PpxxVJkES/1Y+Zj0
+-----END CERTIFICATE-----
+
+# Issuer: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com
+# Subject: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com
+# Label: "DigiCert Assured ID Root G2"
+# Serial: 15385348160840213938643033620894905419
+# MD5 Fingerprint: 92:38:b9:f8:63:24:82:65:2c:57:33:e6:fe:81:8f:9d
+# SHA1 Fingerprint: a1:4b:48:d9:43:ee:0a:0e:40:90:4f:3c:e0:a4:c0:91:93:51:5d:3f
+# SHA256 Fingerprint: 7d:05:eb:b6:82:33:9f:8c:94:51:ee:09:4e:eb:fe:fa:79:53:a1:14:ed:b2:f4:49:49:45:2f:ab:7d:2f:c1:85
+-----BEGIN CERTIFICATE-----
+MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBl
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv
+b3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQG
+EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl
+cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwggEi
+MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSA
+n61UQbVH35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4Htecc
+biJVMWWXvdMX0h5i89vqbFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9Hp
+EgjAALAcKxHad3A2m67OeYfcgnDmCXRwVWmvo2ifv922ebPynXApVfSr/5Vh88lA
+bx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OPYLfykqGxvYmJHzDNw6Yu
+YjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+RnlTGNAgMB
+AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQW
+BBTOw0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPI
+QW5pJ6d1Ee88hjZv0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I
+0jJmwYrA8y8678Dj1JGG0VDjA9tzd29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4Gni
+lmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAWhsI6yLETcDbYz+70CjTVW0z9
+B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0MjomZmWzwPDCv
+ON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo
+IhNzbM8m9Yop5w==
+-----END CERTIFICATE-----
+
+# Issuer: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com
+# Subject: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com
+# Label: "DigiCert Assured ID Root G3"
+# Serial: 15459312981008553731928384953135426796
+# MD5 Fingerprint: 7c:7f:65:31:0c:81:df:8d:ba:3e:99:e2:5c:ad:6e:fb
+# SHA1 Fingerprint: f5:17:a2:4f:9a:48:c6:c9:f8:a2:00:26:9f:dc:0f:48:2c:ab:30:89
+# SHA256 Fingerprint: 7e:37:cb:8b:4c:47:09:0c:ab:36:55:1b:a6:f4:5d:b8:40:68:0f:ba:16:6a:95:2d:b1:00:71:7f:43:05:3f:c2
+-----BEGIN CERTIFICATE-----
+MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQsw
+CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu
+ZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3Qg
+RzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQGEwJV
+UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu
+Y29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQBgcq
+hkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJf
+Zn4f5dwbRXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17Q
+RSAPWXYQ1qAk8C3eNvJsKTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/
+BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgFUaFNN6KDec6NHSrkhDAKBggqhkjOPQQD
+AwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5FyYZ5eEJJZVrmDxxDnOOlY
+JjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy1vUhZscv
+6pZjamVFkpUBtA==
+-----END CERTIFICATE-----
+
+# Issuer: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com
+# Subject: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com
+# Label: "DigiCert Global Root G2"
+# Serial: 4293743540046975378534879503202253541
+# MD5 Fingerprint: e4:a6:8a:c8:54:ac:52:42:46:0a:fd:72:48:1b:2a:44
+# SHA1 Fingerprint: df:3c:24:f9:bf:d6:66:76:1b:26:80:73:fe:06:d1:cc:8d:4f:82:a4
+# SHA256 Fingerprint: cb:3c:cb:b7:60:31:e5:e0:13:8f:8d:d3:9a:23:f9:de:47:ff:c3:5e:43:c1:14:4c:ea:27:d4:6a:5a:b1:cb:5f
+-----BEGIN CERTIFICATE-----
+MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH
+MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT
+MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
+b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG
+9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI
+2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx
+1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ
+q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz
+tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ
+vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP
+BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV
+5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY
+1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4
+NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG
+Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91
+8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe
+pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl
+MrY=
+-----END CERTIFICATE-----
+
+# Issuer: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com
+# Subject: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com
+# Label: "DigiCert Global Root G3"
+# Serial: 7089244469030293291760083333884364146
+# MD5 Fingerprint: f5:5d:a4:50:a5:fb:28:7e:1e:0f:0d:cc:96:57:56:ca
+# SHA1 Fingerprint: 7e:04:de:89:6a:3e:66:6d:00:e6:87:d3:3f:fa:d9:3b:e8:3d:34:9e
+# SHA256 Fingerprint: 31:ad:66:48:f8:10:41:38:c7:38:f3:9e:a4:32:01:33:39:3e:3a:18:cc:02:29:6e:f9:7c:2a:c9:ef:67:31:d0
+-----BEGIN CERTIFICATE-----
+MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQsw
+CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu
+ZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAe
+Fw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVTMRUw
+EwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20x
+IDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0CAQYF
+K4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FG
+fp4tn+6OYwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPO
+Z9wj/wMco+I+o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAd
+BgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNpYim8S8YwCgYIKoZIzj0EAwMDaAAwZQIx
+AK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y3maTD/HMsQmP3Wyr+mt/
+oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34VOKa5Vt8
+sycX
+-----END CERTIFICATE-----
+
+# Issuer: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com
+# Subject: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com
+# Label: "DigiCert Trusted Root G4"
+# Serial: 7451500558977370777930084869016614236
+# MD5 Fingerprint: 78:f2:fc:aa:60:1f:2f:b4:eb:c9:37:ba:53:2e:75:49
+# SHA1 Fingerprint: dd:fb:16:cd:49:31:c9:73:a2:03:7d:3f:c8:3a:4d:7d:77:5d:05:e4
+# SHA256 Fingerprint: 55:2f:7b:dc:f1:a7:af:9e:6c:e6:72:01:7f:4f:12:ab:f7:72:40:c7:8e:76:1a:c2:03:d1:d9:d2:0a:c8:99:88
+-----BEGIN CERTIFICATE-----
+MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBi
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3Qg
+RzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBiMQswCQYDVQQGEwJV
+UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu
+Y29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0GCSqG
+SIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3y
+ithZwuEppz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1If
+xp4VpX6+n6lXFllVcq9ok3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDV
+ySAdYyktzuxeTsiT+CFhmzTrBcZe7FsavOvJz82sNEBfsXpm7nfISKhmV1efVFiO
+DCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGYQJB5w3jHtrHEtWoYOAMQ
+jdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6MUSaM0C/
+CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCi
+EhtmmnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADM
+fRyVw4/3IbKyEbe7f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QY
+uKZ3AeEPlAwhHbJUKSWJbOUOUlFHdL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXK
+chYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8oR7FwI+isX4KJpn15GkvmB0t
+9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB
+hjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD
+ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2
+SV1EY+CtnJYYZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd
++SeuMIW59mdNOj6PWTkiU0TryF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWc
+fFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy7zBZLq7gcfJW5GqXb5JQbZaNaHqa
+sjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iahixTXTBmyUEFxPT9N
+cCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN5r5N
+0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie
+4u1Ki7wb/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mI
+r/OSmbaz5mEP0oUA51Aa5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1
+/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tKG48BtieVU+i2iW1bvGjUI+iLUaJW+fCm
+gKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP82Z+
+-----END CERTIFICATE-----
+
+# Issuer: CN=COMODO RSA Certification Authority O=COMODO CA Limited
+# Subject: CN=COMODO RSA Certification Authority O=COMODO CA Limited
+# Label: "COMODO RSA Certification Authority"
+# Serial: 101909084537582093308941363524873193117
+# MD5 Fingerprint: 1b:31:b0:71:40:36:cc:14:36:91:ad:c4:3e:fd:ec:18
+# SHA1 Fingerprint: af:e5:d2:44:a8:d1:19:42:30:ff:47:9f:e2:f8:97:bb:cd:7a:8c:b4
+# SHA256 Fingerprint: 52:f0:e1:c4:e5:8e:c6:29:29:1b:60:31:7f:07:46:71:b8:5d:7e:a8:0d:5b:07:27:34:63:53:4b:32:b4:02:34
+-----BEGIN CERTIFICATE-----
+MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCB
+hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
+A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV
+BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5
+MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgT
+EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
+Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh
+dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR
+6FSS0gpWsawNJN3Fz0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8X
+pz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC
+9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+5eNu/Nio5JIk2kNrYrhV
+/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pGx8cgoLEf
+Zd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z
++pUX2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7w
+qP/0uK3pN/u6uPQLOvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZah
+SL0896+1DSJMwBGB7FY79tOi4lu3sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVIC
+u9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+CGCe01a60y1Dma/RMhnEw6abf
+Fobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5WdYgGq/yapiq
+crxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E
+FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB
+/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvl
+wFTPoCWOAvn9sKIN9SCYPBMtrFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM
+4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+nq6PK7o9mfjYcwlYRm6mnPTXJ9OV
+2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSgtZx8jb8uk2Intzna
+FxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwWsRqZ
+CuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiK
+boHGhfKppC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmcke
+jkk9u+UJueBPSZI9FoJAzMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yL
+S0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHqZJx64SIDqZxubw5lT2yHh17zbqD5daWb
+QOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk527RH89elWsn2/x20Kk4yl
+0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7ILaZRfyHB
+NVOFBkpdn627G190
+-----END CERTIFICATE-----
+
+# Issuer: CN=USERTrust RSA Certification Authority O=The USERTRUST Network
+# Subject: CN=USERTrust RSA Certification Authority O=The USERTRUST Network
+# Label: "USERTrust RSA Certification Authority"
+# Serial: 2645093764781058787591871645665788717
+# MD5 Fingerprint: 1b:fe:69:d1:91:b7:19:33:a3:72:a8:0f:e1:55:e5:b5
+# SHA1 Fingerprint: 2b:8f:1b:57:33:0d:bb:a2:d0:7a:6c:51:f7:0e:e9:0d:da:b9:ad:8e
+# SHA256 Fingerprint: e7:93:c9:b0:2f:d8:aa:13:e2:1c:31:22:8a:cc:b0:81:19:64:3b:74:9c:89:89:64:b1:74:6d:46:c3:d4:cb:d2
+-----BEGIN CERTIFICATE-----
+MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCB
+iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl
+cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV
+BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAw
+MjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNV
+BAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU
+aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2Vy
+dGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK
+AoICAQCAEmUXNg7D2wiz0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B
+3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2jY0K2dvKpOyuR+OJv0OwWIJAJPuLodMkY
+tJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFnRghRy4YUVD+8M/5+bJz/
+Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O+T23LLb2
+VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT
+79uq/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6
+c0Plfg6lZrEpfDKEY1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmT
+Yo61Zs8liM2EuLE/pDkP2QKe6xJMlXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97l
+c6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8yexDJtC/QV9AqURE9JnnV4ee
+UB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+eLf8ZxXhyVeE
+Hg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd
+BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8G
+A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPF
+Up/L+M+ZBn8b2kMVn54CVVeWFPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KO
+VWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ7l8wXEskEVX/JJpuXior7gtNn3/3
+ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQEg9zKC7F4iRO/Fjs
+8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM8WcR
+iQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYze
+Sf7dNXGiFSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZ
+XHlKYC6SQK5MNyosycdiyA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/
+qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9cJ2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRB
+VXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGwsAvgnEzDHNb842m1R0aB
+L6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gxQ+6IHdfG
+jjxDah2nGN59PRbxYvnKkKj9
+-----END CERTIFICATE-----
+
+# Issuer: CN=USERTrust ECC Certification Authority O=The USERTRUST Network
+# Subject: CN=USERTrust ECC Certification Authority O=The USERTRUST Network
+# Label: "USERTrust ECC Certification Authority"
+# Serial: 123013823720199481456569720443997572134
+# MD5 Fingerprint: fa:68:bc:d9:b5:7f:ad:fd:c9:1d:06:83:28:cc:24:c1
+# SHA1 Fingerprint: d1:cb:ca:5d:b2:d5:2a:7f:69:3b:67:4d:e5:f0:5a:1d:0c:95:7d:f0
+# SHA256 Fingerprint: 4f:f4:60:d5:4b:9c:86:da:bf:bc:fc:57:12:e0:40:0d:2b:ed:3f:bc:4d:4f:bd:aa:86:e0:6a:dc:d2:a9:ad:7a
+-----BEGIN CERTIFICATE-----
+MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDEL
+MAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNl
+eSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMT
+JVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMjAx
+MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+Ck5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVUaGUg
+VVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlm
+aWNhdGlvbiBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqflo
+I+d61SRvU8Za2EurxtW20eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinng
+o4N+LZfQYcTxmdwlkWOrfzCjtHDix6EznPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0G
+A1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNVHQ8BAf8EBAMCAQYwDwYD
+VR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBBHU6+4WMB
+zzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbW
+RNZu9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg=
+-----END CERTIFICATE-----
+
+# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4
+# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4
+# Label: "GlobalSign ECC Root CA - R4"
+# Serial: 14367148294922964480859022125800977897474
+# MD5 Fingerprint: 20:f0:27:68:d1:7e:a0:9d:0e:e6:2a:ca:df:5c:89:8e
+# SHA1 Fingerprint: 69:69:56:2e:40:80:f4:24:a1:e7:19:9f:14:ba:f3:ee:58:ab:6a:bb
+# SHA256 Fingerprint: be:c9:49:11:c2:95:56:76:db:6c:0a:55:09:86:d7:6e:3b:a0:05:66:7c:44:2c:97:62:b4:fb:b7:73:de:22:8c
+-----BEGIN CERTIFICATE-----
+MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEk
+MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpH
+bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX
+DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD
+QSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu
+MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprlOQcJ
+FspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAw
+DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61F
+uOJAf/sKbvu+M8k8o4TVMAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGX
+kPoUVy0D7O48027KqGx2vKLeuwIgJ6iFJzWbVsaj8kfSt24bAgAXqmemFZHe+pTs
+ewv4n4Q=
+-----END CERTIFICATE-----
+
+# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5
+# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5
+# Label: "GlobalSign ECC Root CA - R5"
+# Serial: 32785792099990507226680698011560947931244
+# MD5 Fingerprint: 9f:ad:3b:1c:02:1e:8a:ba:17:74:38:81:0c:a2:bc:08
+# SHA1 Fingerprint: 1f:24:c6:30:cd:a4:18:ef:20:69:ff:ad:4f:dd:5f:46:3a:1b:69:aa
+# SHA256 Fingerprint: 17:9f:bc:14:8a:3d:d0:0f:d2:4e:a1:34:58:cc:43:bf:a7:f5:9c:81:82:d7:83:a5:13:f6:eb:ec:10:0c:89:24
+-----BEGIN CERTIFICATE-----
+MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEk
+MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpH
+bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX
+DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD
+QSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu
+MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6SFkc
+8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8ke
+hOvRnkmSh5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD
+VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYI
+KoZIzj0EAwMDaAAwZQIxAOVpEslu28YxuglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg
+515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7yFz9SO8NdCKoCOJuxUnO
+xwy8p2Fp8fc74SrL+SvzZpA3
+-----END CERTIFICATE-----
+
+# Issuer: CN=Staat der Nederlanden Root CA - G3 O=Staat der Nederlanden
+# Subject: CN=Staat der Nederlanden Root CA - G3 O=Staat der Nederlanden
+# Label: "Staat der Nederlanden Root CA - G3"
+# Serial: 10003001
+# MD5 Fingerprint: 0b:46:67:07:db:10:2f:19:8c:35:50:60:d1:0b:f4:37
+# SHA1 Fingerprint: d8:eb:6b:41:51:92:59:e0:f3:e7:85:00:c0:3d:b6:88:97:c9:ee:fc
+# SHA256 Fingerprint: 3c:4f:b0:b9:5a:b8:b3:00:32:f4:32:b8:6f:53:5f:e1:72:c1:85:d0:fd:39:86:58:37:cf:36:18:7f:a6:f4:28
+-----BEGIN CERTIFICATE-----
+MIIFdDCCA1ygAwIBAgIEAJiiOTANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJO
+TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFh
+dCBkZXIgTmVkZXJsYW5kZW4gUm9vdCBDQSAtIEczMB4XDTEzMTExNDExMjg0MloX
+DTI4MTExMzIzMDAwMFowWjELMAkGA1UEBhMCTkwxHjAcBgNVBAoMFVN0YWF0IGRl
+ciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5lZGVybGFuZGVuIFJv
+b3QgQ0EgLSBHMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL4yolQP
+cPssXFnrbMSkUeiFKrPMSjTysF/zDsccPVMeiAho2G89rcKezIJnByeHaHE6n3WW
+IkYFsO2tx1ueKt6c/DrGlaf1F2cY5y9JCAxcz+bMNO14+1Cx3Gsy8KL+tjzk7FqX
+xz8ecAgwoNzFs21v0IJyEavSgWhZghe3eJJg+szeP4TrjTgzkApyI/o1zCZxMdFy
+KJLZWyNtZrVtB0LrpjPOktvA9mxjeM3KTj215VKb8b475lRgsGYeCasH/lSJEULR
+9yS6YHgamPfJEf0WwTUaVHXvQ9Plrk7O53vDxk5hUUurmkVLoR9BvUhTFXFkC4az
+5S6+zqQbwSmEorXLCCN2QyIkHxcE1G6cxvx/K2Ya7Irl1s9N9WMJtxU51nus6+N8
+6U78dULI7ViVDAZCopz35HCz33JvWjdAidiFpNfxC95DGdRKWCyMijmev4SH8RY7
+Ngzp07TKbBlBUgmhHbBqv4LvcFEhMtwFdozL92TkA1CvjJFnq8Xy7ljY3r735zHP
+bMk7ccHViLVlvMDoFxcHErVc0qsgk7TmgoNwNsXNo42ti+yjwUOH5kPiNL6VizXt
+BznaqB16nzaeErAMZRKQFWDZJkBE41ZgpRDUajz9QdwOWke275dhdU/Z/seyHdTt
+XUmzqWrLZoQT1Vyg3N9udwbRcXXIV2+vD3dbAgMBAAGjQjBAMA8GA1UdEwEB/wQF
+MAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRUrfrHkleuyjWcLhL75Lpd
+INyUVzANBgkqhkiG9w0BAQsFAAOCAgEAMJmdBTLIXg47mAE6iqTnB/d6+Oea31BD
+U5cqPco8R5gu4RV78ZLzYdqQJRZlwJ9UXQ4DO1t3ApyEtg2YXzTdO2PCwyiBwpwp
+LiniyMMB8jPqKqrMCQj3ZWfGzd/TtiunvczRDnBfuCPRy5FOCvTIeuXZYzbB1N/8
+Ipf3YF3qKS9Ysr1YvY2WTxB1v0h7PVGHoTx0IsL8B3+A3MSs/mrBcDCw6Y5p4ixp
+gZQJut3+TcCDjJRYwEYgr5wfAvg1VUkvRtTA8KCWAg8zxXHzniN9lLf9OtMJgwYh
+/WA9rjLA0u6NpvDntIJ8CsxwyXmA+P5M9zWEGYox+wrZ13+b8KKaa8MFSu1BYBQw
+0aoRQm7TIwIEC8Zl3d1Sd9qBa7Ko+gE4uZbqKmxnl4mUnrzhVNXkanjvSr0rmj1A
+fsbAddJu+2gw7OyLnflJNZoaLNmzlTnVHpL3prllL+U9bTpITAjc5CgSKL59NVzq
+4BZ+Extq1z7XnvwtdbLBFNUjA9tbbws+eC8N3jONFrdI54OagQ97wUNNVQQXOEpR
+1VmiiXTTn74eS9fGbbeIJG9gkaSChVtWQbzQRKtqE77RLFi3EjNYsjdj3BP1lB0/
+QFH1T/U67cjF68IeHRaVesd+QnGTbksVtzDfqu1XhUisHWrdOWnk4Xl4vs4Fv6EM
+94B7IWcnMFk=
+-----END CERTIFICATE-----
+
+# Issuer: CN=Staat der Nederlanden EV Root CA O=Staat der Nederlanden
+# Subject: CN=Staat der Nederlanden EV Root CA O=Staat der Nederlanden
+# Label: "Staat der Nederlanden EV Root CA"
+# Serial: 10000013
+# MD5 Fingerprint: fc:06:af:7b:e8:1a:f1:9a:b4:e8:d2:70:1f:c0:f5:ba
+# SHA1 Fingerprint: 76:e2:7e:c1:4f:db:82:c1:c0:a6:75:b5:05:be:3d:29:b4:ed:db:bb
+# SHA256 Fingerprint: 4d:24:91:41:4c:fe:95:67:46:ec:4c:ef:a6:cf:6f:72:e2:8a:13:29:43:2f:9d:8a:90:7a:c4:cb:5d:ad:c1:5a
+-----BEGIN CERTIFICATE-----
+MIIFcDCCA1igAwIBAgIEAJiWjTANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQGEwJO
+TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSkwJwYDVQQDDCBTdGFh
+dCBkZXIgTmVkZXJsYW5kZW4gRVYgUm9vdCBDQTAeFw0xMDEyMDgxMTE5MjlaFw0y
+MjEyMDgxMTEwMjhaMFgxCzAJBgNVBAYTAk5MMR4wHAYDVQQKDBVTdGFhdCBkZXIg
+TmVkZXJsYW5kZW4xKTAnBgNVBAMMIFN0YWF0IGRlciBOZWRlcmxhbmRlbiBFViBS
+b290IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA48d+ifkkSzrS
+M4M1LGns3Amk41GoJSt5uAg94JG6hIXGhaTK5skuU6TJJB79VWZxXSzFYGgEt9nC
+UiY4iKTWO0Cmws0/zZiTs1QUWJZV1VD+hq2kY39ch/aO5ieSZxeSAgMs3NZmdO3d
+Z//BYY1jTw+bbRcwJu+r0h8QoPnFfxZpgQNH7R5ojXKhTbImxrpsX23Wr9GxE46p
+rfNeaXUmGD5BKyF/7otdBwadQ8QpCiv8Kj6GyzyDOvnJDdrFmeK8eEEzduG/L13l
+pJhQDBXd4Pqcfzho0LKmeqfRMb1+ilgnQ7O6M5HTp5gVXJrm0w912fxBmJc+qiXb
+j5IusHsMX/FjqTf5m3VpTCgmJdrV8hJwRVXj33NeN/UhbJCONVrJ0yPr08C+eKxC
+KFhmpUZtcALXEPlLVPxdhkqHz3/KRawRWrUgUY0viEeXOcDPusBCAUCZSCELa6fS
+/ZbV0b5GnUngC6agIk440ME8MLxwjyx1zNDFjFE7PZQIZCZhfbnDZY8UnCHQqv0X
+cgOPvZuM5l5Tnrmd74K74bzickFbIZTTRTeU0d8JOV3nI6qaHcptqAqGhYqCvkIH
+1vI4gnPah1vlPNOePqc7nvQDs/nxfRN0Av+7oeX6AHkcpmZBiFxgV6YuCcS6/ZrP
+px9Aw7vMWgpVSzs4dlG4Y4uElBbmVvMCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB
+/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFP6rAJCYniT8qcwaivsnuL8wbqg7
+MA0GCSqGSIb3DQEBCwUAA4ICAQDPdyxuVr5Os7aEAJSrR8kN0nbHhp8dB9O2tLsI
+eK9p0gtJ3jPFrK3CiAJ9Brc1AsFgyb/E6JTe1NOpEyVa/m6irn0F3H3zbPB+po3u
+2dfOWBfoqSmuc0iH55vKbimhZF8ZE/euBhD/UcabTVUlT5OZEAFTdfETzsemQUHS
+v4ilf0X8rLiltTMMgsT7B/Zq5SWEXwbKwYY5EdtYzXc7LMJMD16a4/CrPmEbUCTC
+wPTxGfARKbalGAKb12NMcIxHowNDXLldRqANb/9Zjr7dn3LDWyvfjFvO5QxGbJKy
+CqNMVEIYFRIYvdr8unRu/8G2oGTYqV9Vrp9canaW2HNnh/tNf1zuacpzEPuKqf2e
+vTY4SUmH9A4U8OmHuD+nT3pajnnUk+S7aFKErGzp85hwVXIy+TSrK0m1zSBi5Dp6
+Z2Orltxtrpfs/J92VoguZs9btsmksNcFuuEnL5O7Jiqik7Ab846+HUCjuTaPPoIa
+Gl6I6lD4WeKDRikL40Rc4ZW2aZCaFG+XroHPaO+Zmr615+F/+PoTRxZMzG0IQOeL
+eG9QgkRQP2YGiqtDhFZKDyAthg710tvSeopLzaXoTvFeJiUBWSOgftL2fiFX1ye8
+FVdMpEbB4IMeDExNH08GGeL5qPQ6gqGyeUN51q1veieQA6TqJIc/2b3Z6fJfUEkc
+7uzXLg==
+-----END CERTIFICATE-----
+
+# Issuer: CN=IdenTrust Commercial Root CA 1 O=IdenTrust
+# Subject: CN=IdenTrust Commercial Root CA 1 O=IdenTrust
+# Label: "IdenTrust Commercial Root CA 1"
+# Serial: 13298821034946342390520003877796839426
+# MD5 Fingerprint: b3:3e:77:73:75:ee:a0:d3:e3:7e:49:63:49:59:bb:c7
+# SHA1 Fingerprint: df:71:7e:aa:4a:d9:4e:c9:55:84:99:60:2d:48:de:5f:bc:f0:3a:25
+# SHA256 Fingerprint: 5d:56:49:9b:e4:d2:e0:8b:cf:ca:d0:8a:3e:38:72:3d:50:50:3b:de:70:69:48:e4:2f:55:60:30:19:e5:28:ae
+-----BEGIN CERTIFICATE-----
+MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBK
+MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVu
+VHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQw
+MTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScw
+JQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwggIiMA0GCSqG
+SIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ldhNlT
+3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU
++ehcCuz/mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gp
+S0l4PJNgiCL8mdo2yMKi1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1
+bVoE/c40yiTcdCMbXTMTEl3EASX2MN0CXZ/g1Ue9tOsbobtJSdifWwLziuQkkORi
+T0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl3ZBWzvurpWCdxJ35UrCL
+vYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzyNeVJSQjK
+Vsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZK
+dHzVWYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHT
+c+XvvqDtMwt0viAgxGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hv
+l7yTmvmcEpB4eoCHFddydJxVdHixuuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5N
+iGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
+/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZIhvcNAQELBQAD
+ggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH
+6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwt
+LRvM7Kqas6pgghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93
+nAbowacYXVKV7cndJZ5t+qntozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3
++wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmVYjzlVYA211QC//G5Xc7UI2/YRYRK
+W2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUXfeu+h1sXIFRRk0pT
+AwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/rokTLq
+l1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG
+4iZZRHUe2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZ
+mUlO+KWA2yUPHGNiiskzZ2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A
+7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7RcGzM7vRX+Bi6hG6H
+-----END CERTIFICATE-----
+
+# Issuer: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust
+# Subject: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust
+# Label: "IdenTrust Public Sector Root CA 1"
+# Serial: 13298821034946342390521976156843933698
+# MD5 Fingerprint: 37:06:a5:b0:fc:89:9d:ba:f4:6b:8c:1a:64:cd:d5:ba
+# SHA1 Fingerprint: ba:29:41:60:77:98:3f:f4:f3:ef:f2:31:05:3b:2e:ea:6d:4d:45:fd
+# SHA256 Fingerprint: 30:d0:89:5a:9a:44:8a:26:20:91:63:55:22:d1:f5:20:10:b5:86:7a:ca:e1:2c:78:ef:95:8f:d4:f4:38:9f:2f
+-----BEGIN CERTIFICATE-----
+MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBN
+MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVu
+VHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcN
+MzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0
+MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwggIi
+MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTyP4o7
+ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGy
+RBb06tD6Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlS
+bdsHyo+1W/CD80/HLaXIrcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF
+/YTLNiCBWS2ab21ISGHKTN9T0a9SvESfqy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R
+3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoSmJxZZoY+rfGwyj4GD3vw
+EUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFnol57plzy
+9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9V
+GxyhLrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ
+2fjXctscvG29ZV/viDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsV
+WaFHVCkugyhfHMKiq3IXAAaOReyL4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gD
+W/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/
+BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMwDQYJKoZIhvcN
+AQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj
+t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHV
+DRDtfULAj+7AmgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9
+TaDKQGXSc3z1i9kKlT/YPyNtGtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8G
+lwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFtm6/n6J91eEyrRjuazr8FGF1NFTwW
+mhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMxNRF4eKLg6TCMf4Df
+WN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4Mhn5
++bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJ
+tshquDDIajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhA
+GaQdp/lLQzfcaFpPz+vCZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv
+8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ3Wl9af0AVqW3rLatt8o+Ae+c
+-----END CERTIFICATE-----
+
+# Issuer: CN=Entrust Root Certification Authority - G2 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2009 Entrust, Inc. - for authorized use only
+# Subject: CN=Entrust Root Certification Authority - G2 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2009 Entrust, Inc. - for authorized use only
+# Label: "Entrust Root Certification Authority - G2"
+# Serial: 1246989352
+# MD5 Fingerprint: 4b:e2:c9:91:96:65:0c:f4:0e:5a:93:92:a0:0a:fe:b2
+# SHA1 Fingerprint: 8c:f4:27:fd:79:0c:3a:d1:66:06:8d:e8:1e:57:ef:bb:93:22:72:d4
+# SHA256 Fingerprint: 43:df:57:74:b0:3e:7f:ef:5f:e4:0d:93:1a:7b:ed:f1:bb:2e:6b:42:73:8c:4e:6d:38:41:10:3d:3a:a7:f3:39
+-----BEGIN CERTIFICATE-----
+MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMC
+VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50
+cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3Qs
+IEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVz
+dCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwHhcNMDkwNzA3MTcy
+NTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUVu
+dHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwt
+dGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0
+aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmlj
+YXRpb24gQXV0aG9yaXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
+AoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP/vaCeb9zYQYKpSfYs1/T
+RU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXzHHfV1IWN
+cCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hW
+wcKUs/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1
+U1+cPvQXLOZprE4yTGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0
+jaWvYkxN4FisZDQSA/i2jZRjJKRxAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAP
+BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ60B7vfec7aVHUbI2fkBJmqzAN
+BgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5ZiXMRrEPR9RP/
+jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ
+Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v
+1fN2D807iDginWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4R
+nAuknZoh8/CbCzB428Hch0P+vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmH
+VHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xOe4pIb4tF9g==
+-----END CERTIFICATE-----
+
+# Issuer: CN=Entrust Root Certification Authority - EC1 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2012 Entrust, Inc. - for authorized use only
+# Subject: CN=Entrust Root Certification Authority - EC1 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2012 Entrust, Inc. - for authorized use only
+# Label: "Entrust Root Certification Authority - EC1"
+# Serial: 51543124481930649114116133369
+# MD5 Fingerprint: b6:7e:1d:f0:58:c5:49:6c:24:3b:3d:ed:98:18:ed:bc
+# SHA1 Fingerprint: 20:d8:06:40:df:9b:25:f5:12:25:3a:11:ea:f7:59:8a:eb:14:b5:47
+# SHA256 Fingerprint: 02:ed:0e:b2:8c:14:da:45:16:5c:56:67:91:70:0d:64:51:d7:fb:56:f0:b2:ab:1d:3b:8e:b0:70:e5:6e:df:f5
+-----BEGIN CERTIFICATE-----
+MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkG
+A1UEBhMCVVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3
+d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVu
+dHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEzMDEGA1UEAxMq
+RW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRUMxMB4XDTEy
+MTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYwFAYD
+VQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0
+L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0g
+Zm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBD
+ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEVDMTB2MBAGByqGSM49AgEGBSuBBAAi
+A2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHyAsWfoPZb1YsGGYZPUxBt
+ByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef9eNi1KlH
+Bz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O
+BBYEFLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVC
+R98crlOZF7ZvHH3hvxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nX
+hTcGtXsI/esni0qU+eH6p44mCOh8kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G
+-----END CERTIFICATE-----
+
+# Issuer: CN=CFCA EV ROOT O=China Financial Certification Authority
+# Subject: CN=CFCA EV ROOT O=China Financial Certification Authority
+# Label: "CFCA EV ROOT"
+# Serial: 407555286
+# MD5 Fingerprint: 74:e1:b6:ed:26:7a:7a:44:30:33:94:ab:7b:27:81:30
+# SHA1 Fingerprint: e2:b8:29:4b:55:84:ab:6b:58:c2:90:46:6c:ac:3f:b8:39:8f:84:83
+# SHA256 Fingerprint: 5c:c3:d7:8e:4e:1d:5e:45:54:7a:04:e6:87:3e:64:f9:0c:f9:53:6d:1c:cc:2e:f8:00:f3:55:c4:c5:fd:70:fd
+-----BEGIN CERTIFICATE-----
+MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJD
+TjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y
+aXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkx
+MjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5j
+aWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJP
+T1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnVBU03
+sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpL
+TIpTUnrD7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5
+/ZOkVIBMUtRSqy5J35DNuF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp
+7hZZLDRJGqgG16iI0gNyejLi6mhNbiyWZXvKWfry4t3uMCz7zEasxGPrb382KzRz
+EpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7xzbh72fROdOXW3NiGUgt
+hxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9fpy25IGvP
+a931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqot
+aK8KgWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNg
+TnYGmE69g60dWIolhdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfV
+PKPtl8MeNPo4+QgO48BdK4PRVmrJtqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hv
+cWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAfBgNVHSMEGDAWgBTj/i39KNAL
+tbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAd
+BgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB
+ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObT
+ej/tUxPQ4i9qecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdL
+jOztUmCypAbqTuv0axn96/Ua4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBS
+ESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sGE5uPhnEFtC+NiWYzKXZUmhH4J/qy
+P5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfXBDrDMlI1Dlb4pd19
+xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjnaH9d
+Ci77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN
+5mydLIhyPDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe
+/v5WOaHIz16eGWRGENoXkbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+Z
+AAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3CekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ
+5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su
+-----END CERTIFICATE-----
+
+# Issuer: CN=T\xdcRKTRUST Elektronik Sertifika Hizmet Sa\u011flay\u0131c\u0131s\u0131 H5 O=T\xdcRKTRUST Bilgi \u0130leti\u015fim ve Bili\u015fim G\xfcvenli\u011fi Hizmetleri A.\u015e.
+# Subject: CN=T\xdcRKTRUST Elektronik Sertifika Hizmet Sa\u011flay\u0131c\u0131s\u0131 H5 O=T\xdcRKTRUST Bilgi \u0130leti\u015fim ve Bili\u015fim G\xfcvenli\u011fi Hizmetleri A.\u015e.
+# Label: "T\xdcRKTRUST Elektronik Sertifika Hizmet Sa\u011flay\u0131c\u0131s\u0131 H5"
+# Serial: 156233699172481
+# MD5 Fingerprint: da:70:8e:f0:22:df:93:26:f6:5f:9f:d3:15:06:52:4e
+# SHA1 Fingerprint: c4:18:f6:4d:46:d1:df:00:3d:27:30:13:72:43:a9:12:11:c6:75:fb
+# SHA256 Fingerprint: 49:35:1b:90:34:44:c1:85:cc:dc:5c:69:3d:24:d8:55:5c:b2:08:d6:a8:14:13:07:69:9f:4a:f0:63:19:9d:78
+-----BEGIN CERTIFICATE-----
+MIIEJzCCAw+gAwIBAgIHAI4X/iQggTANBgkqhkiG9w0BAQsFADCBsTELMAkGA1UE
+BhMCVFIxDzANBgNVBAcMBkFua2FyYTFNMEsGA1UECgxEVMOcUktUUlVTVCBCaWxn
+aSDEsGxldGnFn2ltIHZlIEJpbGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkg
+QS7Fni4xQjBABgNVBAMMOVTDnFJLVFJVU1QgRWxla3Ryb25payBTZXJ0aWZpa2Eg
+SGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSBINTAeFw0xMzA0MzAwODA3MDFaFw0yMzA0
+MjgwODA3MDFaMIGxMQswCQYDVQQGEwJUUjEPMA0GA1UEBwwGQW5rYXJhMU0wSwYD
+VQQKDERUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8
+dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjFCMEAGA1UEAww5VMOcUktUUlVTVCBF
+bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIEg1MIIB
+IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApCUZ4WWe60ghUEoI5RHwWrom
+/4NZzkQqL/7hzmAD/I0Dpe3/a6i6zDQGn1k19uwsu537jVJp45wnEFPzpALFp/kR
+Gml1bsMdi9GYjZOHp3GXDSHHmflS0yxjXVW86B8BSLlg/kJK9siArs1mep5Fimh3
+4khon6La8eHBEJ/rPCmBp+EyCNSgBbGM+42WAA4+Jd9ThiI7/PS98wl+d+yG6w8z
+5UNP9FR1bSmZLmZaQ9/LXMrI5Tjxfjs1nQ/0xVqhzPMggCTTV+wVunUlm+hkS7M0
+hO8EuPbJbKoCPrZV4jI3X/xml1/N1p7HIL9Nxqw/dV8c7TKcfGkAaZHjIxhT6QID
+AQABo0IwQDAdBgNVHQ4EFgQUVpkHHtOsDGlktAxQR95DLL4gwPswDgYDVR0PAQH/
+BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAJ5FdnsX
+SDLyOIspve6WSk6BGLFRRyDN0GSxDsnZAdkJzsiZ3GglE9Rc8qPoBP5yCccLqh0l
+VX6Wmle3usURehnmp349hQ71+S4pL+f5bFgWV1Al9j4uPqrtd3GqqpmWRgqujuwq
+URawXs3qZwQcWDD1YIq9pr1N5Za0/EKJAWv2cMhQOQwt1WbZyNKzMrcbGW3LM/nf
+peYVhDfwwvJllpKQd/Ct9JDpEXjXk4nAPQu6KfTomZ1yju2dL+6SfaHx/126M2CF
+Yv4HAqGEVka+lgqaE9chTLd8B59OTj+RdPsnnRHM3eaxynFNExc5JsUpISuTKWqW
++qtB4Uu2NQvAmxU=
+-----END CERTIFICATE-----
+
+# Issuer: CN=Certinomis - Root CA O=Certinomis OU=0002 433998903
+# Subject: CN=Certinomis - Root CA O=Certinomis OU=0002 433998903
+# Label: "Certinomis - Root CA"
+# Serial: 1
+# MD5 Fingerprint: 14:0a:fd:8d:a8:28:b5:38:69:db:56:7e:61:22:03:3f
+# SHA1 Fingerprint: 9d:70:bb:01:a5:a4:a0:18:11:2e:f7:1c:01:b9:32:c5:34:e7:88:a8
+# SHA256 Fingerprint: 2a:99:f5:bc:11:74:b7:3c:bb:1d:62:08:84:e0:1c:34:e5:1c:cb:39:78:da:12:5f:0e:33:26:88:83:bf:41:58
+-----BEGIN CERTIFICATE-----
+MIIFkjCCA3qgAwIBAgIBATANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJGUjET
+MBEGA1UEChMKQ2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxHTAb
+BgNVBAMTFENlcnRpbm9taXMgLSBSb290IENBMB4XDTEzMTAyMTA5MTcxOFoXDTMz
+MTAyMTA5MTcxOFowWjELMAkGA1UEBhMCRlIxEzARBgNVBAoTCkNlcnRpbm9taXMx
+FzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMR0wGwYDVQQDExRDZXJ0aW5vbWlzIC0g
+Um9vdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANTMCQosP5L2
+fxSeC5yaah1AMGT9qt8OHgZbn1CF6s2Nq0Nn3rD6foCWnoR4kkjW4znuzuRZWJfl
+LieY6pOod5tK8O90gC3rMB+12ceAnGInkYjwSond3IjmFPnVAy//ldu9n+ws+hQV
+WZUKxkd8aRi5pwP5ynapz8dvtF4F/u7BUrJ1Mofs7SlmO/NKFoL21prbcpjp3vDF
+TKWrteoB4owuZH9kb/2jJZOLyKIOSY008B/sWEUuNKqEUL3nskoTuLAPrjhdsKkb
+5nPJWqHZZkCqqU2mNAKthH6yI8H7KsZn9DS2sJVqM09xRLWtwHkziOC/7aOgFLSc
+CbAK42C++PhmiM1b8XcF4LVzbsF9Ri6OSyemzTUK/eVNfaoqoynHWmgE6OXWk6Ri
+wsXm9E/G+Z8ajYJJGYrKWUM66A0ywfRMEwNvbqY/kXPLynNvEiCL7sCCeN5LLsJJ
+wx3tFvYk9CcbXFcx3FXuqB5vbKziRcxXV4p1VxngtViZSTYxPDMBbRZKzbgqg4SG
+m/lg0h9tkQPTYKbVPZrdd5A9NaSfD171UkRpucC63M9933zZxKyGIjK8e2uR73r4
+F2iw4lNVYC2vPsKD2NkJK/DAZNuHi5HMkesE/Xa0lZrmFAYb1TQdvtj/dBxThZng
+WVJKYe2InmtJiUZ+IFrZ50rlau7SZRFDAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIB
+BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTvkUz1pcMw6C8I6tNxIqSSaHh0
+2TAfBgNVHSMEGDAWgBTvkUz1pcMw6C8I6tNxIqSSaHh02TANBgkqhkiG9w0BAQsF
+AAOCAgEAfj1U2iJdGlg+O1QnurrMyOMaauo++RLrVl89UM7g6kgmJs95Vn6RHJk/
+0KGRHCwPT5iVWVO90CLYiF2cN/z7ZMF4jIuaYAnq1fohX9B0ZedQxb8uuQsLrbWw
+F6YSjNRieOpWauwK0kDDPAUwPk2Ut59KA9N9J0u2/kTO+hkzGm2kQtHdzMjI1xZS
+g081lLMSVX3l4kLr5JyTCcBMWwerx20RoFAXlCOotQqSD7J6wWAsOMwaplv/8gzj
+qh8c3LigkyfeY+N/IZ865Z764BNqdeuWXGKRlI5nU7aJ+BIJy29SWwNyhlCVCNSN
+h4YVH5Uk2KRvms6knZtt0rJ2BobGVgjF6wnaNsIbW0G+YSrjcOa4pvi2WsS9Iff/
+ql+hbHY5ZtbqTFXhADObE5hjyW/QASAJN1LnDE8+zbz1X5YnpyACleAu6AdBBR8V
+btaw5BngDwKTACdyxYvRVB9dSsNAl35VpnzBMwQUAR1JIGkLGZOdblgi90AMRgwj
+Y/M50n92Uaf0yKHxDHYiI0ZSKS3io0EHVmmY0gUJvGnHWmHNj4FgFU2A3ZDifcRQ
+8ow7bkrHxuaAKzyBvBGAFhAn1/DNP3nMcyrDflOR1m749fPH0FFNjkulW+YZFzvW
+gQncItzujrnEj1PhZ7szuIgVRs/taTX/dQ1G885x4cVrhkIGuUE=
+-----END CERTIFICATE-----
+
+# Issuer: CN=OISTE WISeKey Global Root GB CA O=WISeKey OU=OISTE Foundation Endorsed
+# Subject: CN=OISTE WISeKey Global Root GB CA O=WISeKey OU=OISTE Foundation Endorsed
+# Label: "OISTE WISeKey Global Root GB CA"
+# Serial: 157768595616588414422159278966750757568
+# MD5 Fingerprint: a4:eb:b9:61:28:2e:b7:2f:98:b0:35:26:90:99:51:1d
+# SHA1 Fingerprint: 0f:f9:40:76:18:d3:d7:6a:4b:98:f0:a8:35:9e:0c:fd:27:ac:cc:ed
+# SHA256 Fingerprint: 6b:9c:08:e8:6e:b0:f7:67:cf:ad:65:cd:98:b6:21:49:e5:49:4a:67:f5:84:5e:7b:d1:ed:01:9f:27:b8:6b:d6
+-----BEGIN CERTIFICATE-----
+MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBt
+MQswCQYDVQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUg
+Rm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9i
+YWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAwMzJaFw0zOTEyMDExNTEwMzFaMG0x
+CzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQLExlPSVNURSBG
+b3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh
+bCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3
+HEokKtaXscriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGx
+WuR51jIjK+FTzJlFXHtPrby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX
+1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNk
+u7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4oQnc/nSMbsrY9gBQHTC5P
+99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvgGUpuuy9r
+M2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw
+AwEB/zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUB
+BAMCAQAwDQYJKoZIhvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrgh
+cViXfa43FK8+5/ea4n32cZiZBKpDdHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5
+gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0VQreUGdNZtGn//3ZwLWoo4rO
+ZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEuiHZeeevJuQHHf
+aPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic
+Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM=
+-----END CERTIFICATE-----
+
+# Issuer: CN=SZAFIR ROOT CA2 O=Krajowa Izba Rozliczeniowa S.A.
+# Subject: CN=SZAFIR ROOT CA2 O=Krajowa Izba Rozliczeniowa S.A.
+# Label: "SZAFIR ROOT CA2"
+# Serial: 357043034767186914217277344587386743377558296292
+# MD5 Fingerprint: 11:64:c1:89:b0:24:b1:8c:b1:07:7e:89:9e:51:9e:99
+# SHA1 Fingerprint: e2:52:fa:95:3f:ed:db:24:60:bd:6e:28:f3:9c:cc:cf:5e:b3:3f:de
+# SHA256 Fingerprint: a1:33:9d:33:28:1a:0b:56:e5:57:d3:d3:2b:1c:e7:f9:36:7e:b0:94:bd:5f:a7:2a:7e:50:04:c8:de:d7:ca:fe
+-----BEGIN CERTIFICATE-----
+MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQEL
+BQAwUTELMAkGA1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6
+ZW5pb3dhIFMuQS4xGDAWBgNVBAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkw
+NzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJBgNVBAYTAlBMMSgwJgYDVQQKDB9L
+cmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYDVQQDDA9TWkFGSVIg
+Uk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5QqEvN
+QLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT
+3PSQ1hNKDJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw
+3gAeqDRHu5rr/gsUvTaE2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr6
+3fE9biCloBK0TXC5ztdyO4mTp4CEHCdJckm1/zuVnsHMyAHs6A6KCpbns6aH5db5
+BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwiieDhZNRnvDF5YTy7ykHN
+XGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD
+AgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsF
+AAOCAQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw
+8PRBEew/R40/cof5O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOG
+nXkZ7/e7DDWQw4rtTw/1zBLZpD67oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCP
+oky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul4+vJhaAlIDf7js4MNIThPIGy
+d05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6+/NNIxuZMzSg
+LvWpCz/UXeHPhJ/iGcJfitYgHuNztw==
+-----END CERTIFICATE-----
+
+# Issuer: CN=Certum Trusted Network CA 2 O=Unizeto Technologies S.A. OU=Certum Certification Authority
+# Subject: CN=Certum Trusted Network CA 2 O=Unizeto Technologies S.A. OU=Certum Certification Authority
+# Label: "Certum Trusted Network CA 2"
+# Serial: 44979900017204383099463764357512596969
+# MD5 Fingerprint: 6d:46:9e:d9:25:6d:08:23:5b:5e:74:7d:1e:27:db:f2
+# SHA1 Fingerprint: d3:dd:48:3e:2b:bf:4c:05:e8:af:10:f5:fa:76:26:cf:d3:dc:30:92
+# SHA256 Fingerprint: b6:76:f2:ed:da:e8:77:5c:d3:6c:b0:f6:3c:d1:d4:60:39:61:f4:9e:62:65:ba:01:3a:2f:03:07:b6:d0:b8:04
+-----BEGIN CERTIFICATE-----
+MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCB
+gDELMAkGA1UEBhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMu
+QS4xJzAlBgNVBAsTHkNlcnR1bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIG
+A1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29yayBDQSAyMCIYDzIwMTExMDA2MDgz
+OTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQTDEiMCAGA1UEChMZ
+VW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRp
+ZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3
+b3JrIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWA
+DGSdhhuWZGc/IjoedQF97/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn
+0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+oCgCXhVqqndwpyeI1B+twTUrWwbNWuKFB
+OJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40bRr5HMNUuctHFY9rnY3lE
+fktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2puTRZCr+E
+Sv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1m
+o130GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02i
+sx7QBlrd9pPPV3WZ9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOW
+OZV7bIBaTxNyxtd9KXpEulKkKtVBRgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgez
+Tv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pyehizKV/Ma5ciSixqClnrDvFAS
+adgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vMBhBgu4M1t15n
+3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
+AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMC
+AQYwDQYJKoZIhvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQ
+F/xlhMcQSZDe28cmk4gmb3DWAl45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTf
+CVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuAL55MYIR4PSFk1vtBHxgP58l1cb29
+XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMoclm2q8KMZiYcdywm
+djWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tMpkT/
+WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jb
+AoJnwTnbw3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksq
+P/ujmv5zMnHCnsZy4YpoJ/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Ko
+b7a6bINDd82Kkhehnlt4Fj1F4jNy3eFmypnTycUm/Q1oBEauttmbjL4ZvrHG8hnj
+XALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLXis7VmFxWlgPF7ncGNf/P
+5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7zAYspsbi
+DrW5viSP
+-----END CERTIFICATE-----
+
+# Issuer: CN=Hellenic Academic and Research Institutions RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority
+# Subject: CN=Hellenic Academic and Research Institutions RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority
+# Label: "Hellenic Academic and Research Institutions RootCA 2015"
+# Serial: 0
+# MD5 Fingerprint: ca:ff:e2:db:03:d9:cb:4b:e9:0f:ad:84:fd:7b:18:ce
+# SHA1 Fingerprint: 01:0c:06:95:a6:98:19:14:ff:bf:5f:c6:b0:b6:95:ea:29:e9:12:a6
+# SHA256 Fingerprint: a0:40:92:9a:02:ce:53:b4:ac:f4:f2:ff:c6:98:1c:e4:49:6f:75:5e:6d:45:fe:0b:2a:69:2b:cd:52:52:3f:36
+-----BEGIN CERTIFICATE-----
+MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1Ix
+DzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5k
+IFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMT
+N0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9v
+dENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAxMTIxWjCBpjELMAkG
+A1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNh
+ZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkx
+QDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1
+dGlvbnMgUm9vdENBIDIwMTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
+AQDC+Kk/G4n8PDwEXT2QNrCROnk8ZlrvbTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA
+4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+ehiGsxr/CL0BgzuNtFajT0
+AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+6PAQZe10
+4S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06C
+ojXdFPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV
+9Cz82XBST3i4vTwri5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrD
+gfgXy5I2XdGj2HUb4Ysn6npIQf1FGQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6
+Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2fu/Z8VFRfS0myGlZYeCsargq
+NhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9muiNX6hME6wGko
+LfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc
+Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNV
+HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVd
+ctA4GGqd83EkVAswDQYJKoZIhvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0I
+XtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+D1hYc2Ryx+hFjtyp8iY/xnmMsVMI
+M4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrMd/K4kPFox/la/vot
+9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+yd+2V
+Z5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/ea
+j8GsGsVn82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnh
+X9izjFk0WaSrT2y7HxjbdavYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQ
+l033DlZdwJVqwjbDG2jJ9SrcR5q+ss7FJej6A7na+RZukYT1HCjI/CbM1xyQVqdf
+bzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVtJ94Cj8rDtSvK6evIIVM4
+pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGaJI7ZjnHK
+e7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0
+vm9qp/UsQu0yrbYhnr68
+-----END CERTIFICATE-----
+
+# Issuer: CN=Hellenic Academic and Research Institutions ECC RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority
+# Subject: CN=Hellenic Academic and Research Institutions ECC RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority
+# Label: "Hellenic Academic and Research Institutions ECC RootCA 2015"
+# Serial: 0
+# MD5 Fingerprint: 81:e5:b4:17:eb:c2:f5:e1:4b:0d:41:7b:49:92:fe:ef
+# SHA1 Fingerprint: 9f:f1:71:8d:92:d5:9a:f3:7d:74:97:b4:bc:6f:84:68:0b:ba:b6:66
+# SHA256 Fingerprint: 44:b5:45:aa:8a:25:e6:5a:73:ca:15:dc:27:fc:36:d2:4c:1c:b9:95:3a:06:65:39:b1:15:82:dc:48:7b:48:33
+-----BEGIN CERTIFICATE-----
+MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzAN
+BgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl
+c2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hl
+bGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgRUNDIFJv
+b3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEwMzcxMlowgaoxCzAJ
+BgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmljIEFj
+YWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5
+MUQwQgYDVQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0
+dXRpb25zIEVDQyBSb290Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKg
+QehLgoRc4vgxEZmGZE4JJS+dQS8KrjVPdJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJa
+jq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoKVlp8aQuqgAkkbH7BRqNC
+MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFLQi
+C4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaep
+lSTAGiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7Sof
+TUwJCA3sS61kFyjndc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR
+-----END CERTIFICATE-----
+
+# Issuer: CN=Certplus Root CA G1 O=Certplus
+# Subject: CN=Certplus Root CA G1 O=Certplus
+# Label: "Certplus Root CA G1"
+# Serial: 1491911565779898356709731176965615564637713
+# MD5 Fingerprint: 7f:09:9c:f7:d9:b9:5c:69:69:56:d5:37:3e:14:0d:42
+# SHA1 Fingerprint: 22:fd:d0:b7:fd:a2:4e:0d:ac:49:2c:a0:ac:a6:7b:6a:1f:e3:f7:66
+# SHA256 Fingerprint: 15:2a:40:2b:fc:df:2c:d5:48:05:4d:22:75:b3:9c:7f:ca:3e:c0:97:80:78:b0:f0:ea:76:e5:61:a6:c7:43:3e
+-----BEGIN CERTIFICATE-----
+MIIFazCCA1OgAwIBAgISESBVg+QtPlRWhS2DN7cs3EYRMA0GCSqGSIb3DQEBDQUA
+MD4xCzAJBgNVBAYTAkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2Vy
+dHBsdXMgUm9vdCBDQSBHMTAeFw0xNDA1MjYwMDAwMDBaFw0zODAxMTUwMDAwMDBa
+MD4xCzAJBgNVBAYTAkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2Vy
+dHBsdXMgUm9vdCBDQSBHMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB
+ANpQh7bauKk+nWT6VjOaVj0W5QOVsjQcmm1iBdTYj+eJZJ+622SLZOZ5KmHNr49a
+iZFluVj8tANfkT8tEBXgfs+8/H9DZ6itXjYj2JizTfNDnjl8KvzsiNWI7nC9hRYt
+6kuJPKNxQv4c/dMcLRC4hlTqQ7jbxofaqK6AJc96Jh2qkbBIb6613p7Y1/oA/caP
+0FG7Yn2ksYyy/yARujVjBYZHYEMzkPZHogNPlk2dT8Hq6pyi/jQu3rfKG3akt62f
+6ajUeD94/vI4CTYd0hYCyOwqaK/1jpTvLRN6HkJKHRUxrgwEV/xhc/MxVoYxgKDE
+EW4wduOU8F8ExKyHcomYxZ3MVwia9Az8fXoFOvpHgDm2z4QTd28n6v+WZxcIbekN
+1iNQMLAVdBM+5S//Ds3EC0pd8NgAM0lm66EYfFkuPSi5YXHLtaW6uOrc4nBvCGrc
+h2c0798wct3zyT8j/zXhviEpIDCB5BmlIOklynMxdCm+4kLV87ImZsdo/Rmz5yCT
+mehd4F6H50boJZwKKSTUzViGUkAksnsPmBIgJPaQbEfIDbsYIC7Z/fyL8inqh3SV
+4EJQeIQEQWGw9CEjjy3LKCHyamz0GqbFFLQ3ZU+V/YDI+HLlJWvEYLF7bY5KinPO
+WftwenMGE9nTdDckQQoRb5fc5+R+ob0V8rqHDz1oihYHAgMBAAGjYzBhMA4GA1Ud
+DwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSowcCbkahDFXxd
+Bie0KlHYlwuBsTAfBgNVHSMEGDAWgBSowcCbkahDFXxdBie0KlHYlwuBsTANBgkq
+hkiG9w0BAQ0FAAOCAgEAnFZvAX7RvUz1isbwJh/k4DgYzDLDKTudQSk0YcbX8ACh
+66Ryj5QXvBMsdbRX7gp8CXrc1cqh0DQT+Hern+X+2B50ioUHj3/MeXrKls3N/U/7
+/SMNkPX0XtPGYX2eEeAC7gkE2Qfdpoq3DIMku4NQkv5gdRE+2J2winq14J2by5BS
+S7CTKtQ+FjPlnsZlFT5kOwQ/2wyPX1wdaR+v8+khjPPvl/aatxm2hHSco1S1cE5j
+2FddUyGbQJJD+tZ3VTNPZNX70Cxqjm0lpu+F6ALEUz65noe8zDUa3qHpimOHZR4R
+Kttjd5cUvpoUmRGywO6wT/gUITJDT5+rosuoD6o7BlXGEilXCNQ314cnrUlZp5Gr
+RHpejXDbl85IULFzk/bwg2D5zfHhMf1bfHEhYxQUqq/F3pN+aLHsIqKqkHWetUNy
+6mSjhEv9DKgma3GX7lZjZuhCVPnHHd/Qj1vfyDBviP4NxDMcU6ij/UgQ8uQKTuEV
+V/xuZDDCVRHc6qnNSlSsKWNEz0pAoNZoWRsz+e86i9sgktxChL8Bq4fA1SCC28a5
+g4VCXA9DO2pJNdWY9BW/+mGBDAkgGNLQFwzLSABQ6XaCjGTXOqAHVcweMcDvOrRl
+++O/QmueD6i9a5jc2NvLi6Td11n0bt3+qsOR0C5CB8AMTVPNJLFMWx5R9N/pkvo=
+-----END CERTIFICATE-----
+
+# Issuer: CN=Certplus Root CA G2 O=Certplus
+# Subject: CN=Certplus Root CA G2 O=Certplus
+# Label: "Certplus Root CA G2"
+# Serial: 1492087096131536844209563509228951875861589
+# MD5 Fingerprint: a7:ee:c4:78:2d:1b:ee:2d:b9:29:ce:d6:a7:96:32:31
+# SHA1 Fingerprint: 4f:65:8e:1f:e9:06:d8:28:02:e9:54:47:41:c9:54:25:5d:69:cc:1a
+# SHA256 Fingerprint: 6c:c0:50:41:e6:44:5e:74:69:6c:4c:fb:c9:f8:0f:54:3b:7e:ab:bb:44:b4:ce:6f:78:7c:6a:99:71:c4:2f:17
+-----BEGIN CERTIFICATE-----
+MIICHDCCAaKgAwIBAgISESDZkc6uo+jF5//pAq/Pc7xVMAoGCCqGSM49BAMDMD4x
+CzAJBgNVBAYTAkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBs
+dXMgUm9vdCBDQSBHMjAeFw0xNDA1MjYwMDAwMDBaFw0zODAxMTUwMDAwMDBaMD4x
+CzAJBgNVBAYTAkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBs
+dXMgUm9vdCBDQSBHMjB2MBAGByqGSM49AgEGBSuBBAAiA2IABM0PW1aC3/BFGtat
+93nwHcmsltaeTpwftEIRyoa/bfuFo8XlGVzX7qY/aWfYeOKmycTbLXku54uNAm8x
+Ik0G42ByRZ0OQneezs/lf4WbGOT8zC5y0xaTTsqZY1yhBSpsBqNjMGEwDgYDVR0P
+AQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNqDYwJ5jtpMxjwj
+FNiPwyCrKGBZMB8GA1UdIwQYMBaAFNqDYwJ5jtpMxjwjFNiPwyCrKGBZMAoGCCqG
+SM49BAMDA2gAMGUCMHD+sAvZ94OX7PNVHdTcswYO/jOYnYs5kGuUIe22113WTNch
+p+e/IQ8rzfcq3IUHnQIxAIYUFuXcsGXCwI4Un78kFmjlvPl5adytRSv3tjFzzAal
+U5ORGpOucGpnutee5WEaXw==
+-----END CERTIFICATE-----
+
+# Issuer: CN=OpenTrust Root CA G1 O=OpenTrust
+# Subject: CN=OpenTrust Root CA G1 O=OpenTrust
+# Label: "OpenTrust Root CA G1"
+# Serial: 1492036577811947013770400127034825178844775
+# MD5 Fingerprint: 76:00:cc:81:29:cd:55:5e:88:6a:7a:2e:f7:4d:39:da
+# SHA1 Fingerprint: 79:91:e8:34:f7:e2:ee:dd:08:95:01:52:e9:55:2d:14:e9:58:d5:7e
+# SHA256 Fingerprint: 56:c7:71:28:d9:8c:18:d9:1b:4c:fd:ff:bc:25:ee:91:03:d4:75:8e:a2:ab:ad:82:6a:90:f3:45:7d:46:0e:b4
+-----BEGIN CERTIFICATE-----
+MIIFbzCCA1egAwIBAgISESCzkFU5fX82bWTCp59rY45nMA0GCSqGSIb3DQEBCwUA
+MEAxCzAJBgNVBAYTAkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9w
+ZW5UcnVzdCBSb290IENBIEcxMB4XDTE0MDUyNjA4NDU1MFoXDTM4MDExNTAwMDAw
+MFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCU9wZW5UcnVzdDEdMBsGA1UEAwwU
+T3BlblRydXN0IFJvb3QgQ0EgRzEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK
+AoICAQD4eUbalsUwXopxAy1wpLuwxQjczeY1wICkES3d5oeuXT2R0odsN7faYp6b
+wiTXj/HbpqbfRm9RpnHLPhsxZ2L3EVs0J9V5ToybWL0iEA1cJwzdMOWo010hOHQX
+/uMftk87ay3bfWAfjH1MBcLrARYVmBSO0ZB3Ij/swjm4eTrwSSTilZHcYTSSjFR0
+77F9jAHiOH3BX2pfJLKOYheteSCtqx234LSWSE9mQxAGFiQD4eCcjsZGT44ameGP
+uY4zbGneWK2gDqdkVBFpRGZPTBKnjix9xNRbxQA0MMHZmf4yzgeEtE7NCv82TWLx
+p2NX5Ntqp66/K7nJ5rInieV+mhxNaMbBGN4zK1FGSxyO9z0M+Yo0FMT7MzUj8czx
+Kselu7Cizv5Ta01BG2Yospb6p64KTrk5M0ScdMGTHPjgniQlQ/GbI4Kq3ywgsNw2
+TgOzfALU5nsaqocTvz6hdLubDuHAk5/XpGbKuxs74zD0M1mKB3IDVedzagMxbm+W
+G+Oin6+Sx+31QrclTDsTBM8clq8cIqPQqwWyTBIjUtz9GVsnnB47ev1CI9sjgBPw
+vFEVVJSmdz7QdFG9URQIOTfLHzSpMJ1ShC5VkLG631UAC9hWLbFJSXKAqWLXwPYY
+EQRVzXR7z2FwefR7LFxckvzluFqrTJOVoSfupb7PcSNCupt2LQIDAQABo2MwYTAO
+BgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUl0YhVyE1
+2jZVx/PxN3DlCPaTKbYwHwYDVR0jBBgwFoAUl0YhVyE12jZVx/PxN3DlCPaTKbYw
+DQYJKoZIhvcNAQELBQADggIBAB3dAmB84DWn5ph76kTOZ0BP8pNuZtQ5iSas000E
+PLuHIT839HEl2ku6q5aCgZG27dmxpGWX4m9kWaSW7mDKHyP7Rbr/jyTwyqkxf3kf
+gLMtMrpkZ2CvuVnN35pJ06iCsfmYlIrM4LvgBBuZYLFGZdwIorJGnkSI6pN+VxbS
+FXJfLkur1J1juONI5f6ELlgKn0Md/rcYkoZDSw6cMoYsYPXpSOqV7XAp8dUv/TW0
+V8/bhUiZucJvbI/NeJWsZCj9VrDDb8O+WVLhX4SPgPL0DTatdrOjteFkdjpY3H1P
+XlZs5VVZV6Xf8YpmMIzUUmI4d7S+KNfKNsSbBfD4Fdvb8e80nR14SohWZ25g/4/I
+i+GOvUKpMwpZQhISKvqxnUOOBZuZ2mKtVzazHbYNeS2WuOvyDEsMpZTGMKcmGS3t
+TAZQMPH9WD25SxdfGbRqhFS0OE85og2WaMMolP3tLR9Ka0OWLpABEPs4poEL0L91
+09S5zvE/bw4cHjdx5RiHdRk/ULlepEU0rbDK5uUTdg8xFKmOLZTW1YVNcxVPS/Ky
+Pu1svf0OnWZzsD2097+o4BGkxK51CUpjAEggpsadCwmKtODmzj7HPiY46SvepghJ
+AwSQiumPv+i2tCqjI40cHLI5kqiPAlxAOXXUc0ECd97N4EOH1uS6SsNsEn/+KuYj
+1oxx
+-----END CERTIFICATE-----
+
+# Issuer: CN=OpenTrust Root CA G2 O=OpenTrust
+# Subject: CN=OpenTrust Root CA G2 O=OpenTrust
+# Label: "OpenTrust Root CA G2"
+# Serial: 1492012448042702096986875987676935573415441
+# MD5 Fingerprint: 57:24:b6:59:24:6b:ae:c8:fe:1c:0c:20:f2:c0:4e:eb
+# SHA1 Fingerprint: 79:5f:88:60:c5:ab:7c:3d:92:e6:cb:f4:8d:e1:45:cd:11:ef:60:0b
+# SHA256 Fingerprint: 27:99:58:29:fe:6a:75:15:c1:bf:e8:48:f9:c4:76:1d:b1:6c:22:59:29:25:7b:f4:0d:08:94:f2:9e:a8:ba:f2
+-----BEGIN CERTIFICATE-----
+MIIFbzCCA1egAwIBAgISESChaRu/vbm9UpaPI+hIvyYRMA0GCSqGSIb3DQEBDQUA
+MEAxCzAJBgNVBAYTAkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9w
+ZW5UcnVzdCBSb290IENBIEcyMB4XDTE0MDUyNjAwMDAwMFoXDTM4MDExNTAwMDAw
+MFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCU9wZW5UcnVzdDEdMBsGA1UEAwwU
+T3BlblRydXN0IFJvb3QgQ0EgRzIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK
+AoICAQDMtlelM5QQgTJT32F+D3Y5z1zCU3UdSXqWON2ic2rxb95eolq5cSG+Ntmh
+/LzubKh8NBpxGuga2F8ORAbtp+Dz0mEL4DKiltE48MLaARf85KxP6O6JHnSrT78e
+CbY2albz4e6WiWYkBuTNQjpK3eCasMSCRbP+yatcfD7J6xcvDH1urqWPyKwlCm/6
+1UWY0jUJ9gNDlP7ZvyCVeYCYitmJNbtRG6Q3ffyZO6v/v6wNj0OxmXsWEH4db0fE
+FY8ElggGQgT4hNYdvJGmQr5J1WqIP7wtUdGejeBSzFfdNTVY27SPJIjki9/ca1TS
+gSuyzpJLHB9G+h3Ykst2Z7UJmQnlrBcUVXDGPKBWCgOz3GIZ38i1MH/1PCZ1Eb3X
+G7OHngevZXHloM8apwkQHZOJZlvoPGIytbU6bumFAYueQ4xncyhZW+vj3CzMpSZy
+YhK05pyDRPZRpOLAeiRXyg6lPzq1O4vldu5w5pLeFlwoW5cZJ5L+epJUzpM5ChaH
+vGOz9bGTXOBut9Dq+WIyiET7vycotjCVXRIouZW+j1MY5aIYFuJWpLIsEPUdN6b4
+t/bQWVyJ98LVtZR00dX+G7bw5tYee9I8y6jj9RjzIR9u701oBnstXW5DiabA+aC/
+gh7PU3+06yzbXfZqfUAkBXKJOAGTy3HCOV0GEfZvePg3DTmEJwIDAQABo2MwYTAO
+BgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUajn6QiL3
+5okATV59M4PLuG53hq8wHwYDVR0jBBgwFoAUajn6QiL35okATV59M4PLuG53hq8w
+DQYJKoZIhvcNAQENBQADggIBAJjLq0A85TMCl38th6aP1F5Kr7ge57tx+4BkJamz
+Gj5oXScmp7oq4fBXgwpkTx4idBvpkF/wrM//T2h6OKQQbA2xx6R3gBi2oihEdqc0
+nXGEL8pZ0keImUEiyTCYYW49qKgFbdEfwFFEVn8nNQLdXpgKQuswv42hm1GqO+qT
+RmTFAHneIWv2V6CG1wZy7HBGS4tz3aAhdT7cHcCP009zHIXZ/n9iyJVvttN7jLpT
+wm+bREx50B1ws9efAvSyB7DH5fitIw6mVskpEndI2S9G/Tvw/HRwkqWOOAgfZDC2
+t0v7NqwQjqBSM2OdAzVWxWm9xiNaJ5T2pBL4LTM8oValX9YZ6e18CL13zSdkzJTa
+TkZQh+D5wVOAHrut+0dSixv9ovneDiK3PTNZbNTe9ZUGMg1RGUFcPk8G97krgCf2
+o6p6fAbhQ8MTOWIaNr3gKC6UAuQpLmBVrkA9sHSSXvAgZJY/X0VdiLWK2gKgW0VU
+3jg9CcCoSmVGFvyqv1ROTVu+OEO3KMqLM6oaJbolXCkvW0pujOotnCr2BXbgd5eA
+iN1nE28daCSLT7d0geX0YJ96Vdc+N9oWaz53rK4YcJUIeSkDiv7BO7M/Gg+kO14f
+WKGVyasvc0rQLW6aWQ9VGHgtPFGml4vmu7JwqkwR3v98KzfUetF3NI/n+UL3PIEM
+S1IK
+-----END CERTIFICATE-----
+
+# Issuer: CN=OpenTrust Root CA G3 O=OpenTrust
+# Subject: CN=OpenTrust Root CA G3 O=OpenTrust
+# Label: "OpenTrust Root CA G3"
+# Serial: 1492104908271485653071219941864171170455615
+# MD5 Fingerprint: 21:37:b4:17:16:92:7b:67:46:70:a9:96:d7:a8:13:24
+# SHA1 Fingerprint: 6e:26:64:f3:56:bf:34:55:bf:d1:93:3f:7c:01:de:d8:13:da:8a:a6
+# SHA256 Fingerprint: b7:c3:62:31:70:6e:81:07:8c:36:7c:b8:96:19:8f:1e:32:08:dd:92:69:49:dd:8f:57:09:a4:10:f7:5b:62:92
+-----BEGIN CERTIFICATE-----
+MIICITCCAaagAwIBAgISESDm+Ez8JLC+BUCs2oMbNGA/MAoGCCqGSM49BAMDMEAx
+CzAJBgNVBAYTAkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9wZW5U
+cnVzdCBSb290IENBIEczMB4XDTE0MDUyNjAwMDAwMFoXDTM4MDExNTAwMDAwMFow
+QDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCU9wZW5UcnVzdDEdMBsGA1UEAwwUT3Bl
+blRydXN0IFJvb3QgQ0EgRzMwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARK7liuTcpm
+3gY6oxH84Bjwbhy6LTAMidnW7ptzg6kjFYwvWYpa3RTqnVkrQ7cG7DK2uu5Bta1d
+oYXM6h0UZqNnfkbilPPntlahFVmhTzeXuSIevRHr9LIfXsMUmuXZl5mjYzBhMA4G
+A1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRHd8MUi2I5
+DMlv4VBN0BBY3JWIbTAfBgNVHSMEGDAWgBRHd8MUi2I5DMlv4VBN0BBY3JWIbTAK
+BggqhkjOPQQDAwNpADBmAjEAj6jcnboMBBf6Fek9LykBl7+BFjNAk2z8+e2AcG+q
+j9uEwov1NcoG3GRvaBbhj5G5AjEA2Euly8LQCGzpGPta3U1fJAuwACEl74+nBCZx
+4nxp5V2a+EEfOzmTk51V6s2N8fvB
+-----END CERTIFICATE-----
+
+# Issuer: CN=ISRG Root X1 O=Internet Security Research Group
+# Subject: CN=ISRG Root X1 O=Internet Security Research Group
+# Label: "ISRG Root X1"
+# Serial: 172886928669790476064670243504169061120
+# MD5 Fingerprint: 0c:d2:f9:e0:da:17:73:e9:ed:86:4d:a5:e3:70:e7:4e
+# SHA1 Fingerprint: ca:bd:2a:79:a1:07:6a:31:f2:1d:25:36:35:cb:03:9d:43:29:a5:e8
+# SHA256 Fingerprint: 96:bc:ec:06:26:49:76:f3:74:60:77:9a:cf:28:c5:a7:cf:e8:a3:c0:aa:e1:1a:8f:fc:ee:05:c0:bd:df:08:c6
+-----BEGIN CERTIFICATE-----
+MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw
+TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
+cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4
+WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu
+ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY
+MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc
+h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+
+0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U
+A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW
+T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH
+B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC
+B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv
+KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn
+OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn
+jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw
+qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI
+rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
+HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq
+hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL
+ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ
+3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK
+NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5
+ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur
+TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC
+jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc
+oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq
+4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA
+mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d
+emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=
+-----END CERTIFICATE-----
+
+# Issuer: O=FNMT-RCM OU=AC RAIZ FNMT-RCM
+# Subject: O=FNMT-RCM OU=AC RAIZ FNMT-RCM
+# Label: "AC RAIZ FNMT-RCM"
+# Serial: 485876308206448804701554682760554759
+# MD5 Fingerprint: e2:09:04:b4:d3:bd:d1:a0:14:fd:1a:d2:47:c4:57:1d
+# SHA1 Fingerprint: ec:50:35:07:b2:15:c4:95:62:19:e2:a8:9a:5b:42:99:2c:4c:2c:20
+# SHA256 Fingerprint: eb:c5:57:0c:29:01:8c:4d:67:b1:aa:12:7b:af:12:f7:03:b4:61:1e:bc:17:b7:da:b5:57:38:94:17:9b:93:fa
+-----BEGIN CERTIFICATE-----
+MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsx
+CzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJ
+WiBGTk1ULVJDTTAeFw0wODEwMjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJ
+BgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBG
+Tk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALpxgHpMhm5/
+yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcfqQgf
+BBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAz
+WHFctPVrbtQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxF
+tBDXaEAUwED653cXeuYLj2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z
+374jNUUeAlz+taibmSXaXvMiwzn15Cou08YfxGyqxRxqAQVKL9LFwag0Jl1mpdIC
+IfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mwWsXmo8RZZUc1g16p6DUL
+mbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnTtOmlcYF7
+wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peS
+MKGJ47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2
+ZSysV4999AeU14ECll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMet
+UqIJ5G+GR4of6ygnXYMgrwTJbFaai0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUw
+AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFPd9xf3E6Jobd2Sn9R2gzL+H
+YJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1odHRwOi8vd3d3
+LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD
+nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1
+RXxlDPiyN8+sD8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYM
+LVN0V2Ue1bLdI4E7pWYjJ2cJj+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf
+77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrTQfv6MooqtyuGC2mDOL7Nii4LcK2N
+JpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW+YJF1DngoABd15jm
+fZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7Ixjp
+6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp
+1txyM/1d8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B
+9kiABdcPUXmsEKvU7ANm5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wok
+RqEIr9baRRmW1FMdW4R58MD3R++Lj8UGrp1MYp3/RgT408m2ECVAdf4WqslKYIYv
+uu8wd+RU4riEmViAqhOLUTpPSPaLtrM=
+-----END CERTIFICATE-----
+
+# Issuer: CN=Amazon Root CA 1 O=Amazon
+# Subject: CN=Amazon Root CA 1 O=Amazon
+# Label: "Amazon Root CA 1"
+# Serial: 143266978916655856878034712317230054538369994
+# MD5 Fingerprint: 43:c6:bf:ae:ec:fe:ad:2f:18:c6:88:68:30:fc:c8:e6
+# SHA1 Fingerprint: 8d:a7:f9:65:ec:5e:fc:37:91:0f:1c:6e:59:fd:c1:cc:6a:6e:de:16
+# SHA256 Fingerprint: 8e:cd:e6:88:4f:3d:87:b1:12:5b:a3:1a:c3:fc:b1:3d:70:16:de:7f:57:cc:90:4f:e1:cb:97:c6:ae:98:19:6e
+-----BEGIN CERTIFICATE-----
+MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF
+ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6
+b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL
+MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv
+b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj
+ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM
+9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw
+IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6
+VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L
+93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm
+jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
+AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA
+A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI
+U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs
+N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv
+o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU
+5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy
+rqXRfboQnoZsG4q5WTP468SQvvG5
+-----END CERTIFICATE-----
+
+# Issuer: CN=Amazon Root CA 2 O=Amazon
+# Subject: CN=Amazon Root CA 2 O=Amazon
+# Label: "Amazon Root CA 2"
+# Serial: 143266982885963551818349160658925006970653239
+# MD5 Fingerprint: c8:e5:8d:ce:a8:42:e2:7a:c0:2a:5c:7c:9e:26:bf:66
+# SHA1 Fingerprint: 5a:8c:ef:45:d7:a6:98:59:76:7a:8c:8b:44:96:b5:78:cf:47:4b:1a
+# SHA256 Fingerprint: 1b:a5:b2:aa:8c:65:40:1a:82:96:01:18:f8:0b:ec:4f:62:30:4d:83:ce:c4:71:3a:19:c3:9c:01:1e:a4:6d:b4
+-----BEGIN CERTIFICATE-----
+MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwF
+ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6
+b24gUm9vdCBDQSAyMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTEL
+MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv
+b3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK2Wny2cSkxK
+gXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4kHbZ
+W0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg
+1dKmSYXpN+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K
+8nu+NQWpEjTj82R0Yiw9AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r
+2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvdfLC6HM783k81ds8P+HgfajZRRidhW+me
+z/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAExkv8LV/SasrlX6avvDXbR
+8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSSbtqDT6Zj
+mUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz
+7Mt0Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6
++XUyo05f7O0oYtlNc/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI
+0u1ufm8/0i2BWSlmy5A5lREedCf+3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMB
+Af8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSwDPBMMPQFWAJI/TPlUq9LhONm
+UjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oAA7CXDpO8Wqj2
+LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY
++gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kS
+k5Nrp+gvU5LEYFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl
+7uxMMne0nxrpS10gxdr9HIcWxkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygm
+btmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQgj9sAq+uEjonljYE1x2igGOpm/Hl
+urR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbWaQbLU8uz/mtBzUF+
+fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoVYh63
+n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE
+76KlXIx3KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H
+9jVlpNMKVv/1F2Rs76giJUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT
+4PsJYGw=
+-----END CERTIFICATE-----
+
+# Issuer: CN=Amazon Root CA 3 O=Amazon
+# Subject: CN=Amazon Root CA 3 O=Amazon
+# Label: "Amazon Root CA 3"
+# Serial: 143266986699090766294700635381230934788665930
+# MD5 Fingerprint: a0:d4:ef:0b:f7:b5:d8:49:95:2a:ec:f5:c4:fc:81:87
+# SHA1 Fingerprint: 0d:44:dd:8c:3c:8c:1a:1a:58:75:64:81:e9:0f:2e:2a:ff:b3:d2:6e
+# SHA256 Fingerprint: 18:ce:6c:fe:7b:f1:4e:60:b2:e3:47:b8:df:e8:68:cb:31:d0:2e:bb:3a:da:27:15:69:f5:03:43:b4:6d:b3:a4
+-----BEGIN CERTIFICATE-----
+MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5
+MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g
+Um9vdCBDQSAzMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG
+A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg
+Q0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZBf8ANm+gBG1bG8lKl
+ui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjrZt6j
+QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSr
+ttvXBp43rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkr
+BqWTrBqYaGFy+uGh0PsceGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteM
+YyRIHN8wfdVoOw==
+-----END CERTIFICATE-----
+
+# Issuer: CN=Amazon Root CA 4 O=Amazon
+# Subject: CN=Amazon Root CA 4 O=Amazon
+# Label: "Amazon Root CA 4"
+# Serial: 143266989758080763974105200630763877849284878
+# MD5 Fingerprint: 89:bc:27:d5:eb:17:8d:06:6a:69:d5:fd:89:47:b4:cd
+# SHA1 Fingerprint: f6:10:84:07:d6:f8:bb:67:98:0c:c2:e2:44:c2:eb:ae:1c:ef:63:be
+# SHA256 Fingerprint: e3:5d:28:41:9e:d0:20:25:cf:a6:90:38:cd:62:39:62:45:8d:a5:c6:95:fb:de:a3:c2:2b:0b:fb:25:89:70:92
+-----BEGIN CERTIFICATE-----
+MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5
+MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g
+Um9vdCBDQSA0MB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG
+A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg
+Q0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN/sGKe0uoe0ZLY7Bi
+9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri83Bk
+M6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB
+/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WB
+MAoGCCqGSM49BAMDA2gAMGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlw
+CkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1AE47xDqUEpHJWEadIRNyp4iciuRMStuW
+1KyLa2tJElMzrdfkviT8tQp21KW8EA==
+-----END CERTIFICATE-----
+
+# Issuer: CN=LuxTrust Global Root 2 O=LuxTrust S.A.
+# Subject: CN=LuxTrust Global Root 2 O=LuxTrust S.A.
+# Label: "LuxTrust Global Root 2"
+# Serial: 59914338225734147123941058376788110305822489521
+# MD5 Fingerprint: b2:e1:09:00:61:af:f7:f1:91:6f:c4:ad:8d:5e:3b:7c
+# SHA1 Fingerprint: 1e:0e:56:19:0a:d1:8b:25:98:b2:04:44:ff:66:8a:04:17:99:5f:3f
+# SHA256 Fingerprint: 54:45:5f:71:29:c2:0b:14:47:c4:18:f9:97:16:8f:24:c5:8f:c5:02:3b:f5:da:5b:e2:eb:6e:1d:d8:90:2e:d5
+-----BEGIN CERTIFICATE-----
+MIIFwzCCA6ugAwIBAgIUCn6m30tEntpqJIWe5rgV0xZ/u7EwDQYJKoZIhvcNAQEL
+BQAwRjELMAkGA1UEBhMCTFUxFjAUBgNVBAoMDUx1eFRydXN0IFMuQS4xHzAdBgNV
+BAMMFkx1eFRydXN0IEdsb2JhbCBSb290IDIwHhcNMTUwMzA1MTMyMTU3WhcNMzUw
+MzA1MTMyMTU3WjBGMQswCQYDVQQGEwJMVTEWMBQGA1UECgwNTHV4VHJ1c3QgUy5B
+LjEfMB0GA1UEAwwWTHV4VHJ1c3QgR2xvYmFsIFJvb3QgMjCCAiIwDQYJKoZIhvcN
+AQEBBQADggIPADCCAgoCggIBANeFl78RmOnwYoNMPIf5U2o3C/IPPIfOb9wmKb3F
+ibrJgz337spbxm1Jc7TJRqMbNBM/wYlFV/TZsfs2ZUv7COJIcRHIbjuend+JZTem
+hfY7RBi2xjcwYkSSl2l9QjAk5A0MiWtj3sXh306pFGxT4GHO9hcvHTy95iJMHZP1
+EMShduxq3sVs35a0VkBCwGKSMKEtFZSg0iAGCW5qbeXrt77U8PEVfIvmTroTzEsn
+Xpk8F12PgX8zPU/TPxvsXD/wPEx1bvKm1Z3aLQdjAsZy6ZS8TEmVT4hSyNvoaYL4
+zDRbIvCGp4m9SAptZoFtyMhk+wHh9OHe2Z7d21vUKpkmFRseTJIpgp7VkoGSQXAZ
+96Tlk0u8d2cx3Rz9MXANF5kM+Qw5GSoXtTBxVdUPrljhPS80m8+f9niFwpN6cj5m
+j5wWEWCPnolvZ77gR1o7DJpni89Gxq44o/KnvObWhWszJHAiS8sIm7vI+AIpHb4g
+DEa/a4ebsypmQjVGbKq6rfmYe+lQVRQxv7HaLe2ArWgk+2mr2HETMOZns4dA/Yl+
+8kPREd8vZS9kzl8UubG/Mb2HeFpZZYiq/FkySIbWTLkpS5XTdvN3JW1CHDiDTf2j
+X5t/Lax5Gw5CMZdjpPuKadUiDTSQMC6otOBttpSsvItO13D8xTiOZCXhTTmQzsmH
+hFhxAgMBAAGjgagwgaUwDwYDVR0TAQH/BAUwAwEB/zBCBgNVHSAEOzA5MDcGByuB
+KwEBAQowLDAqBggrBgEFBQcCARYeaHR0cHM6Ly9yZXBvc2l0b3J5Lmx1eHRydXN0
+Lmx1MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBT/GCh2+UgFLKGu8SsbK7JT
++Et8szAdBgNVHQ4EFgQU/xgodvlIBSyhrvErGyuyU/hLfLMwDQYJKoZIhvcNAQEL
+BQADggIBAGoZFO1uecEsh9QNcH7X9njJCwROxLHOk3D+sFTAMs2ZMGQXvw/l4jP9
+BzZAcg4atmpZ1gDlaCDdLnINH2pkMSCEfUmmWjfrRcmF9dTHF5kH5ptV5AzoqbTO
+jFu1EVzPig4N1qx3gf4ynCSecs5U89BvolbW7MM3LGVYvlcAGvI1+ut7MV3CwRI9
+loGIlonBWVx65n9wNOeD4rHh4bhY79SV5GCc8JaXcozrhAIuZY+kt9J/Z93I055c
+qqmkoCUUBpvsT34tC38ddfEz2O3OuHVtPlu5mB0xDVbYQw8wkbIEa91WvpWAVWe+
+2M2D2RjuLg+GLZKecBPs3lHJQ3gCpU3I+V/EkVhGFndadKpAvAefMLmx9xIX3eP/
+JEAdemrRTxgKqpAd60Ae36EeRJIQmvKN4dFLRp7oRUKX6kWZ8+xm1QL68qZKJKre
+zrnK+T+Tb/mjuuqlPpmt/f97mfVl7vBZKGfXkJWkE4SphMHozs51k2MavDzq1WQf
+LSoSOcbDWjLtR5EWDrw4wVDej8oqkDQc7kGUnF4ZLvhFSZl0kbAEb+MEWrGrKqv+
+x9CWttrhSmQGbmBNvUJO/3jaJMobtNeWOWyu8Q6qp31IiyBMz2TWuJdGsE7RKlY6
+oJO9r4Ak4Ap+58rVyuiFVdw2KuGUaJPHZnJED4AhMmwlxyOAgwrr
+-----END CERTIFICATE-----
+
+# Issuer: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK OU=Kamu Sertifikasyon Merkezi - Kamu SM
+# Subject: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK OU=Kamu Sertifikasyon Merkezi - Kamu SM
+# Label: "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1"
+# Serial: 1
+# MD5 Fingerprint: dc:00:81:dc:69:2f:3e:2f:b0:3b:f6:3d:5a:91:8e:49
+# SHA1 Fingerprint: 31:43:64:9b:ec:ce:27:ec:ed:3a:3f:0b:8f:0d:e4:e8:91:dd:ee:ca
+# SHA256 Fingerprint: 46:ed:c3:68:90:46:d5:3a:45:3f:b3:10:4a:b8:0d:ca:ec:65:8b:26:60:ea:16:29:dd:7e:86:79:90:64:87:16
+-----BEGIN CERTIFICATE-----
+MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIx
+GDAWBgNVBAcTD0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxp
+bXNlbCB2ZSBUZWtub2xvamlrIEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0w
+KwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24gTWVya2V6aSAtIEthbXUgU00xNjA0
+BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRpZmlrYXNpIC0gU3Vy
+dW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYDVQQG
+EwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXll
+IEJpbGltc2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklU
+QUsxLTArBgNVBAsTJEthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBT
+TTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11IFNNIFNTTCBLb2sgU2VydGlmaWthc2kg
+LSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr3UwM6q7
+a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y86Ij5iySr
+LqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INr
+N3wcwv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2X
+YacQuFWQfw4tJzh03+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/
+iSIzL+aFCr2lqBs23tPcLG07xxO9WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4f
+AJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQUZT/HiobGPN08VFw1+DrtUgxH
+V8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL
+BQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh
+AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPf
+IPP54+M638yclNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4
+lzwDGrpDxpa5RXI4s6ehlj2Re37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c
+8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0jq5Rm+K37DwhuJi1/FwcJsoz7UMCf
+lo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM=
+-----END CERTIFICATE-----
+
+# Issuer: CN=GDCA TrustAUTH R5 ROOT O=GUANG DONG CERTIFICATE AUTHORITY CO.,LTD.
+# Subject: CN=GDCA TrustAUTH R5 ROOT O=GUANG DONG CERTIFICATE AUTHORITY CO.,LTD.
+# Label: "GDCA TrustAUTH R5 ROOT"
+# Serial: 9009899650740120186
+# MD5 Fingerprint: 63:cc:d9:3d:34:35:5c:6f:53:a3:e2:08:70:48:1f:b4
+# SHA1 Fingerprint: 0f:36:38:5b:81:1a:25:c3:9b:31:4e:83:ca:e9:34:66:70:cc:74:b4
+# SHA256 Fingerprint: bf:ff:8f:d0:44:33:48:7d:6a:8a:a6:0c:1a:29:76:7a:9f:c2:bb:b0:5e:42:0f:71:3a:13:b9:92:89:1d:38:93
+-----BEGIN CERTIFICATE-----
+MIIFiDCCA3CgAwIBAgIIfQmX/vBH6nowDQYJKoZIhvcNAQELBQAwYjELMAkGA1UE
+BhMCQ04xMjAwBgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZ
+IENPLixMVEQuMR8wHQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMB4XDTE0
+MTEyNjA1MTMxNVoXDTQwMTIzMTE1NTk1OVowYjELMAkGA1UEBhMCQ04xMjAwBgNV
+BAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZIENPLixMVEQuMR8w
+HQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMIICIjANBgkqhkiG9w0BAQEF
+AAOCAg8AMIICCgKCAgEA2aMW8Mh0dHeb7zMNOwZ+Vfy1YI92hhJCfVZmPoiC7XJj
+Dp6L3TQsAlFRwxn9WVSEyfFrs0yw6ehGXTjGoqcuEVe6ghWinI9tsJlKCvLriXBj
+TnnEt1u9ol2x8kECK62pOqPseQrsXzrj/e+APK00mxqriCZ7VqKChh/rNYmDf1+u
+KU49tm7srsHwJ5uu4/Ts765/94Y9cnrrpftZTqfrlYwiOXnhLQiPzLyRuEH3FMEj
+qcOtmkVEs7LXLM3GKeJQEK5cy4KOFxg2fZfmiJqwTTQJ9Cy5WmYqsBebnh52nUpm
+MUHfP/vFBu8btn4aRjb3ZGM74zkYI+dndRTVdVeSN72+ahsmUPI2JgaQxXABZG12
+ZuGR224HwGGALrIuL4xwp9E7PLOR5G62xDtw8mySlwnNR30YwPO7ng/Wi64HtloP
+zgsMR6flPri9fcebNaBhlzpBdRfMK5Z3KpIhHtmVdiBnaM8Nvd/WHwlqmuLMc3Gk
+L30SgLdTMEZeS1SZD2fJpcjyIMGC7J0R38IC+xo70e0gmu9lZJIQDSri3nDxGGeC
+jGHeuLzRL5z7D9Ar7Rt2ueQ5Vfj4oR24qoAATILnsn8JuLwwoC8N9VKejveSswoA
+HQBUlwbgsQfZxw9cZX08bVlX5O2ljelAU58VS6Bx9hoh49pwBiFYFIeFd3mqgnkC
+AwEAAaNCMEAwHQYDVR0OBBYEFOLJQJ9NzuiaoXzPDj9lxSmIahlRMA8GA1UdEwEB
+/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQDRSVfg
+p8xoWLoBDysZzY2wYUWsEe1jUGn4H3++Fo/9nesLqjJHdtJnJO29fDMylyrHBYZm
+DRd9FBUb1Ov9H5r2XpdptxolpAqzkT9fNqyL7FeoPueBihhXOYV0GkLH6VsTX4/5
+COmSdI31R9KrO9b7eGZONn356ZLpBN79SWP8bfsUcZNnL0dKt7n/HipzcEYwv1ry
+L3ml4Y0M2fmyYzeMN2WFcGpcWwlyua1jPLHd+PwyvzeG5LuOmCd+uh8W4XAR8gPf
+JWIyJyYYMoSf/wA6E7qaTfRPuBRwIrHKK5DOKcFw9C+df/KQHtZa37dG/OaG+svg
+IHZ6uqbL9XzeYqWxi+7egmaKTjowHz+Ay60nugxe19CxVsp3cbK1daFQqUBDF8Io
+2c9Si1vIY9RCPqAzekYu9wogRlR+ak8x8YF+QnQ4ZXMn7sZ8uI7XpTrXmKGcjBBV
+09tL7ECQ8s1uV9JiDnxXk7Gnbc2dg7sq5+W2O3FYrf3RRbxake5TFW/TRQl1brqQ
+XR4EzzffHqhmsYzmIGrv/EhOdJhCrylvLmrH+33RZjEizIYAfmaDDEL0vTSSwxrq
+T8p+ck0LcIymSLumoRT2+1hEmRSuqguTaaApJUqlyyvdimYHFngVV3Eb7PVHhPOe
+MTd61X8kreS8/f3MboPoDKi3QWwH3b08hpcv0g==
+-----END CERTIFICATE-----
+
+# Issuer: CN=TrustCor RootCert CA-1 O=TrustCor Systems S. de R.L. OU=TrustCor Certificate Authority
+# Subject: CN=TrustCor RootCert CA-1 O=TrustCor Systems S. de R.L. OU=TrustCor Certificate Authority
+# Label: "TrustCor RootCert CA-1"
+# Serial: 15752444095811006489
+# MD5 Fingerprint: 6e:85:f1:dc:1a:00:d3:22:d5:b2:b2:ac:6b:37:05:45
+# SHA1 Fingerprint: ff:bd:cd:e7:82:c8:43:5e:3c:6f:26:86:5c:ca:a8:3a:45:5b:c3:0a
+# SHA256 Fingerprint: d4:0e:9c:86:cd:8f:e4:68:c1:77:69:59:f4:9e:a7:74:fa:54:86:84:b6:c4:06:f3:90:92:61:f4:dc:e2:57:5c
+-----BEGIN CERTIFICATE-----
+MIIEMDCCAxigAwIBAgIJANqb7HHzA7AZMA0GCSqGSIb3DQEBCwUAMIGkMQswCQYD
+VQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEk
+MCIGA1UECgwbVHJ1c3RDb3IgU3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5U
+cnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxHzAdBgNVBAMMFlRydXN0Q29y
+IFJvb3RDZXJ0IENBLTEwHhcNMTYwMjA0MTIzMjE2WhcNMjkxMjMxMTcyMzE2WjCB
+pDELMAkGA1UEBhMCUEExDzANBgNVBAgMBlBhbmFtYTEUMBIGA1UEBwwLUGFuYW1h
+IENpdHkxJDAiBgNVBAoMG1RydXN0Q29yIFN5c3RlbXMgUy4gZGUgUi5MLjEnMCUG
+A1UECwweVHJ1c3RDb3IgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MR8wHQYDVQQDDBZU
+cnVzdENvciBSb290Q2VydCBDQS0xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
+CgKCAQEAv463leLCJhJrMxnHQFgKq1mqjQCj/IDHUHuO1CAmujIS2CNUSSUQIpid
+RtLByZ5OGy4sDjjzGiVoHKZaBeYei0i/mJZ0PmnK6bV4pQa81QBeCQryJ3pS/C3V
+seq0iWEk8xoT26nPUu0MJLq5nux+AHT6k61sKZKuUbS701e/s/OojZz0JEsq1pme
+9J7+wH5COucLlVPat2gOkEz7cD+PSiyU8ybdY2mplNgQTsVHCJCZGxdNuWxu72CV
+EY4hgLW9oHPY0LJ3xEXqWib7ZnZ2+AYfYW0PVcWDtxBWcgYHpfOxGgMFZA6dWorW
+hnAbJN7+KIor0Gqw/Hqi3LJ5DotlDwIDAQABo2MwYTAdBgNVHQ4EFgQU7mtJPHo/
+DeOxCbeKyKsZn3MzUOcwHwYDVR0jBBgwFoAU7mtJPHo/DeOxCbeKyKsZn3MzUOcw
+DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQAD
+ggEBACUY1JGPE+6PHh0RU9otRCkZoB5rMZ5NDp6tPVxBb5UrJKF5mDo4Nvu7Zp5I
+/5CQ7z3UuJu0h3U/IJvOcs+hVcFNZKIZBqEHMwwLKeXx6quj7LUKdJDHfXLy11yf
+ke+Ri7fc7Waiz45mO7yfOgLgJ90WmMCV1Aqk5IGadZQ1nJBfiDcGrVmVCrDRZ9MZ
+yonnMlo2HD6CqFqTvsbQZJG2z9m2GM/bftJlo6bEjhcxwft+dtvTheNYsnd6djts
+L1Ac59v2Z3kf9YKVmgenFK+P3CghZwnS1k1aHBkcjndcw5QkPTJrS37UeJSDvjdN
+zl/HHk484IkzlQsPpTLWPFp5LBk=
+-----END CERTIFICATE-----
+
+# Issuer: CN=TrustCor RootCert CA-2 O=TrustCor Systems S. de R.L. OU=TrustCor Certificate Authority
+# Subject: CN=TrustCor RootCert CA-2 O=TrustCor Systems S. de R.L. OU=TrustCor Certificate Authority
+# Label: "TrustCor RootCert CA-2"
+# Serial: 2711694510199101698
+# MD5 Fingerprint: a2:e1:f8:18:0b:ba:45:d5:c7:41:2a:bb:37:52:45:64
+# SHA1 Fingerprint: b8:be:6d:cb:56:f1:55:b9:63:d4:12:ca:4e:06:34:c7:94:b2:1c:c0
+# SHA256 Fingerprint: 07:53:e9:40:37:8c:1b:d5:e3:83:6e:39:5d:ae:a5:cb:83:9e:50:46:f1:bd:0e:ae:19:51:cf:10:fe:c7:c9:65
+-----BEGIN CERTIFICATE-----
+MIIGLzCCBBegAwIBAgIIJaHfyjPLWQIwDQYJKoZIhvcNAQELBQAwgaQxCzAJBgNV
+BAYTAlBBMQ8wDQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5MSQw
+IgYDVQQKDBtUcnVzdENvciBTeXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRy
+dXN0Q29yIENlcnRpZmljYXRlIEF1dGhvcml0eTEfMB0GA1UEAwwWVHJ1c3RDb3Ig
+Um9vdENlcnQgQ0EtMjAeFw0xNjAyMDQxMjMyMjNaFw0zNDEyMzExNzI2MzlaMIGk
+MQswCQYDVQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEg
+Q2l0eTEkMCIGA1UECgwbVHJ1c3RDb3IgU3lzdGVtcyBTLiBkZSBSLkwuMScwJQYD
+VQQLDB5UcnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxHzAdBgNVBAMMFlRy
+dXN0Q29yIFJvb3RDZXJ0IENBLTIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK
+AoICAQCnIG7CKqJiJJWQdsg4foDSq8GbZQWU9MEKENUCrO2fk8eHyLAnK0IMPQo+
+QVqedd2NyuCb7GgypGmSaIwLgQ5WoD4a3SwlFIIvl9NkRvRUqdw6VC0xK5mC8tkq
+1+9xALgxpL56JAfDQiDyitSSBBtlVkxs1Pu2YVpHI7TYabS3OtB0PAx1oYxOdqHp
+2yqlO/rOsP9+aij9JxzIsekp8VduZLTQwRVtDr4uDkbIXvRR/u8OYzo7cbrPb1nK
+DOObXUm4TOJXsZiKQlecdu/vvdFoqNL0Cbt3Nb4lggjEFixEIFapRBF37120Hape
+az6LMvYHL1cEksr1/p3C6eizjkxLAjHZ5DxIgif3GIJ2SDpxsROhOdUuxTTCHWKF
+3wP+TfSvPd9cW436cOGlfifHhi5qjxLGhF5DUVCcGZt45vz27Ud+ez1m7xMTiF88
+oWP7+ayHNZ/zgp6kPwqcMWmLmaSISo5uZk3vFsQPeSghYA2FFn3XVDjxklb9tTNM
+g9zXEJ9L/cb4Qr26fHMC4P99zVvh1Kxhe1fVSntb1IVYJ12/+CtgrKAmrhQhJ8Z3
+mjOAPF5GP/fDsaOGM8boXg25NSyqRsGFAnWAoOsk+xWq5Gd/bnc/9ASKL3x74xdh
+8N0JqSDIvgmk0H5Ew7IwSjiqqewYmgeCK9u4nBit2uBGF6zPXQIDAQABo2MwYTAd
+BgNVHQ4EFgQU2f4hQG6UnrybPZx9mCAZ5YwwYrIwHwYDVR0jBBgwFoAU2f4hQG6U
+nrybPZx9mCAZ5YwwYrIwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYw
+DQYJKoZIhvcNAQELBQADggIBAJ5Fngw7tu/hOsh80QA9z+LqBrWyOrsGS2h60COX
+dKcs8AjYeVrXWoSK2BKaG9l9XE1wxaX5q+WjiYndAfrs3fnpkpfbsEZC89NiqpX+
+MWcUaViQCqoL7jcjx1BRtPV+nuN79+TMQjItSQzL/0kMmx40/W5ulop5A7Zv2wnL
+/V9lFDfhOPXzYRZY5LVtDQsEGz9QLX+zx3oaFoBg+Iof6Rsqxvm6ARppv9JYx1RX
+CI/hOWB3S6xZhBqI8d3LT3jX5+EzLfzuQfogsL7L9ziUwOHQhQ+77Sxzq+3+knYa
+ZH9bDTMJBzN7Bj8RpFxwPIXAz+OQqIN3+tvmxYxoZxBnpVIt8MSZj3+/0WvitUfW
+2dCFmU2Umw9Lje4AWkcdEQOsQRivh7dvDDqPys/cA8GiCcjl/YBeyGBCARsaU1q7
+N6a3vLqE6R5sGtRk2tRD/pOLS/IseRYQ1JMLiI+h2IYURpFHmygk71dSTlxCnKr3
+Sewn6EAes6aJInKc9Q0ztFijMDvd1GpUk74aTfOTlPf8hAs/hCBcNANExdqtvArB
+As8e5ZTZ845b2EzwnexhF7sUMlQMAimTHpKG9n/v55IFDlndmQguLvqcAFLTxWYp
+5KeXRKQOKIETNcX2b2TmQcTVL8w0RSXPQQCWPUouwpaYT05KnJe32x+SMsj/D1Fu
+1uwJ
+-----END CERTIFICATE-----
+
+# Issuer: CN=TrustCor ECA-1 O=TrustCor Systems S. de R.L. OU=TrustCor Certificate Authority
+# Subject: CN=TrustCor ECA-1 O=TrustCor Systems S. de R.L. OU=TrustCor Certificate Authority
+# Label: "TrustCor ECA-1"
+# Serial: 9548242946988625984
+# MD5 Fingerprint: 27:92:23:1d:0a:f5:40:7c:e9:e6:6b:9d:d8:f5:e7:6c
+# SHA1 Fingerprint: 58:d1:df:95:95:67:6b:63:c0:f0:5b:1c:17:4d:8b:84:0b:c8:78:bd
+# SHA256 Fingerprint: 5a:88:5d:b1:9c:01:d9:12:c5:75:93:88:93:8c:af:bb:df:03:1a:b2:d4:8e:91:ee:15:58:9b:42:97:1d:03:9c
+-----BEGIN CERTIFICATE-----
+MIIEIDCCAwigAwIBAgIJAISCLF8cYtBAMA0GCSqGSIb3DQEBCwUAMIGcMQswCQYD
+VQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEk
+MCIGA1UECgwbVHJ1c3RDb3IgU3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5U
+cnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxFzAVBgNVBAMMDlRydXN0Q29y
+IEVDQS0xMB4XDTE2MDIwNDEyMzIzM1oXDTI5MTIzMTE3MjgwN1owgZwxCzAJBgNV
+BAYTAlBBMQ8wDQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5MSQw
+IgYDVQQKDBtUcnVzdENvciBTeXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRy
+dXN0Q29yIENlcnRpZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAwwOVHJ1c3RDb3Ig
+RUNBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDPj+ARtZ+odnbb
+3w9U73NjKYKtR8aja+3+XzP4Q1HpGjORMRegdMTUpwHmspI+ap3tDvl0mEDTPwOA
+BoJA6LHip1GnHYMma6ve+heRK9jGrB6xnhkB1Zem6g23xFUfJ3zSCNV2HykVh0A5
+3ThFEXXQmqc04L/NyFIduUd+Dbi7xgz2c1cWWn5DkR9VOsZtRASqnKmcp0yJF4Ou
+owReUoCLHhIlERnXDH19MURB6tuvsBzvgdAsxZohmz3tQjtQJvLsznFhBmIhVE5/
+wZ0+fyCMgMsq2JdiyIMzkX2woloPV+g7zPIlstR8L+xNxqE6FXrntl019fZISjZF
+ZtS6mFjBAgMBAAGjYzBhMB0GA1UdDgQWBBREnkj1zG1I1KBLf/5ZJC+Dl5mahjAf
+BgNVHSMEGDAWgBREnkj1zG1I1KBLf/5ZJC+Dl5mahjAPBgNVHRMBAf8EBTADAQH/
+MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAQEABT41XBVwm8nHc2Fv
+civUwo/yQ10CzsSUuZQRg2dd4mdsdXa/uwyqNsatR5Nj3B5+1t4u/ukZMjgDfxT2
+AHMsWbEhBuH7rBiVDKP/mZb3Kyeb1STMHd3BOuCYRLDE5D53sXOpZCz2HAF8P11F
+hcCF5yWPldwX8zyfGm6wyuMdKulMY/okYWLW2n62HGz1Ah3UKt1VkOsqEUc8Ll50
+soIipX1TH0XsJ5F95yIW6MBoNtjG8U+ARDL54dHRHareqKucBK+tIA5kmE2la8BI
+WJZpTdwHjFGTot+fDz2LYLSCjaoITmJF4PkL0uDgPFveXHEnJcLmA4GLEFPjx1Wi
+tJ/X5g==
+-----END CERTIFICATE-----
+
+# Issuer: CN=SSL.com Root Certification Authority RSA O=SSL Corporation
+# Subject: CN=SSL.com Root Certification Authority RSA O=SSL Corporation
+# Label: "SSL.com Root Certification Authority RSA"
+# Serial: 8875640296558310041
+# MD5 Fingerprint: 86:69:12:c0:70:f1:ec:ac:ac:c2:d5:bc:a5:5b:a1:29
+# SHA1 Fingerprint: b7:ab:33:08:d1:ea:44:77:ba:14:80:12:5a:6f:bd:a9:36:49:0c:bb
+# SHA256 Fingerprint: 85:66:6a:56:2e:e0:be:5c:e9:25:c1:d8:89:0a:6f:76:a8:7e:c1:6d:4d:7d:5f:29:ea:74:19:cf:20:12:3b:69
+-----BEGIN CERTIFICATE-----
+MIIF3TCCA8WgAwIBAgIIeyyb0xaAMpkwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UE
+BhMCVVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQK
+DA9TU0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZp
+Y2F0aW9uIEF1dGhvcml0eSBSU0EwHhcNMTYwMjEyMTczOTM5WhcNNDEwMjEyMTcz
+OTM5WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hv
+dXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNv
+bSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFJTQTCCAiIwDQYJKoZIhvcN
+AQEBBQADggIPADCCAgoCggIBAPkP3aMrfcvQKv7sZ4Wm5y4bunfh4/WvpOz6Sl2R
+xFdHaxh3a3by/ZPkPQ/CFp4LZsNWlJ4Xg4XOVu/yFv0AYvUiCVToZRdOQbngT0aX
+qhvIuG5iXmmxX9sqAn78bMrzQdjt0Oj8P2FI7bADFB0QDksZ4LtO7IZl/zbzXmcC
+C52GVWH9ejjt/uIZALdvoVBidXQ8oPrIJZK0bnoix/geoeOy3ZExqysdBP+lSgQ3
+6YWkMyv94tZVNHwZpEpox7Ko07fKoZOI68GXvIz5HdkihCR0xwQ9aqkpk8zruFvh
+/l8lqjRYyMEjVJ0bmBHDOJx+PYZspQ9AhnwC9FwCTyjLrnGfDzrIM/4RJTXq/LrF
+YD3ZfBjVsqnTdXgDciLKOsMf7yzlLqn6niy2UUb9rwPW6mBo6oUWNmuF6R7As93E
+JNyAKoFBbZQ+yODJgUEAnl6/f8UImKIYLEJAs/lvOCdLToD0PYFH4Ih86hzOtXVc
+US4cK38acijnALXRdMbX5J+tB5O2UzU1/Dfkw/ZdFr4hc96SCvigY2q8lpJqPvi8
+ZVWb3vUNiSYE/CUapiVpy8JtynziWV+XrOvvLsi81xtZPCvM8hnIk2snYxnP/Okm
++Mpxm3+T/jRnhE6Z6/yzeAkzcLpmpnbtG3PrGqUNxCITIJRWCk4sbE6x/c+cCbqi
+M+2HAgMBAAGjYzBhMB0GA1UdDgQWBBTdBAkHovV6fVJTEpKV7jiAJQ2mWTAPBgNV
+HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFN0ECQei9Xp9UlMSkpXuOIAlDaZZMA4G
+A1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAIBgRlCn7Jp0cHh5wYfGV
+cpNxJK1ok1iOMq8bs3AD/CUrdIWQPXhq9LmLpZc7tRiRux6n+UBbkflVma8eEdBc
+Hadm47GUBwwyOabqG7B52B2ccETjit3E+ZUfijhDPwGFpUenPUayvOUiaPd7nNgs
+PgohyC0zrL/FgZkxdMF1ccW+sfAjRfSda/wZY52jvATGGAslu1OJD7OAUN5F7kR/
+q5R4ZJjT9ijdh9hwZXT7DrkT66cPYakylszeu+1jTBi7qUD3oFRuIIhxdRjqerQ0
+cuAjJ3dctpDqhiVAq+8zD8ufgr6iIPv2tS0a5sKFsXQP+8hlAqRSAUfdSSLBv9jr
+a6x+3uxjMxW3IwiPxg+NQVrdjsW5j+VFP3jbutIbQLH+cU0/4IGiul607BXgk90I
+H37hVZkLId6Tngr75qNJvTYw/ud3sqB1l7UtgYgXZSD32pAAn8lSzDLKNXz1PQ/Y
+K9f1JmzJBjSWFupwWRoyeXkLtoh/D1JIPb9s2KJELtFOt3JY04kTlf5Eq/jXixtu
+nLwsoFvVagCvXzfh1foQC5ichucmj87w7G6KVwuA406ywKBjYZC6VWg3dGq2ktuf
+oYYitmUnDuy2n0Jg5GfCtdpBC8TTi2EbvPofkSvXRAdeuims2cXp71NIWuuA8ShY
+Ic2wBlX7Jz9TkHCpBB5XJ7k=
+-----END CERTIFICATE-----
+
+# Issuer: CN=SSL.com Root Certification Authority ECC O=SSL Corporation
+# Subject: CN=SSL.com Root Certification Authority ECC O=SSL Corporation
+# Label: "SSL.com Root Certification Authority ECC"
+# Serial: 8495723813297216424
+# MD5 Fingerprint: 2e:da:e4:39:7f:9c:8f:37:d1:70:9f:26:17:51:3a:8e
+# SHA1 Fingerprint: c3:19:7c:39:24:e6:54:af:1b:c4:ab:20:95:7a:e2:c3:0e:13:02:6a
+# SHA256 Fingerprint: 34:17:bb:06:cc:60:07:da:1b:96:1c:92:0b:8a:b4:ce:3f:ad:82:0e:4a:a3:0b:9a:cb:c4:a7:4e:bd:ce:bc:65
+-----BEGIN CERTIFICATE-----
+MIICjTCCAhSgAwIBAgIIdebfy8FoW6gwCgYIKoZIzj0EAwIwfDELMAkGA1UEBhMC
+VVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9T
+U0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0
+aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEyMTgxNDAzWhcNNDEwMjEyMTgxNDAz
+WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hvdXN0
+b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNvbSBS
+b290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuB
+BAAiA2IABEVuqVDEpiM2nl8ojRfLliJkP9x6jh3MCLOicSS6jkm5BBtHllirLZXI
+7Z4INcgn64mMU1jrYor+8FsPazFSY0E7ic3s7LaNGdM0B9y7xgZ/wkWV7Mt/qCPg
+CemB+vNH06NjMGEwHQYDVR0OBBYEFILRhXMw5zUE044CkvvlpNHEIejNMA8GA1Ud
+EwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUgtGFczDnNQTTjgKS++Wk0cQh6M0wDgYD
+VR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2cAMGQCMG/n61kRpGDPYbCWe+0F+S8T
+kdzt5fxQaxFGRrMcIQBiu77D5+jNB5n5DQtdcj7EqgIwH7y6C+IwJPt8bYBVCpk+
+gA0z5Wajs6O7pdWLjwkspl1+4vAHCGht0nxpbl/f5Wpl
+-----END CERTIFICATE-----
+
+# Issuer: CN=SSL.com EV Root Certification Authority RSA R2 O=SSL Corporation
+# Subject: CN=SSL.com EV Root Certification Authority RSA R2 O=SSL Corporation
+# Label: "SSL.com EV Root Certification Authority RSA R2"
+# Serial: 6248227494352943350
+# MD5 Fingerprint: e1:1e:31:58:1a:ae:54:53:02:f6:17:6a:11:7b:4d:95
+# SHA1 Fingerprint: 74:3a:f0:52:9b:d0:32:a0:f4:4a:83:cd:d4:ba:a9:7b:7c:2e:c4:9a
+# SHA256 Fingerprint: 2e:7b:f1:6c:c2:24:85:a7:bb:e2:aa:86:96:75:07:61:b0:ae:39:be:3b:2f:e9:d0:cc:6d:4e:f7:34:91:42:5c
+-----BEGIN CERTIFICATE-----
+MIIF6zCCA9OgAwIBAgIIVrYpzTS8ePYwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNV
+BAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UE
+CgwPU1NMIENvcnBvcmF0aW9uMTcwNQYDVQQDDC5TU0wuY29tIEVWIFJvb3QgQ2Vy
+dGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIyMB4XDTE3MDUzMTE4MTQzN1oXDTQy
+MDUzMDE4MTQzN1owgYIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4G
+A1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMTcwNQYDVQQD
+DC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIy
+MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjzZlQOHWTcDXtOlG2mvq
+M0fNTPl9fb69LT3w23jhhqXZuglXaO1XPqDQCEGD5yhBJB/jchXQARr7XnAjssuf
+OePPxU7Gkm0mxnu7s9onnQqG6YE3Bf7wcXHswxzpY6IXFJ3vG2fThVUCAtZJycxa
+4bH3bzKfydQ7iEGonL3Lq9ttewkfokxykNorCPzPPFTOZw+oz12WGQvE43LrrdF9
+HSfvkusQv1vrO6/PgN3B0pYEW3p+pKk8OHakYo6gOV7qd89dAFmPZiw+B6KjBSYR
+aZfqhbcPlgtLyEDhULouisv3D5oi53+aNxPN8k0TayHRwMwi8qFG9kRpnMphNQcA
+b9ZhCBHqurj26bNg5U257J8UZslXWNvNh2n4ioYSA0e/ZhN2rHd9NCSFg83XqpyQ
+Gp8hLH94t2S42Oim9HizVcuE0jLEeK6jj2HdzghTreyI/BXkmg3mnxp3zkyPuBQV
+PWKchjgGAGYS5Fl2WlPAApiiECtoRHuOec4zSnaqW4EWG7WK2NAAe15itAnWhmMO
+pgWVSbooi4iTsjQc2KRVbrcc0N6ZVTsj9CLg+SlmJuwgUHfbSguPvuUCYHBBXtSu
+UDkiFCbLsjtzdFVHB3mBOagwE0TlBIqulhMlQg+5U8Sb/M3kHN48+qvWBkofZ6aY
+MBzdLNvcGJVXZsb/XItW9XcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNV
+HSMEGDAWgBT5YLvU49U09rj1BoAlp3PbRmmonjAdBgNVHQ4EFgQU+WC71OPVNPa4
+9QaAJadz20ZpqJ4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBW
+s47LCp1Jjr+kxJG7ZhcFUZh1++VQLHqe8RT6q9OKPv+RKY9ji9i0qVQBDb6Thi/5
+Sm3HXvVX+cpVHBK+Rw82xd9qt9t1wkclf7nxY/hoLVUE0fKNsKTPvDxeH3jnpaAg
+cLAExbf3cqfeIg29MyVGjGSSJuM+LmOW2puMPfgYCdcDzH2GguDKBAdRUNf/ktUM
+79qGn5nX67evaOI5JpS6aLe/g9Pqemc9YmeuJeVy6OLk7K4S9ksrPJ/psEDzOFSz
+/bdoyNrGj1E8svuR3Bznm53htw1yj+KkxKl4+esUrMZDBcJlOSgYAsOCsp0FvmXt
+ll9ldDz7CTUue5wT/RsPXcdtgTpWD8w74a8CLyKsRspGPKAcTNZEtF4uXBVmCeEm
+Kf7GUmG6sXP/wwyc5WxqlD8UykAWlYTzWamsX0xhk23RO8yilQwipmdnRC652dKK
+QbNmC1r7fSOl8hqw/96bg5Qu0T/fkreRrwU7ZcegbLHNYhLDkBvjJc40vG93drEQ
+w/cFGsDWr3RiSBd3kmmQYRzelYB0VI8YHMPzA9C/pEN1hlMYegouCRw2n5H9gooi
+S9EOUCXdywMMF8mDAAhONU2Ki+3wApRmLER/y5UnlhetCTCstnEXbosX9hwJ1C07
+mKVx01QT2WDz9UtmT/rx7iASjbSsV7FFY6GsdqnC+w==
+-----END CERTIFICATE-----
+
+# Issuer: CN=SSL.com EV Root Certification Authority ECC O=SSL Corporation
+# Subject: CN=SSL.com EV Root Certification Authority ECC O=SSL Corporation
+# Label: "SSL.com EV Root Certification Authority ECC"
+# Serial: 3182246526754555285
+# MD5 Fingerprint: 59:53:22:65:83:42:01:54:c0:ce:42:b9:5a:7c:f2:90
+# SHA1 Fingerprint: 4c:dd:51:a3:d1:f5:20:32:14:b0:c6:c5:32:23:03:91:c7:46:42:6d
+# SHA256 Fingerprint: 22:a2:c1:f7:bd:ed:70:4c:c1:e7:01:b5:f4:08:c3:10:88:0f:e9:56:b5:de:2a:4a:44:f9:9c:87:3a:25:a7:c8
+-----BEGIN CERTIFICATE-----
+MIIClDCCAhqgAwIBAgIILCmcWxbtBZUwCgYIKoZIzj0EAwIwfzELMAkGA1UEBhMC
+VVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9T
+U0wgQ29ycG9yYXRpb24xNDAyBgNVBAMMK1NTTC5jb20gRVYgUm9vdCBDZXJ0aWZp
+Y2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEyMTgxNTIzWhcNNDEwMjEyMTgx
+NTIzWjB/MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hv
+dXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjE0MDIGA1UEAwwrU1NMLmNv
+bSBFViBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49
+AgEGBSuBBAAiA2IABKoSR5CYG/vvw0AHgyBO8TCCogbR8pKGYfL2IWjKAMTH6kMA
+VIbc/R/fALhBYlzccBYy3h+Z1MzFB8gIH2EWB1E9fVwHU+M1OIzfzZ/ZLg1Kthku
+WnBaBu2+8KGwytAJKaNjMGEwHQYDVR0OBBYEFFvKXuXe0oGqzagtZFG22XKbl+ZP
+MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe5d7SgarNqC1kUbbZcpuX
+5k8wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2gAMGUCMQCK5kCJN+vp1RPZ
+ytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZg
+h5Mmm7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg==
+-----END CERTIFICATE-----

+ 972 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/client.py

@@ -0,0 +1,972 @@
+# Copyright 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"). You
+# may not use this file except in compliance with the License. A copy of
+# the License is located at
+#
+# http://aws.amazon.com/apache2.0/
+#
+# or in the "license" file accompanying this file. This file is
+# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+# ANY KIND, either express or implied. See the License for the specific
+# language governing permissions and limitations under the License.
+import logging
+import functools
+
+from botocore import waiter, xform_name
+from botocore.args import ClientArgsCreator
+from botocore.auth import AUTH_TYPE_MAPS
+from botocore.awsrequest import prepare_request_dict
+from botocore.docs.docstring import ClientMethodDocstring
+from botocore.docs.docstring import PaginatorDocstring
+from botocore.exceptions import (
+    ClientError, DataNotFoundError, OperationNotPageableError,
+    UnknownSignatureVersionError, InvalidEndpointDiscoveryConfigurationError,
+    UnknownFIPSEndpointError,
+)
+from botocore.hooks import first_non_none_response
+from botocore.model import ServiceModel
+from botocore.paginate import Paginator
+from botocore.utils import (
+    CachedProperty, get_service_module_name, S3RegionRedirector,
+    S3ArnParamHandler, S3EndpointSetter, ensure_boolean,
+    S3ControlArnParamHandler, S3ControlEndpointSetter,
+)
+from botocore.args import ClientArgsCreator
+from botocore import UNSIGNED
+# Keep this imported.  There's pre-existing code that uses
+# "from botocore.client import Config".
+from botocore.config import Config
+from botocore.history import get_global_history_recorder
+from botocore.discovery import (
+    EndpointDiscoveryHandler, EndpointDiscoveryManager,
+    block_endpoint_discovery_required_operations
+)
+from botocore.retries import standard
+from botocore.retries import adaptive
+
+
+logger = logging.getLogger(__name__)
+history_recorder = get_global_history_recorder()
+
+
+class ClientCreator(object):
+    """Creates client objects for a service."""
+    def __init__(self, loader, endpoint_resolver, user_agent, event_emitter,
+                 retry_handler_factory, retry_config_translator,
+                 response_parser_factory=None, exceptions_factory=None,
+                 config_store=None):
+        self._loader = loader
+        self._endpoint_resolver = endpoint_resolver
+        self._user_agent = user_agent
+        self._event_emitter = event_emitter
+        self._retry_handler_factory = retry_handler_factory
+        self._retry_config_translator = retry_config_translator
+        self._response_parser_factory = response_parser_factory
+        self._exceptions_factory = exceptions_factory
+        # TODO: Migrate things away from scoped_config in favor of the
+        # config_store.  The config store can pull things from both the scoped
+        # config and environment variables (and potentially more in the
+        # future).
+        self._config_store = config_store
+
+    def create_client(self, service_name, region_name, is_secure=True,
+                      endpoint_url=None, verify=None,
+                      credentials=None, scoped_config=None,
+                      api_version=None,
+                      client_config=None):
+        responses = self._event_emitter.emit(
+            'choose-service-name', service_name=service_name)
+        service_name = first_non_none_response(responses, default=service_name)
+        service_model = self._load_service_model(service_name, api_version)
+        cls = self._create_client_class(service_name, service_model)
+        endpoint_bridge = ClientEndpointBridge(
+            self._endpoint_resolver, scoped_config, client_config,
+            service_signing_name=service_model.metadata.get('signingName'))
+        client_args = self._get_client_args(
+            service_model, region_name, is_secure, endpoint_url,
+            verify, credentials, scoped_config, client_config, endpoint_bridge)
+        service_client = cls(**client_args)
+        self._register_retries(service_client)
+        self._register_s3_events(
+            service_client, endpoint_bridge, endpoint_url, client_config,
+            scoped_config)
+        self._register_s3_control_events(
+            service_client, endpoint_bridge, endpoint_url, client_config,
+            scoped_config)
+        self._register_endpoint_discovery(
+            service_client, endpoint_url, client_config
+        )
+        self._register_lazy_block_unknown_fips_pseudo_regions(service_client)
+        return service_client
+
+    def create_client_class(self, service_name, api_version=None):
+        service_model = self._load_service_model(service_name, api_version)
+        return self._create_client_class(service_name, service_model)
+
+    def _create_client_class(self, service_name, service_model):
+        class_attributes = self._create_methods(service_model)
+        py_name_to_operation_name = self._create_name_mapping(service_model)
+        class_attributes['_PY_TO_OP_NAME'] = py_name_to_operation_name
+        bases = [BaseClient]
+        service_id = service_model.service_id.hyphenize()
+        self._event_emitter.emit(
+            'creating-client-class.%s' % service_id,
+            class_attributes=class_attributes,
+            base_classes=bases)
+        class_name = get_service_module_name(service_model)
+        cls = type(str(class_name), tuple(bases), class_attributes)
+        return cls
+
+    def _load_service_model(self, service_name, api_version=None):
+        json_model = self._loader.load_service_model(service_name, 'service-2',
+                                                     api_version=api_version)
+        service_model = ServiceModel(json_model, service_name=service_name)
+        return service_model
+
+    def _register_retries(self, client):
+        retry_mode = client.meta.config.retries['mode']
+        if retry_mode == 'standard':
+            self._register_v2_standard_retries(client)
+        elif retry_mode == 'adaptive':
+            self._register_v2_standard_retries(client)
+            self._register_v2_adaptive_retries(client)
+        elif retry_mode == 'legacy':
+            self._register_legacy_retries(client)
+
+    def _register_v2_standard_retries(self, client):
+        max_attempts = client.meta.config.retries.get('total_max_attempts')
+        kwargs = {'client': client}
+        if max_attempts is not None:
+            kwargs['max_attempts'] = max_attempts
+        standard.register_retry_handler(**kwargs)
+
+    def _register_v2_adaptive_retries(self, client):
+        adaptive.register_retry_handler(client)
+
+    def _register_legacy_retries(self, client):
+        endpoint_prefix = client.meta.service_model.endpoint_prefix
+        service_id = client.meta.service_model.service_id
+        service_event_name = service_id.hyphenize()
+
+        # First, we load the entire retry config for all services,
+        # then pull out just the information we need.
+        original_config = self._loader.load_data('_retry')
+        if not original_config:
+            return
+
+        retries = self._transform_legacy_retries(client.meta.config.retries)
+        retry_config = self._retry_config_translator.build_retry_config(
+            endpoint_prefix, original_config.get('retry', {}),
+            original_config.get('definitions', {}),
+            retries
+        )
+
+        logger.debug("Registering retry handlers for service: %s",
+                     client.meta.service_model.service_name)
+        handler = self._retry_handler_factory.create_retry_handler(
+            retry_config, endpoint_prefix)
+        unique_id = 'retry-config-%s' % service_event_name
+        client.meta.events.register(
+            'needs-retry.%s' % service_event_name, handler,
+            unique_id=unique_id
+        )
+
+    def _transform_legacy_retries(self, retries):
+        if retries is None:
+            return
+        copied_args = retries.copy()
+        if 'total_max_attempts' in retries:
+            copied_args = retries.copy()
+            copied_args['max_attempts'] = (
+                copied_args.pop('total_max_attempts') - 1)
+        return copied_args
+
+    def _get_retry_mode(self, client, config_store):
+        client_retries = client.meta.config.retries
+        if client_retries is not None and \
+                client_retries.get('mode') is not None:
+            return client_retries['mode']
+        return config_store.get_config_variable('retry_mode') or 'legacy'
+
+    def _register_endpoint_discovery(self, client, endpoint_url, config):
+        if endpoint_url is not None:
+            # Don't register any handlers in the case of a custom endpoint url
+            return
+        # Only attach handlers if the service supports discovery
+        if client.meta.service_model.endpoint_discovery_operation is None:
+            return
+        events = client.meta.events
+        service_id = client.meta.service_model.service_id.hyphenize()
+        enabled = False
+        if config and config.endpoint_discovery_enabled is not None:
+            enabled = config.endpoint_discovery_enabled
+        elif self._config_store:
+            enabled = self._config_store.get_config_variable(
+                'endpoint_discovery_enabled')
+
+        enabled = self._normalize_endpoint_discovery_config(enabled)
+        if enabled and self._requires_endpoint_discovery(client, enabled):
+            discover = enabled is True
+            manager = EndpointDiscoveryManager(client, always_discover=discover)
+            handler = EndpointDiscoveryHandler(manager)
+            handler.register(events, service_id)
+        else:
+            events.register('before-parameter-build',
+                            block_endpoint_discovery_required_operations)
+
+    def _normalize_endpoint_discovery_config(self, enabled):
+        """Config must either be a boolean-string or string-literal 'auto'"""
+        if isinstance(enabled, str):
+            enabled = enabled.lower().strip()
+            if enabled == 'auto':
+                return enabled
+            elif enabled in ('true', 'false'):
+                return ensure_boolean(enabled)
+        elif isinstance(enabled, bool):
+            return enabled
+
+        raise InvalidEndpointDiscoveryConfigurationError(config_value=enabled)
+
+    def _requires_endpoint_discovery(self, client, enabled):
+        if enabled == "auto":
+            return client.meta.service_model.endpoint_discovery_required
+        return enabled
+
+    def _register_lazy_block_unknown_fips_pseudo_regions(self, client):
+        # This function blocks usage of FIPS pseudo-regions when the endpoint
+        # is not explicitly known to exist to the client to prevent accidental
+        # usage of incorrect or non-FIPS endpoints. This is done lazily by
+        # registering an exception on the before-sign event to allow for
+        # general client usage such as can_paginate, exceptions, etc.
+        region_name = client.meta.region_name
+        if not region_name or 'fips' not in region_name.lower():
+            return
+
+        partition = client.meta.partition
+        endpoint_prefix = client.meta.service_model.endpoint_prefix
+        known_regions = self._endpoint_resolver.get_available_endpoints(
+            endpoint_prefix,
+            partition,
+            allow_non_regional=True,
+        )
+
+        if region_name not in known_regions:
+            def _lazy_fips_exception(**kwargs):
+                service_name = client.meta.service_model.service_name
+                raise UnknownFIPSEndpointError(
+                    region_name=region_name,
+                    service_name=service_name,
+                )
+            client.meta.events.register('before-sign', _lazy_fips_exception)
+
+    def _register_s3_events(self, client, endpoint_bridge, endpoint_url,
+                            client_config, scoped_config):
+        if client.meta.service_model.service_name != 's3':
+            return
+        S3RegionRedirector(endpoint_bridge, client).register()
+        S3ArnParamHandler().register(client.meta.events)
+        S3EndpointSetter(
+            endpoint_resolver=self._endpoint_resolver,
+            region=client.meta.region_name,
+            s3_config=client.meta.config.s3,
+            endpoint_url=endpoint_url,
+            partition=client.meta.partition
+        ).register(client.meta.events)
+        self._set_s3_presign_signature_version(
+            client.meta, client_config, scoped_config)
+
+    def _register_s3_control_events(
+        self, client, endpoint_bridge,
+        endpoint_url, client_config, scoped_config
+    ):
+        if client.meta.service_model.service_name != 's3control':
+            return
+        S3ControlArnParamHandler().register(client.meta.events)
+        S3ControlEndpointSetter(
+            endpoint_resolver=self._endpoint_resolver,
+            region=client.meta.region_name,
+            s3_config=client.meta.config.s3,
+            endpoint_url=endpoint_url,
+            partition=client.meta.partition
+        ).register(client.meta.events)
+
+    def _set_s3_presign_signature_version(self, client_meta,
+                                          client_config, scoped_config):
+        # This will return the manually configured signature version, or None
+        # if none was manually set. If a customer manually sets the signature
+        # version, we always want to use what they set.
+        provided_signature_version = _get_configured_signature_version(
+            's3', client_config, scoped_config)
+        if provided_signature_version is not None:
+            return
+
+        # Check to see if the region is a region that we know about. If we
+        # don't know about a region, then we can safely assume it's a new
+        # region that is sigv4 only, since all new S3 regions only allow sigv4.
+        # The only exception is aws-global. This is a pseudo-region for the
+        # global endpoint, we should respect the signature versions it
+        # supports, which includes v2.
+        regions = self._endpoint_resolver.get_available_endpoints(
+            's3', client_meta.partition)
+        if client_meta.region_name != 'aws-global' and \
+                client_meta.region_name not in regions:
+            return
+
+        # If it is a region we know about, we want to default to sigv2, so here
+        # we check to see if it is available.
+        endpoint = self._endpoint_resolver.construct_endpoint(
+            's3', client_meta.region_name)
+        signature_versions = endpoint['signatureVersions']
+        if 's3' not in signature_versions:
+            return
+
+        # We now know that we're in a known region that supports sigv2 and
+        # the customer hasn't set a signature version so we default the
+        # signature version to sigv2.
+        client_meta.events.register(
+            'choose-signer.s3', self._default_s3_presign_to_sigv2)
+
+    def _default_s3_presign_to_sigv2(self, signature_version, **kwargs):
+        """
+        Returns the 's3' (sigv2) signer if presigning an s3 request. This is
+        intended to be used to set the default signature version for the signer
+        to sigv2.
+
+        :type signature_version: str
+        :param signature_version: The current client signature version.
+
+        :type signing_name: str
+        :param signing_name: The signing name of the service.
+
+        :return: 's3' if the request is an s3 presign request, None otherwise
+        """
+        for suffix in ['-query', '-presign-post']:
+            if signature_version.endswith(suffix):
+                return 's3' + suffix
+
+    def _get_client_args(self, service_model, region_name, is_secure,
+                         endpoint_url, verify, credentials,
+                         scoped_config, client_config, endpoint_bridge):
+        args_creator = ClientArgsCreator(
+            self._event_emitter, self._user_agent,
+            self._response_parser_factory, self._loader,
+            self._exceptions_factory, config_store=self._config_store)
+        return args_creator.get_client_args(
+            service_model, region_name, is_secure, endpoint_url,
+            verify, credentials, scoped_config, client_config, endpoint_bridge)
+
+    def _create_methods(self, service_model):
+        op_dict = {}
+        for operation_name in service_model.operation_names:
+            py_operation_name = xform_name(operation_name)
+            op_dict[py_operation_name] = self._create_api_method(
+                py_operation_name, operation_name, service_model)
+        return op_dict
+
+    def _create_name_mapping(self, service_model):
+        # py_name -> OperationName, for every operation available
+        # for a service.
+        mapping = {}
+        for operation_name in service_model.operation_names:
+            py_operation_name = xform_name(operation_name)
+            mapping[py_operation_name] = operation_name
+        return mapping
+
+    def _create_api_method(self, py_operation_name, operation_name,
+                           service_model):
+        def _api_call(self, *args, **kwargs):
+            # We're accepting *args so that we can give a more helpful
+            # error message than TypeError: _api_call takes exactly
+            # 1 argument.
+            if args:
+                raise TypeError(
+                    "%s() only accepts keyword arguments." % py_operation_name)
+            # The "self" in this scope is referring to the BaseClient.
+            return self._make_api_call(operation_name, kwargs)
+
+        _api_call.__name__ = str(py_operation_name)
+
+        # Add the docstring to the client method
+        operation_model = service_model.operation_model(operation_name)
+        docstring = ClientMethodDocstring(
+            operation_model=operation_model,
+            method_name=operation_name,
+            event_emitter=self._event_emitter,
+            method_description=operation_model.documentation,
+            example_prefix='response = client.%s' % py_operation_name,
+            include_signature=False
+        )
+        _api_call.__doc__ = docstring
+        return _api_call
+
+
+class ClientEndpointBridge(object):
+    """Bridges endpoint data and client creation
+
+    This class handles taking out the relevant arguments from the endpoint
+    resolver and determining which values to use, taking into account any
+    client configuration options and scope configuration options.
+
+    This class also handles determining what, if any, region to use if no
+    explicit region setting is provided. For example, Amazon S3 client will
+    utilize "us-east-1" by default if no region can be resolved."""
+
+    DEFAULT_ENDPOINT = '{service}.{region}.amazonaws.com'
+    _DUALSTACK_ENABLED_SERVICES = ['s3', 's3-control']
+
+    def __init__(self, endpoint_resolver, scoped_config=None,
+                 client_config=None, default_endpoint=None,
+                 service_signing_name=None):
+        self.service_signing_name = service_signing_name
+        self.endpoint_resolver = endpoint_resolver
+        self.scoped_config = scoped_config
+        self.client_config = client_config
+        self.default_endpoint = default_endpoint or self.DEFAULT_ENDPOINT
+
+    def resolve(self, service_name, region_name=None, endpoint_url=None,
+                is_secure=True):
+        region_name = self._check_default_region(service_name, region_name)
+        resolved = self.endpoint_resolver.construct_endpoint(
+            service_name, region_name)
+
+        # If we can't resolve the region, we'll attempt to get a global
+        # endpoint for non-regionalized services (iam, route53, etc)
+        if not resolved:
+            # TODO: fallback partition_name should be configurable in the
+            # future for users to define as needed.
+            resolved = self.endpoint_resolver.construct_endpoint(
+                service_name, region_name, partition_name='aws')
+
+        if resolved:
+            return self._create_endpoint(
+                resolved, service_name, region_name, endpoint_url, is_secure)
+        else:
+            return self._assume_endpoint(service_name, region_name,
+                                         endpoint_url, is_secure)
+
+    def _check_default_region(self, service_name, region_name):
+        if region_name is not None:
+            return region_name
+        # Use the client_config region if no explicit region was provided.
+        if self.client_config and self.client_config.region_name is not None:
+            return self.client_config.region_name
+
+    def _create_endpoint(self, resolved, service_name, region_name,
+                         endpoint_url, is_secure):
+        explicit_region = region_name is not None
+        region_name, signing_region = self._pick_region_values(
+            resolved, region_name, endpoint_url)
+        if endpoint_url is None:
+            if self._is_s3_dualstack_mode(service_name):
+                endpoint_url = self._create_dualstack_endpoint(
+                    service_name, region_name,
+                    resolved['dnsSuffix'], is_secure, explicit_region)
+            else:
+                # Use the sslCommonName over the hostname for Python 2.6 compat.
+                hostname = resolved.get('sslCommonName', resolved.get('hostname'))
+                endpoint_url = self._make_url(hostname, is_secure,
+                                            resolved.get('protocols', []))
+        signature_version = self._resolve_signature_version(
+            service_name, resolved)
+        signing_name = self._resolve_signing_name(service_name, resolved)
+        return self._create_result(
+            service_name=service_name, region_name=region_name,
+            signing_region=signing_region, signing_name=signing_name,
+            endpoint_url=endpoint_url, metadata=resolved,
+            signature_version=signature_version)
+
+    def _is_s3_dualstack_mode(self, service_name):
+        if service_name not in self._DUALSTACK_ENABLED_SERVICES:
+            return False
+        # TODO: This normalization logic is duplicated from the
+        # ClientArgsCreator class.  Consolidate everything to
+        # ClientArgsCreator.  _resolve_signature_version also has similarly
+        # duplicated logic.
+        client_config = self.client_config
+        if client_config is not None and client_config.s3 is not None and \
+                'use_dualstack_endpoint' in client_config.s3:
+            # Client config trumps scoped config.
+            return client_config.s3['use_dualstack_endpoint']
+        if self.scoped_config is None:
+            return False
+        enabled = self.scoped_config.get('s3', {}).get(
+            'use_dualstack_endpoint', False)
+        if enabled in [True, 'True', 'true']:
+            return True
+        return False
+
+    def _create_dualstack_endpoint(self, service_name, region_name,
+                                   dns_suffix, is_secure, explicit_region):
+        if not explicit_region and region_name == 'aws-global':
+            # If the region_name passed was not explicitly set, default to
+            # us-east-1 instead of the modeled default aws-global. Dualstack
+            # does not support aws-global
+            region_name = 'us-east-1'
+        hostname = '{service}.dualstack.{region}.{dns_suffix}'.format(
+            service=service_name, region=region_name,
+            dns_suffix=dns_suffix)
+        # Dualstack supports http and https so were hardcoding this value for
+        # now.  This can potentially move into the endpoints.json file.
+        return self._make_url(hostname, is_secure, ['http', 'https'])
+
+    def _assume_endpoint(self, service_name, region_name, endpoint_url,
+                         is_secure):
+        if endpoint_url is None:
+            # Expand the default hostname URI template.
+            hostname = self.default_endpoint.format(
+                service=service_name, region=region_name)
+            endpoint_url = self._make_url(hostname, is_secure,
+                                          ['http', 'https'])
+        logger.debug('Assuming an endpoint for %s, %s: %s',
+                     service_name, region_name, endpoint_url)
+        # We still want to allow the user to provide an explicit version.
+        signature_version = self._resolve_signature_version(
+            service_name, {'signatureVersions': ['v4']})
+        signing_name = self._resolve_signing_name(service_name, resolved={})
+        return self._create_result(
+            service_name=service_name, region_name=region_name,
+            signing_region=region_name, signing_name=signing_name,
+            signature_version=signature_version, endpoint_url=endpoint_url,
+            metadata={})
+
+    def _create_result(self, service_name, region_name, signing_region,
+                       signing_name, endpoint_url, signature_version,
+                       metadata):
+        return {
+            'service_name': service_name,
+            'region_name': region_name,
+            'signing_region': signing_region,
+            'signing_name': signing_name,
+            'endpoint_url': endpoint_url,
+            'signature_version': signature_version,
+            'metadata': metadata
+        }
+
+    def _make_url(self, hostname, is_secure, supported_protocols):
+        if is_secure and 'https' in supported_protocols:
+            scheme = 'https'
+        else:
+            scheme = 'http'
+        return '%s://%s' % (scheme, hostname)
+
+    def _resolve_signing_name(self, service_name, resolved):
+        # CredentialScope overrides everything else.
+        if 'credentialScope' in resolved \
+                and 'service' in resolved['credentialScope']:
+            return resolved['credentialScope']['service']
+        # Use the signingName from the model if present.
+        if self.service_signing_name:
+            return self.service_signing_name
+        # Just assume is the same as the service name.
+        return service_name
+
+    def _pick_region_values(self, resolved, region_name, endpoint_url):
+        signing_region = region_name
+        if endpoint_url is None:
+            # Do not use the region name or signing name from the resolved
+            # endpoint if the user explicitly provides an endpoint_url. This
+            # would happen if we resolve to an endpoint where the service has
+            # a "defaults" section that overrides all endpoint with a single
+            # hostname and credentialScope. This has been the case historically
+            # for how STS has worked. The only way to resolve an STS endpoint
+            # was to provide a region_name and an endpoint_url. In that case,
+            # we would still resolve an endpoint, but we would not use the
+            # resolved endpointName or signingRegion because we want to allow
+            # custom endpoints.
+            region_name = resolved['endpointName']
+            signing_region = region_name
+            if 'credentialScope' in resolved \
+                    and 'region' in resolved['credentialScope']:
+                signing_region = resolved['credentialScope']['region']
+        return region_name, signing_region
+
+    def _resolve_signature_version(self, service_name, resolved):
+        configured_version = _get_configured_signature_version(
+            service_name, self.client_config, self.scoped_config)
+        if configured_version is not None:
+            return configured_version
+
+        # Pick a signature version from the endpoint metadata if present.
+        if 'signatureVersions' in resolved:
+            potential_versions = resolved['signatureVersions']
+            if service_name == 's3':
+                return 's3v4'
+            if 'v4' in potential_versions:
+                return 'v4'
+            # Now just iterate over the signature versions in order until we
+            # find the first one that is known to Botocore.
+            for known in potential_versions:
+                if known in AUTH_TYPE_MAPS:
+                    return known
+        raise UnknownSignatureVersionError(
+            signature_version=resolved.get('signatureVersions'))
+
+
+class BaseClient(object):
+
+    # This is actually reassigned with the py->op_name mapping
+    # when the client creator creates the subclass.  This value is used
+    # because calls such as client.get_paginator('list_objects') use the
+    # snake_case name, but we need to know the ListObjects form.
+    # xform_name() does the ListObjects->list_objects conversion, but
+    # we need the reverse mapping here.
+    _PY_TO_OP_NAME = {}
+
+    def __init__(self, serializer, endpoint, response_parser,
+                 event_emitter, request_signer, service_model, loader,
+                 client_config, partition, exceptions_factory):
+        self._serializer = serializer
+        self._endpoint = endpoint
+        self._response_parser = response_parser
+        self._request_signer = request_signer
+        self._cache = {}
+        self._loader = loader
+        self._client_config = client_config
+        self.meta = ClientMeta(event_emitter, self._client_config,
+                               endpoint.host, service_model,
+                               self._PY_TO_OP_NAME, partition)
+        self._exceptions_factory = exceptions_factory
+        self._exceptions = None
+        self._register_handlers()
+
+    def __getattr__(self, item):
+        event_name = 'getattr.%s.%s' % (
+            self._service_model.service_id.hyphenize(), item
+        )
+        handler, event_response = self.meta.events.emit_until_response(
+            event_name, client=self)
+
+        if event_response is not None:
+            return event_response
+
+        raise AttributeError(
+            "'%s' object has no attribute '%s'" % (
+                self.__class__.__name__, item)
+        )
+
+    def _register_handlers(self):
+        # Register the handler required to sign requests.
+        service_id = self.meta.service_model.service_id.hyphenize()
+        self.meta.events.register(
+            'request-created.%s' % service_id,
+            self._request_signer.handler
+        )
+
+    @property
+    def _service_model(self):
+        return self.meta.service_model
+
+    def _make_api_call(self, operation_name, api_params):
+        operation_model = self._service_model.operation_model(operation_name)
+        service_name = self._service_model.service_name
+        history_recorder.record('API_CALL', {
+            'service': service_name,
+            'operation': operation_name,
+            'params': api_params,
+        })
+        if operation_model.deprecated:
+            logger.debug('Warning: %s.%s() is deprecated',
+                         service_name, operation_name)
+        request_context = {
+            'client_region': self.meta.region_name,
+            'client_config': self.meta.config,
+            'has_streaming_input': operation_model.has_streaming_input,
+            'auth_type': operation_model.auth_type,
+        }
+        request_dict = self._convert_to_request_dict(
+            api_params, operation_model, context=request_context)
+
+        service_id = self._service_model.service_id.hyphenize()
+        handler, event_response = self.meta.events.emit_until_response(
+            'before-call.{service_id}.{operation_name}'.format(
+                service_id=service_id,
+                operation_name=operation_name),
+            model=operation_model, params=request_dict,
+            request_signer=self._request_signer, context=request_context)
+
+        if event_response is not None:
+            http, parsed_response = event_response
+        else:
+            http, parsed_response = self._make_request(
+                operation_model, request_dict, request_context)
+
+        self.meta.events.emit(
+            'after-call.{service_id}.{operation_name}'.format(
+                service_id=service_id,
+                operation_name=operation_name),
+            http_response=http, parsed=parsed_response,
+            model=operation_model, context=request_context
+        )
+
+        if http.status_code >= 300:
+            error_code = parsed_response.get("Error", {}).get("Code")
+            error_class = self.exceptions.from_code(error_code)
+            raise error_class(parsed_response, operation_name)
+        else:
+            return parsed_response
+
+    def _make_request(self, operation_model, request_dict, request_context):
+        try:
+            return self._endpoint.make_request(operation_model, request_dict)
+        except Exception as e:
+            self.meta.events.emit(
+                'after-call-error.{service_id}.{operation_name}'.format(
+                    service_id=self._service_model.service_id.hyphenize(),
+                    operation_name=operation_model.name),
+                exception=e, context=request_context
+            )
+            raise
+
+    def _convert_to_request_dict(self, api_params, operation_model,
+                                 context=None):
+        api_params = self._emit_api_params(
+            api_params, operation_model, context)
+        request_dict = self._serializer.serialize_to_request(
+            api_params, operation_model)
+        if not self._client_config.inject_host_prefix:
+            request_dict.pop('host_prefix', None)
+        prepare_request_dict(request_dict, endpoint_url=self._endpoint.host,
+                             user_agent=self._client_config.user_agent,
+                             context=context)
+        return request_dict
+
+    def _emit_api_params(self, api_params, operation_model, context):
+        # Given the API params provided by the user and the operation_model
+        # we can serialize the request to a request_dict.
+        operation_name = operation_model.name
+
+        # Emit an event that allows users to modify the parameters at the
+        # beginning of the method. It allows handlers to modify existing
+        # parameters or return a new set of parameters to use.
+        service_id = self._service_model.service_id.hyphenize()
+        responses = self.meta.events.emit(
+            'provide-client-params.{service_id}.{operation_name}'.format(
+                service_id=service_id,
+                operation_name=operation_name),
+            params=api_params, model=operation_model, context=context)
+        api_params = first_non_none_response(responses, default=api_params)
+
+        event_name = (
+            'before-parameter-build.{service_id}.{operation_name}')
+        self.meta.events.emit(
+            event_name.format(
+                service_id=service_id,
+                operation_name=operation_name),
+            params=api_params, model=operation_model, context=context)
+        return api_params
+
+    def get_paginator(self, operation_name):
+        """Create a paginator for an operation.
+
+        :type operation_name: string
+        :param operation_name: The operation name.  This is the same name
+            as the method name on the client.  For example, if the
+            method name is ``create_foo``, and you'd normally invoke the
+            operation as ``client.create_foo(**kwargs)``, if the
+            ``create_foo`` operation can be paginated, you can use the
+            call ``client.get_paginator("create_foo")``.
+
+        :raise OperationNotPageableError: Raised if the operation is not
+            pageable.  You can use the ``client.can_paginate`` method to
+            check if an operation is pageable.
+
+        :rtype: L{botocore.paginate.Paginator}
+        :return: A paginator object.
+
+        """
+        if not self.can_paginate(operation_name):
+            raise OperationNotPageableError(operation_name=operation_name)
+        else:
+            actual_operation_name = self._PY_TO_OP_NAME[operation_name]
+
+            # Create a new paginate method that will serve as a proxy to
+            # the underlying Paginator.paginate method. This is needed to
+            # attach a docstring to the method.
+            def paginate(self, **kwargs):
+                return Paginator.paginate(self, **kwargs)
+
+            paginator_config = self._cache['page_config'][
+                actual_operation_name]
+            # Add the docstring for the paginate method.
+            paginate.__doc__ = PaginatorDocstring(
+                paginator_name=actual_operation_name,
+                event_emitter=self.meta.events,
+                service_model=self.meta.service_model,
+                paginator_config=paginator_config,
+                include_signature=False
+            )
+
+            # Rename the paginator class based on the type of paginator.
+            paginator_class_name = str('%s.Paginator.%s' % (
+                get_service_module_name(self.meta.service_model),
+                actual_operation_name))
+
+            # Create the new paginator class
+            documented_paginator_cls = type(
+                paginator_class_name, (Paginator,), {'paginate': paginate})
+
+            operation_model = self._service_model.operation_model(actual_operation_name)
+            paginator = documented_paginator_cls(
+                getattr(self, operation_name),
+                paginator_config,
+                operation_model)
+            return paginator
+
+    def can_paginate(self, operation_name):
+        """Check if an operation can be paginated.
+
+        :type operation_name: string
+        :param operation_name: The operation name.  This is the same name
+            as the method name on the client.  For example, if the
+            method name is ``create_foo``, and you'd normally invoke the
+            operation as ``client.create_foo(**kwargs)``, if the
+            ``create_foo`` operation can be paginated, you can use the
+            call ``client.get_paginator("create_foo")``.
+
+        :return: ``True`` if the operation can be paginated,
+            ``False`` otherwise.
+
+        """
+        if 'page_config' not in self._cache:
+            try:
+                page_config = self._loader.load_service_model(
+                    self._service_model.service_name,
+                    'paginators-1',
+                    self._service_model.api_version)['pagination']
+                self._cache['page_config'] = page_config
+            except DataNotFoundError:
+                self._cache['page_config'] = {}
+        actual_operation_name = self._PY_TO_OP_NAME[operation_name]
+        return actual_operation_name in self._cache['page_config']
+
+    def _get_waiter_config(self):
+        if 'waiter_config' not in self._cache:
+            try:
+                waiter_config = self._loader.load_service_model(
+                    self._service_model.service_name,
+                    'waiters-2',
+                    self._service_model.api_version)
+                self._cache['waiter_config'] = waiter_config
+            except DataNotFoundError:
+                self._cache['waiter_config'] = {}
+        return self._cache['waiter_config']
+
+    def get_waiter(self, waiter_name):
+        """Returns an object that can wait for some condition.
+
+        :type waiter_name: str
+        :param waiter_name: The name of the waiter to get. See the waiters
+            section of the service docs for a list of available waiters.
+
+        :returns: The specified waiter object.
+        :rtype: botocore.waiter.Waiter
+        """
+        config = self._get_waiter_config()
+        if not config:
+            raise ValueError("Waiter does not exist: %s" % waiter_name)
+        model = waiter.WaiterModel(config)
+        mapping = {}
+        for name in model.waiter_names:
+            mapping[xform_name(name)] = name
+        if waiter_name not in mapping:
+            raise ValueError("Waiter does not exist: %s" % waiter_name)
+
+        return waiter.create_waiter_with_client(
+            mapping[waiter_name], model, self)
+
+    @CachedProperty
+    def waiter_names(self):
+        """Returns a list of all available waiters."""
+        config = self._get_waiter_config()
+        if not config:
+            return []
+        model = waiter.WaiterModel(config)
+        # Waiter configs is a dict, we just want the waiter names
+        # which are the keys in the dict.
+        return [xform_name(name) for name in model.waiter_names]
+
+    @property
+    def exceptions(self):
+        if self._exceptions is None:
+            self._exceptions = self._load_exceptions()
+        return self._exceptions
+
+    def _load_exceptions(self):
+        return self._exceptions_factory.create_client_exceptions(
+            self._service_model)
+
+
+class ClientMeta(object):
+    """Holds additional client methods.
+
+    This class holds additional information for clients.  It exists for
+    two reasons:
+
+        * To give advanced functionality to clients
+        * To namespace additional client attributes from the operation
+          names which are mapped to methods at runtime.  This avoids
+          ever running into collisions with operation names.
+
+    """
+
+    def __init__(self, events, client_config, endpoint_url, service_model,
+                 method_to_api_mapping, partition):
+        self.events = events
+        self._client_config = client_config
+        self._endpoint_url = endpoint_url
+        self._service_model = service_model
+        self._method_to_api_mapping = method_to_api_mapping
+        self._partition = partition
+
+    @property
+    def service_model(self):
+        return self._service_model
+
+    @property
+    def region_name(self):
+        return self._client_config.region_name
+
+    @property
+    def endpoint_url(self):
+        return self._endpoint_url
+
+    @property
+    def config(self):
+        return self._client_config
+
+    @property
+    def method_to_api_mapping(self):
+        return self._method_to_api_mapping
+
+    @property
+    def partition(self):
+        return self._partition
+
+
+def _get_configured_signature_version(service_name, client_config,
+                                      scoped_config):
+    """
+    Gets the manually configured signature version.
+
+    :returns: the customer configured signature version, or None if no
+        signature version was configured.
+    """
+    # Client config overrides everything.
+    if client_config and client_config.signature_version is not None:
+        return client_config.signature_version
+
+    # Scoped config overrides picking from the endpoint metadata.
+    if scoped_config is not None:
+        # A given service may have service specific configuration in the
+        # config file, so we need to check there as well.
+        service_config = scoped_config.get(service_name)
+        if service_config is not None and isinstance(service_config, dict):
+            version = service_config.get('signature_version')
+            if version:
+                logger.debug(
+                    "Switching signature version for service %s "
+                    "to version %s based on config file override.",
+                    service_name, version)
+                return version
+    return None

+ 361 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/compat.py

@@ -0,0 +1,361 @@
+# Copyright 2012-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"). You
+# may not use this file except in compliance with the License. A copy of
+# the License is located at
+#
+# http://aws.amazon.com/apache2.0/
+#
+# or in the "license" file accompanying this file. This file is
+# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+# ANY KIND, either express or implied. See the License for the specific
+# language governing permissions and limitations under the License.
+
+import copy
+import datetime
+import sys
+import inspect
+import warnings
+import hashlib
+import logging
+import shlex
+import os
+from math import floor
+
+from botocore.vendored import six
+from botocore.exceptions import MD5UnavailableError
+from dateutil.tz import tzlocal
+from urllib3 import exceptions
+
+logger = logging.getLogger(__name__)
+
+
+if six.PY3:
+    from botocore.vendored.six.moves import http_client
+
+    class HTTPHeaders(http_client.HTTPMessage):
+        pass
+
+    from urllib.parse import quote
+    from urllib.parse import urlencode
+    from urllib.parse import unquote
+    from urllib.parse import unquote_plus
+    from urllib.parse import urlparse
+    from urllib.parse import urlsplit
+    from urllib.parse import urlunsplit
+    from urllib.parse import urljoin
+    from urllib.parse import parse_qsl
+    from urllib.parse import parse_qs
+    from http.client import HTTPResponse
+    from io import IOBase as _IOBase
+    from base64 import encodebytes
+    from email.utils import formatdate
+    from itertools import zip_longest
+    file_type = _IOBase
+    zip = zip
+
+    # In python3, unquote takes a str() object, url decodes it,
+    # then takes the bytestring and decodes it to utf-8.
+    # Python2 we'll have to do this ourself (see below).
+    unquote_str = unquote_plus
+
+    def set_socket_timeout(http_response, timeout):
+        """Set the timeout of the socket from an HTTPResponse.
+
+        :param http_response: An instance of ``httplib.HTTPResponse``
+
+        """
+        http_response._fp.fp.raw._sock.settimeout(timeout)
+
+    def accepts_kwargs(func):
+        # In python3.4.1, there's backwards incompatible
+        # changes when using getargspec with functools.partials.
+        return inspect.getfullargspec(func)[2]
+
+    def ensure_unicode(s, encoding=None, errors=None):
+        # NOOP in Python 3, because every string is already unicode
+        return s
+
+    def ensure_bytes(s, encoding='utf-8', errors='strict'):
+        if isinstance(s, str):
+            return s.encode(encoding, errors)
+        if isinstance(s, bytes):
+            return s
+        raise ValueError("Expected str or bytes, received %s." % type(s))
+
+else:
+    from urllib import quote
+    from urllib import urlencode
+    from urllib import unquote
+    from urllib import unquote_plus
+    from urlparse import urlparse
+    from urlparse import urlsplit
+    from urlparse import urlunsplit
+    from urlparse import urljoin
+    from urlparse import parse_qsl
+    from urlparse import parse_qs
+    from email.message import Message
+    from email.Utils import formatdate
+    file_type = file
+    from itertools import izip as zip
+    from itertools import izip_longest as zip_longest
+    from httplib import HTTPResponse
+    from base64 import encodestring as encodebytes
+
+    class HTTPHeaders(Message):
+
+        # The __iter__ method is not available in python2.x, so we have
+        # to port the py3 version.
+        def __iter__(self):
+            for field, value in self._headers:
+                yield field
+
+    def unquote_str(value, encoding='utf-8'):
+        # In python2, unquote() gives us a string back that has the urldecoded
+        # bits, but not the unicode parts.  We need to decode this manually.
+        # unquote has special logic in which if it receives a unicode object it
+        # will decode it to latin1.  This is hard coded.  To avoid this, we'll
+        # encode the string with the passed in encoding before trying to
+        # unquote it.
+        byte_string = value.encode(encoding)
+        return unquote_plus(byte_string).decode(encoding)
+
+    def set_socket_timeout(http_response, timeout):
+        """Set the timeout of the socket from an HTTPResponse.
+
+        :param http_response: An instance of ``httplib.HTTPResponse``
+
+        """
+        http_response._fp.fp._sock.settimeout(timeout)
+
+    def accepts_kwargs(func):
+        return inspect.getargspec(func)[2]
+
+    def ensure_unicode(s, encoding='utf-8', errors='strict'):
+        if isinstance(s, six.text_type):
+            return s
+        return unicode(s, encoding, errors)
+
+    def ensure_bytes(s, encoding='utf-8', errors='strict'):
+        if isinstance(s, unicode):
+            return s.encode(encoding, errors)
+        if isinstance(s, str):
+            return s
+        raise ValueError("Expected str or unicode, received %s." % type(s))
+
+
+from collections import OrderedDict
+
+
+try:
+    import xml.etree.cElementTree as ETree
+except ImportError:
+    # cElementTree does not exist from Python3.9+
+    import xml.etree.ElementTree as ETree
+XMLParseError = ETree.ParseError
+import json
+
+
+def filter_ssl_warnings():
+    # Ignore warnings related to SNI as it is not being used in validations.
+    warnings.filterwarnings(
+        'ignore',
+        message="A true SSLContext object is not available.*",
+        category=exceptions.InsecurePlatformWarning,
+        module=r".*urllib3\.util\.ssl_")
+
+
+@classmethod
+def from_dict(cls, d):
+    new_instance = cls()
+    for key, value in d.items():
+        new_instance[key] = value
+    return new_instance
+
+
+@classmethod
+def from_pairs(cls, pairs):
+    new_instance = cls()
+    for key, value in pairs:
+        new_instance[key] = value
+    return new_instance
+
+HTTPHeaders.from_dict = from_dict
+HTTPHeaders.from_pairs = from_pairs
+
+
+def copy_kwargs(kwargs):
+    """
+    This used to be a compat shim for 2.6 but is now just an alias.
+    """
+    copy_kwargs = copy.copy(kwargs)
+    return copy_kwargs
+
+
+def total_seconds(delta):
+    """
+    Returns the total seconds in a ``datetime.timedelta``.
+
+    This used to be a compat shim for 2.6 but is now just an alias.
+
+    :param delta: The timedelta object
+    :type delta: ``datetime.timedelta``
+    """
+    return delta.total_seconds()
+
+
+# Checks to see if md5 is available on this system. A given system might not
+# have access to it for various reasons, such as FIPS mode being enabled.
+try:
+    hashlib.md5()
+    MD5_AVAILABLE = True
+except ValueError:
+    MD5_AVAILABLE = False
+
+
+def get_md5(*args, **kwargs):
+    """
+    Attempts to get an md5 hashing object.
+
+    :param raise_error_if_unavailable: raise an error if md5 is unavailable on
+        this system. If False, None will be returned if it is unavailable.
+    :type raise_error_if_unavailable: bool
+    :param args: Args to pass to the MD5 constructor
+    :param kwargs: Key word arguments to pass to the MD5 constructor
+    :return: An MD5 hashing object if available. If it is unavailable, None
+        is returned if raise_error_if_unavailable is set to False.
+    """
+    if MD5_AVAILABLE:
+        return hashlib.md5(*args, **kwargs)
+    else:
+        raise MD5UnavailableError()
+
+
+def compat_shell_split(s, platform=None):
+    if platform is None:
+        platform = sys.platform
+
+    if platform == "win32":
+        return _windows_shell_split(s)
+    else:
+        return shlex.split(s)
+
+
+def _windows_shell_split(s):
+    """Splits up a windows command as the built-in command parser would.
+
+    Windows has potentially bizarre rules depending on where you look. When
+    spawning a process via the Windows C runtime (which is what python does
+    when you call popen) the rules are as follows:
+
+    https://docs.microsoft.com/en-us/cpp/cpp/parsing-cpp-command-line-arguments
+
+    To summarize:
+
+    * Only space and tab are valid delimiters
+    * Double quotes are the only valid quotes
+    * Backslash is interpreted literally unless it is part of a chain that
+      leads up to a double quote. Then the backslashes escape the backslashes,
+      and if there is an odd number the final backslash escapes the quote.
+
+    :param s: The command string to split up into parts.
+    :return: A list of command components.
+    """
+    if not s:
+        return []
+
+    components = []
+    buff = []
+    is_quoted = False
+    num_backslashes = 0
+    for character in s:
+        if character == '\\':
+            # We can't simply append backslashes because we don't know if
+            # they are being used as escape characters or not. Instead we
+            # keep track of how many we've encountered and handle them when
+            # we encounter a different character.
+            num_backslashes += 1
+        elif character == '"':
+            if num_backslashes > 0:
+                # The backslashes are in a chain leading up to a double
+                # quote, so they are escaping each other.
+                buff.append('\\' * int(floor(num_backslashes / 2)))
+                remainder = num_backslashes % 2
+                num_backslashes = 0
+                if remainder == 1:
+                    # The number of backslashes is uneven, so they are also
+                    # escaping the double quote, so it needs to be added to
+                    # the current component buffer.
+                    buff.append('"')
+                    continue
+
+            # We've encountered a double quote that is not escaped,
+            # so we toggle is_quoted.
+            is_quoted = not is_quoted
+
+            # If there are quotes, then we may want an empty string. To be
+            # safe, we add an empty string to the buffer so that we make
+            # sure it sticks around if there's nothing else between quotes.
+            # If there is other stuff between quotes, the empty string will
+            # disappear during the joining process.
+            buff.append('')
+        elif character in [' ', '\t'] and not is_quoted:
+            # Since the backslashes aren't leading up to a quote, we put in
+            # the exact number of backslashes.
+            if num_backslashes > 0:
+                buff.append('\\' * num_backslashes)
+                num_backslashes = 0
+
+            # Excess whitespace is ignored, so only add the components list
+            # if there is anything in the buffer.
+            if buff:
+                components.append(''.join(buff))
+                buff = []
+        else:
+            # Since the backslashes aren't leading up to a quote, we put in
+            # the exact number of backslashes.
+            if num_backslashes > 0:
+                buff.append('\\' * num_backslashes)
+                num_backslashes = 0
+            buff.append(character)
+
+    # Quotes must be terminated.
+    if is_quoted:
+        raise ValueError('No closing quotation in string: %s' % s)
+
+    # There may be some leftover backslashes, so we need to add them in.
+    # There's no quote so we add the exact number.
+    if num_backslashes > 0:
+        buff.append('\\' * num_backslashes)
+
+    # Add the final component in if there is anything in the buffer.
+    if buff:
+        components.append(''.join(buff))
+
+    return components
+
+
+def get_tzinfo_options():
+    # Due to dateutil/dateutil#197, Windows may fail to parse times in the past
+    # with the system clock. We can alternatively fallback to tzwininfo when
+    # this happens, which will get time info from the Windows registry.
+    if sys.platform == 'win32':
+        from dateutil.tz import tzwinlocal
+        return (tzlocal, tzwinlocal)
+    else:
+        return (tzlocal,)
+
+
+try:
+    from collections.abc import MutableMapping
+except ImportError:
+    from collections import MutableMapping
+
+# Detect if CRT is available for use
+try:
+    import awscrt.auth
+    # Allow user opt-out if needed
+    disabled = os.environ.get('BOTO_DISABLE_CRT', "false")
+    HAS_CRT = not disabled.lower() == 'true'
+except ImportError:
+    HAS_CRT = False

+ 290 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/config.py

@@ -0,0 +1,290 @@
+# Copyright 2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"). You
+# may not use this file except in compliance with the License. A copy of
+# the License is located at
+#
+# http://aws.amazon.com/apache2.0/
+#
+# or in the "license" file accompanying this file. This file is
+# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+# ANY KIND, either express or implied. See the License for the specific
+# language governing permissions and limitations under the License.
+import copy
+from botocore.compat import OrderedDict
+
+from botocore.endpoint import DEFAULT_TIMEOUT, MAX_POOL_CONNECTIONS
+from botocore.exceptions import InvalidS3AddressingStyleError
+from botocore.exceptions import InvalidRetryConfigurationError
+from botocore.exceptions import InvalidMaxRetryAttemptsError
+from botocore.exceptions import InvalidRetryModeError
+
+
+class Config(object):
+    """Advanced configuration for Botocore clients.
+
+    :type region_name: str
+    :param region_name: The region to use in instantiating the client
+
+    :type signature_version: str
+    :param signature_version: The signature version when signing requests.
+
+    :type user_agent: str
+    :param user_agent: The value to use in the User-Agent header.
+
+    :type user_agent_extra: str
+    :param user_agent_extra: The value to append to the current User-Agent
+        header value.
+
+    :type connect_timeout: float or int
+    :param connect_timeout: The time in seconds till a timeout exception is
+        thrown when attempting to make a connection. The default is 60
+        seconds.
+
+    :type read_timeout: float or int
+    :param read_timeout: The time in seconds till a timeout exception is
+        thrown when attempting to read from a connection. The default is
+        60 seconds.
+
+    :type parameter_validation: bool
+    :param parameter_validation: Whether parameter validation should occur
+        when serializing requests. The default is True.  You can disable
+        parameter validation for performance reasons.  Otherwise, it's
+        recommended to leave parameter validation enabled.
+
+    :type max_pool_connections: int
+    :param max_pool_connections: The maximum number of connections to
+        keep in a connection pool.  If this value is not set, the default
+        value of 10 is used.
+
+    :type proxies: dict
+    :param proxies: A dictionary of proxy servers to use by protocol or
+        endpoint, e.g.:
+        {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}.
+        The proxies are used on each request.
+
+    :type proxies_config: dict
+    :param proxies_config: A dictionary of additional proxy configurations.
+        Valid keys are:
+
+        * 'proxy_ca_bundle' -- The path to a custom certificate bundle to use
+          when establishing SSL/TLS connections with proxy.
+
+        * 'proxy_client_cert' -- The path to a certificate for proxy
+          TLS client authentication.
+
+          When a str is provided it is treated as a path to a proxy client
+          certificate. When a two element tuple is provided, it will be
+          interpreted as the path to the client certificate, and the path
+          to the certificate key.
+
+        * 'proxy_use_forwarding_for_https' -- For HTTPS proxies,
+          forward your requests to HTTPS destinations with an absolute
+          URI. We strongly recommend you only use this option with
+          trusted or corporate proxies. Value must be boolean.
+
+    :type s3: dict
+    :param s3: A dictionary of s3 specific configurations.
+        Valid keys are:
+
+        * 'use_accelerate_endpoint' -- Refers to whether to use the S3
+          Accelerate endpoint. The value must be a boolean. If True, the
+          client will use the S3 Accelerate endpoint. If the S3 Accelerate
+          endpoint is being used then the addressing style will always
+          be virtual.
+
+        * 'payload_signing_enabled' -- Refers to whether or not to SHA256
+          sign sigv4 payloads. By default, this is disabled for streaming
+          uploads (UploadPart and PutObject).
+
+        * 'addressing_style' -- Refers to the style in which to address
+          s3 endpoints. Values must be a string that equals:
+
+          * auto -- Addressing style is chosen for user. Depending
+            on the configuration of client, the endpoint may be addressed in
+            the virtual or the path style. Note that this is the default
+            behavior if no style is specified.
+
+          * virtual -- Addressing style is always virtual. The name of the
+            bucket must be DNS compatible or an exception will be thrown.
+            Endpoints will be addressed as such: mybucket.s3.amazonaws.com
+
+          * path -- Addressing style is always by path. Endpoints will be
+            addressed as such: s3.amazonaws.com/mybucket
+
+        * 'us_east_1_regional_endpoint' - Refers to what S3 endpoint to use
+          when the region is configured to be us-east-1. Values must be a
+          string that equals:
+
+           * regional -- Use the us-east-1.amazonaws.com endpoint if the
+             client is configured to use the us-east-1 region.
+
+           * legacy -- Use the s3.amazonaws.com endpoint if the client is
+             configured to use the us-east-1 region. This is the default if
+             the configuration option is not specified.
+
+
+    :type retries: dict
+    :param retries: A dictionary for retry specific configurations.
+        Valid keys are:
+
+        * 'total_max_attempts' -- An integer representing the maximum number of
+          total attempts that will be made on a single request.  This includes
+          the initial request, so a value of 1 indicates that no requests
+          will be retried.  If ``total_max_attempts`` and ``max_attempts``
+          are both provided, ``total_max_attempts`` takes precedence.
+          ``total_max_attempts`` is preferred over ``max_attempts`` because
+          it maps to the ``AWS_MAX_ATTEMPTS`` environment variable and
+          the ``max_attempts`` config file value.
+        * 'max_attempts' -- An integer representing the maximum number of
+          retry attempts that will be made on a single request. For
+          example, setting this value to 2 will result in the request
+          being retried at most two times after the initial request. Setting
+          this value to 0 will result in no retries ever being attempted on
+          the initial request. If not provided, the number of retries will
+          default to whatever is modeled, which is typically four retries.
+        * 'mode' -- A string representing the type of retry mode botocore
+          should use.  Valid values are:
+              * ``legacy`` - The pre-existing retry behavior.
+              * ``standard`` - The standardized set of retry rules.  This
+                will also default to 3 max attempts unless overridden.
+              * ``adaptive`` - Retries with additional client side throttling.
+
+    :type client_cert: str, (str, str)
+    :param client_cert: The path to a certificate for TLS client authentication.
+
+        When a str is provided it is treated as a path to a client certificate
+        to be used when creating a TLS connection.
+
+        If a client key is to be provided alongside the client certificate the
+        client_cert should be set to a tuple of length two where the first
+        element is the path to the client certificate and the second element is
+        the path to the certificate key.
+
+    :type inject_host_prefix: bool
+    :param inject_host_prefix: Whether host prefix injection should occur.
+
+        Defaults to True.
+
+        Setting this to False disables the injection of operation parameters
+        into the prefix of the hostname. This is useful for clients providing
+        custom endpoints that should not have their host prefix modified.
+    """
+    OPTION_DEFAULTS = OrderedDict([
+        ('region_name', None),
+        ('signature_version', None),
+        ('user_agent', None),
+        ('user_agent_extra', None),
+        ('connect_timeout', DEFAULT_TIMEOUT),
+        ('read_timeout', DEFAULT_TIMEOUT),
+        ('parameter_validation', True),
+        ('max_pool_connections', MAX_POOL_CONNECTIONS),
+        ('proxies', None),
+        ('proxies_config', None),
+        ('s3', None),
+        ('retries', None),
+        ('client_cert', None),
+        ('inject_host_prefix', True),
+        ('endpoint_discovery_enabled', None),
+    ])
+
+    def __init__(self, *args, **kwargs):
+        self._user_provided_options = self._record_user_provided_options(
+            args, kwargs)
+
+        # Merge the user_provided options onto the default options
+        config_vars = copy.copy(self.OPTION_DEFAULTS)
+        config_vars.update(self._user_provided_options)
+
+        # Set the attributes based on the config_vars
+        for key, value in config_vars.items():
+            setattr(self, key, value)
+
+        # Validate the s3 options
+        self._validate_s3_configuration(self.s3)
+
+        self._validate_retry_configuration(self.retries)
+
+    def _record_user_provided_options(self, args, kwargs):
+        option_order = list(self.OPTION_DEFAULTS)
+        user_provided_options = {}
+
+        # Iterate through the kwargs passed through to the constructor and
+        # map valid keys to the dictionary
+        for key, value in kwargs.items():
+            if key in self.OPTION_DEFAULTS:
+                user_provided_options[key] = value
+            # The key must exist in the available options
+            else:
+                raise TypeError(
+                    'Got unexpected keyword argument \'%s\'' % key)
+
+        # The number of args should not be longer than the allowed
+        # options
+        if len(args) > len(option_order):
+            raise TypeError(
+                'Takes at most %s arguments (%s given)' % (
+                    len(option_order), len(args)))
+
+        # Iterate through the args passed through to the constructor and map
+        # them to appropriate keys.
+        for i, arg in enumerate(args):
+            # If it a kwarg was specified for the arg, then error out
+            if option_order[i] in user_provided_options:
+                raise TypeError(
+                    'Got multiple values for keyword argument \'%s\'' % (
+                        option_order[i]))
+            user_provided_options[option_order[i]] = arg
+
+        return user_provided_options
+
+    def _validate_s3_configuration(self, s3):
+        if s3 is not None:
+            addressing_style = s3.get('addressing_style')
+            if addressing_style not in ['virtual', 'auto', 'path', None]:
+                raise InvalidS3AddressingStyleError(
+                    s3_addressing_style=addressing_style)
+
+    def _validate_retry_configuration(self, retries):
+        if retries is not None:
+            for key, value in retries.items():
+                if key not in ['max_attempts', 'mode', 'total_max_attempts']:
+                    raise InvalidRetryConfigurationError(
+                        retry_config_option=key)
+                if key == 'max_attempts' and value < 0:
+                    raise InvalidMaxRetryAttemptsError(
+                        provided_max_attempts=value,
+                        min_value=0,
+                    )
+                if key == 'total_max_attempts' and value < 1:
+                    raise InvalidMaxRetryAttemptsError(
+                        provided_max_attempts=value,
+                        min_value=1,
+                    )
+                if key == 'mode' and value not in ['legacy', 'standard',
+                                                   'adaptive']:
+                    raise InvalidRetryModeError(
+                        provided_retry_mode=value
+                    )
+
+    def merge(self, other_config):
+        """Merges the config object with another config object
+
+        This will merge in all non-default values from the provided config
+        and return a new config object
+
+        :type other_config: botocore.config.Config
+        :param other config: Another config object to merge with. The values
+            in the provided config object will take precedence in the merging
+
+        :returns: A config object built from the merged values of both
+            config objects.
+        """
+        # Make a copy of the current attributes in the config object.
+        config_options = copy.copy(self._user_provided_options)
+
+        # Merge in the user provided options from the other config
+        config_options.update(other_config._user_provided_options)
+
+        # Return a new config object with the merged properties.
+        return Config(**config_options)

+ 272 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/configloader.py

@@ -0,0 +1,272 @@
+# Copyright (c) 2012-2013 Mitch Garnaat http://garnaat.org/
+# Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"). You
+# may not use this file except in compliance with the License. A copy of
+# the License is located at
+#
+# http://aws.amazon.com/apache2.0/
+#
+# or in the "license" file accompanying this file. This file is
+# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+# ANY KIND, either express or implied. See the License for the specific
+# language governing permissions and limitations under the License.
+import os
+import shlex
+import copy
+import sys
+
+from botocore.compat import six
+
+import botocore.exceptions
+
+
+def multi_file_load_config(*filenames):
+    """Load and combine multiple INI configs with profiles.
+
+    This function will take a list of filesnames and return
+    a single dictionary that represents the merging of the loaded
+    config files.
+
+    If any of the provided filenames does not exist, then that file
+    is ignored.  It is therefore ok to provide a list of filenames,
+    some of which may not exist.
+
+    Configuration files are **not** deep merged, only the top level
+    keys are merged.  The filenames should be passed in order of
+    precedence.  The first config file has precedence over the
+    second config file, which has precedence over the third config file,
+    etc.  The only exception to this is that the "profiles" key is
+    merged to combine profiles from multiple config files into a
+    single profiles mapping.  However, if a profile is defined in
+    multiple config files, then the config file with the highest
+    precedence is used.  Profile values themselves are not merged.
+    For example::
+
+        FileA              FileB                FileC
+        [foo]             [foo]                 [bar]
+        a=1               a=2                   a=3
+                          b=2
+
+        [bar]             [baz]                [profile a]
+        a=2               a=3                  region=e
+
+        [profile a]       [profile b]          [profile c]
+        region=c          region=d             region=f
+
+    The final result of ``multi_file_load_config(FileA, FileB, FileC)``
+    would be::
+
+        {"foo": {"a": 1}, "bar": {"a": 2}, "baz": {"a": 3},
+        "profiles": {"a": {"region": "c"}}, {"b": {"region": d"}},
+                    {"c": {"region": "f"}}}
+
+    Note that the "foo" key comes from A, even though it's defined in both
+    FileA and FileB.  Because "foo" was defined in FileA first, then the values
+    for "foo" from FileA are used and the values for "foo" from FileB are
+    ignored.  Also note where the profiles originate from.  Profile "a"
+    comes FileA, profile "b" comes from FileB, and profile "c" comes
+    from FileC.
+
+    """
+    configs = []
+    profiles = []
+    for filename in filenames:
+        try:
+            loaded = load_config(filename)
+        except botocore.exceptions.ConfigNotFound:
+            continue
+        profiles.append(loaded.pop('profiles'))
+        configs.append(loaded)
+    merged_config = _merge_list_of_dicts(configs)
+    merged_profiles = _merge_list_of_dicts(profiles)
+    merged_config['profiles'] = merged_profiles
+    return merged_config
+
+
+def _merge_list_of_dicts(list_of_dicts):
+    merged_dicts = {}
+    for single_dict in list_of_dicts:
+        for key, value in single_dict.items():
+            if key not in merged_dicts:
+                merged_dicts[key] = value
+    return merged_dicts
+
+
+def load_config(config_filename):
+    """Parse a INI config with profiles.
+
+    This will parse an INI config file and map top level profiles
+    into a top level "profile" key.
+
+    If you want to parse an INI file and map all section names to
+    top level keys, use ``raw_config_parse`` instead.
+
+    """
+    parsed = raw_config_parse(config_filename)
+    return build_profile_map(parsed)
+
+
+def raw_config_parse(config_filename, parse_subsections=True):
+    """Returns the parsed INI config contents.
+
+    Each section name is a top level key.
+
+    :param config_filename: The name of the INI file to parse
+
+    :param parse_subsections: If True, parse indented blocks as
+       subsections that represent their own configuration dictionary.
+       For example, if the config file had the contents::
+
+           s3 =
+              signature_version = s3v4
+              addressing_style = path
+
+        The resulting ``raw_config_parse`` would be::
+
+            {'s3': {'signature_version': 's3v4', 'addressing_style': 'path'}}
+
+       If False, do not try to parse subsections and return the indented
+       block as its literal value::
+
+            {'s3': '\nsignature_version = s3v4\naddressing_style = path'}
+
+    :returns: A dict with keys for each profile found in the config
+        file and the value of each key being a dict containing name
+        value pairs found in that profile.
+
+    :raises: ConfigNotFound, ConfigParseError
+    """
+    config = {}
+    path = config_filename
+    if path is not None:
+        path = os.path.expandvars(path)
+        path = os.path.expanduser(path)
+        if not os.path.isfile(path):
+            raise botocore.exceptions.ConfigNotFound(path=_unicode_path(path))
+        cp = six.moves.configparser.RawConfigParser()
+        try:
+            cp.read([path])
+        except (six.moves.configparser.Error, UnicodeDecodeError):
+            raise botocore.exceptions.ConfigParseError(
+                path=_unicode_path(path))
+        else:
+            for section in cp.sections():
+                config[section] = {}
+                for option in cp.options(section):
+                    config_value = cp.get(section, option)
+                    if parse_subsections and config_value.startswith('\n'):
+                        # Then we need to parse the inner contents as
+                        # hierarchical.  We support a single level
+                        # of nesting for now.
+                        try:
+                            config_value = _parse_nested(config_value)
+                        except ValueError:
+                            raise botocore.exceptions.ConfigParseError(
+                                path=_unicode_path(path))
+                    config[section][option] = config_value
+    return config
+
+
+def _unicode_path(path):
+    if isinstance(path, six.text_type):
+        return path
+    # According to the documentation getfilesystemencoding can return None
+    # on unix in which case the default encoding is used instead.
+    filesystem_encoding = sys.getfilesystemencoding()
+    if filesystem_encoding is None:
+        filesystem_encoding = sys.getdefaultencoding()
+    return path.decode(filesystem_encoding, 'replace')
+
+
+def _parse_nested(config_value):
+    # Given a value like this:
+    # \n
+    # foo = bar
+    # bar = baz
+    # We need to parse this into
+    # {'foo': 'bar', 'bar': 'baz}
+    parsed = {}
+    for line in config_value.splitlines():
+        line = line.strip()
+        if not line:
+            continue
+        # The caller will catch ValueError
+        # and raise an appropriate error
+        # if this fails.
+        key, value = line.split('=', 1)
+        parsed[key.strip()] = value.strip()
+    return parsed
+
+
+def build_profile_map(parsed_ini_config):
+    """Convert the parsed INI config into a profile map.
+
+    The config file format requires that every profile except the
+    default to be prepended with "profile", e.g.::
+
+        [profile test]
+        aws_... = foo
+        aws_... = bar
+
+        [profile bar]
+        aws_... = foo
+        aws_... = bar
+
+        # This is *not* a profile
+        [preview]
+        otherstuff = 1
+
+        # Neither is this
+        [foobar]
+        morestuff = 2
+
+    The build_profile_map will take a parsed INI config file where each top
+    level key represents a section name, and convert into a format where all
+    the profiles are under a single top level "profiles" key, and each key in
+    the sub dictionary is a profile name.  For example, the above config file
+    would be converted from::
+
+        {"profile test": {"aws_...": "foo", "aws...": "bar"},
+         "profile bar": {"aws...": "foo", "aws...": "bar"},
+         "preview": {"otherstuff": ...},
+         "foobar": {"morestuff": ...},
+         }
+
+    into::
+
+        {"profiles": {"test": {"aws_...": "foo", "aws...": "bar"},
+                      "bar": {"aws...": "foo", "aws...": "bar"},
+         "preview": {"otherstuff": ...},
+         "foobar": {"morestuff": ...},
+        }
+
+    If there are no profiles in the provided parsed INI contents, then
+    an empty dict will be the value associated with the ``profiles`` key.
+
+    .. note::
+
+        This will not mutate the passed in parsed_ini_config.  Instead it will
+        make a deepcopy and return that value.
+
+    """
+    parsed_config = copy.deepcopy(parsed_ini_config)
+    profiles = {}
+    final_config = {}
+    for key, values in parsed_config.items():
+        if key.startswith("profile"):
+            try:
+                parts = shlex.split(key)
+            except ValueError:
+                continue
+            if len(parts) == 2:
+                profiles[parts[1]] = values
+        elif key == 'default':
+            # default section is special and is considered a profile
+            # name but we don't require you use 'profile "default"'
+            # as a section.
+            profiles[key] = values
+        else:
+            final_config[key] = values
+    final_config['profiles'] = profiles
+    return final_config

+ 560 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/configprovider.py

@@ -0,0 +1,560 @@
+# Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"). You
+# may not use this file except in compliance with the License. A copy of
+# the License is located at
+#
+# http://aws.amazon.com/apache2.0/
+#
+# or in the "license" file accompanying this file. This file is
+# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+# ANY KIND, either express or implied. See the License for the specific
+# language governing permissions and limitations under the License.
+"""This module contains the inteface for controlling how configuration
+is loaded.
+"""
+import logging
+import os
+
+from botocore import utils
+
+
+logger = logging.getLogger(__name__)
+
+
+#: A default dictionary that maps the logical names for session variables
+#: to the specific environment variables and configuration file names
+#: that contain the values for these variables.
+#: When creating a new Session object, you can pass in your own dictionary
+#: to remap the logical names or to add new logical names.  You can then
+#: get the current value for these variables by using the
+#: ``get_config_variable`` method of the :class:`botocore.session.Session`
+#: class.
+#: These form the keys of the dictionary.  The values in the dictionary
+#: are tuples of (<config_name>, <environment variable>, <default value>,
+#: <conversion func>).
+#: The conversion func is a function that takes the configuration value
+#: as an argument and returns the converted value.  If this value is
+#: None, then the configuration value is returned unmodified.  This
+#: conversion function can be used to type convert config values to
+#: values other than the default values of strings.
+#: The ``profile`` and ``config_file`` variables should always have a
+#: None value for the first entry in the tuple because it doesn't make
+#: sense to look inside the config file for the location of the config
+#: file or for the default profile to use.
+#: The ``config_name`` is the name to look for in the configuration file,
+#: the ``env var`` is the OS environment variable (``os.environ``) to
+#: use, and ``default_value`` is the value to use if no value is otherwise
+#: found.
+BOTOCORE_DEFAUT_SESSION_VARIABLES = {
+    # logical:  config_file, env_var,        default_value, conversion_func
+    'profile': (None, ['AWS_DEFAULT_PROFILE', 'AWS_PROFILE'], None, None),
+    'region': ('region', 'AWS_DEFAULT_REGION', None, None),
+    'data_path': ('data_path', 'AWS_DATA_PATH', None, None),
+    'config_file': (None, 'AWS_CONFIG_FILE', '~/.aws/config', None),
+    'ca_bundle': ('ca_bundle', 'AWS_CA_BUNDLE', None, None),
+    'api_versions': ('api_versions', None, {}, None),
+
+    # This is the shared credentials file amongst sdks.
+    'credentials_file': (None, 'AWS_SHARED_CREDENTIALS_FILE',
+                         '~/.aws/credentials', None),
+
+    # These variables only exist in the config file.
+
+    # This is the number of seconds until we time out a request to
+    # the instance metadata service.
+    'metadata_service_timeout': (
+        'metadata_service_timeout',
+        'AWS_METADATA_SERVICE_TIMEOUT', 1, int),
+    # This is the number of request attempts we make until we give
+    # up trying to retrieve data from the instance metadata service.
+    'metadata_service_num_attempts': (
+        'metadata_service_num_attempts',
+        'AWS_METADATA_SERVICE_NUM_ATTEMPTS', 1, int),
+    'ec2_metadata_service_endpoint': (
+        'ec2_metadata_service_endpoint',
+        'AWS_EC2_METADATA_SERVICE_ENDPOINT',
+        None, None),
+    'imds_use_ipv6': (
+        'imds_use_ipv6',
+        'AWS_IMDS_USE_IPV6',
+        False, None),
+    'parameter_validation': ('parameter_validation', None, True, None),
+    # Client side monitoring configurations.
+    # Note: These configurations are considered internal to botocore.
+    # Do not use them until publicly documented.
+    'csm_enabled': (
+            'csm_enabled', 'AWS_CSM_ENABLED', False, utils.ensure_boolean),
+    'csm_host': ('csm_host', 'AWS_CSM_HOST', '127.0.0.1', None),
+    'csm_port': ('csm_port', 'AWS_CSM_PORT', 31000, int),
+    'csm_client_id': ('csm_client_id', 'AWS_CSM_CLIENT_ID', '', None),
+    # Endpoint discovery configuration
+    'endpoint_discovery_enabled': (
+        'endpoint_discovery_enabled', 'AWS_ENDPOINT_DISCOVERY_ENABLED',
+        'auto', None),
+    'sts_regional_endpoints': (
+        'sts_regional_endpoints', 'AWS_STS_REGIONAL_ENDPOINTS', 'legacy',
+        None
+    ),
+    'retry_mode': ('retry_mode', 'AWS_RETRY_MODE', 'legacy', None),
+    # We can't have a default here for v1 because we need to defer to
+    # whatever the defaults are in _retry.json.
+    'max_attempts': ('max_attempts', 'AWS_MAX_ATTEMPTS', None, int),
+}
+# A mapping for the s3 specific configuration vars. These are the configuration
+# vars that typically go in the s3 section of the config file. This mapping
+# follows the same schema as the previous session variable mapping.
+DEFAULT_S3_CONFIG_VARS = {
+    'addressing_style': (
+        ('s3', 'addressing_style'), None, None, None),
+    'use_accelerate_endpoint': (
+        ('s3', 'use_accelerate_endpoint'), None, None, utils.ensure_boolean
+    ),
+    'use_dualstack_endpoint': (
+        ('s3', 'use_dualstack_endpoint'), None, None, utils.ensure_boolean
+    ),
+    'payload_signing_enabled': (
+        ('s3', 'payload_signing_enabled'), None, None, utils.ensure_boolean
+    ),
+    'use_arn_region': (
+        ['s3_use_arn_region',
+         ('s3', 'use_arn_region')],
+        'AWS_S3_USE_ARN_REGION', None, utils.ensure_boolean
+    ),
+    'us_east_1_regional_endpoint': (
+        ['s3_us_east_1_regional_endpoint',
+         ('s3', 'us_east_1_regional_endpoint')],
+        'AWS_S3_US_EAST_1_REGIONAL_ENDPOINT', None, None
+    )
+}
+# A mapping for the proxy specific configuration vars. These are
+# used to configure how botocore interacts with proxy setups while
+# sending requests.
+DEFAULT_PROXIES_CONFIG_VARS = {
+    'proxy_ca_bundle': ('proxy_ca_bundle', None, None, None),
+    'proxy_client_cert': ('proxy_client_cert', None, None, None),
+    'proxy_use_forwarding_for_https': (
+        'proxy_use_forwarding_for_https', None, None, utils.normalize_boolean),
+}
+
+def create_botocore_default_config_mapping(session):
+    chain_builder = ConfigChainFactory(session=session)
+    config_mapping = _create_config_chain_mapping(
+        chain_builder, BOTOCORE_DEFAUT_SESSION_VARIABLES)
+    config_mapping['s3'] = SectionConfigProvider(
+        's3', session, _create_config_chain_mapping(
+            chain_builder, DEFAULT_S3_CONFIG_VARS)
+    )
+    config_mapping['proxies_config'] = SectionConfigProvider(
+        'proxies_config', session, _create_config_chain_mapping(
+            chain_builder, DEFAULT_PROXIES_CONFIG_VARS)
+    )
+    return config_mapping
+
+
+def _create_config_chain_mapping(chain_builder, config_variables):
+    mapping = {}
+    for logical_name, config in config_variables.items():
+        mapping[logical_name] = chain_builder.create_config_chain(
+            instance_name=logical_name,
+            env_var_names=config[1],
+            config_property_names=config[0],
+            default=config[2],
+            conversion_func=config[3]
+        )
+    return mapping
+
+
+class ConfigChainFactory(object):
+    """Factory class to create our most common configuration chain case.
+
+    This is a convenience class to construct configuration chains that follow
+    our most common pattern. This is to prevent ordering them incorrectly,
+    and to make the config chain construction more readable.
+    """
+    def __init__(self, session, environ=None):
+        """Initialize a ConfigChainFactory.
+
+        :type session: :class:`botocore.session.Session`
+        :param session: This is the session that should be used to look up
+            values from the config file.
+
+        :type environ: dict
+        :param environ: A mapping to use for environment variables. If this
+            is not provided it will default to use os.environ.
+        """
+        self._session = session
+        if environ is None:
+            environ = os.environ
+        self._environ = environ
+
+    def create_config_chain(self, instance_name=None, env_var_names=None,
+                            config_property_names=None, default=None,
+                            conversion_func=None):
+        """Build a config chain following the standard botocore pattern.
+
+        In botocore most of our config chains follow the the precendence:
+        session_instance_variables, environment, config_file, default_value.
+
+        This is a convenience function for creating a chain that follow
+        that precendence.
+
+        :type instance_name: str
+        :param instance_name: This indicates what session instance variable
+            corresponds to this config value. If it is None it will not be
+            added to the chain.
+
+        :type env_var_names: str or list of str or None
+        :param env_var_names: One or more environment variable names to
+            search for this value. They are searched in order. If it is None
+            it will not be added to the chain.
+
+        :type config_property_names: str/tuple or list of str/tuple or None
+        :param config_property_names: One of more strings or tuples
+            representing the name of the key in the config file for this
+            config option. They are searched in order. If it is None it will
+            not be added to the chain.
+
+        :type default: Any
+        :param default: Any constant value to be returned.
+
+        :type conversion_func: None or callable
+        :param conversion_func: If this value is None then it has no effect on
+            the return type. Otherwise, it is treated as a function that will
+            conversion_func our provided type.
+
+        :rvalue: ConfigChain
+        :returns: A ConfigChain that resolves in the order env_var_names ->
+            config_property_name -> default. Any values that were none are
+            omitted form the chain.
+        """
+        providers = []
+        if instance_name is not None:
+            providers.append(
+                InstanceVarProvider(
+                    instance_var=instance_name,
+                    session=self._session
+                )
+            )
+        if env_var_names is not None:
+            providers.extend(self._get_env_providers(env_var_names))
+        if config_property_names is not None:
+            providers.extend(
+                self._get_scoped_config_providers(config_property_names)
+            )
+        if default is not None:
+            providers.append(ConstantProvider(value=default))
+
+        return ChainProvider(
+            providers=providers,
+            conversion_func=conversion_func,
+        )
+
+    def _get_env_providers(self, env_var_names):
+        env_var_providers = []
+        if not isinstance(env_var_names, list):
+            env_var_names = [env_var_names]
+        for env_var_name in env_var_names:
+            env_var_providers.append(
+                EnvironmentProvider(name=env_var_name, env=self._environ)
+            )
+        return env_var_providers
+
+    def _get_scoped_config_providers(self, config_property_names):
+        scoped_config_providers = []
+        if not isinstance(config_property_names, list):
+            config_property_names = [config_property_names]
+        for config_property_name in config_property_names:
+            scoped_config_providers.append(
+                ScopedConfigProvider(
+                    config_var_name=config_property_name,
+                    session=self._session,
+                )
+            )
+        return scoped_config_providers
+
+
+class ConfigValueStore(object):
+    """The ConfigValueStore object stores configuration values."""
+    def __init__(self, mapping=None):
+        """Initialize a ConfigValueStore.
+
+        :type mapping: dict
+        :param mapping: The mapping parameter is a map of string to a subclass
+            of BaseProvider. When a config variable is asked for via the
+            get_config_variable method, the corresponding provider will be
+            invoked to load the value.
+        """
+        self._overrides = {}
+        self._mapping = {}
+        if mapping is not None:
+            for logical_name, provider in mapping.items():
+                self.set_config_provider(logical_name, provider)
+
+    def get_config_variable(self, logical_name):
+        """
+        Retrieve the value associeated with the specified logical_name
+        from the corresponding provider. If no value is found None will
+        be returned.
+
+        :type logical_name: str
+        :param logical_name: The logical name of the session variable
+            you want to retrieve.  This name will be mapped to the
+            appropriate environment variable name for this session as
+            well as the appropriate config file entry.
+
+        :returns: value of variable or None if not defined.
+        """
+        if logical_name in self._overrides:
+            return self._overrides[logical_name]
+        if logical_name not in self._mapping:
+            return None
+        provider = self._mapping[logical_name]
+        return provider.provide()
+
+    def set_config_variable(self, logical_name, value):
+        """Set a configuration variable to a specific value.
+
+        By using this method, you can override the normal lookup
+        process used in ``get_config_variable`` by explicitly setting
+        a value.  Subsequent calls to ``get_config_variable`` will
+        use the ``value``.  This gives you per-session specific
+        configuration values.
+
+        ::
+            >>> # Assume logical name 'foo' maps to env var 'FOO'
+            >>> os.environ['FOO'] = 'myvalue'
+            >>> s.get_config_variable('foo')
+            'myvalue'
+            >>> s.set_config_variable('foo', 'othervalue')
+            >>> s.get_config_variable('foo')
+            'othervalue'
+
+        :type logical_name: str
+        :param logical_name: The logical name of the session variable
+            you want to set.  These are the keys in ``SESSION_VARIABLES``.
+
+        :param value: The value to associate with the config variable.
+        """
+        self._overrides[logical_name] = value
+
+    def clear_config_variable(self, logical_name):
+        """Remove an override config variable from the session.
+
+        :type logical_name: str
+        :param logical_name: The name of the parameter to clear the override
+            value from.
+        """
+        self._overrides.pop(logical_name, None)
+
+    def set_config_provider(self, logical_name, provider):
+        """Set the provider for a config value.
+
+        This provides control over how a particular configuration value is
+        loaded. This replaces the provider for ``logical_name`` with the new
+        ``provider``.
+
+        :type logical_name: str
+        :param logical_name: The name of the config value to change the config
+            provider for.
+
+        :type provider: :class:`botocore.configprovider.BaseProvider`
+        :param provider: The new provider that should be responsible for
+            providing a value for the config named ``logical_name``.
+        """
+        self._mapping[logical_name] = provider
+
+
+class BaseProvider(object):
+    """Base class for configuration value providers.
+
+    A configuration provider has some method of providing a configuration
+    value.
+    """
+    def provide(self):
+        """Provide a config value."""
+        raise NotImplementedError('provide')
+
+
+class ChainProvider(BaseProvider):
+    """This provider wraps one or more other providers.
+
+    Each provider in the chain is called, the first one returning a non-None
+    value is then returned.
+    """
+    def __init__(self, providers=None, conversion_func=None):
+        """Initalize a ChainProvider.
+
+        :type providers: list
+        :param providers: The initial list of providers to check for values
+            when invoked.
+
+        :type conversion_func: None or callable
+        :param conversion_func: If this value is None then it has no affect on
+            the return type. Otherwise, it is treated as a function that will
+            transform provided value.
+        """
+        if providers is None:
+            providers = []
+        self._providers = providers
+        self._conversion_func = conversion_func
+
+    def provide(self):
+        """Provide the value from the first provider to return non-None.
+
+        Each provider in the chain has its provide method called. The first
+        one in the chain to return a non-None value is the returned from the
+        ChainProvider. When no non-None value is found, None is returned.
+        """
+        for provider in self._providers:
+            value = provider.provide()
+            if value is not None:
+                return self._convert_type(value)
+        return None
+
+    def _convert_type(self, value):
+        if self._conversion_func is not None:
+            return self._conversion_func(value)
+        return value
+
+    def __repr__(self):
+        return '[%s]' % ', '.join([str(p) for p in self._providers])
+
+
+class InstanceVarProvider(BaseProvider):
+    """This class loads config values from the session instance vars."""
+    def __init__(self, instance_var, session):
+        """Initialize InstanceVarProvider.
+
+        :type instance_var: str
+        :param instance_var: The instance variable to load from the session.
+
+        :type session: :class:`botocore.session.Session`
+        :param session: The botocore session to get the loaded configuration
+            file variables from.
+        """
+        self._instance_var = instance_var
+        self._session = session
+
+    def provide(self):
+        """Provide a config value from the session instance vars."""
+        instance_vars = self._session.instance_variables()
+        value = instance_vars.get(self._instance_var)
+        return value
+
+    def __repr__(self):
+        return 'InstanceVarProvider(instance_var=%s, session=%s)' % (
+            self._instance_var,
+            self._session,
+        )
+
+
+class ScopedConfigProvider(BaseProvider):
+    def __init__(self, config_var_name, session):
+        """Initialize ScopedConfigProvider.
+
+        :type config_var_name: str or tuple
+        :param config_var_name: The name of the config variable to load from
+            the configuration file. If the value is a tuple, it must only
+            consist of two items, where the first item represents the section
+            and the second item represents the config var name in the section.
+
+        :type session: :class:`botocore.session.Session`
+        :param session: The botocore session to get the loaded configuration
+            file variables from.
+        """
+        self._config_var_name = config_var_name
+        self._session = session
+
+    def provide(self):
+        """Provide a value from a config file property."""
+        scoped_config = self._session.get_scoped_config()
+        if isinstance(self._config_var_name, tuple):
+            section_config = scoped_config.get(self._config_var_name[0])
+            if not isinstance(section_config, dict):
+                return None
+            return section_config.get(self._config_var_name[1])
+        return scoped_config.get(self._config_var_name)
+
+    def __repr__(self):
+        return 'ScopedConfigProvider(config_var_name=%s, session=%s)' % (
+            self._config_var_name,
+            self._session,
+        )
+
+
+class EnvironmentProvider(BaseProvider):
+    """This class loads config values from environment variables."""
+    def __init__(self, name, env):
+        """Initialize with the keys in the dictionary to check.
+
+        :type name: str
+        :param name: The key with that name will be loaded and returned.
+
+        :type env: dict
+        :param env: Environment variables dictionary to get variables from.
+        """
+        self._name = name
+        self._env = env
+
+    def provide(self):
+        """Provide a config value from a source dictionary."""
+        if self._name in self._env:
+            return self._env[self._name]
+        return None
+
+    def __repr__(self):
+        return 'EnvironmentProvider(name=%s, env=%s)' % (self._name, self._env)
+
+
+class SectionConfigProvider(BaseProvider):
+    """Provides a dictionary from a section in the scoped config
+
+    This is useful for retrieving scoped config variables (i.e. s3) that have
+    their own set of config variables and resolving logic.
+    """
+    def __init__(self, section_name, session, override_providers=None):
+        self._section_name = section_name
+        self._session = session
+        self._scoped_config_provider = ScopedConfigProvider(
+            self._section_name, self._session)
+        self._override_providers = override_providers
+        if self._override_providers is None:
+            self._override_providers = {}
+
+    def provide(self):
+        section_config = self._scoped_config_provider.provide()
+        if section_config and not isinstance(section_config, dict):
+            logger.debug("The %s config key is not a dictionary type, "
+                         "ignoring its value of: %s", self._section_name,
+                         section_config)
+            return None
+        for section_config_var, provider in self._override_providers.items():
+            provider_val = provider.provide()
+            if provider_val is not None:
+                if section_config is None:
+                    section_config = {}
+                section_config[section_config_var] = provider_val
+        return section_config
+
+    def __repr__(self):
+        return (
+            'SectionConfigProvider(section_name=%s, '
+            'session=%s, override_providers=%s)' % (
+                self._section_name, self._session,
+                self._override_providers,
+            )
+        )
+
+
+class ConstantProvider(BaseProvider):
+    """This provider provides a constant value."""
+    def __init__(self, value):
+        self._value = value
+
+    def provide(self):
+        """Provide the constant value given during initialization."""
+        return self._value
+
+    def __repr__(self):
+        return 'ConstantProvider(value=%s)' % self._value

+ 2131 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/credentials.py

@@ -0,0 +1,2131 @@
+# Copyright (c) 2012-2013 Mitch Garnaat http://garnaat.org/
+# Copyright 2012-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"). You
+# may not use this file except in compliance with the License. A copy of
+# the License is located at
+#
+# http://aws.amazon.com/apache2.0/
+#
+# or in the "license" file accompanying this file. This file is
+# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+# ANY KIND, either express or implied. See the License for the specific
+# language governing permissions and limitations under the License.
+import time
+import datetime
+import logging
+import os
+import getpass
+import threading
+import json
+import subprocess
+from collections import namedtuple
+from copy import deepcopy
+from hashlib import sha1
+
+from dateutil.parser import parse
+from dateutil.tz import tzlocal, tzutc
+
+import botocore.configloader
+import botocore.compat
+from botocore import UNSIGNED
+from botocore.compat import total_seconds
+from botocore.compat import compat_shell_split
+from botocore.config import Config
+from botocore.exceptions import UnknownCredentialError
+from botocore.exceptions import PartialCredentialsError
+from botocore.exceptions import ConfigNotFound
+from botocore.exceptions import InvalidConfigError
+from botocore.exceptions import InfiniteLoopConfigError
+from botocore.exceptions import RefreshWithMFAUnsupportedError
+from botocore.exceptions import MetadataRetrievalError
+from botocore.exceptions import CredentialRetrievalError
+from botocore.exceptions import UnauthorizedSSOTokenError
+from botocore.utils import InstanceMetadataFetcher, parse_key_val_file
+from botocore.utils import ContainerMetadataFetcher
+from botocore.utils import FileWebIdentityTokenLoader
+from botocore.utils import SSOTokenLoader
+
+
+logger = logging.getLogger(__name__)
+ReadOnlyCredentials = namedtuple('ReadOnlyCredentials',
+                                 ['access_key', 'secret_key', 'token'])
+
+
+def create_credential_resolver(session, cache=None, region_name=None):
+    """Create a default credential resolver.
+
+    This creates a pre-configured credential resolver
+    that includes the default lookup chain for
+    credentials.
+
+    """
+    profile_name = session.get_config_variable('profile') or 'default'
+    metadata_timeout = session.get_config_variable('metadata_service_timeout')
+    num_attempts = session.get_config_variable('metadata_service_num_attempts')
+    disable_env_vars = session.instance_variables().get('profile') is not None
+
+    imds_config = {
+        'ec2_metadata_service_endpoint': session.get_config_variable(
+            'ec2_metadata_service_endpoint'),
+        'imds_use_ipv6': session.get_config_variable('imds_use_ipv6')
+    }
+
+    if cache is None:
+        cache = {}
+
+    env_provider = EnvProvider()
+    container_provider = ContainerProvider()
+    instance_metadata_provider = InstanceMetadataProvider(
+        iam_role_fetcher=InstanceMetadataFetcher(
+            timeout=metadata_timeout,
+            num_attempts=num_attempts,
+            user_agent=session.user_agent(),
+            config=imds_config)
+    )
+
+    profile_provider_builder = ProfileProviderBuilder(
+        session, cache=cache, region_name=region_name)
+    assume_role_provider = AssumeRoleProvider(
+        load_config=lambda: session.full_config,
+        client_creator=_get_client_creator(session, region_name),
+        cache=cache,
+        profile_name=profile_name,
+        credential_sourcer=CanonicalNameCredentialSourcer([
+            env_provider, container_provider, instance_metadata_provider
+        ]),
+        profile_provider_builder=profile_provider_builder,
+    )
+
+    pre_profile = [
+        env_provider,
+        assume_role_provider,
+    ]
+    profile_providers = profile_provider_builder.providers(
+        profile_name=profile_name,
+        disable_env_vars=disable_env_vars,
+    )
+    post_profile = [
+        OriginalEC2Provider(),
+        BotoProvider(),
+        container_provider,
+        instance_metadata_provider,
+    ]
+    providers = pre_profile + profile_providers + post_profile
+
+    if disable_env_vars:
+        # An explicitly provided profile will negate an EnvProvider.
+        # We will defer to providers that understand the "profile"
+        # concept to retrieve credentials.
+        # The one edge case if is all three values are provided via
+        # env vars:
+        # export AWS_ACCESS_KEY_ID=foo
+        # export AWS_SECRET_ACCESS_KEY=bar
+        # export AWS_PROFILE=baz
+        # Then, just like our client() calls, the explicit credentials
+        # will take precedence.
+        #
+        # This precedence is enforced by leaving the EnvProvider in the chain.
+        # This means that the only way a "profile" would win is if the
+        # EnvProvider does not return credentials, which is what we want
+        # in this scenario.
+        providers.remove(env_provider)
+        logger.debug('Skipping environment variable credential check'
+                     ' because profile name was explicitly set.')
+
+    resolver = CredentialResolver(providers=providers)
+    return resolver
+
+
+class ProfileProviderBuilder(object):
+    """This class handles the creation of profile based providers.
+
+    NOTE: This class is only intended for internal use.
+
+    This class handles the creation and ordering of the various credential
+    providers that primarly source their configuration from the shared config.
+    This is needed to enable sharing between the default credential chain and
+    the source profile chain created by the assume role provider.
+    """
+    def __init__(self, session, cache=None, region_name=None,
+                 sso_token_cache=None):
+        self._session = session
+        self._cache = cache
+        self._region_name = region_name
+        self._sso_token_cache = sso_token_cache
+
+    def providers(self, profile_name, disable_env_vars=False):
+        return [
+            self._create_web_identity_provider(
+                profile_name, disable_env_vars,
+            ),
+            self._create_sso_provider(profile_name),
+            self._create_shared_credential_provider(profile_name),
+            self._create_process_provider(profile_name),
+            self._create_config_provider(profile_name),
+        ]
+
+    def _create_process_provider(self, profile_name):
+        return ProcessProvider(
+            profile_name=profile_name,
+            load_config=lambda: self._session.full_config,
+        )
+
+    def _create_shared_credential_provider(self, profile_name):
+        credential_file = self._session.get_config_variable('credentials_file')
+        return SharedCredentialProvider(
+            profile_name=profile_name,
+            creds_filename=credential_file,
+        )
+
+    def _create_config_provider(self, profile_name):
+        config_file = self._session.get_config_variable('config_file')
+        return ConfigProvider(
+            profile_name=profile_name,
+            config_filename=config_file,
+        )
+
+    def _create_web_identity_provider(self, profile_name, disable_env_vars):
+        return AssumeRoleWithWebIdentityProvider(
+            load_config=lambda: self._session.full_config,
+            client_creator=_get_client_creator(
+                self._session, self._region_name),
+            cache=self._cache,
+            profile_name=profile_name,
+            disable_env_vars=disable_env_vars,
+        )
+
+    def _create_sso_provider(self, profile_name):
+        return SSOProvider(
+            load_config=lambda: self._session.full_config,
+            client_creator=self._session.create_client,
+            profile_name=profile_name,
+            cache=self._cache,
+            token_cache=self._sso_token_cache,
+        )
+
+
+def get_credentials(session):
+    resolver = create_credential_resolver(session)
+    return resolver.load_credentials()
+
+
+def _local_now():
+    return datetime.datetime.now(tzlocal())
+
+
+def _parse_if_needed(value):
+    if isinstance(value, datetime.datetime):
+        return value
+    return parse(value)
+
+
+def _serialize_if_needed(value, iso=False):
+    if isinstance(value, datetime.datetime):
+        if iso:
+            return value.isoformat()
+        return value.strftime('%Y-%m-%dT%H:%M:%S%Z')
+    return value
+
+
+def _get_client_creator(session, region_name):
+    def client_creator(service_name, **kwargs):
+        create_client_kwargs = {
+            'region_name': region_name
+        }
+        create_client_kwargs.update(**kwargs)
+        return session.create_client(service_name, **create_client_kwargs)
+
+    return client_creator
+
+
+def create_assume_role_refresher(client, params):
+    def refresh():
+        response = client.assume_role(**params)
+        credentials = response['Credentials']
+        # We need to normalize the credential names to
+        # the values expected by the refresh creds.
+        return {
+            'access_key': credentials['AccessKeyId'],
+            'secret_key': credentials['SecretAccessKey'],
+            'token': credentials['SessionToken'],
+            'expiry_time': _serialize_if_needed(credentials['Expiration']),
+        }
+    return refresh
+
+
+def create_mfa_serial_refresher(actual_refresh):
+
+    class _Refresher(object):
+        def __init__(self, refresh):
+            self._refresh = refresh
+            self._has_been_called = False
+
+        def __call__(self):
+            if self._has_been_called:
+                # We can explore an option in the future to support
+                # reprompting for MFA, but for now we just error out
+                # when the temp creds expire.
+                raise RefreshWithMFAUnsupportedError()
+            self._has_been_called = True
+            return self._refresh()
+
+    return _Refresher(actual_refresh)
+
+
+class JSONFileCache(object):
+    """JSON file cache.
+    This provides a dict like interface that stores JSON serializable
+    objects.
+    The objects are serialized to JSON and stored in a file.  These
+    values can be retrieved at a later time.
+    """
+
+    CACHE_DIR = os.path.expanduser(os.path.join('~', '.aws', 'boto', 'cache'))
+
+    def __init__(self, working_dir=CACHE_DIR, dumps_func=None):
+        self._working_dir = working_dir
+        if dumps_func is None:
+            dumps_func = self._default_dumps
+        self._dumps = dumps_func
+
+    def _default_dumps(self, obj):
+        return json.dumps(obj, default=_serialize_if_needed)
+
+    def __contains__(self, cache_key):
+        actual_key = self._convert_cache_key(cache_key)
+        return os.path.isfile(actual_key)
+
+    def __getitem__(self, cache_key):
+        """Retrieve value from a cache key."""
+        actual_key = self._convert_cache_key(cache_key)
+        try:
+            with open(actual_key) as f:
+                return json.load(f)
+        except (OSError, ValueError, IOError):
+            raise KeyError(cache_key)
+
+    def __setitem__(self, cache_key, value):
+        full_key = self._convert_cache_key(cache_key)
+        try:
+            file_content = self._dumps(value)
+        except (TypeError, ValueError):
+            raise ValueError("Value cannot be cached, must be "
+                             "JSON serializable: %s" % value)
+        if not os.path.isdir(self._working_dir):
+            os.makedirs(self._working_dir)
+        with os.fdopen(os.open(full_key,
+                               os.O_WRONLY | os.O_CREAT, 0o600), 'w') as f:
+            f.truncate()
+            f.write(file_content)
+
+    def _convert_cache_key(self, cache_key):
+        full_path = os.path.join(self._working_dir, cache_key + '.json')
+        return full_path
+
+
+class Credentials(object):
+    """
+    Holds the credentials needed to authenticate requests.
+
+    :ivar access_key: The access key part of the credentials.
+    :ivar secret_key: The secret key part of the credentials.
+    :ivar token: The security token, valid only for session credentials.
+    :ivar method: A string which identifies where the credentials
+        were found.
+    """
+
+    def __init__(self, access_key, secret_key, token=None,
+                 method=None):
+        self.access_key = access_key
+        self.secret_key = secret_key
+        self.token = token
+
+        if method is None:
+            method = 'explicit'
+        self.method = method
+
+        self._normalize()
+
+    def _normalize(self):
+        # Keys would sometimes (accidentally) contain non-ascii characters.
+        # It would cause a confusing UnicodeDecodeError in Python 2.
+        # We explicitly convert them into unicode to avoid such error.
+        #
+        # Eventually the service will decide whether to accept the credential.
+        # This also complies with the behavior in Python 3.
+        self.access_key = botocore.compat.ensure_unicode(self.access_key)
+        self.secret_key = botocore.compat.ensure_unicode(self.secret_key)
+
+    def get_frozen_credentials(self):
+        return ReadOnlyCredentials(self.access_key,
+                                   self.secret_key,
+                                   self.token)
+
+
+class RefreshableCredentials(Credentials):
+    """
+    Holds the credentials needed to authenticate requests. In addition, it
+    knows how to refresh itself.
+
+    :ivar access_key: The access key part of the credentials.
+    :ivar secret_key: The secret key part of the credentials.
+    :ivar token: The security token, valid only for session credentials.
+    :ivar method: A string which identifies where the credentials
+        were found.
+    """
+    # The time at which we'll attempt to refresh, but not
+    # block if someone else is refreshing.
+    _advisory_refresh_timeout = 15 * 60
+    # The time at which all threads will block waiting for
+    # refreshed credentials.
+    _mandatory_refresh_timeout = 10 * 60
+
+    def __init__(self, access_key, secret_key, token,
+                 expiry_time, refresh_using, method,
+                 time_fetcher=_local_now):
+        self._refresh_using = refresh_using
+        self._access_key = access_key
+        self._secret_key = secret_key
+        self._token = token
+        self._expiry_time = expiry_time
+        self._time_fetcher = time_fetcher
+        self._refresh_lock = threading.Lock()
+        self.method = method
+        self._frozen_credentials = ReadOnlyCredentials(
+            access_key, secret_key, token)
+        self._normalize()
+
+    def _normalize(self):
+        self._access_key = botocore.compat.ensure_unicode(self._access_key)
+        self._secret_key = botocore.compat.ensure_unicode(self._secret_key)
+
+    @classmethod
+    def create_from_metadata(cls, metadata, refresh_using, method):
+        instance = cls(
+            access_key=metadata['access_key'],
+            secret_key=metadata['secret_key'],
+            token=metadata['token'],
+            expiry_time=cls._expiry_datetime(metadata['expiry_time']),
+            method=method,
+            refresh_using=refresh_using
+        )
+        return instance
+
+    @property
+    def access_key(self):
+        """Warning: Using this property can lead to race conditions if you
+        access another property subsequently along the refresh boundary.
+        Please use get_frozen_credentials instead.
+        """
+        self._refresh()
+        return self._access_key
+
+    @access_key.setter
+    def access_key(self, value):
+        self._access_key = value
+
+    @property
+    def secret_key(self):
+        """Warning: Using this property can lead to race conditions if you
+        access another property subsequently along the refresh boundary.
+        Please use get_frozen_credentials instead.
+        """
+        self._refresh()
+        return self._secret_key
+
+    @secret_key.setter
+    def secret_key(self, value):
+        self._secret_key = value
+
+    @property
+    def token(self):
+        """Warning: Using this property can lead to race conditions if you
+        access another property subsequently along the refresh boundary.
+        Please use get_frozen_credentials instead.
+        """
+        self._refresh()
+        return self._token
+
+    @token.setter
+    def token(self, value):
+        self._token = value
+
+    def _seconds_remaining(self):
+        delta = self._expiry_time - self._time_fetcher()
+        return total_seconds(delta)
+
+    def refresh_needed(self, refresh_in=None):
+        """Check if a refresh is needed.
+
+        A refresh is needed if the expiry time associated
+        with the temporary credentials is less than the
+        provided ``refresh_in``.  If ``time_delta`` is not
+        provided, ``self.advisory_refresh_needed`` will be used.
+
+        For example, if your temporary credentials expire
+        in 10 minutes and the provided ``refresh_in`` is
+        ``15 * 60``, then this function will return ``True``.
+
+        :type refresh_in: int
+        :param refresh_in: The number of seconds before the
+            credentials expire in which refresh attempts should
+            be made.
+
+        :return: True if refresh needed, False otherwise.
+
+        """
+        if self._expiry_time is None:
+            # No expiration, so assume we don't need to refresh.
+            return False
+
+        if refresh_in is None:
+            refresh_in = self._advisory_refresh_timeout
+        # The credentials should be refreshed if they're going to expire
+        # in less than 5 minutes.
+        if self._seconds_remaining() >= refresh_in:
+            # There's enough time left. Don't refresh.
+            return False
+        logger.debug("Credentials need to be refreshed.")
+        return True
+
+    def _is_expired(self):
+        # Checks if the current credentials are expired.
+        return self.refresh_needed(refresh_in=0)
+
+    def _refresh(self):
+        # In the common case where we don't need a refresh, we
+        # can immediately exit and not require acquiring the
+        # refresh lock.
+        if not self.refresh_needed(self._advisory_refresh_timeout):
+            return
+
+        # acquire() doesn't accept kwargs, but False is indicating
+        # that we should not block if we can't acquire the lock.
+        # If we aren't able to acquire the lock, we'll trigger
+        # the else clause.
+        if self._refresh_lock.acquire(False):
+            try:
+                if not self.refresh_needed(self._advisory_refresh_timeout):
+                    return
+                is_mandatory_refresh = self.refresh_needed(
+                    self._mandatory_refresh_timeout)
+                self._protected_refresh(is_mandatory=is_mandatory_refresh)
+                return
+            finally:
+                self._refresh_lock.release()
+        elif self.refresh_needed(self._mandatory_refresh_timeout):
+            # If we're within the mandatory refresh window,
+            # we must block until we get refreshed credentials.
+            with self._refresh_lock:
+                if not self.refresh_needed(self._mandatory_refresh_timeout):
+                    return
+                self._protected_refresh(is_mandatory=True)
+
+    def _protected_refresh(self, is_mandatory):
+        # precondition: this method should only be called if you've acquired
+        # the self._refresh_lock.
+        try:
+            metadata = self._refresh_using()
+        except Exception as e:
+            period_name = 'mandatory' if is_mandatory else 'advisory'
+            logger.warning("Refreshing temporary credentials failed "
+                           "during %s refresh period.",
+                           period_name, exc_info=True)
+            if is_mandatory:
+                # If this is a mandatory refresh, then
+                # all errors that occur when we attempt to refresh
+                # credentials are propagated back to the user.
+                raise
+            # Otherwise we'll just return.
+            # The end result will be that we'll use the current
+            # set of temporary credentials we have.
+            return
+        self._set_from_data(metadata)
+        self._frozen_credentials = ReadOnlyCredentials(
+            self._access_key, self._secret_key, self._token)
+        if self._is_expired():
+            # We successfully refreshed credentials but for whatever
+            # reason, our refreshing function returned credentials
+            # that are still expired.  In this scenario, the only
+            # thing we can do is let the user know and raise
+            # an exception.
+            msg = ("Credentials were refreshed, but the "
+                   "refreshed credentials are still expired.")
+            logger.warning(msg)
+            raise RuntimeError(msg)
+
+    @staticmethod
+    def _expiry_datetime(time_str):
+        return parse(time_str)
+
+    def _set_from_data(self, data):
+        expected_keys = ['access_key', 'secret_key', 'token', 'expiry_time']
+        if not data:
+            missing_keys = expected_keys
+        else:
+            missing_keys = [k for k in expected_keys if k not in data]
+
+        if missing_keys:
+            message = "Credential refresh failed, response did not contain: %s"
+            raise CredentialRetrievalError(
+                provider=self.method,
+                error_msg=message % ', '.join(missing_keys),
+            )
+
+        self.access_key = data['access_key']
+        self.secret_key = data['secret_key']
+        self.token = data['token']
+        self._expiry_time = parse(data['expiry_time'])
+        logger.debug("Retrieved credentials will expire at: %s",
+                     self._expiry_time)
+        self._normalize()
+
+    def get_frozen_credentials(self):
+        """Return immutable credentials.
+
+        The ``access_key``, ``secret_key``, and ``token`` properties
+        on this class will always check and refresh credentials if
+        needed before returning the particular credentials.
+
+        This has an edge case where you can get inconsistent
+        credentials.  Imagine this:
+
+            # Current creds are "t1"
+            tmp.access_key  ---> expired? no, so return t1.access_key
+            # ---- time is now expired, creds need refreshing to "t2" ----
+            tmp.secret_key  ---> expired? yes, refresh and return t2.secret_key
+
+        This means we're using the access key from t1 with the secret key
+        from t2.  To fix this issue, you can request a frozen credential object
+        which is guaranteed not to change.
+
+        The frozen credentials returned from this method should be used
+        immediately and then discarded.  The typical usage pattern would
+        be::
+
+            creds = RefreshableCredentials(...)
+            some_code = SomeSignerObject()
+            # I'm about to sign the request.
+            # The frozen credentials are only used for the
+            # duration of generate_presigned_url and will be
+            # immediately thrown away.
+            request = some_code.sign_some_request(
+                with_credentials=creds.get_frozen_credentials())
+            print("Signed request:", request)
+
+        """
+        self._refresh()
+        return self._frozen_credentials
+
+
+class DeferredRefreshableCredentials(RefreshableCredentials):
+    """Refreshable credentials that don't require initial credentials.
+
+    refresh_using will be called upon first access.
+    """
+    def __init__(self, refresh_using, method, time_fetcher=_local_now):
+        self._refresh_using = refresh_using
+        self._access_key = None
+        self._secret_key = None
+        self._token = None
+        self._expiry_time = None
+        self._time_fetcher = time_fetcher
+        self._refresh_lock = threading.Lock()
+        self.method = method
+        self._frozen_credentials = None
+
+    def refresh_needed(self, refresh_in=None):
+        if self._frozen_credentials is None:
+            return True
+        return super(DeferredRefreshableCredentials, self).refresh_needed(
+            refresh_in
+        )
+
+
+class CachedCredentialFetcher(object):
+    DEFAULT_EXPIRY_WINDOW_SECONDS = 60 * 15
+
+    def __init__(self, cache=None, expiry_window_seconds=None):
+        if cache is None:
+            cache = {}
+        self._cache = cache
+        self._cache_key = self._create_cache_key()
+        if expiry_window_seconds is None:
+            expiry_window_seconds = self.DEFAULT_EXPIRY_WINDOW_SECONDS
+        self._expiry_window_seconds = expiry_window_seconds
+
+    def _create_cache_key(self):
+        raise NotImplementedError('_create_cache_key()')
+
+    def _make_file_safe(self, filename):
+        # Replace :, path sep, and / to make it the string filename safe.
+        filename = filename.replace(':', '_').replace(os.path.sep, '_')
+        return filename.replace('/', '_')
+
+    def _get_credentials(self):
+        raise NotImplementedError('_get_credentials()')
+
+    def fetch_credentials(self):
+        return self._get_cached_credentials()
+
+    def _get_cached_credentials(self):
+        """Get up-to-date credentials.
+
+        This will check the cache for up-to-date credentials, calling assume
+        role if none are available.
+        """
+        response = self._load_from_cache()
+        if response is None:
+            response = self._get_credentials()
+            self._write_to_cache(response)
+        else:
+            logger.debug("Credentials for role retrieved from cache.")
+
+        creds = response['Credentials']
+        expiration = _serialize_if_needed(creds['Expiration'], iso=True)
+        return {
+            'access_key': creds['AccessKeyId'],
+            'secret_key': creds['SecretAccessKey'],
+            'token': creds['SessionToken'],
+            'expiry_time': expiration,
+        }
+
+    def _load_from_cache(self):
+        if self._cache_key in self._cache:
+            creds = deepcopy(self._cache[self._cache_key])
+            if not self._is_expired(creds):
+                return creds
+            else:
+                logger.debug(
+                    "Credentials were found in cache, but they are expired."
+                )
+        return None
+
+    def _write_to_cache(self, response):
+        self._cache[self._cache_key] = deepcopy(response)
+
+    def _is_expired(self, credentials):
+        """Check if credentials are expired."""
+        end_time = _parse_if_needed(credentials['Credentials']['Expiration'])
+        seconds = total_seconds(end_time - _local_now())
+        return seconds < self._expiry_window_seconds
+
+
+class BaseAssumeRoleCredentialFetcher(CachedCredentialFetcher):
+    def __init__(self, client_creator, role_arn, extra_args=None,
+                 cache=None, expiry_window_seconds=None):
+        self._client_creator = client_creator
+        self._role_arn = role_arn
+
+        if extra_args is None:
+            self._assume_kwargs = {}
+        else:
+            self._assume_kwargs = deepcopy(extra_args)
+        self._assume_kwargs['RoleArn'] = self._role_arn
+
+        self._role_session_name = self._assume_kwargs.get('RoleSessionName')
+        self._using_default_session_name = False
+        if not self._role_session_name:
+            self._generate_assume_role_name()
+
+        super(BaseAssumeRoleCredentialFetcher, self).__init__(
+            cache, expiry_window_seconds
+        )
+
+    def _generate_assume_role_name(self):
+        self._role_session_name = 'botocore-session-%s' % (int(time.time()))
+        self._assume_kwargs['RoleSessionName'] = self._role_session_name
+        self._using_default_session_name = True
+
+    def _create_cache_key(self):
+        """Create a predictable cache key for the current configuration.
+
+        The cache key is intended to be compatible with file names.
+        """
+        args = deepcopy(self._assume_kwargs)
+
+        # The role session name gets randomly generated, so we don't want it
+        # in the hash.
+        if self._using_default_session_name:
+            del args['RoleSessionName']
+
+        if 'Policy' in args:
+            # To have a predictable hash, the keys of the policy must be
+            # sorted, so we have to load it here to make sure it gets sorted
+            # later on.
+            args['Policy'] = json.loads(args['Policy'])
+
+        args = json.dumps(args, sort_keys=True)
+        argument_hash = sha1(args.encode('utf-8')).hexdigest()
+        return self._make_file_safe(argument_hash)
+
+
+class AssumeRoleCredentialFetcher(BaseAssumeRoleCredentialFetcher):
+    def __init__(self, client_creator, source_credentials, role_arn,
+                 extra_args=None, mfa_prompter=None, cache=None,
+                 expiry_window_seconds=None):
+        """
+        :type client_creator: callable
+        :param client_creator: A callable that creates a client taking
+            arguments like ``Session.create_client``.
+
+        :type source_credentials: Credentials
+        :param source_credentials: The credentials to use to create the
+            client for the call to AssumeRole.
+
+        :type role_arn: str
+        :param role_arn: The ARN of the role to be assumed.
+
+        :type extra_args: dict
+        :param extra_args: Any additional arguments to add to the assume
+            role request using the format of the botocore operation.
+            Possible keys include, but may not be limited to,
+            DurationSeconds, Policy, SerialNumber, ExternalId and
+            RoleSessionName.
+
+        :type mfa_prompter: callable
+        :param mfa_prompter: A callable that returns input provided by the
+            user (i.e raw_input, getpass.getpass, etc.).
+
+        :type cache: dict
+        :param cache: An object that supports ``__getitem__``,
+            ``__setitem__``, and ``__contains__``.  An example of this is
+            the ``JSONFileCache`` class in aws-cli.
+
+        :type expiry_window_seconds: int
+        :param expiry_window_seconds: The amount of time, in seconds,
+        """
+        self._source_credentials = source_credentials
+        self._mfa_prompter = mfa_prompter
+        if self._mfa_prompter is None:
+            self._mfa_prompter = getpass.getpass
+
+        super(AssumeRoleCredentialFetcher, self).__init__(
+            client_creator, role_arn, extra_args=extra_args,
+            cache=cache, expiry_window_seconds=expiry_window_seconds
+        )
+
+    def _get_credentials(self):
+        """Get credentials by calling assume role."""
+        kwargs = self._assume_role_kwargs()
+        client = self._create_client()
+        return client.assume_role(**kwargs)
+
+    def _assume_role_kwargs(self):
+        """Get the arguments for assume role based on current configuration."""
+        assume_role_kwargs = deepcopy(self._assume_kwargs)
+
+        mfa_serial = assume_role_kwargs.get('SerialNumber')
+
+        if mfa_serial is not None:
+            prompt = 'Enter MFA code for %s: ' % mfa_serial
+            token_code = self._mfa_prompter(prompt)
+            assume_role_kwargs['TokenCode'] = token_code
+
+        duration_seconds = assume_role_kwargs.get('DurationSeconds')
+
+        if duration_seconds is not None:
+            assume_role_kwargs['DurationSeconds'] = duration_seconds
+
+        return assume_role_kwargs
+
+    def _create_client(self):
+        """Create an STS client using the source credentials."""
+        frozen_credentials = self._source_credentials.get_frozen_credentials()
+        return self._client_creator(
+            'sts',
+            aws_access_key_id=frozen_credentials.access_key,
+            aws_secret_access_key=frozen_credentials.secret_key,
+            aws_session_token=frozen_credentials.token,
+        )
+
+
+class AssumeRoleWithWebIdentityCredentialFetcher(
+        BaseAssumeRoleCredentialFetcher
+):
+    def __init__(self, client_creator, web_identity_token_loader, role_arn,
+                 extra_args=None, cache=None, expiry_window_seconds=None):
+        """
+        :type client_creator: callable
+        :param client_creator: A callable that creates a client taking
+            arguments like ``Session.create_client``.
+
+        :type web_identity_token_loader: callable
+        :param web_identity_token_loader: A callable that takes no arguments
+        and returns a web identity token str.
+
+        :type role_arn: str
+        :param role_arn: The ARN of the role to be assumed.
+
+        :type extra_args: dict
+        :param extra_args: Any additional arguments to add to the assume
+            role request using the format of the botocore operation.
+            Possible keys include, but may not be limited to,
+            DurationSeconds, Policy, SerialNumber, ExternalId and
+            RoleSessionName.
+
+        :type cache: dict
+        :param cache: An object that supports ``__getitem__``,
+            ``__setitem__``, and ``__contains__``.  An example of this is
+            the ``JSONFileCache`` class in aws-cli.
+
+        :type expiry_window_seconds: int
+        :param expiry_window_seconds: The amount of time, in seconds,
+        """
+        self._web_identity_token_loader = web_identity_token_loader
+
+        super(AssumeRoleWithWebIdentityCredentialFetcher, self).__init__(
+            client_creator, role_arn, extra_args=extra_args,
+            cache=cache, expiry_window_seconds=expiry_window_seconds
+        )
+
+    def _get_credentials(self):
+        """Get credentials by calling assume role."""
+        kwargs = self._assume_role_kwargs()
+        # Assume role with web identity does not require credentials other than
+        # the token, explicitly configure the client to not sign requests.
+        config = Config(signature_version=UNSIGNED)
+        client = self._client_creator('sts', config=config)
+        return client.assume_role_with_web_identity(**kwargs)
+
+    def _assume_role_kwargs(self):
+        """Get the arguments for assume role based on current configuration."""
+        assume_role_kwargs = deepcopy(self._assume_kwargs)
+        identity_token = self._web_identity_token_loader()
+        assume_role_kwargs['WebIdentityToken'] = identity_token
+
+        return assume_role_kwargs
+
+
+class CredentialProvider(object):
+    # A short name to identify the provider within botocore.
+    METHOD = None
+
+    # A name to identify the provider for use in cross-sdk features like
+    # assume role's `credential_source` configuration option. These names
+    # are to be treated in a case-insensitive way. NOTE: any providers not
+    # implemented in botocore MUST prefix their canonical names with
+    # 'custom' or we DO NOT guarantee that it will work with any features
+    # that this provides.
+    CANONICAL_NAME = None
+
+    def __init__(self, session=None):
+        self.session = session
+
+    def load(self):
+        """
+        Loads the credentials from their source & sets them on the object.
+
+        Subclasses should implement this method (by reading from disk, the
+        environment, the network or wherever), returning ``True`` if they were
+        found & loaded.
+
+        If not found, this method should return ``False``, indictating that the
+        ``CredentialResolver`` should fall back to the next available method.
+
+        The default implementation does nothing, assuming the user has set the
+        ``access_key/secret_key/token`` themselves.
+
+        :returns: Whether credentials were found & set
+        :rtype: Credentials
+        """
+        return True
+
+    def _extract_creds_from_mapping(self, mapping, *key_names):
+        found = []
+        for key_name in key_names:
+            try:
+                found.append(mapping[key_name])
+            except KeyError:
+                raise PartialCredentialsError(provider=self.METHOD,
+                                              cred_var=key_name)
+        return found
+
+
+class ProcessProvider(CredentialProvider):
+
+    METHOD = 'custom-process'
+
+    def __init__(self, profile_name, load_config, popen=subprocess.Popen):
+        self._profile_name = profile_name
+        self._load_config = load_config
+        self._loaded_config = None
+        self._popen = popen
+
+    def load(self):
+        credential_process = self._credential_process
+        if credential_process is None:
+            return
+
+        creds_dict = self._retrieve_credentials_using(credential_process)
+        if creds_dict.get('expiry_time') is not None:
+            return RefreshableCredentials.create_from_metadata(
+                creds_dict,
+                lambda: self._retrieve_credentials_using(credential_process),
+                self.METHOD
+            )
+
+        return Credentials(
+            access_key=creds_dict['access_key'],
+            secret_key=creds_dict['secret_key'],
+            token=creds_dict.get('token'),
+            method=self.METHOD
+        )
+
+    def _retrieve_credentials_using(self, credential_process):
+        # We're not using shell=True, so we need to pass the
+        # command and all arguments as a list.
+        process_list = compat_shell_split(credential_process)
+        p = self._popen(process_list,
+                        stdout=subprocess.PIPE,
+                        stderr=subprocess.PIPE)
+        stdout, stderr = p.communicate()
+        if p.returncode != 0:
+            raise CredentialRetrievalError(
+                provider=self.METHOD, error_msg=stderr.decode('utf-8'))
+        parsed = botocore.compat.json.loads(stdout.decode('utf-8'))
+        version = parsed.get('Version', '<Version key not provided>')
+        if version != 1:
+            raise CredentialRetrievalError(
+                provider=self.METHOD,
+                error_msg=("Unsupported version '%s' for credential process "
+                           "provider, supported versions: 1" % version))
+        try:
+            return {
+                'access_key': parsed['AccessKeyId'],
+                'secret_key': parsed['SecretAccessKey'],
+                'token': parsed.get('SessionToken'),
+                'expiry_time': parsed.get('Expiration'),
+            }
+        except KeyError as e:
+            raise CredentialRetrievalError(
+                provider=self.METHOD,
+                error_msg="Missing required key in response: %s" % e
+            )
+
+    @property
+    def _credential_process(self):
+        if self._loaded_config is None:
+            self._loaded_config = self._load_config()
+        profile_config = self._loaded_config.get(
+            'profiles', {}).get(self._profile_name, {})
+        return profile_config.get('credential_process')
+
+
+class InstanceMetadataProvider(CredentialProvider):
+    METHOD = 'iam-role'
+    CANONICAL_NAME = 'Ec2InstanceMetadata'
+
+    def __init__(self, iam_role_fetcher):
+        self._role_fetcher = iam_role_fetcher
+
+    def load(self):
+        fetcher = self._role_fetcher
+        # We do the first request, to see if we get useful data back.
+        # If not, we'll pass & move on to whatever's next in the credential
+        # chain.
+        metadata = fetcher.retrieve_iam_role_credentials()
+        if not metadata:
+            return None
+        logger.debug('Found credentials from IAM Role: %s',
+                     metadata['role_name'])
+        # We manually set the data here, since we already made the request &
+        # have it. When the expiry is hit, the credentials will auto-refresh
+        # themselves.
+        creds = RefreshableCredentials.create_from_metadata(
+            metadata,
+            method=self.METHOD,
+            refresh_using=fetcher.retrieve_iam_role_credentials,
+        )
+        return creds
+
+
+class EnvProvider(CredentialProvider):
+    METHOD = 'env'
+    CANONICAL_NAME = 'Environment'
+    ACCESS_KEY = 'AWS_ACCESS_KEY_ID'
+    SECRET_KEY = 'AWS_SECRET_ACCESS_KEY'
+    # The token can come from either of these env var.
+    # AWS_SESSION_TOKEN is what other AWS SDKs have standardized on.
+    TOKENS = ['AWS_SECURITY_TOKEN', 'AWS_SESSION_TOKEN']
+    EXPIRY_TIME = 'AWS_CREDENTIAL_EXPIRATION'
+
+    def __init__(self, environ=None, mapping=None):
+        """
+
+        :param environ: The environment variables (defaults to
+            ``os.environ`` if no value is provided).
+        :param mapping: An optional mapping of variable names to
+            environment variable names.  Use this if you want to
+            change the mapping of access_key->AWS_ACCESS_KEY_ID, etc.
+            The dict can have up to 3 keys: ``access_key``, ``secret_key``,
+            ``session_token``.
+        """
+        if environ is None:
+            environ = os.environ
+        self.environ = environ
+        self._mapping = self._build_mapping(mapping)
+
+    def _build_mapping(self, mapping):
+        # Mapping of variable name to env var name.
+        var_mapping = {}
+        if mapping is None:
+            # Use the class var default.
+            var_mapping['access_key'] = self.ACCESS_KEY
+            var_mapping['secret_key'] = self.SECRET_KEY
+            var_mapping['token'] = self.TOKENS
+            var_mapping['expiry_time'] = self.EXPIRY_TIME
+        else:
+            var_mapping['access_key'] = mapping.get(
+                'access_key', self.ACCESS_KEY)
+            var_mapping['secret_key'] = mapping.get(
+                'secret_key', self.SECRET_KEY)
+            var_mapping['token'] = mapping.get(
+                'token', self.TOKENS)
+            if not isinstance(var_mapping['token'], list):
+                var_mapping['token'] = [var_mapping['token']]
+            var_mapping['expiry_time'] = mapping.get(
+                'expiry_time', self.EXPIRY_TIME)
+        return var_mapping
+
+    def load(self):
+        """
+        Search for credentials in explicit environment variables.
+        """
+
+        access_key = self.environ.get(self._mapping['access_key'], '')
+
+        if access_key:
+            logger.info('Found credentials in environment variables.')
+            fetcher = self._create_credentials_fetcher()
+            credentials = fetcher(require_expiry=False)
+
+            expiry_time = credentials['expiry_time']
+            if expiry_time is not None:
+                expiry_time = parse(expiry_time)
+                return RefreshableCredentials(
+                    credentials['access_key'], credentials['secret_key'],
+                    credentials['token'], expiry_time,
+                    refresh_using=fetcher, method=self.METHOD
+                )
+
+            return Credentials(
+                credentials['access_key'], credentials['secret_key'],
+                credentials['token'], method=self.METHOD
+            )
+        else:
+            return None
+
+    def _create_credentials_fetcher(self):
+        mapping = self._mapping
+        method = self.METHOD
+        environ = self.environ
+
+        def fetch_credentials(require_expiry=True):
+            credentials = {}
+
+            access_key = environ.get(mapping['access_key'], '')
+            if not access_key:
+                raise PartialCredentialsError(
+                    provider=method, cred_var=mapping['access_key'])
+            credentials['access_key'] = access_key
+
+            secret_key = environ.get(mapping['secret_key'], '')
+            if not secret_key:
+                raise PartialCredentialsError(
+                    provider=method, cred_var=mapping['secret_key'])
+            credentials['secret_key'] = secret_key
+
+            credentials['token'] = None
+            for token_env_var in mapping['token']:
+                token = environ.get(token_env_var, '')
+                if token:
+                    credentials['token'] = token
+                    break
+
+            credentials['expiry_time'] = None
+            expiry_time = environ.get(mapping['expiry_time'], '')
+            if expiry_time:
+                credentials['expiry_time'] = expiry_time
+            if require_expiry and not expiry_time:
+                raise PartialCredentialsError(
+                    provider=method, cred_var=mapping['expiry_time'])
+
+            return credentials
+
+        return fetch_credentials
+
+
+class OriginalEC2Provider(CredentialProvider):
+    METHOD = 'ec2-credentials-file'
+    CANONICAL_NAME = 'Ec2Config'
+
+    CRED_FILE_ENV = 'AWS_CREDENTIAL_FILE'
+    ACCESS_KEY = 'AWSAccessKeyId'
+    SECRET_KEY = 'AWSSecretKey'
+
+    def __init__(self, environ=None, parser=None):
+        if environ is None:
+            environ = os.environ
+        if parser is None:
+            parser = parse_key_val_file
+        self._environ = environ
+        self._parser = parser
+
+    def load(self):
+        """
+        Search for a credential file used by original EC2 CLI tools.
+        """
+        if 'AWS_CREDENTIAL_FILE' in self._environ:
+            full_path = os.path.expanduser(
+                self._environ['AWS_CREDENTIAL_FILE'])
+            creds = self._parser(full_path)
+            if self.ACCESS_KEY in creds:
+                logger.info('Found credentials in AWS_CREDENTIAL_FILE.')
+                access_key = creds[self.ACCESS_KEY]
+                secret_key = creds[self.SECRET_KEY]
+                # EC2 creds file doesn't support session tokens.
+                return Credentials(access_key, secret_key, method=self.METHOD)
+        else:
+            return None
+
+
+class SharedCredentialProvider(CredentialProvider):
+    METHOD = 'shared-credentials-file'
+    CANONICAL_NAME = 'SharedCredentials'
+
+    ACCESS_KEY = 'aws_access_key_id'
+    SECRET_KEY = 'aws_secret_access_key'
+    # Same deal as the EnvProvider above.  Botocore originally supported
+    # aws_security_token, but the SDKs are standardizing on aws_session_token
+    # so we support both.
+    TOKENS = ['aws_security_token', 'aws_session_token']
+
+    def __init__(self, creds_filename, profile_name=None, ini_parser=None):
+        self._creds_filename = creds_filename
+        if profile_name is None:
+            profile_name = 'default'
+        self._profile_name = profile_name
+        if ini_parser is None:
+            ini_parser = botocore.configloader.raw_config_parse
+        self._ini_parser = ini_parser
+
+    def load(self):
+        try:
+            available_creds = self._ini_parser(self._creds_filename)
+        except ConfigNotFound:
+            return None
+        if self._profile_name in available_creds:
+            config = available_creds[self._profile_name]
+            if self.ACCESS_KEY in config:
+                logger.info("Found credentials in shared credentials file: %s",
+                            self._creds_filename)
+                access_key, secret_key = self._extract_creds_from_mapping(
+                    config, self.ACCESS_KEY, self.SECRET_KEY)
+                token = self._get_session_token(config)
+                return Credentials(access_key, secret_key, token,
+                                   method=self.METHOD)
+
+    def _get_session_token(self, config):
+        for token_envvar in self.TOKENS:
+            if token_envvar in config:
+                return config[token_envvar]
+
+
+class ConfigProvider(CredentialProvider):
+    """INI based config provider with profile sections."""
+    METHOD = 'config-file'
+    CANONICAL_NAME = 'SharedConfig'
+
+    ACCESS_KEY = 'aws_access_key_id'
+    SECRET_KEY = 'aws_secret_access_key'
+    # Same deal as the EnvProvider above.  Botocore originally supported
+    # aws_security_token, but the SDKs are standardizing on aws_session_token
+    # so we support both.
+    TOKENS = ['aws_security_token', 'aws_session_token']
+
+    def __init__(self, config_filename, profile_name, config_parser=None):
+        """
+
+        :param config_filename: The session configuration scoped to the current
+            profile.  This is available via ``session.config``.
+        :param profile_name: The name of the current profile.
+        :param config_parser: A config parser callable.
+
+        """
+        self._config_filename = config_filename
+        self._profile_name = profile_name
+        if config_parser is None:
+            config_parser = botocore.configloader.load_config
+        self._config_parser = config_parser
+
+    def load(self):
+        """
+        If there is are credentials in the configuration associated with
+        the session, use those.
+        """
+        try:
+            full_config = self._config_parser(self._config_filename)
+        except ConfigNotFound:
+            return None
+        if self._profile_name in full_config['profiles']:
+            profile_config = full_config['profiles'][self._profile_name]
+            if self.ACCESS_KEY in profile_config:
+                logger.info("Credentials found in config file: %s",
+                            self._config_filename)
+                access_key, secret_key = self._extract_creds_from_mapping(
+                    profile_config, self.ACCESS_KEY, self.SECRET_KEY)
+                token = self._get_session_token(profile_config)
+                return Credentials(access_key, secret_key, token,
+                                   method=self.METHOD)
+        else:
+            return None
+
+    def _get_session_token(self, profile_config):
+        for token_name in self.TOKENS:
+            if token_name in profile_config:
+                return profile_config[token_name]
+
+
+class BotoProvider(CredentialProvider):
+    METHOD = 'boto-config'
+    CANONICAL_NAME = 'Boto2Config'
+
+    BOTO_CONFIG_ENV = 'BOTO_CONFIG'
+    DEFAULT_CONFIG_FILENAMES = ['/etc/boto.cfg', '~/.boto']
+    ACCESS_KEY = 'aws_access_key_id'
+    SECRET_KEY = 'aws_secret_access_key'
+
+    def __init__(self, environ=None, ini_parser=None):
+        if environ is None:
+            environ = os.environ
+        if ini_parser is None:
+            ini_parser = botocore.configloader.raw_config_parse
+        self._environ = environ
+        self._ini_parser = ini_parser
+
+    def load(self):
+        """
+        Look for credentials in boto config file.
+        """
+        if self.BOTO_CONFIG_ENV in self._environ:
+            potential_locations = [self._environ[self.BOTO_CONFIG_ENV]]
+        else:
+            potential_locations = self.DEFAULT_CONFIG_FILENAMES
+        for filename in potential_locations:
+            try:
+                config = self._ini_parser(filename)
+            except ConfigNotFound:
+                # Move on to the next potential config file name.
+                continue
+            if 'Credentials' in config:
+                credentials = config['Credentials']
+                if self.ACCESS_KEY in credentials:
+                    logger.info("Found credentials in boto config file: %s",
+                                filename)
+                    access_key, secret_key = self._extract_creds_from_mapping(
+                        credentials, self.ACCESS_KEY, self.SECRET_KEY)
+                    return Credentials(access_key, secret_key,
+                                       method=self.METHOD)
+
+
+class AssumeRoleProvider(CredentialProvider):
+    METHOD = 'assume-role'
+    # The AssumeRole provider is logically part of the SharedConfig and
+    # SharedCredentials providers. Since the purpose of the canonical name
+    # is to provide cross-sdk compatibility, calling code will need to be
+    # aware that either of those providers should be tied to the AssumeRole
+    # provider as much as possible.
+    CANONICAL_NAME = None
+    ROLE_CONFIG_VAR = 'role_arn'
+    WEB_IDENTITY_TOKE_FILE_VAR = 'web_identity_token_file'
+    # Credentials are considered expired (and will be refreshed) once the total
+    # remaining time left until the credentials expires is less than the
+    # EXPIRY_WINDOW.
+    EXPIRY_WINDOW_SECONDS = 60 * 15
+
+    def __init__(self, load_config, client_creator, cache, profile_name,
+                 prompter=getpass.getpass, credential_sourcer=None,
+                 profile_provider_builder=None):
+        """
+        :type load_config: callable
+        :param load_config: A function that accepts no arguments, and
+            when called, will return the full configuration dictionary
+            for the session (``session.full_config``).
+
+        :type client_creator: callable
+        :param client_creator: A factory function that will create
+            a client when called.  Has the same interface as
+            ``botocore.session.Session.create_client``.
+
+        :type cache: dict
+        :param cache: An object that supports ``__getitem__``,
+            ``__setitem__``, and ``__contains__``.  An example
+            of this is the ``JSONFileCache`` class in the CLI.
+
+        :type profile_name: str
+        :param profile_name: The name of the profile.
+
+        :type prompter: callable
+        :param prompter: A callable that returns input provided
+            by the user (i.e raw_input, getpass.getpass, etc.).
+
+        :type credential_sourcer: CanonicalNameCredentialSourcer
+        :param credential_sourcer: A credential provider that takes a
+            configuration, which is used to provide the source credentials
+            for the STS call.
+        """
+        #: The cache used to first check for assumed credentials.
+        #: This is checked before making the AssumeRole API
+        #: calls and can be useful if you have short lived
+        #: scripts and you'd like to avoid calling AssumeRole
+        #: until the credentials are expired.
+        self.cache = cache
+        self._load_config = load_config
+        # client_creator is a callable that creates function.
+        # It's basically session.create_client
+        self._client_creator = client_creator
+        self._profile_name = profile_name
+        self._prompter = prompter
+        # The _loaded_config attribute will be populated from the
+        # load_config() function once the configuration is actually
+        # loaded.  The reason we go through all this instead of just
+        # requiring that the loaded_config be passed to us is to that
+        # we can defer configuration loaded until we actually try
+        # to load credentials (as opposed to when the object is
+        # instantiated).
+        self._loaded_config = {}
+        self._credential_sourcer = credential_sourcer
+        self._profile_provider_builder = profile_provider_builder
+        self._visited_profiles = [self._profile_name]
+
+    def load(self):
+        self._loaded_config = self._load_config()
+        profiles = self._loaded_config.get('profiles', {})
+        profile = profiles.get(self._profile_name, {})
+        if self._has_assume_role_config_vars(profile):
+            return self._load_creds_via_assume_role(self._profile_name)
+
+    def _has_assume_role_config_vars(self, profile):
+        return (
+            self.ROLE_CONFIG_VAR in profile and
+            # We need to ensure this provider doesn't look at a profile when
+            # the profile has configuration for web identity. Simply relying on
+            # the order in the credential chain is insufficient as it doesn't
+            # prevent the case when we're doing an assume role chain.
+            self.WEB_IDENTITY_TOKE_FILE_VAR not in profile
+        )
+
+    def _load_creds_via_assume_role(self, profile_name):
+        role_config = self._get_role_config(profile_name)
+        source_credentials = self._resolve_source_credentials(
+            role_config, profile_name
+        )
+
+        extra_args = {}
+        role_session_name = role_config.get('role_session_name')
+        if role_session_name is not None:
+            extra_args['RoleSessionName'] = role_session_name
+
+        external_id = role_config.get('external_id')
+        if external_id is not None:
+            extra_args['ExternalId'] = external_id
+
+        mfa_serial = role_config.get('mfa_serial')
+        if mfa_serial is not None:
+            extra_args['SerialNumber'] = mfa_serial
+
+        duration_seconds = role_config.get('duration_seconds')
+        if duration_seconds is not None:
+            extra_args['DurationSeconds'] = duration_seconds
+
+        fetcher = AssumeRoleCredentialFetcher(
+            client_creator=self._client_creator,
+            source_credentials=source_credentials,
+            role_arn=role_config['role_arn'],
+            extra_args=extra_args,
+            mfa_prompter=self._prompter,
+            cache=self.cache,
+        )
+        refresher = fetcher.fetch_credentials
+        if mfa_serial is not None:
+            refresher = create_mfa_serial_refresher(refresher)
+
+        # The initial credentials are empty and the expiration time is set
+        # to now so that we can delay the call to assume role until it is
+        # strictly needed.
+        return DeferredRefreshableCredentials(
+            method=self.METHOD,
+            refresh_using=refresher,
+            time_fetcher=_local_now
+        )
+
+    def _get_role_config(self, profile_name):
+        """Retrieves and validates the role configuration for the profile."""
+        profiles = self._loaded_config.get('profiles', {})
+
+        profile = profiles[profile_name]
+        source_profile = profile.get('source_profile')
+        role_arn = profile['role_arn']
+        credential_source = profile.get('credential_source')
+        mfa_serial = profile.get('mfa_serial')
+        external_id = profile.get('external_id')
+        role_session_name = profile.get('role_session_name')
+        duration_seconds = profile.get('duration_seconds')
+
+        role_config = {
+            'role_arn': role_arn,
+            'external_id': external_id,
+            'mfa_serial': mfa_serial,
+            'role_session_name': role_session_name,
+            'source_profile': source_profile,
+            'credential_source': credential_source
+        }
+
+        if duration_seconds is not None:
+          try:
+            role_config['duration_seconds'] = int(duration_seconds)
+          except ValueError:
+            pass
+
+        # Either the credential source or the source profile must be
+        # specified, but not both.
+        if credential_source is not None and source_profile is not None:
+            raise InvalidConfigError(
+                error_msg=(
+                    'The profile "%s" contains both source_profile and '
+                    'credential_source.' % profile_name
+                )
+            )
+        elif credential_source is None and source_profile is None:
+            raise PartialCredentialsError(
+                provider=self.METHOD,
+                cred_var='source_profile or credential_source'
+            )
+        elif credential_source is not None:
+            self._validate_credential_source(
+                profile_name, credential_source)
+        else:
+            self._validate_source_profile(profile_name, source_profile)
+
+        return role_config
+
+    def _validate_credential_source(self, parent_profile, credential_source):
+        if self._credential_sourcer is None:
+            raise InvalidConfigError(error_msg=(
+                'The credential_source "%s" is specified in profile "%s", '
+                'but no source provider was configured.' % (
+                    credential_source, parent_profile)
+            ))
+        if not self._credential_sourcer.is_supported(credential_source):
+            raise InvalidConfigError(error_msg=(
+                'The credential source "%s" referenced in profile "%s" is not '
+                'valid.' % (credential_source, parent_profile)
+            ))
+
+    def _source_profile_has_credentials(self, profile):
+        return any([
+            self._has_static_credentials(profile),
+            self._has_assume_role_config_vars(profile),
+        ])
+
+    def _validate_source_profile(self, parent_profile_name,
+                                 source_profile_name):
+        profiles = self._loaded_config.get('profiles', {})
+        if source_profile_name not in profiles:
+            raise InvalidConfigError(
+                error_msg=(
+                    'The source_profile "%s" referenced in '
+                    'the profile "%s" does not exist.' % (
+                        source_profile_name, parent_profile_name)
+                )
+            )
+
+        source_profile = profiles[source_profile_name]
+
+        # Make sure we aren't going into an infinite loop. If we haven't
+        # visited the profile yet, we're good.
+        if source_profile_name not in self._visited_profiles:
+            return
+
+        # If we have visited the profile and the profile isn't simply
+        # referencing itself, that's an infinite loop.
+        if source_profile_name != parent_profile_name:
+            raise InfiniteLoopConfigError(
+                source_profile=source_profile_name,
+                visited_profiles=self._visited_profiles
+            )
+
+        # A profile is allowed to reference itself so that it can source
+        # static credentials and have configuration all in the same
+        # profile. This will only ever work for the top level assume
+        # role because the static credentials will otherwise take
+        # precedence.
+        if not self._has_static_credentials(source_profile):
+            raise InfiniteLoopConfigError(
+                source_profile=source_profile_name,
+                visited_profiles=self._visited_profiles
+            )
+
+    def _has_static_credentials(self, profile):
+        static_keys = ['aws_secret_access_key', 'aws_access_key_id']
+        return any(static_key in profile for static_key in static_keys)
+
+    def _resolve_source_credentials(self, role_config, profile_name):
+        credential_source = role_config.get('credential_source')
+        if credential_source is not None:
+            return self._resolve_credentials_from_source(
+                credential_source, profile_name
+            )
+
+        source_profile = role_config['source_profile']
+        self._visited_profiles.append(source_profile)
+        return self._resolve_credentials_from_profile(source_profile)
+
+    def _resolve_credentials_from_profile(self, profile_name):
+        profiles = self._loaded_config.get('profiles', {})
+        profile = profiles[profile_name]
+
+        if self._has_static_credentials(profile) and \
+                not self._profile_provider_builder:
+            # This is only here for backwards compatibility. If this provider
+            # isn't given a profile provider builder we still want to be able
+            # handle the basic static credential case as we would before the
+            # provile provider builder parameter was added.
+            return self._resolve_static_credentials_from_profile(profile)
+        elif self._has_static_credentials(profile) or \
+                not self._has_assume_role_config_vars(profile):
+            profile_providers = self._profile_provider_builder.providers(
+                profile_name=profile_name,
+                disable_env_vars=True,
+            )
+            profile_chain = CredentialResolver(profile_providers)
+            credentials = profile_chain.load_credentials()
+            if credentials is None:
+                error_message = (
+                    'The source profile "%s" must have credentials.'
+                )
+                raise InvalidConfigError(
+                    error_msg=error_message % profile_name,
+                )
+            return credentials
+
+        return self._load_creds_via_assume_role(profile_name)
+
+    def _resolve_static_credentials_from_profile(self, profile):
+        try:
+            return Credentials(
+                access_key=profile['aws_access_key_id'],
+                secret_key=profile['aws_secret_access_key'],
+                token=profile.get('aws_session_token')
+            )
+        except KeyError as e:
+            raise PartialCredentialsError(
+                provider=self.METHOD, cred_var=str(e))
+
+    def _resolve_credentials_from_source(self, credential_source,
+                                         profile_name):
+        credentials = self._credential_sourcer.source_credentials(
+            credential_source)
+        if credentials is None:
+            raise CredentialRetrievalError(
+                provider=credential_source,
+                error_msg=(
+                    'No credentials found in credential_source referenced '
+                    'in profile %s' % profile_name
+                )
+            )
+        return credentials
+
+
+class AssumeRoleWithWebIdentityProvider(CredentialProvider):
+    METHOD = 'assume-role-with-web-identity'
+    CANONICAL_NAME = None
+    _CONFIG_TO_ENV_VAR = {
+        'web_identity_token_file': 'AWS_WEB_IDENTITY_TOKEN_FILE',
+        'role_session_name': 'AWS_ROLE_SESSION_NAME',
+        'role_arn': 'AWS_ROLE_ARN',
+    }
+
+    def __init__(
+            self,
+            load_config,
+            client_creator,
+            profile_name,
+            cache=None,
+            disable_env_vars=False,
+            token_loader_cls=None,
+    ):
+        self.cache = cache
+        self._load_config = load_config
+        self._client_creator = client_creator
+        self._profile_name = profile_name
+        self._profile_config = None
+        self._disable_env_vars = disable_env_vars
+        if token_loader_cls is None:
+            token_loader_cls = FileWebIdentityTokenLoader
+        self._token_loader_cls = token_loader_cls
+
+    def load(self):
+        return self._assume_role_with_web_identity()
+
+    def _get_profile_config(self, key):
+        if self._profile_config is None:
+            loaded_config = self._load_config()
+            profiles = loaded_config.get('profiles', {})
+            self._profile_config = profiles.get(self._profile_name, {})
+        return self._profile_config.get(key)
+
+    def _get_env_config(self, key):
+        if self._disable_env_vars:
+            return None
+        env_key = self._CONFIG_TO_ENV_VAR.get(key)
+        if env_key and env_key in os.environ:
+            return os.environ[env_key]
+        return None
+
+    def _get_config(self, key):
+        env_value = self._get_env_config(key)
+        if env_value is not None:
+            return env_value
+        return self._get_profile_config(key)
+
+    def _assume_role_with_web_identity(self):
+        token_path = self._get_config('web_identity_token_file')
+        if not token_path:
+            return None
+        token_loader = self._token_loader_cls(token_path)
+
+        role_arn = self._get_config('role_arn')
+        if not role_arn:
+            error_msg = (
+                'The provided profile or the current environment is '
+                'configured to assume role with web identity but has no '
+                'role ARN configured. Ensure that the profile has the role_arn'
+                'configuration set or the AWS_ROLE_ARN env var is set.'
+            )
+            raise InvalidConfigError(error_msg=error_msg)
+
+        extra_args = {}
+        role_session_name = self._get_config('role_session_name')
+        if role_session_name is not None:
+            extra_args['RoleSessionName'] = role_session_name
+
+        fetcher = AssumeRoleWithWebIdentityCredentialFetcher(
+            client_creator=self._client_creator,
+            web_identity_token_loader=token_loader,
+            role_arn=role_arn,
+            extra_args=extra_args,
+            cache=self.cache,
+        )
+        # The initial credentials are empty and the expiration time is set
+        # to now so that we can delay the call to assume role until it is
+        # strictly needed.
+        return DeferredRefreshableCredentials(
+            method=self.METHOD,
+            refresh_using=fetcher.fetch_credentials,
+        )
+
+
+class CanonicalNameCredentialSourcer(object):
+    def __init__(self, providers):
+        self._providers = providers
+
+    def is_supported(self, source_name):
+        """Validates a given source name.
+
+        :type source_name: str
+        :param source_name: The value of credential_source in the config
+            file. This is the canonical name of the credential provider.
+
+        :rtype: bool
+        :returns: True if the credential provider is supported,
+            False otherwise.
+        """
+        return source_name in [p.CANONICAL_NAME for p in self._providers]
+
+    def source_credentials(self, source_name):
+        """Loads source credentials based on the provided configuration.
+
+        :type source_name: str
+        :param source_name: The value of credential_source in the config
+            file. This is the canonical name of the credential provider.
+
+        :rtype: Credentials
+        """
+        source = self._get_provider(source_name)
+        if isinstance(source, CredentialResolver):
+            return source.load_credentials()
+        return source.load()
+
+    def _get_provider(self, canonical_name):
+        """Return a credential provider by its canonical name.
+
+        :type canonical_name: str
+        :param canonical_name: The canonical name of the provider.
+
+        :raises UnknownCredentialError: Raised if no
+            credential provider by the provided name
+            is found.
+        """
+        provider = self._get_provider_by_canonical_name(canonical_name)
+
+        # The AssumeRole provider should really be part of the SharedConfig
+        # provider rather than being its own thing, but it is not. It is
+        # effectively part of both the SharedConfig provider and the
+        # SharedCredentials provider now due to the way it behaves.
+        # Therefore if we want either of those providers we should return
+        # the AssumeRole provider with it.
+        if canonical_name.lower() in ['sharedconfig', 'sharedcredentials']:
+            assume_role_provider = self._get_provider_by_method('assume-role')
+            if assume_role_provider is not None:
+                # The SharedConfig or SharedCredentials provider may not be
+                # present if it was removed for some reason, but the
+                # AssumeRole provider could still be present. In that case,
+                # return the assume role provider by itself.
+                if provider is None:
+                    return assume_role_provider
+
+                # If both are present, return them both as a
+                # CredentialResolver so that calling code can treat them as
+                # a single entity.
+                return CredentialResolver([assume_role_provider, provider])
+
+        if provider is None:
+            raise UnknownCredentialError(name=canonical_name)
+
+        return provider
+
+    def _get_provider_by_canonical_name(self, canonical_name):
+        """Return a credential provider by its canonical name.
+
+        This function is strict, it does not attempt to address
+        compatibility issues.
+        """
+        for provider in self._providers:
+            name = provider.CANONICAL_NAME
+            # Canonical names are case-insensitive
+            if name and name.lower() == canonical_name.lower():
+                return provider
+
+    def _get_provider_by_method(self, method):
+        """Return a credential provider by its METHOD name."""
+        for provider in self._providers:
+            if provider.METHOD == method:
+                return provider
+
+
+class ContainerProvider(CredentialProvider):
+    METHOD = 'container-role'
+    CANONICAL_NAME = 'EcsContainer'
+    ENV_VAR = 'AWS_CONTAINER_CREDENTIALS_RELATIVE_URI'
+    ENV_VAR_FULL = 'AWS_CONTAINER_CREDENTIALS_FULL_URI'
+    ENV_VAR_AUTH_TOKEN = 'AWS_CONTAINER_AUTHORIZATION_TOKEN'
+
+    def __init__(self, environ=None, fetcher=None):
+        if environ is None:
+            environ = os.environ
+        if fetcher is None:
+            fetcher = ContainerMetadataFetcher()
+        self._environ = environ
+        self._fetcher = fetcher
+
+    def load(self):
+        # This cred provider is only triggered if the self.ENV_VAR is set,
+        # which only happens if you opt into this feature.
+        if self.ENV_VAR in self._environ or self.ENV_VAR_FULL in self._environ:
+            return self._retrieve_or_fail()
+
+    def _retrieve_or_fail(self):
+        if self._provided_relative_uri():
+            full_uri = self._fetcher.full_url(self._environ[self.ENV_VAR])
+        else:
+            full_uri = self._environ[self.ENV_VAR_FULL]
+        headers = self._build_headers()
+        fetcher = self._create_fetcher(full_uri, headers)
+        creds = fetcher()
+        return RefreshableCredentials(
+            access_key=creds['access_key'],
+            secret_key=creds['secret_key'],
+            token=creds['token'],
+            method=self.METHOD,
+            expiry_time=_parse_if_needed(creds['expiry_time']),
+            refresh_using=fetcher,
+        )
+
+    def _build_headers(self):
+        headers = {}
+        auth_token = self._environ.get(self.ENV_VAR_AUTH_TOKEN)
+        if auth_token is not None:
+            return {
+                'Authorization': auth_token
+            }
+
+    def _create_fetcher(self, full_uri, headers):
+        def fetch_creds():
+            try:
+                response = self._fetcher.retrieve_full_uri(
+                    full_uri, headers=headers)
+            except MetadataRetrievalError as e:
+                logger.debug("Error retrieving container metadata: %s", e,
+                             exc_info=True)
+                raise CredentialRetrievalError(provider=self.METHOD,
+                                               error_msg=str(e))
+            return {
+                'access_key': response['AccessKeyId'],
+                'secret_key': response['SecretAccessKey'],
+                'token': response['Token'],
+                'expiry_time': response['Expiration'],
+            }
+
+        return fetch_creds
+
+    def _provided_relative_uri(self):
+        return self.ENV_VAR in self._environ
+
+
+class CredentialResolver(object):
+    def __init__(self, providers):
+        """
+
+        :param providers: A list of ``CredentialProvider`` instances.
+
+        """
+        self.providers = providers
+
+    def insert_before(self, name, credential_provider):
+        """
+        Inserts a new instance of ``CredentialProvider`` into the chain that
+        will be tried before an existing one.
+
+        :param name: The short name of the credentials you'd like to insert the
+            new credentials before. (ex. ``env`` or ``config``). Existing names
+            & ordering can be discovered via ``self.available_methods``.
+        :type name: string
+
+        :param cred_instance: An instance of the new ``Credentials`` object
+            you'd like to add to the chain.
+        :type cred_instance: A subclass of ``Credentials``
+        """
+        try:
+            offset = [p.METHOD for p in self.providers].index(name)
+        except ValueError:
+            raise UnknownCredentialError(name=name)
+        self.providers.insert(offset, credential_provider)
+
+    def insert_after(self, name, credential_provider):
+        """
+        Inserts a new type of ``Credentials`` instance into the chain that will
+        be tried after an existing one.
+
+        :param name: The short name of the credentials you'd like to insert the
+            new credentials after. (ex. ``env`` or ``config``). Existing names
+            & ordering can be discovered via ``self.available_methods``.
+        :type name: string
+
+        :param cred_instance: An instance of the new ``Credentials`` object
+            you'd like to add to the chain.
+        :type cred_instance: A subclass of ``Credentials``
+        """
+        offset = self._get_provider_offset(name)
+        self.providers.insert(offset + 1, credential_provider)
+
+    def remove(self, name):
+        """
+        Removes a given ``Credentials`` instance from the chain.
+
+        :param name: The short name of the credentials instance to remove.
+        :type name: string
+        """
+        available_methods = [p.METHOD for p in self.providers]
+        if name not in available_methods:
+            # It's not present. Fail silently.
+            return
+
+        offset = available_methods.index(name)
+        self.providers.pop(offset)
+
+    def get_provider(self, name):
+        """Return a credential provider by name.
+
+        :type name: str
+        :param name: The name of the provider.
+
+        :raises UnknownCredentialError: Raised if no
+            credential provider by the provided name
+            is found.
+        """
+        return self.providers[self._get_provider_offset(name)]
+
+    def _get_provider_offset(self, name):
+        try:
+            return [p.METHOD for p in self.providers].index(name)
+        except ValueError:
+            raise UnknownCredentialError(name=name)
+
+    def load_credentials(self):
+        """
+        Goes through the credentials chain, returning the first ``Credentials``
+        that could be loaded.
+        """
+        # First provider to return a non-None response wins.
+        for provider in self.providers:
+            logger.debug("Looking for credentials via: %s", provider.METHOD)
+            creds = provider.load()
+            if creds is not None:
+                return creds
+
+        # If we got here, no credentials could be found.
+        # This feels like it should be an exception, but historically, ``None``
+        # is returned.
+        #
+        # +1
+        # -js
+        return None
+
+
+class SSOCredentialFetcher(CachedCredentialFetcher):
+    _UTC_DATE_FORMAT = '%Y-%m-%dT%H:%M:%SZ'
+
+    def __init__(self, start_url, sso_region, role_name, account_id,
+                 client_creator, token_loader=None, cache=None,
+                 expiry_window_seconds=None):
+        self._client_creator = client_creator
+        self._sso_region = sso_region
+        self._role_name = role_name
+        self._account_id = account_id
+        self._start_url = start_url
+        self._token_loader = token_loader
+        super(SSOCredentialFetcher, self).__init__(
+            cache, expiry_window_seconds
+        )
+
+    def _create_cache_key(self):
+        """Create a predictable cache key for the current configuration.
+
+        The cache key is intended to be compatible with file names.
+        """
+        args = {
+            'startUrl': self._start_url,
+            'roleName': self._role_name,
+            'accountId': self._account_id,
+        }
+        # NOTE: It would be good to hoist this cache key construction logic
+        # into the CachedCredentialFetcher class as we should be consistent.
+        # Unfortunately, the current assume role fetchers that sub class don't
+        # pass separators resulting in non-minified JSON. In the long term,
+        # all fetchers should use the below caching scheme.
+        args = json.dumps(args, sort_keys=True, separators=(',', ':'))
+        argument_hash = sha1(args.encode('utf-8')).hexdigest()
+        return self._make_file_safe(argument_hash)
+
+    def _parse_timestamp(self, timestamp_ms):
+        # fromtimestamp expects seconds so: milliseconds / 1000 = seconds
+        timestamp_seconds = timestamp_ms / 1000.0
+        timestamp = datetime.datetime.fromtimestamp(timestamp_seconds, tzutc())
+        return timestamp.strftime(self._UTC_DATE_FORMAT)
+
+    def _get_credentials(self):
+        """Get credentials by calling SSO get role credentials."""
+        config = Config(
+            signature_version=UNSIGNED,
+            region_name=self._sso_region,
+        )
+        client = self._client_creator('sso', config=config)
+
+        kwargs = {
+            'roleName': self._role_name,
+            'accountId': self._account_id,
+            'accessToken': self._token_loader(self._start_url),
+        }
+        try:
+            response = client.get_role_credentials(**kwargs)
+        except client.exceptions.UnauthorizedException:
+            raise UnauthorizedSSOTokenError()
+        credentials = response['roleCredentials']
+
+        credentials = {
+            'ProviderType': 'sso',
+            'Credentials': {
+                'AccessKeyId': credentials['accessKeyId'],
+                'SecretAccessKey': credentials['secretAccessKey'],
+                'SessionToken': credentials['sessionToken'],
+                'Expiration': self._parse_timestamp(credentials['expiration']),
+            }
+        }
+        return credentials
+
+
+class SSOProvider(CredentialProvider):
+    METHOD = 'sso'
+
+    _SSO_TOKEN_CACHE_DIR = os.path.expanduser(
+        os.path.join('~', '.aws', 'sso', 'cache')
+    )
+    _SSO_CONFIG_VARS = [
+        'sso_start_url',
+        'sso_region',
+        'sso_role_name',
+        'sso_account_id',
+    ]
+
+    def __init__(self, load_config, client_creator, profile_name,
+                 cache=None, token_cache=None):
+        if token_cache is None:
+            token_cache = JSONFileCache(self._SSO_TOKEN_CACHE_DIR)
+        self._token_cache = token_cache
+        if cache is None:
+            cache = {}
+        self.cache = cache
+        self._load_config = load_config
+        self._client_creator = client_creator
+        self._profile_name = profile_name
+
+    def _load_sso_config(self):
+        loaded_config = self._load_config()
+        profiles = loaded_config.get('profiles', {})
+        profile_name = self._profile_name
+        profile_config = profiles.get(self._profile_name, {})
+
+        if all(c not in profile_config for c in self._SSO_CONFIG_VARS):
+            return None
+
+        config = {}
+        missing_config_vars = []
+        for config_var in self._SSO_CONFIG_VARS:
+            if config_var in profile_config:
+                config[config_var] = profile_config[config_var]
+            else:
+                missing_config_vars.append(config_var)
+
+        if missing_config_vars:
+            missing = ', '.join(missing_config_vars)
+            raise InvalidConfigError(
+                error_msg=(
+                    'The profile "%s" is configured to use SSO but is missing '
+                    'required configuration: %s' % (profile_name, missing)
+                )
+            )
+
+        return config
+
+    def load(self):
+        sso_config = self._load_sso_config()
+        if not sso_config:
+            return None
+
+        sso_fetcher = SSOCredentialFetcher(
+            sso_config['sso_start_url'],
+            sso_config['sso_region'],
+            sso_config['sso_role_name'],
+            sso_config['sso_account_id'],
+            self._client_creator,
+            token_loader=SSOTokenLoader(cache=self._token_cache),
+            cache=self.cache,
+        )
+
+        return DeferredRefreshableCredentials(
+            method=self.METHOD,
+            refresh_using=sso_fetcher.fetch_credentials,
+        )

+ 0 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/crt/__init__.py


+ 294 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/crt/auth.py

@@ -0,0 +1,294 @@
+import datetime
+from io import BytesIO
+
+from botocore.auth import (
+    _host_from_url, _get_body_as_dict, BaseSigner,
+    SIGNED_HEADERS_BLACKLIST, UNSIGNED_PAYLOAD
+)
+from botocore.compat import awscrt, HTTPHeaders, parse_qs, urlsplit, urlunsplit
+from botocore.utils import percent_encode_sequence
+from botocore.exceptions import NoCredentialsError
+
+class CrtSigV4Auth(BaseSigner):
+    REQUIRES_REGION = True
+    _PRESIGNED_HEADERS_BLACKLIST = [
+        'Authorization',
+        'X-Amz-Date',
+        'X-Amz-Content-SHA256',
+        'X-Amz-Security-Token',
+    ]
+    _SIGNATURE_TYPE = awscrt.auth.AwsSignatureType.HTTP_REQUEST_HEADERS
+    _USE_DOUBLE_URI_ENCODE = True
+    _SHOULD_NORMALIZE_URI_PATH = True
+
+    def __init__(self, credentials, service_name, region_name):
+        self.credentials = credentials
+        self._service_name = service_name
+        self._region_name = region_name
+        self._expiration_in_seconds = None
+
+    def add_auth(self, request):
+        if self.credentials is None:
+            raise NoCredentialsError()
+
+        # Use utcnow() because that's what gets mocked by tests, but set
+        # timezone because CRT assumes naive datetime is local time.
+        datetime_now = datetime.datetime.utcnow().replace(
+            tzinfo=datetime.timezone.utc)
+
+        # Use existing 'X-Amz-Content-SHA256' header if able
+        existing_sha256 = self._get_existing_sha256(request)
+
+        self._modify_request_before_signing(request)
+
+        credentials_provider = awscrt.auth.AwsCredentialsProvider.new_static(
+            access_key_id=self.credentials.access_key,
+            secret_access_key=self.credentials.secret_key,
+            session_token=self.credentials.token)
+
+        if self._should_sha256_sign_payload(request):
+            if existing_sha256:
+                explicit_payload = existing_sha256
+            else:
+                explicit_payload = None  # to be calculated during signing
+        else:
+            explicit_payload = UNSIGNED_PAYLOAD
+
+        if self._should_add_content_sha256_header(explicit_payload):
+            body_header = \
+                awscrt.auth.AwsSignedBodyHeaderType.X_AMZ_CONTENT_SHA_256
+        else:
+            body_header = awscrt.auth.AwsSignedBodyHeaderType.NONE
+
+        signing_config = awscrt.auth.AwsSigningConfig(
+            algorithm=awscrt.auth.AwsSigningAlgorithm.V4,
+            signature_type=self._SIGNATURE_TYPE,
+            credentials_provider=credentials_provider,
+            region=self._region_name,
+            service=self._service_name,
+            date=datetime_now,
+            should_sign_header=self._should_sign_header,
+            use_double_uri_encode=self._USE_DOUBLE_URI_ENCODE,
+            should_normalize_uri_path=self._SHOULD_NORMALIZE_URI_PATH,
+            signed_body_value=explicit_payload,
+            signed_body_header_type=body_header,
+            expiration_in_seconds=self._expiration_in_seconds,
+            )
+        crt_request = self._crt_request_from_aws_request(request)
+        future = awscrt.auth.aws_sign_request(crt_request, signing_config)
+        future.result()
+        self._apply_signing_changes(request, crt_request)
+
+    def _crt_request_from_aws_request(self, aws_request):
+        url_parts = urlsplit(aws_request.url)
+        crt_path = url_parts.path if url_parts.path else '/'
+        if aws_request.params:
+            array = []
+            for (param, value) in aws_request.params.items():
+                value = str(value)
+                array.append('%s=%s' % (param, value))
+            crt_path = crt_path + '?' + '&'.join(array)
+        elif url_parts.query:
+            crt_path = '%s?%s' % (crt_path, url_parts.query)
+
+        crt_headers = awscrt.http.HttpHeaders(aws_request.headers.items())
+
+        # CRT requires body (if it exists) to be an I/O stream.
+        crt_body_stream = None
+        if aws_request.body:
+            if hasattr(aws_request.body, 'seek'):
+                crt_body_stream = aws_request.body
+            else:
+                crt_body_stream = BytesIO(aws_request.body)
+
+        crt_request = awscrt.http.HttpRequest(
+            method=aws_request.method,
+            path=crt_path,
+            headers=crt_headers,
+            body_stream=crt_body_stream)
+        return crt_request
+
+    def _apply_signing_changes(self, aws_request, signed_crt_request):
+        # Apply changes from signed CRT request to the AWSRequest
+        aws_request.headers = HTTPHeaders.from_pairs(
+            list(signed_crt_request.headers))
+
+    def _should_sign_header(self, name, **kwargs):
+        return name.lower() not in SIGNED_HEADERS_BLACKLIST
+
+    def _modify_request_before_signing(self, request):
+        # This could be a retry. Make sure the previous
+        # authorization headers are removed first.
+        for h in self._PRESIGNED_HEADERS_BLACKLIST:
+            if h in request.headers:
+                del request.headers[h]
+        # If necessary, add the host header
+        if 'host' not in request.headers:
+            request.headers['host'] = _host_from_url(request.url)
+
+    def _get_existing_sha256(self, request):
+        return request.headers.get('X-Amz-Content-SHA256')
+
+    def _should_sha256_sign_payload(self, request):
+        # Payloads will always be signed over insecure connections.
+        if not request.url.startswith('https'):
+            return True
+
+        # Certain operations may have payload signing disabled by default.
+        # Since we don't have access to the operation model, we pass in this
+        # bit of metadata through the request context.
+        return request.context.get('payload_signing_enabled', True)
+
+    def _should_add_content_sha256_header(self, explicit_payload):
+        # only add X-Amz-Content-SHA256 header if payload is explicitly set
+        return explicit_payload is not None
+
+
+class CrtS3SigV4Auth(CrtSigV4Auth):
+    # For S3, we do not normalize the path.
+    _USE_DOUBLE_URI_ENCODE = False
+    _SHOULD_NORMALIZE_URI_PATH = False
+
+    def _get_existing_sha256(self, request):
+        # always recalculate
+        return None
+
+    def _should_sha256_sign_payload(self, request):
+        # S3 allows optional body signing, so to minimize the performance
+        # impact, we opt to not SHA256 sign the body on streaming uploads,
+        # provided that we're on https.
+        client_config = request.context.get('client_config')
+        s3_config = getattr(client_config, 's3', None)
+
+        # The config could be None if it isn't set, or if the customer sets it
+        # to None.
+        if s3_config is None:
+            s3_config = {}
+
+        # The explicit configuration takes precedence over any implicit
+        # configuration.
+        sign_payload = s3_config.get('payload_signing_enabled', None)
+        if sign_payload is not None:
+            return sign_payload
+
+        # We require that both content-md5 be present and https be enabled
+        # to implicitly disable body signing. The combination of TLS and
+        # content-md5 is sufficiently secure and durable for us to be
+        # confident in the request without body signing.
+        if not request.url.startswith('https') or \
+                'Content-MD5' not in request.headers:
+            return True
+
+        # If the input is streaming we disable body signing by default.
+        if request.context.get('has_streaming_input', False):
+            return False
+
+        # If the S3-specific checks had no results, delegate to the generic
+        # checks.
+        return super()._should_sha256_sign_payload(request)
+
+    def _should_add_content_sha256_header(self, explicit_payload):
+        # Always add X-Amz-Content-SHA256 header
+        return True
+
+
+class CrtSigV4QueryAuth(CrtSigV4Auth):
+    DEFAULT_EXPIRES = 3600
+    _SIGNATURE_TYPE = awscrt.auth.AwsSignatureType.HTTP_REQUEST_QUERY_PARAMS
+
+    def __init__(self, credentials, service_name, region_name,
+                 expires=DEFAULT_EXPIRES):
+        super().__init__(credentials, service_name, region_name)
+        self._expiration_in_seconds = expires
+
+    def _modify_request_before_signing(self, request):
+        super()._modify_request_before_signing(request)
+
+        # We automatically set this header, so if it's the auto-set value we
+        # want to get rid of it since it doesn't make sense for presigned urls.
+        content_type = request.headers.get('content-type')
+        if content_type == 'application/x-www-form-urlencoded; charset=utf-8':
+            del request.headers['content-type']
+
+        # Now parse the original query string to a dict, inject our new query
+        # params, and serialize back to a query string.
+        url_parts = urlsplit(request.url)
+        # parse_qs makes each value a list, but in our case we know we won't
+        # have repeated keys so we know we have single element lists which we
+        # can convert back to scalar values.
+        query_dict = dict(
+            [(k, v[0]) for k, v in
+             parse_qs(url_parts.query, keep_blank_values=True).items()])
+        # The spec is particular about this.  It *has* to be:
+        # https://<endpoint>?<operation params>&<auth params>
+        # You can't mix the two types of params together, i.e just keep doing
+        # new_query_params.update(op_params)
+        # new_query_params.update(auth_params)
+        # percent_encode_sequence(new_query_params)
+        if request.data:
+            # We also need to move the body params into the query string. To
+            # do this, we first have to convert it to a dict.
+            query_dict.update(_get_body_as_dict(request))
+            request.data = ''
+        new_query_string = percent_encode_sequence(query_dict)
+        # url_parts is a tuple (and therefore immutable) so we need to create
+        # a new url_parts with the new query string.
+        # <part>   - <index>
+        # scheme   - 0
+        # netloc   - 1
+        # path     - 2
+        # query    - 3  <-- we're replacing this.
+        # fragment - 4
+        p = url_parts
+        new_url_parts = (p[0], p[1], p[2], new_query_string, p[4])
+        request.url = urlunsplit(new_url_parts)
+
+    def _apply_signing_changes(self, aws_request, signed_crt_request):
+        # Apply changes from signed CRT request to the AWSRequest
+        super()._apply_signing_changes(aws_request, signed_crt_request)
+
+        signed_query = urlsplit(signed_crt_request.path).query
+        p = urlsplit(aws_request.url)
+        # urlsplit() returns a tuple (and therefore immutable) so we
+        # need to create new url with the new query string.
+        # <part>   - <index>
+        # scheme   - 0
+        # netloc   - 1
+        # path     - 2
+        # query    - 3  <-- we're replacing this.
+        # fragment - 4
+        aws_request.url = urlunsplit((p[0], p[1], p[2], signed_query, p[4]))
+
+
+class CrtS3SigV4QueryAuth(CrtSigV4QueryAuth):
+    """S3 SigV4 auth using query parameters.
+    This signer will sign a request using query parameters and signature
+    version 4, i.e a "presigned url" signer.
+    Based off of:
+    http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html
+    """
+
+    # For S3, we do not normalize the path.
+    _USE_DOUBLE_URI_ENCODE = False
+    _SHOULD_NORMALIZE_URI_PATH = False
+
+    def _should_sha256_sign_payload(self, request):
+        # From the doc link above:
+        # "You don't include a payload hash in the Canonical Request, because
+        # when you create a presigned URL, you don't know anything about the
+        # payload. Instead, you use a constant string "UNSIGNED-PAYLOAD".
+        return False
+
+    def _should_add_content_sha256_header(self, explicit_payload):
+        # Never add X-Amz-Content-SHA256 header
+        return False
+
+
+# Defined at the bottom of module to ensure all Auth
+# classes are defined.
+CRT_AUTH_TYPE_MAPS = {
+    'v4': CrtSigV4Auth,
+    'v4-query': CrtSigV4QueryAuth,
+    's3v4': CrtS3SigV4Auth,
+    's3v4-query': CrtS3SigV4QueryAuth,
+}

+ 292 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/_retry.json

@@ -0,0 +1,292 @@
+{
+  "definitions": {
+    "throttling": {
+      "applies_when": {
+        "response": {
+          "service_error_code": "Throttling",
+          "http_status_code": 400
+        }
+      }
+    },
+    "throttling_exception": {
+      "applies_when": {
+        "response": {
+          "service_error_code": "ThrottlingException",
+          "http_status_code": 400
+        }
+      }
+    },
+    "throttled_exception": {
+      "applies_when": {
+        "response": {
+          "service_error_code": "ThrottledException",
+          "http_status_code": 400
+        }
+      }
+    },
+    "request_throttled_exception": {
+      "applies_when": {
+        "response": {
+          "service_error_code": "RequestThrottledException",
+          "http_status_code": 400
+        }
+      }
+    },
+    "too_many_requests": {
+      "applies_when": {
+        "response": {
+          "http_status_code": 429
+        }
+      }
+    },
+    "general_socket_errors": {
+      "applies_when": {
+        "socket_errors": ["GENERAL_CONNECTION_ERROR"]
+      }
+    },
+    "general_server_error": {
+      "applies_when": {
+        "response": {
+          "http_status_code": 500
+        }
+      }
+    },
+    "bad_gateway": {
+      "applies_when": {
+        "response": {
+          "http_status_code": 502
+        }
+      }
+    },
+    "service_unavailable": {
+      "applies_when": {
+        "response": {
+          "http_status_code": 503
+        }
+      }
+    },
+    "gateway_timeout": {
+      "applies_when": {
+        "response": {
+          "http_status_code": 504
+        }
+      }
+    },
+    "limit_exceeded": {
+      "applies_when": {
+        "response": {
+          "http_status_code": 509
+        }
+      }
+    },
+    "throughput_exceeded": {
+      "applies_when": {
+        "response": {
+          "service_error_code": "ProvisionedThroughputExceededException",
+          "http_status_code": 400
+        }
+      }
+    }
+  },
+  "retry": {
+    "__default__": {
+      "max_attempts": 5,
+      "delay": {
+        "type": "exponential",
+        "base": "rand",
+        "growth_factor": 2
+      },
+      "policies": {
+          "general_socket_errors": {"$ref": "general_socket_errors"},
+          "general_server_error": {"$ref": "general_server_error"},
+          "bad_gateway": {"$ref": "bad_gateway"},
+          "service_unavailable": {"$ref": "service_unavailable"},
+          "gateway_timeout": {"$ref": "gateway_timeout"},
+          "limit_exceeded": {"$ref": "limit_exceeded"},
+          "throttling_exception": {"$ref": "throttling_exception"},
+          "throttled_exception": {"$ref": "throttled_exception"},
+          "request_throttled_exception": {"$ref": "request_throttled_exception"},
+          "throttling": {"$ref": "throttling"},
+          "too_many_requests": {"$ref": "too_many_requests"},
+          "throughput_exceeded": {"$ref": "throughput_exceeded"}
+      }
+    },
+    "organizations": {
+      "__default__": {
+        "policies": {
+          "too_many_requests": {
+            "applies_when": {
+              "response": {
+                "service_error_code": "TooManyRequestsException",
+                "http_status_code": 400
+              }
+            }
+          }
+        }
+      }
+    },
+    "dynamodb": {
+      "__default__": {
+        "max_attempts": 10,
+        "delay": {
+          "type": "exponential",
+          "base": 0.05,
+          "growth_factor": 2
+        },
+        "policies": {
+	  "still_processing": {
+	    "applies_when": {
+	      "response": {
+		"service_error_code": "TransactionInProgressException",
+		"http_status_code": 400
+	      }
+	    }
+	  },
+          "crc32": {
+            "applies_when": {
+              "response": {
+                "crc32body": "x-amz-crc32"
+              }
+            }
+          }
+        }
+      }
+    },
+    "ec2": {
+      "__default__": {
+        "policies": {
+          "request_limit_exceeded": {
+            "applies_when": {
+              "response": {
+                "service_error_code": "RequestLimitExceeded",
+                "http_status_code": 503
+              }
+            }
+          },
+          "ec2_throttled_exception": {
+            "applies_when": {
+              "response": {
+                "service_error_code": "EC2ThrottledException",
+                "http_status_code": 503
+              }
+            }
+          }
+        }
+      }
+    },
+    "cloudsearch": {
+      "__default__": {
+        "policies": {
+          "request_limit_exceeded": {
+            "applies_when": {
+              "response": {
+                "service_error_code": "BandwidthLimitExceeded",
+                "http_status_code": 509
+              }
+            }
+          }
+        }
+      }
+    },
+    "kinesis": {
+      "__default__": {
+        "policies": {
+          "request_limit_exceeded": {
+            "applies_when": {
+              "response": {
+                "service_error_code": "LimitExceededException",
+                "http_status_code": 400
+              }
+            }
+          }
+        }
+      }
+    },
+    "sqs": {
+      "__default__": {
+        "policies": {
+          "request_limit_exceeded": {
+            "applies_when": {
+              "response": {
+                "service_error_code": "RequestThrottled",
+                "http_status_code": 403
+              }
+            }
+          }
+        }
+      }
+    },
+    "s3": {
+      "__default__": {
+        "policies": {
+          "timeouts": {
+            "applies_when": {
+              "response": {
+                "http_status_code": 400,
+                "service_error_code": "RequestTimeout"
+              }
+            }
+          },
+          "contentmd5": {
+            "applies_when": {
+              "response": {
+                "http_status_code": 400,
+                "service_error_code": "BadDigest"
+              }
+            }
+          }
+        }
+      }
+    },
+    "glacier": {
+      "__default__": {
+        "policies": {
+          "timeouts": {
+            "applies_when": {
+              "response": {
+                "http_status_code": 408,
+                "service_error_code": "RequestTimeoutException"
+              }
+            }
+          }
+        }
+      }
+    },
+    "route53": {
+      "__default__": {
+        "policies": {
+          "request_limit_exceeded": {
+            "applies_when": {
+              "response": {
+                "service_error_code": "Throttling",
+                "http_status_code": 400
+              }
+            }
+          },
+          "still_processing": {
+            "applies_when": {
+              "response": {
+                "service_error_code": "PriorRequestNotComplete",
+                "http_status_code": 400
+              }
+            }
+          }
+        }
+      }
+    },
+    "sts": {
+      "__default__": {
+        "policies": {
+          "idp_unreachable_error": {
+            "applies_when": {
+              "response": {
+                "service_error_code": "IDPCommunicationError",
+                "http_status_code": 400
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}

+ 52 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/accessanalyzer/2019-11-01/paginators-1.json

@@ -0,0 +1,52 @@
+{
+  "pagination": {
+    "ListAnalyzedResources": {
+      "input_token": "nextToken",
+      "output_token": "nextToken",
+      "limit_key": "maxResults",
+      "result_key": "analyzedResources"
+    },
+    "ListAnalyzers": {
+      "input_token": "nextToken",
+      "output_token": "nextToken",
+      "limit_key": "maxResults",
+      "result_key": "analyzers"
+    },
+    "ListArchiveRules": {
+      "input_token": "nextToken",
+      "output_token": "nextToken",
+      "limit_key": "maxResults",
+      "result_key": "archiveRules"
+    },
+    "ListFindings": {
+      "input_token": "nextToken",
+      "output_token": "nextToken",
+      "limit_key": "maxResults",
+      "result_key": "findings"
+    },
+    "ListAccessPreviewFindings": {
+      "input_token": "nextToken",
+      "output_token": "nextToken",
+      "limit_key": "maxResults",
+      "result_key": "findings"
+    },
+    "ListAccessPreviews": {
+      "input_token": "nextToken",
+      "output_token": "nextToken",
+      "limit_key": "maxResults",
+      "result_key": "accessPreviews"
+    },
+    "ValidatePolicy": {
+      "input_token": "nextToken",
+      "output_token": "nextToken",
+      "limit_key": "maxResults",
+      "result_key": "findings"
+    },
+    "ListPolicyGenerations": {
+      "input_token": "nextToken",
+      "output_token": "nextToken",
+      "limit_key": "maxResults",
+      "result_key": "policyGenerations"
+    }
+  }
+}

+ 3130 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/accessanalyzer/2019-11-01/service-2.json

@@ -0,0 +1,3130 @@
+{
+  "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":{
+    "ApplyArchiveRule":{
+      "name":"ApplyArchiveRule",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/archive-rule",
+        "responseCode":200
+      },
+      "input":{"shape":"ApplyArchiveRuleRequest"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"},
+        {"shape":"ThrottlingException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Retroactively applies the archive rule to existing findings that meet the archive rule criteria.</p>",
+      "idempotent":true
+    },
+    "CancelPolicyGeneration":{
+      "name":"CancelPolicyGeneration",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/policy/generation/{jobId}",
+        "responseCode":200
+      },
+      "input":{"shape":"CancelPolicyGenerationRequest"},
+      "output":{"shape":"CancelPolicyGenerationResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"},
+        {"shape":"ThrottlingException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Cancels the requested policy generation.</p>",
+      "idempotent":true
+    },
+    "CreateAccessPreview":{
+      "name":"CreateAccessPreview",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/access-preview",
+        "responseCode":200
+      },
+      "input":{"shape":"CreateAccessPreviewRequest"},
+      "output":{"shape":"CreateAccessPreviewResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ConflictException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"},
+        {"shape":"ServiceQuotaExceededException"},
+        {"shape":"ThrottlingException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Creates an access preview that allows you to preview Access Analyzer findings for your resource before deploying resource permissions.</p>",
+      "idempotent":true
+    },
+    "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"}
+      ],
+      "documentation":"<p>Creates an analyzer for your account.</p>",
+      "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"}
+      ],
+      "documentation":"<p>Creates an archive rule for the specified analyzer. Archive rules automatically archive new findings that meet the criteria you define when you create the rule.</p> <p>To learn about filter keys that you can use to create an archive rule, see <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-filter-keys.html\">Access Analyzer filter keys</a> in the <b>IAM User Guide</b>.</p>",
+      "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"}
+      ],
+      "documentation":"<p>Deletes the specified analyzer. When you delete an analyzer, Access Analyzer is disabled for the account or organization in the current or specific Region. All findings that were generated by the analyzer are deleted. You cannot undo this action.</p>",
+      "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"}
+      ],
+      "documentation":"<p>Deletes the specified archive rule.</p>",
+      "idempotent":true
+    },
+    "GetAccessPreview":{
+      "name":"GetAccessPreview",
+      "http":{
+        "method":"GET",
+        "requestUri":"/access-preview/{accessPreviewId}",
+        "responseCode":200
+      },
+      "input":{"shape":"GetAccessPreviewRequest"},
+      "output":{"shape":"GetAccessPreviewResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"},
+        {"shape":"ThrottlingException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Retrieves information about an access preview for the specified analyzer.</p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p>Retrieves information about a resource that was analyzed.</p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p>Retrieves information about the specified analyzer.</p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p>Retrieves information about an archive rule.</p> <p>To learn about filter keys that you can use to create an archive rule, see <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-filter-keys.html\">Access Analyzer filter keys</a> in the <b>IAM User Guide</b>.</p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p>Retrieves information about the specified finding.</p>"
+    },
+    "GetGeneratedPolicy":{
+      "name":"GetGeneratedPolicy",
+      "http":{
+        "method":"GET",
+        "requestUri":"/policy/generation/{jobId}",
+        "responseCode":200
+      },
+      "input":{"shape":"GetGeneratedPolicyRequest"},
+      "output":{"shape":"GetGeneratedPolicyResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"},
+        {"shape":"ThrottlingException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Retrieves the policy that was generated using <code>StartPolicyGeneration</code>. </p>"
+    },
+    "ListAccessPreviewFindings":{
+      "name":"ListAccessPreviewFindings",
+      "http":{
+        "method":"POST",
+        "requestUri":"/access-preview/{accessPreviewId}",
+        "responseCode":200
+      },
+      "input":{"shape":"ListAccessPreviewFindingsRequest"},
+      "output":{"shape":"ListAccessPreviewFindingsResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ConflictException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"},
+        {"shape":"ThrottlingException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Retrieves a list of access preview findings generated by the specified access preview.</p>"
+    },
+    "ListAccessPreviews":{
+      "name":"ListAccessPreviews",
+      "http":{
+        "method":"GET",
+        "requestUri":"/access-preview",
+        "responseCode":200
+      },
+      "input":{"shape":"ListAccessPreviewsRequest"},
+      "output":{"shape":"ListAccessPreviewsResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"},
+        {"shape":"ThrottlingException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Retrieves a list of access previews for the specified analyzer.</p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p>Retrieves a list of resources of the specified type that have been analyzed by the specified analyzer..</p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p>Retrieves a list of analyzers.</p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p>Retrieves a list of archive rules created for the specified analyzer.</p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p>Retrieves a list of findings generated by the specified analyzer.</p> <p>To learn about filter keys that you can use to retrieve a list of findings, see <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-filter-keys.html\">Access Analyzer filter keys</a> in the <b>IAM User Guide</b>.</p>"
+    },
+    "ListPolicyGenerations":{
+      "name":"ListPolicyGenerations",
+      "http":{
+        "method":"GET",
+        "requestUri":"/policy/generation",
+        "responseCode":200
+      },
+      "input":{"shape":"ListPolicyGenerationsRequest"},
+      "output":{"shape":"ListPolicyGenerationsResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"},
+        {"shape":"ThrottlingException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Lists all of the policy generations requested in the last seven days.</p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p>Retrieves a list of tags applied to the specified resource.</p>"
+    },
+    "StartPolicyGeneration":{
+      "name":"StartPolicyGeneration",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/policy/generation",
+        "responseCode":200
+      },
+      "input":{"shape":"StartPolicyGenerationRequest"},
+      "output":{"shape":"StartPolicyGenerationResponse"},
+      "errors":[
+        {"shape":"ConflictException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"},
+        {"shape":"ServiceQuotaExceededException"},
+        {"shape":"ThrottlingException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Starts the policy generation request.</p>",
+      "idempotent":true
+    },
+    "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"}
+      ],
+      "documentation":"<p>Immediately starts a scan of the policies applied to the specified resource.</p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p>Adds a tag to the specified resource.</p>",
+      "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"}
+      ],
+      "documentation":"<p>Removes a tag from the specified resource.</p>",
+      "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"}
+      ],
+      "documentation":"<p>Updates the criteria and values for the specified archive rule.</p>",
+      "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"}
+      ],
+      "documentation":"<p>Updates the status for the specified findings.</p>",
+      "idempotent":true
+    },
+    "ValidatePolicy":{
+      "name":"ValidatePolicy",
+      "http":{
+        "method":"POST",
+        "requestUri":"/policy/validation",
+        "responseCode":200
+      },
+      "input":{"shape":"ValidatePolicyRequest"},
+      "output":{"shape":"ValidatePolicyResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"},
+        {"shape":"ThrottlingException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Requests the validation of a policy and returns a list of findings. The findings help you identify issues and provide actionable recommendations to resolve the issue and enable you to author functional policies that meet security best practices. </p>"
+    }
+  },
+  "shapes":{
+    "AccessDeniedException":{
+      "type":"structure",
+      "required":["message"],
+      "members":{
+        "message":{"shape":"String"}
+      },
+      "documentation":"<p>You do not have sufficient access to perform this action.</p>",
+      "error":{
+        "httpStatusCode":403,
+        "senderFault":true
+      },
+      "exception":true
+    },
+    "AccessPointArn":{
+      "type":"string",
+      "pattern":"arn:[^:]*:s3:[^:]*:[^:]*:accesspoint/.*$"
+    },
+    "AccessPointPolicy":{"type":"string"},
+    "AccessPreview":{
+      "type":"structure",
+      "required":[
+        "analyzerArn",
+        "configurations",
+        "createdAt",
+        "id",
+        "status"
+      ],
+      "members":{
+        "analyzerArn":{
+          "shape":"AnalyzerArn",
+          "documentation":"<p>The ARN of the analyzer used to generate the access preview.</p>"
+        },
+        "configurations":{
+          "shape":"ConfigurationsMap",
+          "documentation":"<p>A map of resource ARNs for the proposed resource configuration.</p>"
+        },
+        "createdAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time at which the access preview was created.</p>"
+        },
+        "id":{
+          "shape":"AccessPreviewId",
+          "documentation":"<p>The unique ID for the access preview.</p>"
+        },
+        "status":{
+          "shape":"AccessPreviewStatus",
+          "documentation":"<p>The status of the access preview.</p> <ul> <li> <p> <code>Creating</code> - The access preview creation is in progress.</p> </li> <li> <p> <code>Completed</code> - The access preview is complete. You can preview findings for external access to the resource.</p> </li> <li> <p> <code>Failed</code> - The access preview creation has failed.</p> </li> </ul>"
+        },
+        "statusReason":{
+          "shape":"AccessPreviewStatusReason",
+          "documentation":"<p>Provides more details about the current status of the access preview.</p> <p>For example, if the creation of the access preview fails, a <code>Failed</code> status is returned. This failure can be due to an internal issue with the analysis or due to an invalid resource configuration.</p>"
+        }
+      },
+      "documentation":"<p>Contains information about an access preview.</p>"
+    },
+    "AccessPreviewFinding":{
+      "type":"structure",
+      "required":[
+        "changeType",
+        "createdAt",
+        "id",
+        "resourceOwnerAccount",
+        "resourceType",
+        "status"
+      ],
+      "members":{
+        "action":{
+          "shape":"ActionList",
+          "documentation":"<p>The action in the analyzed policy statement that an external principal has permission to perform.</p>"
+        },
+        "changeType":{
+          "shape":"FindingChangeType",
+          "documentation":"<p>Provides context on how the access preview finding compares to existing access identified in Access Analyzer.</p> <ul> <li> <p> <code>New</code> - The finding is for newly-introduced access.</p> </li> <li> <p> <code>Unchanged</code> - The preview finding is an existing finding that would remain unchanged.</p> </li> <li> <p> <code>Changed</code> - The preview finding is an existing finding with a change in status.</p> </li> </ul> <p>For example, a <code>Changed</code> finding with preview status <code>Resolved</code> and existing status <code>Active</code> indicates the existing <code>Active</code> finding would become <code>Resolved</code> as a result of the proposed permissions change.</p>"
+        },
+        "condition":{
+          "shape":"ConditionKeyMap",
+          "documentation":"<p>The condition in the analyzed policy statement that resulted in a finding.</p>"
+        },
+        "createdAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time at which the access preview finding was created.</p>"
+        },
+        "error":{
+          "shape":"String",
+          "documentation":"<p>An error.</p>"
+        },
+        "existingFindingId":{
+          "shape":"FindingId",
+          "documentation":"<p>The existing ID of the finding in Access Analyzer, provided only for existing findings.</p>"
+        },
+        "existingFindingStatus":{
+          "shape":"FindingStatus",
+          "documentation":"<p>The existing status of the finding, provided only for existing findings.</p>"
+        },
+        "id":{
+          "shape":"AccessPreviewFindingId",
+          "documentation":"<p>The ID of the access preview finding. This ID uniquely identifies the element in the list of access preview findings and is not related to the finding ID in Access Analyzer.</p>"
+        },
+        "isPublic":{
+          "shape":"Boolean",
+          "documentation":"<p>Indicates whether the policy that generated the finding allows public access to the resource.</p>"
+        },
+        "principal":{
+          "shape":"PrincipalMap",
+          "documentation":"<p>The external principal that has access to a resource within the zone of trust.</p>"
+        },
+        "resource":{
+          "shape":"String",
+          "documentation":"<p>The resource that an external principal has access to. This is the resource associated with the access preview.</p>"
+        },
+        "resourceOwnerAccount":{
+          "shape":"String",
+          "documentation":"<p>The AWS account ID that owns the resource. For most AWS resources, the owning account is the account in which the resource was created.</p>"
+        },
+        "resourceType":{
+          "shape":"ResourceType",
+          "documentation":"<p>The type of the resource that can be accessed in the finding.</p>"
+        },
+        "sources":{
+          "shape":"FindingSourceList",
+          "documentation":"<p>The sources of the finding. This indicates how the access that generated the finding is granted. It is populated for Amazon S3 bucket findings.</p>"
+        },
+        "status":{
+          "shape":"FindingStatus",
+          "documentation":"<p>The preview status of the finding. This is what the status of the finding would be after permissions deployment. For example, a <code>Changed</code> finding with preview status <code>Resolved</code> and existing status <code>Active</code> indicates the existing <code>Active</code> finding would become <code>Resolved</code> as a result of the proposed permissions change.</p>"
+        }
+      },
+      "documentation":"<p>An access preview finding generated by the access preview.</p>"
+    },
+    "AccessPreviewFindingId":{"type":"string"},
+    "AccessPreviewFindingsList":{
+      "type":"list",
+      "member":{"shape":"AccessPreviewFinding"}
+    },
+    "AccessPreviewId":{
+      "type":"string",
+      "pattern":"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$"
+    },
+    "AccessPreviewStatus":{
+      "type":"string",
+      "enum":[
+        "COMPLETED",
+        "CREATING",
+        "FAILED"
+      ]
+    },
+    "AccessPreviewStatusReason":{
+      "type":"structure",
+      "required":["code"],
+      "members":{
+        "code":{
+          "shape":"AccessPreviewStatusReasonCode",
+          "documentation":"<p>The reason code for the current status of the access preview.</p>"
+        }
+      },
+      "documentation":"<p>Provides more details about the current status of the access preview. For example, if the creation of the access preview fails, a <code>Failed</code> status is returned. This failure can be due to an internal issue with the analysis or due to an invalid proposed resource configuration.</p>"
+    },
+    "AccessPreviewStatusReasonCode":{
+      "type":"string",
+      "enum":[
+        "INTERNAL_ERROR",
+        "INVALID_CONFIGURATION"
+      ]
+    },
+    "AccessPreviewSummary":{
+      "type":"structure",
+      "required":[
+        "analyzerArn",
+        "createdAt",
+        "id",
+        "status"
+      ],
+      "members":{
+        "analyzerArn":{
+          "shape":"AnalyzerArn",
+          "documentation":"<p>The ARN of the analyzer used to generate the access preview.</p>"
+        },
+        "createdAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time at which the access preview was created.</p>"
+        },
+        "id":{
+          "shape":"AccessPreviewId",
+          "documentation":"<p>The unique ID for the access preview.</p>"
+        },
+        "status":{
+          "shape":"AccessPreviewStatus",
+          "documentation":"<p>The status of the access preview.</p> <ul> <li> <p> <code>Creating</code> - The access preview creation is in progress.</p> </li> <li> <p> <code>Completed</code> - The access preview is complete and previews the findings for external access to the resource.</p> </li> <li> <p> <code>Failed</code> - The access preview creation has failed.</p> </li> </ul>"
+        },
+        "statusReason":{"shape":"AccessPreviewStatusReason"}
+      },
+      "documentation":"<p>Contains a summary of information about an access preview.</p>"
+    },
+    "AccessPreviewsList":{
+      "type":"list",
+      "member":{"shape":"AccessPreviewSummary"}
+    },
+    "AclCanonicalId":{"type":"string"},
+    "AclGrantee":{
+      "type":"structure",
+      "members":{
+        "id":{
+          "shape":"AclCanonicalId",
+          "documentation":"<p>The value specified is the canonical user ID of an AWS account.</p>"
+        },
+        "uri":{
+          "shape":"AclUri",
+          "documentation":"<p>Used for granting permissions to a predefined group.</p>"
+        }
+      },
+      "documentation":"<p>You specify each grantee as a type-value pair using one of these types. You can specify only one type of grantee. For more information, see <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAcl.html\">PutBucketAcl</a>.</p>",
+      "union":true
+    },
+    "AclPermission":{
+      "type":"string",
+      "enum":[
+        "READ",
+        "WRITE",
+        "READ_ACP",
+        "WRITE_ACP",
+        "FULL_CONTROL"
+      ]
+    },
+    "AclUri":{"type":"string"},
+    "ActionList":{
+      "type":"list",
+      "member":{"shape":"String"}
+    },
+    "AnalyzedResource":{
+      "type":"structure",
+      "required":[
+        "analyzedAt",
+        "createdAt",
+        "isPublic",
+        "resourceArn",
+        "resourceOwnerAccount",
+        "resourceType",
+        "updatedAt"
+      ],
+      "members":{
+        "actions":{
+          "shape":"ActionList",
+          "documentation":"<p>The actions that an external principal is granted permission to use by the policy that generated the finding.</p>"
+        },
+        "analyzedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time at which the resource was analyzed.</p>"
+        },
+        "createdAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time at which the finding was created.</p>"
+        },
+        "error":{
+          "shape":"String",
+          "documentation":"<p>An error message.</p>"
+        },
+        "isPublic":{
+          "shape":"Boolean",
+          "documentation":"<p>Indicates whether the policy that generated the finding grants public access to the resource.</p>"
+        },
+        "resourceArn":{
+          "shape":"ResourceArn",
+          "documentation":"<p>The ARN of the resource that was analyzed.</p>"
+        },
+        "resourceOwnerAccount":{
+          "shape":"String",
+          "documentation":"<p>The AWS account ID that owns the resource.</p>"
+        },
+        "resourceType":{
+          "shape":"ResourceType",
+          "documentation":"<p>The type of the resource that was analyzed.</p>"
+        },
+        "sharedVia":{
+          "shape":"SharedViaList",
+          "documentation":"<p>Indicates how the access that generated the finding is granted. This is populated for Amazon S3 bucket findings.</p>"
+        },
+        "status":{
+          "shape":"FindingStatus",
+          "documentation":"<p>The current status of the finding generated from the analyzed resource.</p>"
+        },
+        "updatedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time at which the finding was updated.</p>"
+        }
+      },
+      "documentation":"<p>Contains details about the analyzed resource.</p>"
+    },
+    "AnalyzedResourceSummary":{
+      "type":"structure",
+      "required":[
+        "resourceArn",
+        "resourceOwnerAccount",
+        "resourceType"
+      ],
+      "members":{
+        "resourceArn":{
+          "shape":"ResourceArn",
+          "documentation":"<p>The ARN of the analyzed resource.</p>"
+        },
+        "resourceOwnerAccount":{
+          "shape":"String",
+          "documentation":"<p>The AWS account ID that owns the resource.</p>"
+        },
+        "resourceType":{
+          "shape":"ResourceType",
+          "documentation":"<p>The type of resource that was analyzed.</p>"
+        }
+      },
+      "documentation":"<p>Contains the ARN of the analyzed resource.</p>"
+    },
+    "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",
+          "documentation":"<p>The ARN of the analyzer.</p>"
+        },
+        "createdAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>A timestamp for the time at which the analyzer was created.</p>"
+        },
+        "lastResourceAnalyzed":{
+          "shape":"String",
+          "documentation":"<p>The resource that was most recently analyzed by the analyzer.</p>"
+        },
+        "lastResourceAnalyzedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time at which the most recently analyzed resource was analyzed.</p>"
+        },
+        "name":{
+          "shape":"Name",
+          "documentation":"<p>The name of the analyzer.</p>"
+        },
+        "status":{
+          "shape":"AnalyzerStatus",
+          "documentation":"<p>The status of the analyzer. An <code>Active</code> analyzer successfully monitors supported resources and generates new findings. The analyzer is <code>Disabled</code> when a user action, such as removing trusted access for AWS IAM Access Analyzer from AWS Organizations, causes the analyzer to stop generating new findings. The status is <code>Creating</code> when the analyzer creation is in progress and <code>Failed</code> when the analyzer creation has failed. </p>"
+        },
+        "statusReason":{
+          "shape":"StatusReason",
+          "documentation":"<p>The <code>statusReason</code> provides more details about the current status of the analyzer. For example, if the creation for the analyzer fails, a <code>Failed</code> status is returned. For an analyzer with organization as the type, this failure can be due to an issue with creating the service-linked roles required in the member accounts of the AWS organization.</p>"
+        },
+        "tags":{
+          "shape":"TagsMap",
+          "documentation":"<p>The tags added to the analyzer.</p>"
+        },
+        "type":{
+          "shape":"Type",
+          "documentation":"<p>The type of analyzer, which corresponds to the zone of trust chosen for the analyzer.</p>"
+        }
+      },
+      "documentation":"<p>Contains information about the analyzer.</p>"
+    },
+    "AnalyzersList":{
+      "type":"list",
+      "member":{"shape":"AnalyzerSummary"}
+    },
+    "ApplyArchiveRuleRequest":{
+      "type":"structure",
+      "required":[
+        "analyzerArn",
+        "ruleName"
+      ],
+      "members":{
+        "analyzerArn":{
+          "shape":"AnalyzerArn",
+          "documentation":"<p>The Amazon resource name (ARN) of the analyzer.</p>"
+        },
+        "clientToken":{
+          "shape":"String",
+          "documentation":"<p>A client token.</p>",
+          "idempotencyToken":true
+        },
+        "ruleName":{
+          "shape":"Name",
+          "documentation":"<p>The name of the rule to apply.</p>"
+        }
+      },
+      "documentation":"<p>Retroactively applies an archive rule.</p>"
+    },
+    "ArchiveRuleSummary":{
+      "type":"structure",
+      "required":[
+        "createdAt",
+        "filter",
+        "ruleName",
+        "updatedAt"
+      ],
+      "members":{
+        "createdAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time at which the archive rule was created.</p>"
+        },
+        "filter":{
+          "shape":"FilterCriteriaMap",
+          "documentation":"<p>A filter used to define the archive rule.</p>"
+        },
+        "ruleName":{
+          "shape":"Name",
+          "documentation":"<p>The name of the archive rule.</p>"
+        },
+        "updatedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time at which the archive rule was last updated.</p>"
+        }
+      },
+      "documentation":"<p>Contains information about an archive rule.</p>"
+    },
+    "ArchiveRulesList":{
+      "type":"list",
+      "member":{"shape":"ArchiveRuleSummary"}
+    },
+    "Boolean":{
+      "type":"boolean",
+      "box":true
+    },
+    "CancelPolicyGenerationRequest":{
+      "type":"structure",
+      "required":["jobId"],
+      "members":{
+        "jobId":{
+          "shape":"JobId",
+          "documentation":"<p>The <code>JobId</code> that is returned by the <code>StartPolicyGeneration</code> operation. The <code>JobId</code> can be used with <code>GetGeneratedPolicy</code> to retrieve the generated policies or used with <code>CancelPolicyGeneration</code> to cancel the policy generation request.</p>",
+          "location":"uri",
+          "locationName":"jobId"
+        }
+      }
+    },
+    "CancelPolicyGenerationResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "CloudTrailArn":{
+      "type":"string",
+      "pattern":"arn:[^:]*:cloudtrail:[^:]*:[^:]*:trail/.{1,576}$"
+    },
+    "CloudTrailDetails":{
+      "type":"structure",
+      "required":[
+        "accessRole",
+        "startTime",
+        "trails"
+      ],
+      "members":{
+        "accessRole":{
+          "shape":"RoleArn",
+          "documentation":"<p>The ARN of the service role that Access Analyzer uses to access your CloudTrail trail and service last accessed information.</p>"
+        },
+        "endTime":{
+          "shape":"Timestamp",
+          "documentation":"<p>The end of the time range for which Access Analyzer reviews your CloudTrail events. Events with a timestamp after this time are not considered to generate a policy. If this is not included in the request, the default value is the current time.</p>"
+        },
+        "startTime":{
+          "shape":"Timestamp",
+          "documentation":"<p>The start of the time range for which Access Analyzer reviews your CloudTrail events. Events with a timestamp before this time are not considered to generate a policy.</p>"
+        },
+        "trails":{
+          "shape":"TrailList",
+          "documentation":"<p>A <code>Trail</code> object that contains settings for a trail.</p>"
+        }
+      },
+      "documentation":"<p>Contains information about CloudTrail access.</p>"
+    },
+    "CloudTrailProperties":{
+      "type":"structure",
+      "required":[
+        "endTime",
+        "startTime",
+        "trailProperties"
+      ],
+      "members":{
+        "endTime":{
+          "shape":"Timestamp",
+          "documentation":"<p>The end of the time range for which Access Analyzer reviews your CloudTrail events. Events with a timestamp after this time are not considered to generate a policy. If this is not included in the request, the default value is the current time.</p>"
+        },
+        "startTime":{
+          "shape":"Timestamp",
+          "documentation":"<p>The start of the time range for which Access Analyzer reviews your CloudTrail events. Events with a timestamp before this time are not considered to generate a policy.</p>"
+        },
+        "trailProperties":{
+          "shape":"TrailPropertiesList",
+          "documentation":"<p>A <code>TrailProperties</code> object that contains settings for trail properties.</p>"
+        }
+      },
+      "documentation":"<p>Contains information about CloudTrail access.</p>"
+    },
+    "ConditionKeyMap":{
+      "type":"map",
+      "key":{"shape":"String"},
+      "value":{"shape":"String"}
+    },
+    "Configuration":{
+      "type":"structure",
+      "members":{
+        "iamRole":{
+          "shape":"IamRoleConfiguration",
+          "documentation":"<p>The access control configuration is for an IAM role. </p>"
+        },
+        "kmsKey":{
+          "shape":"KmsKeyConfiguration",
+          "documentation":"<p>The access control configuration is for a KMS key. </p>"
+        },
+        "s3Bucket":{
+          "shape":"S3BucketConfiguration",
+          "documentation":"<p>The access control configuration is for an Amazon S3 Bucket. </p>"
+        },
+        "secretsManagerSecret":{
+          "shape":"SecretsManagerSecretConfiguration",
+          "documentation":"<p>The access control configuration is for a Secrets Manager secret.</p>"
+        },
+        "sqsQueue":{
+          "shape":"SqsQueueConfiguration",
+          "documentation":"<p>The access control configuration is for an SQS queue. </p>"
+        }
+      },
+      "documentation":"<p>Access control configuration structures for your resource. You specify the configuration as a type-value pair. You can specify only one type of access control configuration.</p>",
+      "union":true
+    },
+    "ConfigurationsMap":{
+      "type":"map",
+      "key":{"shape":"ConfigurationsMapKey"},
+      "value":{"shape":"Configuration"}
+    },
+    "ConfigurationsMapKey":{"type":"string"},
+    "ConflictException":{
+      "type":"structure",
+      "required":[
+        "message",
+        "resourceId",
+        "resourceType"
+      ],
+      "members":{
+        "message":{"shape":"String"},
+        "resourceId":{
+          "shape":"String",
+          "documentation":"<p>The ID of the resource.</p>"
+        },
+        "resourceType":{
+          "shape":"String",
+          "documentation":"<p>The resource type.</p>"
+        }
+      },
+      "documentation":"<p>A conflict exception error.</p>",
+      "error":{
+        "httpStatusCode":409,
+        "senderFault":true
+      },
+      "exception":true
+    },
+    "CreateAccessPreviewRequest":{
+      "type":"structure",
+      "required":[
+        "analyzerArn",
+        "configurations"
+      ],
+      "members":{
+        "analyzerArn":{
+          "shape":"AnalyzerArn",
+          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#permission-resources\">ARN of the account analyzer</a> used to generate the access preview. You can only create an access preview for analyzers with an <code>Account</code> type and <code>Active</code> status.</p>"
+        },
+        "clientToken":{
+          "shape":"String",
+          "documentation":"<p>A client token.</p>",
+          "idempotencyToken":true
+        },
+        "configurations":{
+          "shape":"ConfigurationsMap",
+          "documentation":"<p>Access control configuration for your resource that is used to generate the access preview. The access preview includes findings for external access allowed to the resource with the proposed access control configuration. The configuration must contain exactly one element.</p>"
+        }
+      }
+    },
+    "CreateAccessPreviewResponse":{
+      "type":"structure",
+      "required":["id"],
+      "members":{
+        "id":{
+          "shape":"AccessPreviewId",
+          "documentation":"<p>The unique ID for the access preview.</p>"
+        }
+      }
+    },
+    "CreateAnalyzerRequest":{
+      "type":"structure",
+      "required":[
+        "analyzerName",
+        "type"
+      ],
+      "members":{
+        "analyzerName":{
+          "shape":"Name",
+          "documentation":"<p>The name of the analyzer to create.</p>"
+        },
+        "archiveRules":{
+          "shape":"InlineArchiveRulesList",
+          "documentation":"<p>Specifies the archive rules to add for the analyzer. Archive rules automatically archive findings that meet the criteria you define for the rule.</p>"
+        },
+        "clientToken":{
+          "shape":"String",
+          "documentation":"<p>A client token.</p>",
+          "idempotencyToken":true
+        },
+        "tags":{
+          "shape":"TagsMap",
+          "documentation":"<p>The tags to apply to the analyzer.</p>"
+        },
+        "type":{
+          "shape":"Type",
+          "documentation":"<p>The type of analyzer to create. Only ACCOUNT and ORGANIZATION analyzers are supported. You can create only one analyzer per account per Region. You can create up to 5 analyzers per organization per Region.</p>"
+        }
+      },
+      "documentation":"<p>Creates an analyzer.</p>"
+    },
+    "CreateAnalyzerResponse":{
+      "type":"structure",
+      "members":{
+        "arn":{
+          "shape":"AnalyzerArn",
+          "documentation":"<p>The ARN of the analyzer that was created by the request.</p>"
+        }
+      },
+      "documentation":"<p>The response to the request to create an analyzer.</p>"
+    },
+    "CreateArchiveRuleRequest":{
+      "type":"structure",
+      "required":[
+        "analyzerName",
+        "filter",
+        "ruleName"
+      ],
+      "members":{
+        "analyzerName":{
+          "shape":"Name",
+          "documentation":"<p>The name of the created analyzer.</p>",
+          "location":"uri",
+          "locationName":"analyzerName"
+        },
+        "clientToken":{
+          "shape":"String",
+          "documentation":"<p>A client token.</p>",
+          "idempotencyToken":true
+        },
+        "filter":{
+          "shape":"FilterCriteriaMap",
+          "documentation":"<p>The criteria for the rule.</p>"
+        },
+        "ruleName":{
+          "shape":"Name",
+          "documentation":"<p>The name of the rule to create.</p>"
+        }
+      },
+      "documentation":"<p>Creates an archive rule.</p>"
+    },
+    "Criterion":{
+      "type":"structure",
+      "members":{
+        "contains":{
+          "shape":"ValueList",
+          "documentation":"<p>A \"contains\" operator to match for the filter used to create the rule.</p>"
+        },
+        "eq":{
+          "shape":"ValueList",
+          "documentation":"<p>An \"equals\" operator to match for the filter used to create the rule.</p>"
+        },
+        "exists":{
+          "shape":"Boolean",
+          "documentation":"<p>An \"exists\" operator to match for the filter used to create the rule. </p>"
+        },
+        "neq":{
+          "shape":"ValueList",
+          "documentation":"<p>A \"not equals\" operator to match for the filter used to create the rule.</p>"
+        }
+      },
+      "documentation":"<p>The criteria to use in the filter that defines the archive rule.</p>"
+    },
+    "DeleteAnalyzerRequest":{
+      "type":"structure",
+      "required":["analyzerName"],
+      "members":{
+        "analyzerName":{
+          "shape":"Name",
+          "documentation":"<p>The name of the analyzer to delete.</p>",
+          "location":"uri",
+          "locationName":"analyzerName"
+        },
+        "clientToken":{
+          "shape":"String",
+          "documentation":"<p>A client token.</p>",
+          "idempotencyToken":true,
+          "location":"querystring",
+          "locationName":"clientToken"
+        }
+      },
+      "documentation":"<p>Deletes an analyzer.</p>"
+    },
+    "DeleteArchiveRuleRequest":{
+      "type":"structure",
+      "required":[
+        "analyzerName",
+        "ruleName"
+      ],
+      "members":{
+        "analyzerName":{
+          "shape":"Name",
+          "documentation":"<p>The name of the analyzer that associated with the archive rule to delete.</p>",
+          "location":"uri",
+          "locationName":"analyzerName"
+        },
+        "clientToken":{
+          "shape":"String",
+          "documentation":"<p>A client token.</p>",
+          "idempotencyToken":true,
+          "location":"querystring",
+          "locationName":"clientToken"
+        },
+        "ruleName":{
+          "shape":"Name",
+          "documentation":"<p>The name of the rule to delete.</p>",
+          "location":"uri",
+          "locationName":"ruleName"
+        }
+      },
+      "documentation":"<p>Deletes an archive rule.</p>"
+    },
+    "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",
+          "documentation":"<p>The action in the analyzed policy statement that an external principal has permission to use.</p>"
+        },
+        "analyzedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time at which the resource was analyzed.</p>"
+        },
+        "condition":{
+          "shape":"ConditionKeyMap",
+          "documentation":"<p>The condition in the analyzed policy statement that resulted in a finding.</p>"
+        },
+        "createdAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time at which the finding was generated.</p>"
+        },
+        "error":{
+          "shape":"String",
+          "documentation":"<p>An error.</p>"
+        },
+        "id":{
+          "shape":"FindingId",
+          "documentation":"<p>The ID of the finding.</p>"
+        },
+        "isPublic":{
+          "shape":"Boolean",
+          "documentation":"<p>Indicates whether the policy that generated the finding allows public access to the resource.</p>"
+        },
+        "principal":{
+          "shape":"PrincipalMap",
+          "documentation":"<p>The external principal that access to a resource within the zone of trust.</p>"
+        },
+        "resource":{
+          "shape":"String",
+          "documentation":"<p>The resource that an external principal has access to.</p>"
+        },
+        "resourceOwnerAccount":{
+          "shape":"String",
+          "documentation":"<p>The AWS account ID that owns the resource.</p>"
+        },
+        "resourceType":{
+          "shape":"ResourceType",
+          "documentation":"<p>The type of the resource identified in the finding.</p>"
+        },
+        "sources":{
+          "shape":"FindingSourceList",
+          "documentation":"<p>The sources of the finding. This indicates how the access that generated the finding is granted. It is populated for Amazon S3 bucket findings.</p>"
+        },
+        "status":{
+          "shape":"FindingStatus",
+          "documentation":"<p>The current status of the finding.</p>"
+        },
+        "updatedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time at which the finding was updated.</p>"
+        }
+      },
+      "documentation":"<p>Contains information about a finding.</p>"
+    },
+    "FindingChangeType":{
+      "type":"string",
+      "enum":[
+        "CHANGED",
+        "NEW",
+        "UNCHANGED"
+      ]
+    },
+    "FindingId":{"type":"string"},
+    "FindingIdList":{
+      "type":"list",
+      "member":{"shape":"FindingId"}
+    },
+    "FindingSource":{
+      "type":"structure",
+      "required":["type"],
+      "members":{
+        "detail":{
+          "shape":"FindingSourceDetail",
+          "documentation":"<p>Includes details about how the access that generated the finding is granted. This is populated for Amazon S3 bucket findings.</p>"
+        },
+        "type":{
+          "shape":"FindingSourceType",
+          "documentation":"<p>Indicates the type of access that generated the finding.</p>"
+        }
+      },
+      "documentation":"<p>The source of the finding. This indicates how the access that generated the finding is granted. It is populated for Amazon S3 bucket findings.</p>"
+    },
+    "FindingSourceDetail":{
+      "type":"structure",
+      "members":{
+        "accessPointArn":{
+          "shape":"String",
+          "documentation":"<p>The ARN of the access point that generated the finding.</p>"
+        }
+      },
+      "documentation":"<p>Includes details about how the access that generated the finding is granted. This is populated for Amazon S3 bucket findings.</p>"
+    },
+    "FindingSourceList":{
+      "type":"list",
+      "member":{"shape":"FindingSource"}
+    },
+    "FindingSourceType":{
+      "type":"string",
+      "enum":[
+        "POLICY",
+        "BUCKET_ACL",
+        "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",
+          "documentation":"<p>The action in the analyzed policy statement that an external principal has permission to use.</p>"
+        },
+        "analyzedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time at which the resource-based policy that generated the finding was analyzed.</p>"
+        },
+        "condition":{
+          "shape":"ConditionKeyMap",
+          "documentation":"<p>The condition in the analyzed policy statement that resulted in a finding.</p>"
+        },
+        "createdAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time at which the finding was created.</p>"
+        },
+        "error":{
+          "shape":"String",
+          "documentation":"<p>The error that resulted in an Error finding.</p>"
+        },
+        "id":{
+          "shape":"FindingId",
+          "documentation":"<p>The ID of the finding.</p>"
+        },
+        "isPublic":{
+          "shape":"Boolean",
+          "documentation":"<p>Indicates whether the finding reports a resource that has a policy that allows public access.</p>"
+        },
+        "principal":{
+          "shape":"PrincipalMap",
+          "documentation":"<p>The external principal that has access to a resource within the zone of trust.</p>"
+        },
+        "resource":{
+          "shape":"String",
+          "documentation":"<p>The resource that the external principal has access to.</p>"
+        },
+        "resourceOwnerAccount":{
+          "shape":"String",
+          "documentation":"<p>The AWS account ID that owns the resource.</p>"
+        },
+        "resourceType":{
+          "shape":"ResourceType",
+          "documentation":"<p>The type of the resource that the external principal has access to.</p>"
+        },
+        "sources":{
+          "shape":"FindingSourceList",
+          "documentation":"<p>The sources of the finding. This indicates how the access that generated the finding is granted. It is populated for Amazon S3 bucket findings.</p>"
+        },
+        "status":{
+          "shape":"FindingStatus",
+          "documentation":"<p>The status of the finding.</p>"
+        },
+        "updatedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time at which the finding was most recently updated.</p>"
+        }
+      },
+      "documentation":"<p>Contains information about a finding.</p>"
+    },
+    "FindingsList":{
+      "type":"list",
+      "member":{"shape":"FindingSummary"}
+    },
+    "GeneratedPolicy":{
+      "type":"structure",
+      "required":["policy"],
+      "members":{
+        "policy":{
+          "shape":"String",
+          "documentation":"<p>The text to use as the content for the new policy. The policy is created using the <a href=\"https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreatePolicy.html\">CreatePolicy</a> action.</p>"
+        }
+      },
+      "documentation":"<p>Contains the text for the generated policy.</p>"
+    },
+    "GeneratedPolicyList":{
+      "type":"list",
+      "member":{"shape":"GeneratedPolicy"}
+    },
+    "GeneratedPolicyProperties":{
+      "type":"structure",
+      "required":["principalArn"],
+      "members":{
+        "cloudTrailProperties":{
+          "shape":"CloudTrailProperties",
+          "documentation":"<p>Lists details about the <code>Trail</code> used to generated policy.</p>"
+        },
+        "isComplete":{
+          "shape":"Boolean",
+          "documentation":"<p>This value is set to <code>true</code> if the generated policy contains all possible actions for a service that Access Analyzer identified from the CloudTrail trail that you specified, and <code>false</code> otherwise.</p>"
+        },
+        "principalArn":{
+          "shape":"PrincipalArn",
+          "documentation":"<p>The ARN of the IAM entity (user or role) for which you are generating a policy.</p>"
+        }
+      },
+      "documentation":"<p>Contains the generated policy details.</p>"
+    },
+    "GeneratedPolicyResult":{
+      "type":"structure",
+      "required":["properties"],
+      "members":{
+        "generatedPolicies":{
+          "shape":"GeneratedPolicyList",
+          "documentation":"<p>The text to use as the content for the new policy. The policy is created using the <a href=\"https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreatePolicy.html\">CreatePolicy</a> action.</p>"
+        },
+        "properties":{
+          "shape":"GeneratedPolicyProperties",
+          "documentation":"<p>A <code>GeneratedPolicyProperties</code> object that contains properties of the generated policy.</p>"
+        }
+      },
+      "documentation":"<p>Contains the text for the generated policy and its details.</p>"
+    },
+    "GetAccessPreviewRequest":{
+      "type":"structure",
+      "required":[
+        "accessPreviewId",
+        "analyzerArn"
+      ],
+      "members":{
+        "accessPreviewId":{
+          "shape":"AccessPreviewId",
+          "documentation":"<p>The unique ID for the access preview.</p>",
+          "location":"uri",
+          "locationName":"accessPreviewId"
+        },
+        "analyzerArn":{
+          "shape":"AnalyzerArn",
+          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#permission-resources\">ARN of the analyzer</a> used to generate the access preview.</p>",
+          "location":"querystring",
+          "locationName":"analyzerArn"
+        }
+      }
+    },
+    "GetAccessPreviewResponse":{
+      "type":"structure",
+      "required":["accessPreview"],
+      "members":{
+        "accessPreview":{
+          "shape":"AccessPreview",
+          "documentation":"<p>An object that contains information about the access preview.</p>"
+        }
+      }
+    },
+    "GetAnalyzedResourceRequest":{
+      "type":"structure",
+      "required":[
+        "analyzerArn",
+        "resourceArn"
+      ],
+      "members":{
+        "analyzerArn":{
+          "shape":"AnalyzerArn",
+          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#permission-resources\">ARN of the analyzer</a> to retrieve information from.</p>",
+          "location":"querystring",
+          "locationName":"analyzerArn"
+        },
+        "resourceArn":{
+          "shape":"ResourceArn",
+          "documentation":"<p>The ARN of the resource to retrieve information about.</p>",
+          "location":"querystring",
+          "locationName":"resourceArn"
+        }
+      },
+      "documentation":"<p>Retrieves an analyzed resource.</p>"
+    },
+    "GetAnalyzedResourceResponse":{
+      "type":"structure",
+      "members":{
+        "resource":{
+          "shape":"AnalyzedResource",
+          "documentation":"<p>An <code>AnalyzedResource</code> object that contains information that Access Analyzer found when it analyzed the resource.</p>"
+        }
+      },
+      "documentation":"<p>The response to the request.</p>"
+    },
+    "GetAnalyzerRequest":{
+      "type":"structure",
+      "required":["analyzerName"],
+      "members":{
+        "analyzerName":{
+          "shape":"Name",
+          "documentation":"<p>The name of the analyzer retrieved.</p>",
+          "location":"uri",
+          "locationName":"analyzerName"
+        }
+      },
+      "documentation":"<p>Retrieves an analyzer.</p>"
+    },
+    "GetAnalyzerResponse":{
+      "type":"structure",
+      "required":["analyzer"],
+      "members":{
+        "analyzer":{
+          "shape":"AnalyzerSummary",
+          "documentation":"<p>An <code>AnalyzerSummary</code> object that contains information about the analyzer.</p>"
+        }
+      },
+      "documentation":"<p>The response to the request.</p>"
+    },
+    "GetArchiveRuleRequest":{
+      "type":"structure",
+      "required":[
+        "analyzerName",
+        "ruleName"
+      ],
+      "members":{
+        "analyzerName":{
+          "shape":"Name",
+          "documentation":"<p>The name of the analyzer to retrieve rules from.</p>",
+          "location":"uri",
+          "locationName":"analyzerName"
+        },
+        "ruleName":{
+          "shape":"Name",
+          "documentation":"<p>The name of the rule to retrieve.</p>",
+          "location":"uri",
+          "locationName":"ruleName"
+        }
+      },
+      "documentation":"<p>Retrieves an archive rule.</p>"
+    },
+    "GetArchiveRuleResponse":{
+      "type":"structure",
+      "required":["archiveRule"],
+      "members":{
+        "archiveRule":{"shape":"ArchiveRuleSummary"}
+      },
+      "documentation":"<p>The response to the request.</p>"
+    },
+    "GetFindingRequest":{
+      "type":"structure",
+      "required":[
+        "analyzerArn",
+        "id"
+      ],
+      "members":{
+        "analyzerArn":{
+          "shape":"AnalyzerArn",
+          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#permission-resources\">ARN of the analyzer</a> that generated the finding.</p>",
+          "location":"querystring",
+          "locationName":"analyzerArn"
+        },
+        "id":{
+          "shape":"FindingId",
+          "documentation":"<p>The ID of the finding to retrieve.</p>",
+          "location":"uri",
+          "locationName":"id"
+        }
+      },
+      "documentation":"<p>Retrieves a finding.</p>"
+    },
+    "GetFindingResponse":{
+      "type":"structure",
+      "members":{
+        "finding":{
+          "shape":"Finding",
+          "documentation":"<p>A <code>finding</code> object that contains finding details.</p>"
+        }
+      },
+      "documentation":"<p>The response to the request.</p>"
+    },
+    "GetGeneratedPolicyRequest":{
+      "type":"structure",
+      "required":["jobId"],
+      "members":{
+        "includeResourcePlaceholders":{
+          "shape":"Boolean",
+          "documentation":"<p>The level of detail that you want to generate. You can specify whether to generate policies with placeholders for resource ARNs for actions that support resource level granularity in policies.</p> <p>For example, in the resource section of a policy, you can receive a placeholder such as <code>\"Resource\":\"arn:aws:s3:::${BucketName}\"</code> instead of <code>\"*\"</code>.</p>",
+          "location":"querystring",
+          "locationName":"includeResourcePlaceholders"
+        },
+        "includeServiceLevelTemplate":{
+          "shape":"Boolean",
+          "documentation":"<p>The level of detail that you want to generate. You can specify whether to generate service-level policies. </p> <p>Access Analyzer uses <code>iam:servicelastaccessed</code> to identify services that have been used recently to create this service-level template.</p>",
+          "location":"querystring",
+          "locationName":"includeServiceLevelTemplate"
+        },
+        "jobId":{
+          "shape":"JobId",
+          "documentation":"<p>The <code>JobId</code> that is returned by the <code>StartPolicyGeneration</code> operation. The <code>JobId</code> can be used with <code>GetGeneratedPolicy</code> to retrieve the generated policies or used with <code>CancelPolicyGeneration</code> to cancel the policy generation request.</p>",
+          "location":"uri",
+          "locationName":"jobId"
+        }
+      }
+    },
+    "GetGeneratedPolicyResponse":{
+      "type":"structure",
+      "required":[
+        "generatedPolicyResult",
+        "jobDetails"
+      ],
+      "members":{
+        "generatedPolicyResult":{
+          "shape":"GeneratedPolicyResult",
+          "documentation":"<p>A <code>GeneratedPolicyResult</code> object that contains the generated policies and associated details.</p>"
+        },
+        "jobDetails":{
+          "shape":"JobDetails",
+          "documentation":"<p>A <code>GeneratedPolicyDetails</code> object that contains details about the generated policy.</p>"
+        }
+      }
+    },
+    "GranteePrincipal":{"type":"string"},
+    "IamRoleConfiguration":{
+      "type":"structure",
+      "members":{
+        "trustPolicy":{
+          "shape":"IamTrustPolicy",
+          "documentation":"<p>The proposed trust policy for the IAM role.</p>"
+        }
+      },
+      "documentation":"<p>The proposed access control configuration for an IAM role. You can propose a configuration for a new IAM role or an existing IAM role that you own by specifying the trust policy. If the configuration is for a new IAM role, you must specify the trust policy. If the configuration is for an existing IAM role that you own and you do not propose the trust policy, the access preview uses the existing trust policy for the role. The proposed trust policy cannot be an empty string. For more information about role trust policy limits, see <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html\">IAM and STS quotas</a>.</p>"
+    },
+    "IamTrustPolicy":{"type":"string"},
+    "InlineArchiveRule":{
+      "type":"structure",
+      "required":[
+        "filter",
+        "ruleName"
+      ],
+      "members":{
+        "filter":{
+          "shape":"FilterCriteriaMap",
+          "documentation":"<p>The condition and values for a criterion.</p>"
+        },
+        "ruleName":{
+          "shape":"Name",
+          "documentation":"<p>The name of the rule.</p>"
+        }
+      },
+      "documentation":"<p>An criterion statement in an archive rule. Each archive rule may have multiple criteria.</p>"
+    },
+    "InlineArchiveRulesList":{
+      "type":"list",
+      "member":{"shape":"InlineArchiveRule"}
+    },
+    "Integer":{
+      "type":"integer",
+      "box":true
+    },
+    "InternalServerException":{
+      "type":"structure",
+      "required":["message"],
+      "members":{
+        "message":{"shape":"String"},
+        "retryAfterSeconds":{
+          "shape":"Integer",
+          "documentation":"<p>The seconds to wait to retry.</p>",
+          "location":"header",
+          "locationName":"Retry-After"
+        }
+      },
+      "documentation":"<p>Internal server error.</p>",
+      "error":{"httpStatusCode":500},
+      "exception":true,
+      "fault":true,
+      "retryable":{"throttling":false}
+    },
+    "InternetConfiguration":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p>This configuration sets the Amazon S3 access point network origin to <code>Internet</code>.</p>"
+    },
+    "IssueCode":{"type":"string"},
+    "IssuingAccount":{"type":"string"},
+    "JobDetails":{
+      "type":"structure",
+      "required":[
+        "jobId",
+        "startedOn",
+        "status"
+      ],
+      "members":{
+        "completedOn":{
+          "shape":"Timestamp",
+          "documentation":"<p>A timestamp of when the job was completed.</p>"
+        },
+        "jobError":{"shape":"JobError"},
+        "jobId":{
+          "shape":"JobId",
+          "documentation":"<p>The <code>JobId</code> that is returned by the <code>StartPolicyGeneration</code> operation. The <code>JobId</code> can be used with <code>GetGeneratedPolicy</code> to retrieve the generated policies or used with <code>CancelPolicyGeneration</code> to cancel the policy generation request.</p>"
+        },
+        "startedOn":{
+          "shape":"Timestamp",
+          "documentation":"<p>A timestamp of when the job was started.</p>"
+        },
+        "status":{
+          "shape":"JobStatus",
+          "documentation":"<p>The status of the job request.</p>"
+        }
+      },
+      "documentation":"<p>Contains details about the policy generation request.</p>"
+    },
+    "JobError":{
+      "type":"structure",
+      "required":[
+        "code",
+        "message"
+      ],
+      "members":{
+        "code":{
+          "shape":"JobErrorCode",
+          "documentation":"<p>The job error code.</p>"
+        },
+        "message":{
+          "shape":"String",
+          "documentation":"<p>Specific information about the error. For example, which service quota was exceeded or which resource was not found.</p>"
+        }
+      },
+      "documentation":"<p>Contains the details about the policy generation error.</p>"
+    },
+    "JobErrorCode":{
+      "type":"string",
+      "enum":[
+        "AUTHORIZATION_ERROR",
+        "RESOURCE_NOT_FOUND_ERROR",
+        "SERVICE_QUOTA_EXCEEDED_ERROR",
+        "SERVICE_ERROR"
+      ]
+    },
+    "JobId":{"type":"string"},
+    "JobStatus":{
+      "type":"string",
+      "enum":[
+        "IN_PROGRESS",
+        "SUCCEEDED",
+        "FAILED",
+        "CANCELED"
+      ]
+    },
+    "KmsConstraintsKey":{"type":"string"},
+    "KmsConstraintsMap":{
+      "type":"map",
+      "key":{"shape":"KmsConstraintsKey"},
+      "value":{"shape":"KmsConstraintsValue"}
+    },
+    "KmsConstraintsValue":{"type":"string"},
+    "KmsGrantConfiguration":{
+      "type":"structure",
+      "required":[
+        "granteePrincipal",
+        "issuingAccount",
+        "operations"
+      ],
+      "members":{
+        "constraints":{
+          "shape":"KmsGrantConstraints",
+          "documentation":"<p>Use this structure to propose allowing <a href=\"https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations\">cryptographic operations</a> in the grant only when the operation request includes the specified <a href=\"https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context\">encryption context</a>.</p>"
+        },
+        "granteePrincipal":{
+          "shape":"GranteePrincipal",
+          "documentation":"<p>The principal that is given permission to perform the operations that the grant permits.</p>"
+        },
+        "issuingAccount":{
+          "shape":"IssuingAccount",
+          "documentation":"<p> The AWS account under which the grant was issued. The account is used to propose KMS grants issued by accounts other than the owner of the key.</p>"
+        },
+        "operations":{
+          "shape":"KmsGrantOperationsList",
+          "documentation":"<p>A list of operations that the grant permits.</p>"
+        },
+        "retiringPrincipal":{
+          "shape":"RetiringPrincipal",
+          "documentation":"<p>The principal that is given permission to retire the grant by using <a href=\"https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html\">RetireGrant</a> operation.</p>"
+        }
+      },
+      "documentation":"<p>A proposed grant configuration for a KMS key. For more information, see <a href=\"https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html\">CreateGrant</a>.</p>"
+    },
+    "KmsGrantConfigurationsList":{
+      "type":"list",
+      "member":{"shape":"KmsGrantConfiguration"}
+    },
+    "KmsGrantConstraints":{
+      "type":"structure",
+      "members":{
+        "encryptionContextEquals":{
+          "shape":"KmsConstraintsMap",
+          "documentation":"<p>A list of key-value pairs that must match the encryption context in the <a href=\"https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations\">cryptographic operation</a> request. The grant allows the operation only when the encryption context in the request is the same as the encryption context specified in this constraint.</p>"
+        },
+        "encryptionContextSubset":{
+          "shape":"KmsConstraintsMap",
+          "documentation":"<p>A list of key-value pairs that must be included in the encryption context of the <a href=\"https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations\">cryptographic operation</a> request. The grant allows the cryptographic operation only when the encryption context in the request includes the key-value pairs specified in this constraint, although it can include additional key-value pairs.</p>"
+        }
+      },
+      "documentation":"<p>Use this structure to propose allowing <a href=\"https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations\">cryptographic operations</a> in the grant only when the operation request includes the specified <a href=\"https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context\">encryption context</a>. You can specify only one type of encryption context. An empty map is treated as not specified. For more information, see <a href=\"https://docs.aws.amazon.com/kms/latest/APIReference/API_GrantConstraints.html\">GrantConstraints</a>.</p>"
+    },
+    "KmsGrantOperation":{
+      "type":"string",
+      "enum":[
+        "CreateGrant",
+        "Decrypt",
+        "DescribeKey",
+        "Encrypt",
+        "GenerateDataKey",
+        "GenerateDataKeyPair",
+        "GenerateDataKeyPairWithoutPlaintext",
+        "GenerateDataKeyWithoutPlaintext",
+        "GetPublicKey",
+        "ReEncryptFrom",
+        "ReEncryptTo",
+        "RetireGrant",
+        "Sign",
+        "Verify"
+      ]
+    },
+    "KmsGrantOperationsList":{
+      "type":"list",
+      "member":{"shape":"KmsGrantOperation"}
+    },
+    "KmsKeyConfiguration":{
+      "type":"structure",
+      "members":{
+        "grants":{
+          "shape":"KmsGrantConfigurationsList",
+          "documentation":"<p>A list of proposed grant configurations for the KMS key. If the proposed grant configuration is for an existing key, the access preview uses the proposed list of grant configurations in place of the existing grants. Otherwise, the access preview uses the existing grants for the key.</p>"
+        },
+        "keyPolicies":{
+          "shape":"KmsKeyPoliciesMap",
+          "documentation":"<p>Resource policy configuration for the KMS key. The only valid value for the name of the key policy is <code>default</code>. For more information, see <a href=\"https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default\">Default key policy</a>.</p>"
+        }
+      },
+      "documentation":"<p>Proposed access control configuration for a KMS key. You can propose a configuration for a new KMS key or an existing KMS key that you own by specifying the key policy and KMS grant configuration. If the configuration is for an existing key and you do not specify the key policy, the access preview uses the existing policy for the key. If the access preview is for a new resource and you do not specify the key policy, then the access preview uses the default key policy. The proposed key policy cannot be an empty string. For more information, see <a href=\"https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default\">Default key policy</a>. For more information about key policy limits, see <a href=\"https://docs.aws.amazon.com/kms/latest/developerguide/resource-limits.html\">Resource quotas</a>.</p> <p/>"
+    },
+    "KmsKeyPoliciesMap":{
+      "type":"map",
+      "key":{"shape":"PolicyName"},
+      "value":{"shape":"KmsKeyPolicy"}
+    },
+    "KmsKeyPolicy":{"type":"string"},
+    "LearnMoreLink":{"type":"string"},
+    "ListAccessPreviewFindingsRequest":{
+      "type":"structure",
+      "required":[
+        "accessPreviewId",
+        "analyzerArn"
+      ],
+      "members":{
+        "accessPreviewId":{
+          "shape":"AccessPreviewId",
+          "documentation":"<p>The unique ID for the access preview.</p>",
+          "location":"uri",
+          "locationName":"accessPreviewId"
+        },
+        "analyzerArn":{
+          "shape":"AnalyzerArn",
+          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#permission-resources\">ARN of the analyzer</a> used to generate the access.</p>"
+        },
+        "filter":{
+          "shape":"FilterCriteriaMap",
+          "documentation":"<p>Criteria to filter the returned findings.</p>"
+        },
+        "maxResults":{
+          "shape":"Integer",
+          "documentation":"<p>The maximum number of results to return in the response.</p>"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token used for pagination of results returned.</p>"
+        }
+      }
+    },
+    "ListAccessPreviewFindingsResponse":{
+      "type":"structure",
+      "required":["findings"],
+      "members":{
+        "findings":{
+          "shape":"AccessPreviewFindingsList",
+          "documentation":"<p>A list of access preview findings that match the specified filter criteria.</p>"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token used for pagination of results returned.</p>"
+        }
+      }
+    },
+    "ListAccessPreviewsRequest":{
+      "type":"structure",
+      "required":["analyzerArn"],
+      "members":{
+        "analyzerArn":{
+          "shape":"AnalyzerArn",
+          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#permission-resources\">ARN of the analyzer</a> used to generate the access preview.</p>",
+          "location":"querystring",
+          "locationName":"analyzerArn"
+        },
+        "maxResults":{
+          "shape":"Integer",
+          "documentation":"<p>The maximum number of results to return in the response.</p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token used for pagination of results returned.</p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        }
+      }
+    },
+    "ListAccessPreviewsResponse":{
+      "type":"structure",
+      "required":["accessPreviews"],
+      "members":{
+        "accessPreviews":{
+          "shape":"AccessPreviewsList",
+          "documentation":"<p>A list of access previews retrieved for the analyzer.</p>"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token used for pagination of results returned.</p>"
+        }
+      }
+    },
+    "ListAnalyzedResourcesRequest":{
+      "type":"structure",
+      "required":["analyzerArn"],
+      "members":{
+        "analyzerArn":{
+          "shape":"AnalyzerArn",
+          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#permission-resources\">ARN of the analyzer</a> to retrieve a list of analyzed resources from.</p>"
+        },
+        "maxResults":{
+          "shape":"Integer",
+          "documentation":"<p>The maximum number of results to return in the response.</p>"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token used for pagination of results returned.</p>"
+        },
+        "resourceType":{
+          "shape":"ResourceType",
+          "documentation":"<p>The type of resource.</p>"
+        }
+      },
+      "documentation":"<p>Retrieves a list of resources that have been analyzed.</p>"
+    },
+    "ListAnalyzedResourcesResponse":{
+      "type":"structure",
+      "required":["analyzedResources"],
+      "members":{
+        "analyzedResources":{
+          "shape":"AnalyzedResourcesList",
+          "documentation":"<p>A list of resources that were analyzed.</p>"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token used for pagination of results returned.</p>"
+        }
+      },
+      "documentation":"<p>The response to the request.</p>"
+    },
+    "ListAnalyzersRequest":{
+      "type":"structure",
+      "members":{
+        "maxResults":{
+          "shape":"Integer",
+          "documentation":"<p>The maximum number of results to return in the response.</p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token used for pagination of results returned.</p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "type":{
+          "shape":"Type",
+          "documentation":"<p>The type of analyzer.</p>",
+          "location":"querystring",
+          "locationName":"type"
+        }
+      },
+      "documentation":"<p>Retrieves a list of analyzers.</p>"
+    },
+    "ListAnalyzersResponse":{
+      "type":"structure",
+      "required":["analyzers"],
+      "members":{
+        "analyzers":{
+          "shape":"AnalyzersList",
+          "documentation":"<p>The analyzers retrieved.</p>"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token used for pagination of results returned.</p>"
+        }
+      },
+      "documentation":"<p>The response to the request.</p>"
+    },
+    "ListArchiveRulesRequest":{
+      "type":"structure",
+      "required":["analyzerName"],
+      "members":{
+        "analyzerName":{
+          "shape":"Name",
+          "documentation":"<p>The name of the analyzer to retrieve rules from.</p>",
+          "location":"uri",
+          "locationName":"analyzerName"
+        },
+        "maxResults":{
+          "shape":"Integer",
+          "documentation":"<p>The maximum number of results to return in the request.</p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token used for pagination of results returned.</p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        }
+      },
+      "documentation":"<p>Retrieves a list of archive rules created for the specified analyzer.</p>"
+    },
+    "ListArchiveRulesResponse":{
+      "type":"structure",
+      "required":["archiveRules"],
+      "members":{
+        "archiveRules":{
+          "shape":"ArchiveRulesList",
+          "documentation":"<p>A list of archive rules created for the specified analyzer.</p>"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token used for pagination of results returned.</p>"
+        }
+      },
+      "documentation":"<p>The response to the request.</p>"
+    },
+    "ListFindingsRequest":{
+      "type":"structure",
+      "required":["analyzerArn"],
+      "members":{
+        "analyzerArn":{
+          "shape":"AnalyzerArn",
+          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#permission-resources\">ARN of the analyzer</a> to retrieve findings from.</p>"
+        },
+        "filter":{
+          "shape":"FilterCriteriaMap",
+          "documentation":"<p>A filter to match for the findings to return.</p>"
+        },
+        "maxResults":{
+          "shape":"Integer",
+          "documentation":"<p>The maximum number of results to return in the response.</p>"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token used for pagination of results returned.</p>"
+        },
+        "sort":{
+          "shape":"SortCriteria",
+          "documentation":"<p>The sort order for the findings returned.</p>"
+        }
+      },
+      "documentation":"<p>Retrieves a list of findings generated by the specified analyzer.</p>"
+    },
+    "ListFindingsResponse":{
+      "type":"structure",
+      "required":["findings"],
+      "members":{
+        "findings":{
+          "shape":"FindingsList",
+          "documentation":"<p>A list of findings retrieved from the analyzer that match the filter criteria specified, if any.</p>"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token used for pagination of results returned.</p>"
+        }
+      },
+      "documentation":"<p>The response to the request.</p>"
+    },
+    "ListPolicyGenerationsRequest":{
+      "type":"structure",
+      "members":{
+        "maxResults":{
+          "shape":"ListPolicyGenerationsRequestMaxResultsInteger",
+          "documentation":"<p>The maximum number of results to return in the response.</p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token used for pagination of results returned.</p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "principalArn":{
+          "shape":"PrincipalArn",
+          "documentation":"<p>The ARN of the IAM entity (user or role) for which you are generating a policy. Use this with <code>ListGeneratedPolicies</code> to filter the results to only include results for a specific principal.</p>",
+          "location":"querystring",
+          "locationName":"principalArn"
+        }
+      }
+    },
+    "ListPolicyGenerationsRequestMaxResultsInteger":{
+      "type":"integer",
+      "box":true,
+      "min":1
+    },
+    "ListPolicyGenerationsResponse":{
+      "type":"structure",
+      "required":["policyGenerations"],
+      "members":{
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token used for pagination of results returned.</p>"
+        },
+        "policyGenerations":{
+          "shape":"PolicyGenerationList",
+          "documentation":"<p>A <code>PolicyGeneration</code> object that contains details about the generated policy.</p>"
+        }
+      }
+    },
+    "ListTagsForResourceRequest":{
+      "type":"structure",
+      "required":["resourceArn"],
+      "members":{
+        "resourceArn":{
+          "shape":"String",
+          "documentation":"<p>The ARN of the resource to retrieve tags from.</p>",
+          "location":"uri",
+          "locationName":"resourceArn"
+        }
+      },
+      "documentation":"<p>Retrieves a list of tags applied to the specified resource.</p>"
+    },
+    "ListTagsForResourceResponse":{
+      "type":"structure",
+      "members":{
+        "tags":{
+          "shape":"TagsMap",
+          "documentation":"<p>The tags that are applied to the specified resource.</p>"
+        }
+      },
+      "documentation":"<p>The response to the request.</p>"
+    },
+    "Locale":{
+      "type":"string",
+      "enum":[
+        "DE",
+        "EN",
+        "ES",
+        "FR",
+        "IT",
+        "JA",
+        "KO",
+        "PT_BR",
+        "ZH_CN",
+        "ZH_TW"
+      ]
+    },
+    "Location":{
+      "type":"structure",
+      "required":[
+        "path",
+        "span"
+      ],
+      "members":{
+        "path":{
+          "shape":"PathElementList",
+          "documentation":"<p>A path in a policy, represented as a sequence of path elements.</p>"
+        },
+        "span":{
+          "shape":"Span",
+          "documentation":"<p>A span in a policy.</p>"
+        }
+      },
+      "documentation":"<p>A location in a policy that is represented as a path through the JSON representation and a corresponding span.</p>"
+    },
+    "LocationList":{
+      "type":"list",
+      "member":{"shape":"Location"}
+    },
+    "Name":{
+      "type":"string",
+      "max":255,
+      "min":1,
+      "pattern":"^[A-Za-z][A-Za-z0-9_.-]*$"
+    },
+    "NetworkOriginConfiguration":{
+      "type":"structure",
+      "members":{
+        "internetConfiguration":{
+          "shape":"InternetConfiguration",
+          "documentation":"<p>The configuration for the Amazon S3 access point with an <code>Internet</code> origin.</p>"
+        },
+        "vpcConfiguration":{"shape":"VpcConfiguration"}
+      },
+      "documentation":"<p>The proposed <code>InternetConfiguration</code> or <code>VpcConfiguration</code> to apply to the Amazon S3 Access point. You can make the access point accessible from the internet, or you can specify that all requests made through that access point must originate from a specific virtual private cloud (VPC). You can specify only one type of network configuration. For more information, see <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/dev/creating-access-points.html\">Creating access points</a>.</p>",
+      "union":true
+    },
+    "OrderBy":{
+      "type":"string",
+      "enum":[
+        "ASC",
+        "DESC"
+      ]
+    },
+    "PathElement":{
+      "type":"structure",
+      "members":{
+        "index":{
+          "shape":"Integer",
+          "documentation":"<p>Refers to an index in a JSON array.</p>"
+        },
+        "key":{
+          "shape":"String",
+          "documentation":"<p>Refers to a key in a JSON object.</p>"
+        },
+        "substring":{
+          "shape":"Substring",
+          "documentation":"<p>Refers to a substring of a literal string in a JSON object.</p>"
+        },
+        "value":{
+          "shape":"String",
+          "documentation":"<p>Refers to the value associated with a given key in a JSON object.</p>"
+        }
+      },
+      "documentation":"<p>A single element in a path through the JSON representation of a policy.</p>",
+      "union":true
+    },
+    "PathElementList":{
+      "type":"list",
+      "member":{"shape":"PathElement"}
+    },
+    "PolicyDocument":{"type":"string"},
+    "PolicyGeneration":{
+      "type":"structure",
+      "required":[
+        "jobId",
+        "principalArn",
+        "startedOn",
+        "status"
+      ],
+      "members":{
+        "completedOn":{
+          "shape":"Timestamp",
+          "documentation":"<p>A timestamp of when the policy generation was completed.</p>"
+        },
+        "jobId":{
+          "shape":"JobId",
+          "documentation":"<p>The <code>JobId</code> that is returned by the <code>StartPolicyGeneration</code> operation. The <code>JobId</code> can be used with <code>GetGeneratedPolicy</code> to retrieve the generated policies or used with <code>CancelPolicyGeneration</code> to cancel the policy generation request.</p>"
+        },
+        "principalArn":{
+          "shape":"PrincipalArn",
+          "documentation":"<p>The ARN of the IAM entity (user or role) for which you are generating a policy.</p>"
+        },
+        "startedOn":{
+          "shape":"Timestamp",
+          "documentation":"<p>A timestamp of when the policy generation started.</p>"
+        },
+        "status":{
+          "shape":"JobStatus",
+          "documentation":"<p>The status of the policy generation request.</p>"
+        }
+      },
+      "documentation":"<p>Contains details about the policy generation status and properties.</p>"
+    },
+    "PolicyGenerationDetails":{
+      "type":"structure",
+      "required":["principalArn"],
+      "members":{
+        "principalArn":{
+          "shape":"PrincipalArn",
+          "documentation":"<p>The ARN of the IAM entity (user or role) for which you are generating a policy.</p>"
+        }
+      },
+      "documentation":"<p>Contains the ARN details about the IAM entity for which the policy is generated.</p>"
+    },
+    "PolicyGenerationList":{
+      "type":"list",
+      "member":{"shape":"PolicyGeneration"}
+    },
+    "PolicyName":{"type":"string"},
+    "PolicyType":{
+      "type":"string",
+      "enum":[
+        "IDENTITY_POLICY",
+        "RESOURCE_POLICY",
+        "SERVICE_CONTROL_POLICY"
+      ]
+    },
+    "Position":{
+      "type":"structure",
+      "required":[
+        "column",
+        "line",
+        "offset"
+      ],
+      "members":{
+        "column":{
+          "shape":"Integer",
+          "documentation":"<p>The column of the position, starting from 0.</p>"
+        },
+        "line":{
+          "shape":"Integer",
+          "documentation":"<p>The line of the position, starting from 1.</p>"
+        },
+        "offset":{
+          "shape":"Integer",
+          "documentation":"<p>The offset within the policy that corresponds to the position, starting from 0.</p>"
+        }
+      },
+      "documentation":"<p>A position in a policy.</p>"
+    },
+    "PrincipalArn":{
+      "type":"string",
+      "pattern":"arn:[^:]*:iam::[^:]*:(role|user)/.{1,576}$"
+    },
+    "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"
+      ]
+    },
+    "RegionList":{
+      "type":"list",
+      "member":{"shape":"String"}
+    },
+    "ResourceArn":{
+      "type":"string",
+      "pattern":"arn:[^:]*:[^:]*:[^:]*:[^:]*:.*$"
+    },
+    "ResourceNotFoundException":{
+      "type":"structure",
+      "required":[
+        "message",
+        "resourceId",
+        "resourceType"
+      ],
+      "members":{
+        "message":{"shape":"String"},
+        "resourceId":{
+          "shape":"String",
+          "documentation":"<p>The ID of the resource.</p>"
+        },
+        "resourceType":{
+          "shape":"String",
+          "documentation":"<p>The type of the resource.</p>"
+        }
+      },
+      "documentation":"<p>The specified resource could not be found.</p>",
+      "error":{
+        "httpStatusCode":404,
+        "senderFault":true
+      },
+      "exception":true
+    },
+    "ResourceType":{
+      "type":"string",
+      "enum":[
+        "AWS::S3::Bucket",
+        "AWS::IAM::Role",
+        "AWS::SQS::Queue",
+        "AWS::Lambda::Function",
+        "AWS::Lambda::LayerVersion",
+        "AWS::KMS::Key",
+        "AWS::SecretsManager::Secret"
+      ]
+    },
+    "RetiringPrincipal":{"type":"string"},
+    "RoleArn":{
+      "type":"string",
+      "pattern":"arn:[^:]*:iam::[^:]*:role/.{1,576}$"
+    },
+    "S3AccessPointConfiguration":{
+      "type":"structure",
+      "members":{
+        "accessPointPolicy":{
+          "shape":"AccessPointPolicy",
+          "documentation":"<p>The access point policy.</p>"
+        },
+        "networkOrigin":{
+          "shape":"NetworkOriginConfiguration",
+          "documentation":"<p>The proposed <code>Internet</code> and <code>VpcConfiguration</code> to apply to this Amazon S3 access point. If the access preview is for a new resource and neither is specified, the access preview uses <code>Internet</code> for the network origin. If the access preview is for an existing resource and neither is specified, the access preview uses the exiting network origin.</p>"
+        },
+        "publicAccessBlock":{
+          "shape":"S3PublicAccessBlockConfiguration",
+          "documentation":"<p>The proposed <code>S3PublicAccessBlock</code> configuration to apply to this Amazon S3 Access Point.</p>"
+        }
+      },
+      "documentation":"<p>The configuration for an Amazon S3 access point for the bucket. You can propose up to 10 access points per bucket. If the proposed Amazon S3 access point configuration is for an existing bucket, the access preview uses the proposed access point configuration in place of the existing access points. To propose an access point without a policy, you can provide an empty string as the access point policy. For more information, see <a href=\"https://docs.aws.amazon.com/https:/docs.aws.amazon.com/AmazonS3/latest/dev/creating-access-points.html\">Creating access points</a>. For more information about access point policy limits, see <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/dev/access-points-restrictions-limitations.html\">Access points restrictions and limitations</a>.</p>"
+    },
+    "S3AccessPointConfigurationsMap":{
+      "type":"map",
+      "key":{"shape":"AccessPointArn"},
+      "value":{"shape":"S3AccessPointConfiguration"}
+    },
+    "S3BucketAclGrantConfiguration":{
+      "type":"structure",
+      "required":[
+        "grantee",
+        "permission"
+      ],
+      "members":{
+        "grantee":{
+          "shape":"AclGrantee",
+          "documentation":"<p>The grantee to whom you’re assigning access rights.</p>"
+        },
+        "permission":{
+          "shape":"AclPermission",
+          "documentation":"<p>The permissions being granted.</p>"
+        }
+      },
+      "documentation":"<p>A proposed access control list grant configuration for an Amazon S3 bucket. For more information, see <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#setting-acls\">How to Specify an ACL</a>.</p>"
+    },
+    "S3BucketAclGrantConfigurationsList":{
+      "type":"list",
+      "member":{"shape":"S3BucketAclGrantConfiguration"}
+    },
+    "S3BucketConfiguration":{
+      "type":"structure",
+      "members":{
+        "accessPoints":{
+          "shape":"S3AccessPointConfigurationsMap",
+          "documentation":"<p>The configuration of Amazon S3 access points for the bucket.</p>"
+        },
+        "bucketAclGrants":{
+          "shape":"S3BucketAclGrantConfigurationsList",
+          "documentation":"<p>The proposed list of ACL grants for the Amazon S3 bucket. You can propose up to 100 ACL grants per bucket. If the proposed grant configuration is for an existing bucket, the access preview uses the proposed list of grant configurations in place of the existing grants. Otherwise, the access preview uses the existing grants for the bucket.</p>"
+        },
+        "bucketPolicy":{
+          "shape":"S3BucketPolicy",
+          "documentation":"<p>The proposed bucket policy for the Amazon S3 bucket.</p>"
+        },
+        "bucketPublicAccessBlock":{
+          "shape":"S3PublicAccessBlockConfiguration",
+          "documentation":"<p>The proposed block public access configuration for the Amazon S3 bucket.</p>"
+        }
+      },
+      "documentation":"<p>Proposed access control configuration for an Amazon S3 bucket. You can propose a configuration for a new Amazon S3 bucket or an existing Amazon S3 bucket that you own by specifying the Amazon S3 bucket policy, bucket ACLs, bucket BPA settings, and Amazon S3 access points attached to the bucket. If the configuration is for an existing Amazon S3 bucket and you do not specify the Amazon S3 bucket policy, the access preview uses the existing policy attached to the bucket. If the access preview is for a new resource and you do not specify the Amazon S3 bucket policy, the access preview assumes a bucket without a policy. To propose deletion of an existing bucket policy, you can specify an empty string. For more information about bucket policy limits, see <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html\">Bucket Policy Examples</a>.</p>"
+    },
+    "S3BucketPolicy":{"type":"string"},
+    "S3PublicAccessBlockConfiguration":{
+      "type":"structure",
+      "required":[
+        "ignorePublicAcls",
+        "restrictPublicBuckets"
+      ],
+      "members":{
+        "ignorePublicAcls":{
+          "shape":"Boolean",
+          "documentation":"<p> Specifies whether Amazon S3 should ignore public ACLs for this bucket and objects in this bucket. </p>"
+        },
+        "restrictPublicBuckets":{
+          "shape":"Boolean",
+          "documentation":"<p> Specifies whether Amazon S3 should restrict public bucket policies for this bucket. </p>"
+        }
+      },
+      "documentation":"<p>The <code>PublicAccessBlock</code> configuration to apply to this Amazon S3 bucket. If the proposed configuration is for an existing Amazon S3 bucket and the configuration is not specified, the access preview uses the existing setting. If the proposed configuration is for a new bucket and the configuration is not specified, the access preview uses <code>false</code>. If the proposed configuration is for a new access point and the access point BPA configuration is not specified, the access preview uses <code>true</code>. For more information, see <a href=\"https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-publicaccessblockconfiguration.html\">PublicAccessBlockConfiguration</a>. </p>"
+    },
+    "SecretsManagerSecretConfiguration":{
+      "type":"structure",
+      "members":{
+        "kmsKeyId":{
+          "shape":"SecretsManagerSecretKmsId",
+          "documentation":"<p>The proposed ARN, key ID, or alias of the AWS KMS customer master key (CMK).</p>"
+        },
+        "secretPolicy":{
+          "shape":"SecretsManagerSecretPolicy",
+          "documentation":"<p>The proposed resource policy defining who can access or manage the secret.</p>"
+        }
+      },
+      "documentation":"<p>The configuration for a Secrets Manager secret. For more information, see <a href=\"https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html\">CreateSecret</a>.</p> <p>You can propose a configuration for a new secret or an existing secret that you own by specifying the secret policy and optional KMS encryption key. If the configuration is for an existing secret and you do not specify the secret policy, the access preview uses the existing policy for the secret. If the access preview is for a new resource and you do not specify the policy, the access preview assumes a secret without a policy. To propose deletion of an existing policy, you can specify an empty string. If the proposed configuration is for a new secret and you do not specify the KMS key ID, the access preview uses the default CMK of the AWS account. If you specify an empty string for the KMS key ID, the access preview uses the default CMK of the AWS account. For more information about secret policy limits, see <a href=\"https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_limits.html\">Quotas for AWS Secrets Manager.</a>.</p>"
+    },
+    "SecretsManagerSecretKmsId":{"type":"string"},
+    "SecretsManagerSecretPolicy":{"type":"string"},
+    "ServiceQuotaExceededException":{
+      "type":"structure",
+      "required":[
+        "message",
+        "resourceId",
+        "resourceType"
+      ],
+      "members":{
+        "message":{"shape":"String"},
+        "resourceId":{
+          "shape":"String",
+          "documentation":"<p>The resource ID.</p>"
+        },
+        "resourceType":{
+          "shape":"String",
+          "documentation":"<p>The resource type.</p>"
+        }
+      },
+      "documentation":"<p>Service quote met error.</p>",
+      "error":{
+        "httpStatusCode":402,
+        "senderFault":true
+      },
+      "exception":true
+    },
+    "SharedViaList":{
+      "type":"list",
+      "member":{"shape":"String"}
+    },
+    "SortCriteria":{
+      "type":"structure",
+      "members":{
+        "attributeName":{
+          "shape":"String",
+          "documentation":"<p>The name of the attribute to sort on.</p>"
+        },
+        "orderBy":{
+          "shape":"OrderBy",
+          "documentation":"<p>The sort order, ascending or descending.</p>"
+        }
+      },
+      "documentation":"<p>The criteria used to sort.</p>"
+    },
+    "Span":{
+      "type":"structure",
+      "required":[
+        "end",
+        "start"
+      ],
+      "members":{
+        "end":{
+          "shape":"Position",
+          "documentation":"<p>The end position of the span (exclusive).</p>"
+        },
+        "start":{
+          "shape":"Position",
+          "documentation":"<p>The start position of the span (inclusive).</p>"
+        }
+      },
+      "documentation":"<p>A span in a policy. The span consists of a start position (inclusive) and end position (exclusive).</p>"
+    },
+    "SqsQueueConfiguration":{
+      "type":"structure",
+      "members":{
+        "queuePolicy":{
+          "shape":"SqsQueuePolicy",
+          "documentation":"<p> The proposed resource policy for the SQS queue. </p>"
+        }
+      },
+      "documentation":"<p>The proposed access control configuration for an SQS queue. You can propose a configuration for a new SQS queue or an existing SQS queue that you own by specifying the SQS policy. If the configuration is for an existing SQS queue and you do not specify the SQS policy, the access preview uses the existing SQS policy for the queue. If the access preview is for a new resource and you do not specify the policy, the access preview assumes an SQS queue without a policy. To propose deletion of an existing SQS queue policy, you can specify an empty string for the SQS policy. For more information about SQS policy limits, see <a href=\"https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/quotas-policies.html\">Quotas related to policies</a>.</p>"
+    },
+    "SqsQueuePolicy":{"type":"string"},
+    "StartPolicyGenerationRequest":{
+      "type":"structure",
+      "required":["policyGenerationDetails"],
+      "members":{
+        "clientToken":{
+          "shape":"String",
+          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Idempotency ensures that an API request completes only once. With an idempotent request, if the original request completes successfully, the subsequent retries with the same client token return the result from the original successful request and they have no additional effect.</p> <p>If you do not specify a client token, one is automatically generated by the AWS SDK.</p>",
+          "idempotencyToken":true
+        },
+        "cloudTrailDetails":{
+          "shape":"CloudTrailDetails",
+          "documentation":"<p>A <code>CloudTrailDetails</code> object that contains details about a <code>Trail</code> that you want to analyze to generate policies.</p>"
+        },
+        "policyGenerationDetails":{
+          "shape":"PolicyGenerationDetails",
+          "documentation":"<p>Contains the ARN of the IAM entity (user or role) for which you are generating a policy.</p>"
+        }
+      }
+    },
+    "StartPolicyGenerationResponse":{
+      "type":"structure",
+      "required":["jobId"],
+      "members":{
+        "jobId":{
+          "shape":"JobId",
+          "documentation":"<p>The <code>JobId</code> that is returned by the <code>StartPolicyGeneration</code> operation. The <code>JobId</code> can be used with <code>GetGeneratedPolicy</code> to retrieve the generated policies or used with <code>CancelPolicyGeneration</code> to cancel the policy generation request.</p>"
+        }
+      }
+    },
+    "StartResourceScanRequest":{
+      "type":"structure",
+      "required":[
+        "analyzerArn",
+        "resourceArn"
+      ],
+      "members":{
+        "analyzerArn":{
+          "shape":"AnalyzerArn",
+          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#permission-resources\">ARN of the analyzer</a> to use to scan the policies applied to the specified resource.</p>"
+        },
+        "resourceArn":{
+          "shape":"ResourceArn",
+          "documentation":"<p>The ARN of the resource to scan.</p>"
+        }
+      },
+      "documentation":"<p>Starts a scan of the policies applied to the specified resource.</p>"
+    },
+    "StatusReason":{
+      "type":"structure",
+      "required":["code"],
+      "members":{
+        "code":{
+          "shape":"ReasonCode",
+          "documentation":"<p>The reason code for the current status of the analyzer.</p>"
+        }
+      },
+      "documentation":"<p>Provides more details about the current status of the analyzer. For example, if the creation for the analyzer fails, a <code>Failed</code> status is returned. For an analyzer with organization as the type, this failure can be due to an issue with creating the service-linked roles required in the member accounts of the AWS organization.</p>"
+    },
+    "String":{"type":"string"},
+    "Substring":{
+      "type":"structure",
+      "required":[
+        "length",
+        "start"
+      ],
+      "members":{
+        "length":{
+          "shape":"Integer",
+          "documentation":"<p>The length of the substring.</p>"
+        },
+        "start":{
+          "shape":"Integer",
+          "documentation":"<p>The start index of the substring, starting from 0.</p>"
+        }
+      },
+      "documentation":"<p>A reference to a substring of a literal string in a JSON document.</p>"
+    },
+    "TagKeys":{
+      "type":"list",
+      "member":{"shape":"String"}
+    },
+    "TagResourceRequest":{
+      "type":"structure",
+      "required":[
+        "resourceArn",
+        "tags"
+      ],
+      "members":{
+        "resourceArn":{
+          "shape":"String",
+          "documentation":"<p>The ARN of the resource to add the tag to.</p>",
+          "location":"uri",
+          "locationName":"resourceArn"
+        },
+        "tags":{
+          "shape":"TagsMap",
+          "documentation":"<p>The tags to add to the resource.</p>"
+        }
+      },
+      "documentation":"<p>Adds a tag to the specified resource.</p>"
+    },
+    "TagResourceResponse":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p>The response to the request.</p>"
+    },
+    "TagsMap":{
+      "type":"map",
+      "key":{"shape":"String"},
+      "value":{"shape":"String"}
+    },
+    "ThrottlingException":{
+      "type":"structure",
+      "required":["message"],
+      "members":{
+        "message":{"shape":"String"},
+        "retryAfterSeconds":{
+          "shape":"Integer",
+          "documentation":"<p>The seconds to wait to retry.</p>",
+          "location":"header",
+          "locationName":"Retry-After"
+        }
+      },
+      "documentation":"<p>Throttling limit exceeded error.</p>",
+      "error":{
+        "httpStatusCode":429,
+        "senderFault":true
+      },
+      "exception":true,
+      "retryable":{"throttling":true}
+    },
+    "Timestamp":{
+      "type":"timestamp",
+      "timestampFormat":"iso8601"
+    },
+    "Token":{"type":"string"},
+    "Trail":{
+      "type":"structure",
+      "required":["cloudTrailArn"],
+      "members":{
+        "allRegions":{
+          "shape":"Boolean",
+          "documentation":"<p>Possible values are <code>true</code> or <code>false</code>. If set to <code>true</code>, Access Analyzer retrieves CloudTrail data from all regions to analyze and generate a policy.</p>"
+        },
+        "cloudTrailArn":{
+          "shape":"CloudTrailArn",
+          "documentation":"<p>Specifies the ARN of the trail. The format of a trail ARN is <code>arn:aws:cloudtrail:us-east-2:123456789012:trail/MyTrail</code>.</p>"
+        },
+        "regions":{
+          "shape":"RegionList",
+          "documentation":"<p>A list of regions to get CloudTrail data from and analyze to generate a policy.</p>"
+        }
+      },
+      "documentation":"<p>Contains details about the CloudTrail trail being analyzed to generate a policy.</p>"
+    },
+    "TrailList":{
+      "type":"list",
+      "member":{"shape":"Trail"}
+    },
+    "TrailProperties":{
+      "type":"structure",
+      "required":["cloudTrailArn"],
+      "members":{
+        "allRegions":{
+          "shape":"Boolean",
+          "documentation":"<p>Possible values are <code>true</code> or <code>false</code>. If set to <code>true</code>, Access Analyzer retrieves CloudTrail data from all regions to analyze and generate a policy.</p>"
+        },
+        "cloudTrailArn":{
+          "shape":"CloudTrailArn",
+          "documentation":"<p>Specifies the ARN of the trail. The format of a trail ARN is <code>arn:aws:cloudtrail:us-east-2:123456789012:trail/MyTrail</code>.</p>"
+        },
+        "regions":{
+          "shape":"RegionList",
+          "documentation":"<p>A list of regions to get CloudTrail data from and analyze to generate a policy.</p>"
+        }
+      },
+      "documentation":"<p>Contains details about the CloudTrail trail being analyzed to generate a policy.</p>"
+    },
+    "TrailPropertiesList":{
+      "type":"list",
+      "member":{"shape":"TrailProperties"}
+    },
+    "Type":{
+      "type":"string",
+      "enum":[
+        "ACCOUNT",
+        "ORGANIZATION"
+      ]
+    },
+    "UntagResourceRequest":{
+      "type":"structure",
+      "required":[
+        "resourceArn",
+        "tagKeys"
+      ],
+      "members":{
+        "resourceArn":{
+          "shape":"String",
+          "documentation":"<p>The ARN of the resource to remove the tag from.</p>",
+          "location":"uri",
+          "locationName":"resourceArn"
+        },
+        "tagKeys":{
+          "shape":"TagKeys",
+          "documentation":"<p>The key for the tag to add.</p>",
+          "location":"querystring",
+          "locationName":"tagKeys"
+        }
+      },
+      "documentation":"<p>Removes a tag from the specified resource.</p>"
+    },
+    "UntagResourceResponse":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p>The response to the request.</p>"
+    },
+    "UpdateArchiveRuleRequest":{
+      "type":"structure",
+      "required":[
+        "analyzerName",
+        "filter",
+        "ruleName"
+      ],
+      "members":{
+        "analyzerName":{
+          "shape":"Name",
+          "documentation":"<p>The name of the analyzer to update the archive rules for.</p>",
+          "location":"uri",
+          "locationName":"analyzerName"
+        },
+        "clientToken":{
+          "shape":"String",
+          "documentation":"<p>A client token.</p>",
+          "idempotencyToken":true
+        },
+        "filter":{
+          "shape":"FilterCriteriaMap",
+          "documentation":"<p>A filter to match for the rules to update. Only rules that match the filter are updated.</p>"
+        },
+        "ruleName":{
+          "shape":"Name",
+          "documentation":"<p>The name of the rule to update.</p>",
+          "location":"uri",
+          "locationName":"ruleName"
+        }
+      },
+      "documentation":"<p>Updates the specified archive rule.</p>"
+    },
+    "UpdateFindingsRequest":{
+      "type":"structure",
+      "required":[
+        "analyzerArn",
+        "status"
+      ],
+      "members":{
+        "analyzerArn":{
+          "shape":"AnalyzerArn",
+          "documentation":"<p>The <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#permission-resources\">ARN of the analyzer</a> that generated the findings to update.</p>"
+        },
+        "clientToken":{
+          "shape":"String",
+          "documentation":"<p>A client token.</p>",
+          "idempotencyToken":true
+        },
+        "ids":{
+          "shape":"FindingIdList",
+          "documentation":"<p>The IDs of the findings to update.</p>"
+        },
+        "resourceArn":{
+          "shape":"ResourceArn",
+          "documentation":"<p>The ARN of the resource identified in the finding.</p>"
+        },
+        "status":{
+          "shape":"FindingStatusUpdate",
+          "documentation":"<p>The state represents the action to take to update the finding Status. Use <code>ARCHIVE</code> to change an Active finding to an Archived finding. Use <code>ACTIVE</code> to change an Archived finding to an Active finding.</p>"
+        }
+      },
+      "documentation":"<p>Updates findings with the new values provided in the request.</p>"
+    },
+    "ValidatePolicyFinding":{
+      "type":"structure",
+      "required":[
+        "findingDetails",
+        "findingType",
+        "issueCode",
+        "learnMoreLink",
+        "locations"
+      ],
+      "members":{
+        "findingDetails":{
+          "shape":"String",
+          "documentation":"<p>A localized message that explains the finding and provides guidance on how to address it.</p>"
+        },
+        "findingType":{
+          "shape":"ValidatePolicyFindingType",
+          "documentation":"<p>The impact of the finding.</p> <p>Security warnings report when the policy allows access that we consider overly permissive.</p> <p>Errors report when a part of the policy is not functional.</p> <p>Warnings report non-security issues when a policy does not conform to policy writing best practices.</p> <p>Suggestions recommend stylistic improvements in the policy that do not impact access.</p>"
+        },
+        "issueCode":{
+          "shape":"IssueCode",
+          "documentation":"<p>The issue code provides an identifier of the issue associated with this finding.</p>"
+        },
+        "learnMoreLink":{
+          "shape":"LearnMoreLink",
+          "documentation":"<p>A link to additional documentation about the type of finding.</p>"
+        },
+        "locations":{
+          "shape":"LocationList",
+          "documentation":"<p>The list of locations in the policy document that are related to the finding. The issue code provides a summary of an issue identified by the finding.</p>"
+        }
+      },
+      "documentation":"<p>A finding in a policy. Each finding is an actionable recommendation that can be used to improve the policy.</p>"
+    },
+    "ValidatePolicyFindingList":{
+      "type":"list",
+      "member":{"shape":"ValidatePolicyFinding"}
+    },
+    "ValidatePolicyFindingType":{
+      "type":"string",
+      "enum":[
+        "ERROR",
+        "SECURITY_WARNING",
+        "SUGGESTION",
+        "WARNING"
+      ]
+    },
+    "ValidatePolicyRequest":{
+      "type":"structure",
+      "required":[
+        "policyDocument",
+        "policyType"
+      ],
+      "members":{
+        "locale":{
+          "shape":"Locale",
+          "documentation":"<p>The locale to use for localizing the findings.</p>"
+        },
+        "maxResults":{
+          "shape":"Integer",
+          "documentation":"<p>The maximum number of results to return in the response.</p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token used for pagination of results returned.</p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "policyDocument":{
+          "shape":"PolicyDocument",
+          "documentation":"<p>The JSON policy document to use as the content for the policy.</p>"
+        },
+        "policyType":{
+          "shape":"PolicyType",
+          "documentation":"<p>The type of policy to validate. Identity policies grant permissions to IAM principals. Identity policies include managed and inline policies for IAM roles, users, and groups. They also include service-control policies (SCPs) that are attached to an AWS organization, organizational unit (OU), or an account.</p> <p>Resource policies grant permissions on AWS resources. Resource policies include trust policies for IAM roles and bucket policies for S3 buckets. You can provide a generic input such as identity policy or resource policy or a specific input such as managed policy or S3 bucket policy. </p>"
+        }
+      }
+    },
+    "ValidatePolicyResponse":{
+      "type":"structure",
+      "required":["findings"],
+      "members":{
+        "findings":{
+          "shape":"ValidatePolicyFindingList",
+          "documentation":"<p>The list of findings in a policy returned by Access Analyzer based on its suite of policy checks.</p>"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token used for pagination of results returned.</p>"
+        }
+      }
+    },
+    "ValidationException":{
+      "type":"structure",
+      "required":[
+        "message",
+        "reason"
+      ],
+      "members":{
+        "fieldList":{
+          "shape":"ValidationExceptionFieldList",
+          "documentation":"<p>A list of fields that didn't validate.</p>"
+        },
+        "message":{"shape":"String"},
+        "reason":{
+          "shape":"ValidationExceptionReason",
+          "documentation":"<p>The reason for the exception.</p>"
+        }
+      },
+      "documentation":"<p>Validation exception error.</p>",
+      "error":{
+        "httpStatusCode":400,
+        "senderFault":true
+      },
+      "exception":true
+    },
+    "ValidationExceptionField":{
+      "type":"structure",
+      "required":[
+        "message",
+        "name"
+      ],
+      "members":{
+        "message":{
+          "shape":"String",
+          "documentation":"<p>A message about the validation exception.</p>"
+        },
+        "name":{
+          "shape":"String",
+          "documentation":"<p>The name of the validation exception.</p>"
+        }
+      },
+      "documentation":"<p>Contains information about a validation exception.</p>"
+    },
+    "ValidationExceptionFieldList":{
+      "type":"list",
+      "member":{"shape":"ValidationExceptionField"}
+    },
+    "ValidationExceptionReason":{
+      "type":"string",
+      "enum":[
+        "unknownOperation",
+        "cannotParse",
+        "fieldValidationFailed",
+        "other"
+      ]
+    },
+    "ValueList":{
+      "type":"list",
+      "member":{"shape":"String"},
+      "max":20,
+      "min":1
+    },
+    "VpcConfiguration":{
+      "type":"structure",
+      "required":["vpcId"],
+      "members":{
+        "vpcId":{
+          "shape":"VpcId",
+          "documentation":"<p> If this field is specified, this access point will only allow connections from the specified VPC ID. </p>"
+        }
+      },
+      "documentation":"<p> The proposed virtual private cloud (VPC) configuration for the Amazon S3 access point. For more information, see <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_VpcConfiguration.html\">VpcConfiguration</a>. </p>"
+    },
+    "VpcId":{
+      "type":"string",
+      "pattern":"^vpc-([0-9a-f]){8}(([0-9a-f]){9})?$"
+    }
+  },
+  "documentation":"<p>AWS IAM Access Analyzer helps identify potential resource-access risks by enabling you to identify any policies that grant access to an external principal. It does this by using logic-based reasoning to analyze resource-based policies in your AWS environment. An external principal can be another AWS account, a root user, an IAM user or role, a federated user, an AWS service, or an anonymous user. You can also use Access Analyzer to preview and validate public and cross-account access to your resources before deploying permissions changes. This guide describes the AWS IAM Access Analyzer operations that you can call programmatically. For general information about Access Analyzer, see <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html\">AWS IAM Access Analyzer</a> in the <b>IAM User Guide</b>.</p> <p>To start using Access Analyzer, you first need to create an analyzer.</p>"
+}

+ 5 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/acm-pca/2017-08-22/examples-1.json

@@ -0,0 +1,5 @@
+{
+  "version":"1.0",
+  "examples":{
+  }
+}

+ 22 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/acm-pca/2017-08-22/paginators-1.json

@@ -0,0 +1,22 @@
+{
+  "pagination": {
+    "ListCertificateAuthorities": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "CertificateAuthorities"
+    },
+    "ListTags": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "Tags"
+    },
+    "ListPermissions": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "Permissions"
+    }
+  }
+}

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 81 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/acm-pca/2017-08-22/service-2.json


+ 61 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/acm-pca/2017-08-22/waiters-2.json

@@ -0,0 +1,61 @@
+{
+    "version": 2,
+    "waiters": {
+        "CertificateAuthorityCSRCreated": {
+            "description": "Wait until a Certificate Authority CSR is created",
+            "operation": "GetCertificateAuthorityCsr",
+            "delay": 3,
+            "maxAttempts": 60,
+            "acceptors": [
+                {
+                    "state": "success",
+                    "matcher": "status",
+                    "expected": 200
+                },
+                {
+                    "state": "retry",
+                    "matcher": "error",
+                    "expected": "RequestInProgressException"
+                }
+            ]
+        },
+        "CertificateIssued": {
+            "description": "Wait until a certificate is issued",
+            "operation": "GetCertificate",
+            "delay": 3,
+            "maxAttempts": 60,
+            "acceptors": [
+                {
+                    "state": "success",
+                    "matcher": "status",
+                    "expected": 200
+                },
+                {
+                    "state": "retry",
+                    "matcher": "error",
+                    "expected": "RequestInProgressException"
+                }
+            ]
+        },
+        "AuditReportCreated": {
+            "description": "Wait until a Audit Report is created",
+            "operation": "DescribeCertificateAuthorityAuditReport",
+            "delay": 3,
+            "maxAttempts": 60,
+            "acceptors": [
+                {
+                    "state": "success",
+                    "matcher": "path",
+                    "argument": "AuditReportStatus",
+                    "expected": "SUCCESS"
+                },
+                {
+                    "state": "failure",
+                    "matcher": "path",
+                    "argument": "AuditReportStatus",
+                    "expected": "FAILED"
+                }
+            ]
+        }
+    }
+}

+ 5 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/acm/2015-12-08/examples-1.json

@@ -0,0 +1,5 @@
+{
+  "version": "1.0",
+  "examples": {
+  }
+}

+ 10 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/acm/2015-12-08/paginators-1.json

@@ -0,0 +1,10 @@
+{
+  "pagination": {
+    "ListCertificates": {
+      "input_token": "NextToken",
+      "output_token": "NextToken",
+      "limit_key": "MaxItems",
+      "result_key": "CertificateSummaryList"
+    }
+  }
+}

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 121 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/acm/2015-12-08/service-2.json


+ 35 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/acm/2015-12-08/waiters-2.json

@@ -0,0 +1,35 @@
+{
+  "version": 2,
+  "waiters": {
+    "CertificateValidated": {
+      "delay": 60,
+      "maxAttempts": 40,
+      "operation": "DescribeCertificate",
+      "acceptors": [
+        {
+          "matcher": "pathAll",
+          "expected": "SUCCESS",
+          "argument": "Certificate.DomainValidationOptions[].ValidationStatus",
+          "state": "success"
+        },
+        {
+          "matcher": "pathAny",
+          "expected": "PENDING_VALIDATION",
+          "argument": "Certificate.DomainValidationOptions[].ValidationStatus",
+          "state": "retry"
+        },
+        {
+          "matcher": "path",
+          "expected": "FAILED",
+          "argument": "Certificate.Status",
+          "state": "failure"
+        },
+        {
+          "matcher": "error",
+          "expected": "ResourceNotFoundException",
+          "state": "failure"
+        }
+      ]
+    }
+  }
+}

+ 5 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/alexaforbusiness/2017-11-09/examples-1.json

@@ -0,0 +1,5 @@
+{
+  "version": "1.0",
+  "examples": {
+  }
+}

+ 82 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/alexaforbusiness/2017-11-09/paginators-1.json

@@ -0,0 +1,82 @@
+{
+  "pagination": {
+    "ListSkills": {
+      "result_key": "SkillSummaries",
+      "output_token": "NextToken",
+      "input_token": "NextToken",
+      "limit_key": "MaxResults"
+    },
+    "SearchUsers": {
+      "result_key": "Users",
+      "output_token": "NextToken",
+      "input_token": "NextToken",
+      "limit_key": "MaxResults"
+    },
+    "ListTags": {
+      "result_key": "Tags",
+      "output_token": "NextToken",
+      "input_token": "NextToken",
+      "limit_key": "MaxResults"
+    },
+    "SearchProfiles": {
+      "result_key": "Profiles",
+      "output_token": "NextToken",
+      "input_token": "NextToken",
+      "limit_key": "MaxResults"
+    },
+    "SearchSkillGroups": {
+      "result_key": "SkillGroups",
+      "output_token": "NextToken",
+      "input_token": "NextToken",
+      "limit_key": "MaxResults"
+    },
+    "SearchDevices": {
+      "result_key": "Devices",
+      "output_token": "NextToken",
+      "input_token": "NextToken",
+      "limit_key": "MaxResults"
+    },
+    "SearchRooms": {
+      "result_key": "Rooms",
+      "output_token": "NextToken",
+      "input_token": "NextToken",
+      "limit_key": "MaxResults"
+    },
+    "ListBusinessReportSchedules": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "BusinessReportSchedules"
+    },
+    "ListConferenceProviders": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "ConferenceProviders"
+    },
+    "ListDeviceEvents": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "DeviceEvents"
+    },
+    "ListSkillsStoreCategories": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "CategoryList"
+    },
+    "ListSkillsStoreSkillsByCategory": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "SkillsStoreSkills"
+    },
+    "ListSmartHomeAppliances": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "SmartHomeAppliances"
+    }
+  }
+}

+ 6109 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/alexaforbusiness/2017-11-09/service-2.json

@@ -0,0 +1,6109 @@
+{
+  "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"}
+      ],
+      "documentation":"<p>Associates a skill with the organization under the customer's AWS account. If a skill is private, the user implicitly accepts access to this skill during enablement.</p>"
+    },
+    "AssociateContactWithAddressBook":{
+      "name":"AssociateContactWithAddressBook",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"AssociateContactWithAddressBookRequest"},
+      "output":{"shape":"AssociateContactWithAddressBookResponse"},
+      "errors":[
+        {"shape":"LimitExceededException"}
+      ],
+      "documentation":"<p>Associates a contact with a given address book.</p>"
+    },
+    "AssociateDeviceWithNetworkProfile":{
+      "name":"AssociateDeviceWithNetworkProfile",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"AssociateDeviceWithNetworkProfileRequest"},
+      "output":{"shape":"AssociateDeviceWithNetworkProfileResponse"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"ConcurrentModificationException"},
+        {"shape":"DeviceNotRegisteredException"}
+      ],
+      "documentation":"<p>Associates a device with the specified network profile.</p>"
+    },
+    "AssociateDeviceWithRoom":{
+      "name":"AssociateDeviceWithRoom",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"AssociateDeviceWithRoomRequest"},
+      "output":{"shape":"AssociateDeviceWithRoomResponse"},
+      "errors":[
+        {"shape":"LimitExceededException"},
+        {"shape":"ConcurrentModificationException"},
+        {"shape":"DeviceNotRegisteredException"}
+      ],
+      "documentation":"<p>Associates a device with a given room. This applies all the settings from the room profile to the device, and all the skills in any skill groups added to that room. This operation requires the device to be online, or else a manual sync is required. </p>"
+    },
+    "AssociateSkillGroupWithRoom":{
+      "name":"AssociateSkillGroupWithRoom",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"AssociateSkillGroupWithRoomRequest"},
+      "output":{"shape":"AssociateSkillGroupWithRoomResponse"},
+      "errors":[
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Associates a skill group with a given room. This enables all skills in the associated skill group on all devices in the room.</p>"
+    },
+    "AssociateSkillWithSkillGroup":{
+      "name":"AssociateSkillWithSkillGroup",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"AssociateSkillWithSkillGroupRequest"},
+      "output":{"shape":"AssociateSkillWithSkillGroupResponse"},
+      "errors":[
+        {"shape":"ConcurrentModificationException"},
+        {"shape":"NotFoundException"},
+        {"shape":"SkillNotLinkedException"}
+      ],
+      "documentation":"<p>Associates a skill with a skill group.</p>"
+    },
+    "AssociateSkillWithUsers":{
+      "name":"AssociateSkillWithUsers",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"AssociateSkillWithUsersRequest"},
+      "output":{"shape":"AssociateSkillWithUsersResponse"},
+      "errors":[
+        {"shape":"ConcurrentModificationException"},
+        {"shape":"NotFoundException"}
+      ],
+      "documentation":"<p>Makes a private skill available for enrolled users to enable on their devices.</p>"
+    },
+    "CreateAddressBook":{
+      "name":"CreateAddressBook",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateAddressBookRequest"},
+      "output":{"shape":"CreateAddressBookResponse"},
+      "errors":[
+        {"shape":"AlreadyExistsException"},
+        {"shape":"LimitExceededException"}
+      ],
+      "documentation":"<p>Creates an address book with the specified details.</p>"
+    },
+    "CreateBusinessReportSchedule":{
+      "name":"CreateBusinessReportSchedule",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateBusinessReportScheduleRequest"},
+      "output":{"shape":"CreateBusinessReportScheduleResponse"},
+      "errors":[
+        {"shape":"AlreadyExistsException"}
+      ],
+      "documentation":"<p>Creates a recurring schedule for usage reports to deliver to the specified S3 location with a specified daily or weekly interval.</p>"
+    },
+    "CreateConferenceProvider":{
+      "name":"CreateConferenceProvider",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateConferenceProviderRequest"},
+      "output":{"shape":"CreateConferenceProviderResponse"},
+      "errors":[
+        {"shape":"AlreadyExistsException"}
+      ],
+      "documentation":"<p>Adds a new conference provider under the user's AWS account.</p>"
+    },
+    "CreateContact":{
+      "name":"CreateContact",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateContactRequest"},
+      "output":{"shape":"CreateContactResponse"},
+      "errors":[
+        {"shape":"AlreadyExistsException"},
+        {"shape":"LimitExceededException"}
+      ],
+      "documentation":"<p>Creates a contact with the specified details.</p>"
+    },
+    "CreateGatewayGroup":{
+      "name":"CreateGatewayGroup",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateGatewayGroupRequest"},
+      "output":{"shape":"CreateGatewayGroupResponse"},
+      "errors":[
+        {"shape":"AlreadyExistsException"},
+        {"shape":"LimitExceededException"}
+      ],
+      "documentation":"<p>Creates a gateway group with the specified details.</p>"
+    },
+    "CreateNetworkProfile":{
+      "name":"CreateNetworkProfile",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateNetworkProfileRequest"},
+      "output":{"shape":"CreateNetworkProfileResponse"},
+      "errors":[
+        {"shape":"AlreadyExistsException"},
+        {"shape":"LimitExceededException"},
+        {"shape":"ConcurrentModificationException"},
+        {"shape":"InvalidCertificateAuthorityException"},
+        {"shape":"InvalidServiceLinkedRoleStateException"}
+      ],
+      "documentation":"<p>Creates a network profile with the specified details.</p>"
+    },
+    "CreateProfile":{
+      "name":"CreateProfile",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateProfileRequest"},
+      "output":{"shape":"CreateProfileResponse"},
+      "errors":[
+        {"shape":"LimitExceededException"},
+        {"shape":"AlreadyExistsException"},
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Creates a new room profile with the specified details.</p>"
+    },
+    "CreateRoom":{
+      "name":"CreateRoom",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateRoomRequest"},
+      "output":{"shape":"CreateRoomResponse"},
+      "errors":[
+        {"shape":"AlreadyExistsException"},
+        {"shape":"LimitExceededException"}
+      ],
+      "documentation":"<p>Creates a room with the specified details.</p>"
+    },
+    "CreateSkillGroup":{
+      "name":"CreateSkillGroup",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateSkillGroupRequest"},
+      "output":{"shape":"CreateSkillGroupResponse"},
+      "errors":[
+        {"shape":"AlreadyExistsException"},
+        {"shape":"LimitExceededException"},
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Creates a skill group with a specified name and description.</p>"
+    },
+    "CreateUser":{
+      "name":"CreateUser",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateUserRequest"},
+      "output":{"shape":"CreateUserResponse"},
+      "errors":[
+        {"shape":"ResourceInUseException"},
+        {"shape":"LimitExceededException"},
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Creates a user.</p>"
+    },
+    "DeleteAddressBook":{
+      "name":"DeleteAddressBook",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteAddressBookRequest"},
+      "output":{"shape":"DeleteAddressBookResponse"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Deletes an address book by the address book ARN.</p>"
+    },
+    "DeleteBusinessReportSchedule":{
+      "name":"DeleteBusinessReportSchedule",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteBusinessReportScheduleRequest"},
+      "output":{"shape":"DeleteBusinessReportScheduleResponse"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Deletes the recurring report delivery schedule with the specified schedule ARN.</p>"
+    },
+    "DeleteConferenceProvider":{
+      "name":"DeleteConferenceProvider",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteConferenceProviderRequest"},
+      "output":{"shape":"DeleteConferenceProviderResponse"},
+      "errors":[
+        {"shape":"NotFoundException"}
+      ],
+      "documentation":"<p>Deletes a conference provider.</p>"
+    },
+    "DeleteContact":{
+      "name":"DeleteContact",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteContactRequest"},
+      "output":{"shape":"DeleteContactResponse"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Deletes a contact by the contact ARN.</p>"
+    },
+    "DeleteDevice":{
+      "name":"DeleteDevice",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteDeviceRequest"},
+      "output":{"shape":"DeleteDeviceResponse"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"ConcurrentModificationException"},
+        {"shape":"InvalidCertificateAuthorityException"}
+      ],
+      "documentation":"<p>Removes a device from Alexa For Business.</p>"
+    },
+    "DeleteDeviceUsageData":{
+      "name":"DeleteDeviceUsageData",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteDeviceUsageDataRequest"},
+      "output":{"shape":"DeleteDeviceUsageDataResponse"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"DeviceNotRegisteredException"},
+        {"shape":"LimitExceededException"}
+      ],
+      "documentation":"<p>When this action is called for a specified shared device, it allows authorized users to delete the device's entire previous history of voice input data and associated response data. This action can be called once every 24 hours for a specific shared device.</p>"
+    },
+    "DeleteGatewayGroup":{
+      "name":"DeleteGatewayGroup",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteGatewayGroupRequest"},
+      "output":{"shape":"DeleteGatewayGroupResponse"},
+      "errors":[
+        {"shape":"ResourceAssociatedException"}
+      ],
+      "documentation":"<p>Deletes a gateway group.</p>"
+    },
+    "DeleteNetworkProfile":{
+      "name":"DeleteNetworkProfile",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteNetworkProfileRequest"},
+      "output":{"shape":"DeleteNetworkProfileResponse"},
+      "errors":[
+        {"shape":"ResourceInUseException"},
+        {"shape":"ConcurrentModificationException"},
+        {"shape":"NotFoundException"}
+      ],
+      "documentation":"<p>Deletes a network profile by the network profile ARN.</p>"
+    },
+    "DeleteProfile":{
+      "name":"DeleteProfile",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteProfileRequest"},
+      "output":{"shape":"DeleteProfileResponse"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Deletes a room profile by the profile ARN.</p>"
+    },
+    "DeleteRoom":{
+      "name":"DeleteRoom",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteRoomRequest"},
+      "output":{"shape":"DeleteRoomResponse"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Deletes a room by the room ARN.</p>"
+    },
+    "DeleteRoomSkillParameter":{
+      "name":"DeleteRoomSkillParameter",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteRoomSkillParameterRequest"},
+      "output":{"shape":"DeleteRoomSkillParameterResponse"},
+      "errors":[
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Deletes room skill parameter details by room, skill, and parameter key ID.</p>"
+    },
+    "DeleteSkillAuthorization":{
+      "name":"DeleteSkillAuthorization",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteSkillAuthorizationRequest"},
+      "output":{"shape":"DeleteSkillAuthorizationResponse"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Unlinks a third-party account from a skill.</p>"
+    },
+    "DeleteSkillGroup":{
+      "name":"DeleteSkillGroup",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteSkillGroupRequest"},
+      "output":{"shape":"DeleteSkillGroupResponse"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Deletes a skill group by skill group ARN.</p>"
+    },
+    "DeleteUser":{
+      "name":"DeleteUser",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteUserRequest"},
+      "output":{"shape":"DeleteUserResponse"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Deletes a specified user by user ARN and enrollment ARN.</p>"
+    },
+    "DisassociateContactFromAddressBook":{
+      "name":"DisassociateContactFromAddressBook",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DisassociateContactFromAddressBookRequest"},
+      "output":{"shape":"DisassociateContactFromAddressBookResponse"},
+      "documentation":"<p>Disassociates a contact from a given address book.</p>"
+    },
+    "DisassociateDeviceFromRoom":{
+      "name":"DisassociateDeviceFromRoom",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DisassociateDeviceFromRoomRequest"},
+      "output":{"shape":"DisassociateDeviceFromRoomResponse"},
+      "errors":[
+        {"shape":"ConcurrentModificationException"},
+        {"shape":"DeviceNotRegisteredException"}
+      ],
+      "documentation":"<p>Disassociates a device from its current room. The device continues to be connected to the Wi-Fi network and is still registered to the account. The device settings and skills are removed from the room.</p>"
+    },
+    "DisassociateSkillFromSkillGroup":{
+      "name":"DisassociateSkillFromSkillGroup",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DisassociateSkillFromSkillGroupRequest"},
+      "output":{"shape":"DisassociateSkillFromSkillGroupResponse"},
+      "errors":[
+        {"shape":"ConcurrentModificationException"},
+        {"shape":"NotFoundException"}
+      ],
+      "documentation":"<p>Disassociates a skill from a skill group.</p>"
+    },
+    "DisassociateSkillFromUsers":{
+      "name":"DisassociateSkillFromUsers",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DisassociateSkillFromUsersRequest"},
+      "output":{"shape":"DisassociateSkillFromUsersResponse"},
+      "errors":[
+        {"shape":"ConcurrentModificationException"},
+        {"shape":"NotFoundException"}
+      ],
+      "documentation":"<p>Makes a private skill unavailable for enrolled users and prevents them from enabling it on their devices.</p>"
+    },
+    "DisassociateSkillGroupFromRoom":{
+      "name":"DisassociateSkillGroupFromRoom",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DisassociateSkillGroupFromRoomRequest"},
+      "output":{"shape":"DisassociateSkillGroupFromRoomResponse"},
+      "errors":[
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Disassociates a skill group from a specified room. This disables all skills in the skill group on all devices in the room.</p>"
+    },
+    "ForgetSmartHomeAppliances":{
+      "name":"ForgetSmartHomeAppliances",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ForgetSmartHomeAppliancesRequest"},
+      "output":{"shape":"ForgetSmartHomeAppliancesResponse"},
+      "errors":[
+        {"shape":"NotFoundException"}
+      ],
+      "documentation":"<p>Forgets smart home appliances associated to a room.</p>"
+    },
+    "GetAddressBook":{
+      "name":"GetAddressBook",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"GetAddressBookRequest"},
+      "output":{"shape":"GetAddressBookResponse"},
+      "errors":[
+        {"shape":"NotFoundException"}
+      ],
+      "documentation":"<p>Gets address the book details by the address book ARN.</p>"
+    },
+    "GetConferencePreference":{
+      "name":"GetConferencePreference",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"GetConferencePreferenceRequest"},
+      "output":{"shape":"GetConferencePreferenceResponse"},
+      "errors":[
+        {"shape":"NotFoundException"}
+      ],
+      "documentation":"<p>Retrieves the existing conference preferences.</p>"
+    },
+    "GetConferenceProvider":{
+      "name":"GetConferenceProvider",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"GetConferenceProviderRequest"},
+      "output":{"shape":"GetConferenceProviderResponse"},
+      "errors":[
+        {"shape":"NotFoundException"}
+      ],
+      "documentation":"<p>Gets details about a specific conference provider.</p>"
+    },
+    "GetContact":{
+      "name":"GetContact",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"GetContactRequest"},
+      "output":{"shape":"GetContactResponse"},
+      "errors":[
+        {"shape":"NotFoundException"}
+      ],
+      "documentation":"<p>Gets the contact details by the contact ARN.</p>"
+    },
+    "GetDevice":{
+      "name":"GetDevice",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"GetDeviceRequest"},
+      "output":{"shape":"GetDeviceResponse"},
+      "errors":[
+        {"shape":"NotFoundException"}
+      ],
+      "documentation":"<p>Gets the details of a device by device ARN.</p>"
+    },
+    "GetGateway":{
+      "name":"GetGateway",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"GetGatewayRequest"},
+      "output":{"shape":"GetGatewayResponse"},
+      "errors":[
+        {"shape":"NotFoundException"}
+      ],
+      "documentation":"<p>Retrieves the details of a gateway.</p>"
+    },
+    "GetGatewayGroup":{
+      "name":"GetGatewayGroup",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"GetGatewayGroupRequest"},
+      "output":{"shape":"GetGatewayGroupResponse"},
+      "errors":[
+        {"shape":"NotFoundException"}
+      ],
+      "documentation":"<p>Retrieves the details of a gateway group.</p>"
+    },
+    "GetInvitationConfiguration":{
+      "name":"GetInvitationConfiguration",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"GetInvitationConfigurationRequest"},
+      "output":{"shape":"GetInvitationConfigurationResponse"},
+      "errors":[
+        {"shape":"NotFoundException"}
+      ],
+      "documentation":"<p>Retrieves the configured values for the user enrollment invitation email template.</p>"
+    },
+    "GetNetworkProfile":{
+      "name":"GetNetworkProfile",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"GetNetworkProfileRequest"},
+      "output":{"shape":"GetNetworkProfileResponse"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"InvalidSecretsManagerResourceException"}
+      ],
+      "documentation":"<p>Gets the network profile details by the network profile ARN.</p>"
+    },
+    "GetProfile":{
+      "name":"GetProfile",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"GetProfileRequest"},
+      "output":{"shape":"GetProfileResponse"},
+      "errors":[
+        {"shape":"NotFoundException"}
+      ],
+      "documentation":"<p>Gets the details of a room profile by profile ARN.</p>"
+    },
+    "GetRoom":{
+      "name":"GetRoom",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"GetRoomRequest"},
+      "output":{"shape":"GetRoomResponse"},
+      "errors":[
+        {"shape":"NotFoundException"}
+      ],
+      "documentation":"<p>Gets room details by room ARN.</p>"
+    },
+    "GetRoomSkillParameter":{
+      "name":"GetRoomSkillParameter",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"GetRoomSkillParameterRequest"},
+      "output":{"shape":"GetRoomSkillParameterResponse"},
+      "errors":[
+        {"shape":"NotFoundException"}
+      ],
+      "documentation":"<p>Gets room skill parameter details by room, skill, and parameter key ARN.</p>"
+    },
+    "GetSkillGroup":{
+      "name":"GetSkillGroup",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"GetSkillGroupRequest"},
+      "output":{"shape":"GetSkillGroupResponse"},
+      "errors":[
+        {"shape":"NotFoundException"}
+      ],
+      "documentation":"<p>Gets skill group details by skill group ARN.</p>"
+    },
+    "ListBusinessReportSchedules":{
+      "name":"ListBusinessReportSchedules",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListBusinessReportSchedulesRequest"},
+      "output":{"shape":"ListBusinessReportSchedulesResponse"},
+      "documentation":"<p>Lists the details of the schedules that a user configured. A download URL of the report associated with each schedule is returned every time this action is called. A new download URL is returned each time, and is valid for 24 hours.</p>"
+    },
+    "ListConferenceProviders":{
+      "name":"ListConferenceProviders",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListConferenceProvidersRequest"},
+      "output":{"shape":"ListConferenceProvidersResponse"},
+      "documentation":"<p>Lists conference providers under a specific AWS account.</p>"
+    },
+    "ListDeviceEvents":{
+      "name":"ListDeviceEvents",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListDeviceEventsRequest"},
+      "output":{"shape":"ListDeviceEventsResponse"},
+      "errors":[
+        {"shape":"NotFoundException"}
+      ],
+      "documentation":"<p>Lists the device event history, including device connection status, for up to 30 days.</p>"
+    },
+    "ListGatewayGroups":{
+      "name":"ListGatewayGroups",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListGatewayGroupsRequest"},
+      "output":{"shape":"ListGatewayGroupsResponse"},
+      "documentation":"<p>Retrieves a list of gateway group summaries. Use GetGatewayGroup to retrieve details of a specific gateway group.</p>"
+    },
+    "ListGateways":{
+      "name":"ListGateways",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListGatewaysRequest"},
+      "output":{"shape":"ListGatewaysResponse"},
+      "documentation":"<p>Retrieves a list of gateway summaries. Use GetGateway to retrieve details of a specific gateway. An optional gateway group ARN can be provided to only retrieve gateway summaries of gateways that are associated with that gateway group ARN.</p>"
+    },
+    "ListSkills":{
+      "name":"ListSkills",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListSkillsRequest"},
+      "output":{"shape":"ListSkillsResponse"},
+      "documentation":"<p>Lists all enabled skills in a specific skill group.</p>"
+    },
+    "ListSkillsStoreCategories":{
+      "name":"ListSkillsStoreCategories",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListSkillsStoreCategoriesRequest"},
+      "output":{"shape":"ListSkillsStoreCategoriesResponse"},
+      "documentation":"<p>Lists all categories in the Alexa skill store.</p>"
+    },
+    "ListSkillsStoreSkillsByCategory":{
+      "name":"ListSkillsStoreSkillsByCategory",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListSkillsStoreSkillsByCategoryRequest"},
+      "output":{"shape":"ListSkillsStoreSkillsByCategoryResponse"},
+      "documentation":"<p>Lists all skills in the Alexa skill store by category.</p>"
+    },
+    "ListSmartHomeAppliances":{
+      "name":"ListSmartHomeAppliances",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListSmartHomeAppliancesRequest"},
+      "output":{"shape":"ListSmartHomeAppliancesResponse"},
+      "errors":[
+        {"shape":"NotFoundException"}
+      ],
+      "documentation":"<p>Lists all of the smart home appliances associated with a room.</p>"
+    },
+    "ListTags":{
+      "name":"ListTags",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListTagsRequest"},
+      "output":{"shape":"ListTagsResponse"},
+      "errors":[
+        {"shape":"NotFoundException"}
+      ],
+      "documentation":"<p>Lists all tags for the specified resource.</p>"
+    },
+    "PutConferencePreference":{
+      "name":"PutConferencePreference",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"PutConferencePreferenceRequest"},
+      "output":{"shape":"PutConferencePreferenceResponse"},
+      "errors":[
+        {"shape":"NotFoundException"}
+      ],
+      "documentation":"<p>Sets the conference preferences on a specific conference provider at the account level.</p>"
+    },
+    "PutInvitationConfiguration":{
+      "name":"PutInvitationConfiguration",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"PutInvitationConfigurationRequest"},
+      "output":{"shape":"PutInvitationConfigurationResponse"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Configures the email template for the user enrollment invitation with the specified attributes.</p>"
+    },
+    "PutRoomSkillParameter":{
+      "name":"PutRoomSkillParameter",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"PutRoomSkillParameterRequest"},
+      "output":{"shape":"PutRoomSkillParameterResponse"},
+      "errors":[
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Updates room skill parameter details by room, skill, and parameter key ID. Not all skills have a room skill parameter.</p>"
+    },
+    "PutSkillAuthorization":{
+      "name":"PutSkillAuthorization",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"PutSkillAuthorizationRequest"},
+      "output":{"shape":"PutSkillAuthorizationResponse"},
+      "errors":[
+        {"shape":"UnauthorizedException"},
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Links a user's account to a third-party skill provider. If this API operation is called by an assumed IAM role, the skill being linked must be a private skill. Also, the skill must be owned by the AWS account that assumed the IAM role.</p>"
+    },
+    "RegisterAVSDevice":{
+      "name":"RegisterAVSDevice",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"RegisterAVSDeviceRequest"},
+      "output":{"shape":"RegisterAVSDeviceResponse"},
+      "errors":[
+        {"shape":"LimitExceededException"},
+        {"shape":"ConcurrentModificationException"},
+        {"shape":"NotFoundException"},
+        {"shape":"InvalidDeviceException"}
+      ],
+      "documentation":"<p>Registers an Alexa-enabled device built by an Original Equipment Manufacturer (OEM) using Alexa Voice Service (AVS).</p>"
+    },
+    "RejectSkill":{
+      "name":"RejectSkill",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"RejectSkillRequest"},
+      "output":{"shape":"RejectSkillResponse"},
+      "errors":[
+        {"shape":"ConcurrentModificationException"},
+        {"shape":"NotFoundException"}
+      ],
+      "documentation":"<p>Disassociates a skill from the organization under a user's AWS account. If the skill is a private skill, it moves to an AcceptStatus of PENDING. Any private or public skill that is rejected can be added later by calling the ApproveSkill API. </p>"
+    },
+    "ResolveRoom":{
+      "name":"ResolveRoom",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ResolveRoomRequest"},
+      "output":{"shape":"ResolveRoomResponse"},
+      "errors":[
+        {"shape":"NotFoundException"}
+      ],
+      "documentation":"<p>Determines the details for the room from which a skill request was invoked. This operation is used by skill developers.</p> <p>To query ResolveRoom from an Alexa skill, the skill ID needs to be authorized. When the skill is using an AWS Lambda function, the skill is automatically authorized when you publish your skill as a private skill to your AWS account. Skills that are hosted using a custom web service must be manually authorized. To get your skill authorized, contact AWS Support with your AWS account ID that queries the ResolveRoom API and skill ID. </p>"
+    },
+    "RevokeInvitation":{
+      "name":"RevokeInvitation",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"RevokeInvitationRequest"},
+      "output":{"shape":"RevokeInvitationResponse"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Revokes an invitation and invalidates the enrollment URL.</p>"
+    },
+    "SearchAddressBooks":{
+      "name":"SearchAddressBooks",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"SearchAddressBooksRequest"},
+      "output":{"shape":"SearchAddressBooksResponse"},
+      "documentation":"<p>Searches address books and lists the ones that meet a set of filter and sort criteria.</p>"
+    },
+    "SearchContacts":{
+      "name":"SearchContacts",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"SearchContactsRequest"},
+      "output":{"shape":"SearchContactsResponse"},
+      "documentation":"<p>Searches contacts and lists the ones that meet a set of filter and sort criteria.</p>"
+    },
+    "SearchDevices":{
+      "name":"SearchDevices",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"SearchDevicesRequest"},
+      "output":{"shape":"SearchDevicesResponse"},
+      "documentation":"<p>Searches devices and lists the ones that meet a set of filter criteria.</p>"
+    },
+    "SearchNetworkProfiles":{
+      "name":"SearchNetworkProfiles",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"SearchNetworkProfilesRequest"},
+      "output":{"shape":"SearchNetworkProfilesResponse"},
+      "documentation":"<p>Searches network profiles and lists the ones that meet a set of filter and sort criteria.</p>"
+    },
+    "SearchProfiles":{
+      "name":"SearchProfiles",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"SearchProfilesRequest"},
+      "output":{"shape":"SearchProfilesResponse"},
+      "documentation":"<p>Searches room profiles and lists the ones that meet a set of filter criteria.</p>"
+    },
+    "SearchRooms":{
+      "name":"SearchRooms",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"SearchRoomsRequest"},
+      "output":{"shape":"SearchRoomsResponse"},
+      "documentation":"<p>Searches rooms and lists the ones that meet a set of filter and sort criteria.</p>"
+    },
+    "SearchSkillGroups":{
+      "name":"SearchSkillGroups",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"SearchSkillGroupsRequest"},
+      "output":{"shape":"SearchSkillGroupsResponse"},
+      "documentation":"<p>Searches skill groups and lists the ones that meet a set of filter and sort criteria.</p>"
+    },
+    "SearchUsers":{
+      "name":"SearchUsers",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"SearchUsersRequest"},
+      "output":{"shape":"SearchUsersResponse"},
+      "documentation":"<p>Searches users and lists the ones that meet a set of filter and sort criteria.</p>"
+    },
+    "SendAnnouncement":{
+      "name":"SendAnnouncement",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"SendAnnouncementRequest"},
+      "output":{"shape":"SendAnnouncementResponse"},
+      "errors":[
+        {"shape":"LimitExceededException"},
+        {"shape":"AlreadyExistsException"}
+      ],
+      "documentation":"<p>Triggers an asynchronous flow to send text, SSML, or audio announcements to rooms that are identified by a search or filter. </p>"
+    },
+    "SendInvitation":{
+      "name":"SendInvitation",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"SendInvitationRequest"},
+      "output":{"shape":"SendInvitationResponse"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"InvalidUserStatusException"},
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Sends an enrollment invitation email with a URL to a user. The URL is valid for 30 days or until you call this operation again, whichever comes first. </p>"
+    },
+    "StartDeviceSync":{
+      "name":"StartDeviceSync",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"StartDeviceSyncRequest"},
+      "output":{"shape":"StartDeviceSyncResponse"},
+      "errors":[
+        {"shape":"DeviceNotRegisteredException"}
+      ],
+      "documentation":"<p>Resets a device and its account to the known default settings. This clears all information and settings set by previous users in the following ways:</p> <ul> <li> <p>Bluetooth - This unpairs all bluetooth devices paired with your echo device.</p> </li> <li> <p>Volume - This resets the echo device's volume to the default value.</p> </li> <li> <p>Notifications - This clears all notifications from your echo device.</p> </li> <li> <p>Lists - This clears all to-do items from your echo device.</p> </li> <li> <p>Settings - This internally syncs the room's profile (if the device is assigned to a room), contacts, address books, delegation access for account linking, and communications (if enabled on the room profile).</p> </li> </ul>"
+    },
+    "StartSmartHomeApplianceDiscovery":{
+      "name":"StartSmartHomeApplianceDiscovery",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"StartSmartHomeApplianceDiscoveryRequest"},
+      "output":{"shape":"StartSmartHomeApplianceDiscoveryResponse"},
+      "errors":[
+        {"shape":"NotFoundException"}
+      ],
+      "documentation":"<p>Initiates the discovery of any smart home appliances associated with the room.</p>"
+    },
+    "TagResource":{
+      "name":"TagResource",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"TagResourceRequest"},
+      "output":{"shape":"TagResourceResponse"},
+      "errors":[
+        {"shape":"NotFoundException"}
+      ],
+      "documentation":"<p>Adds metadata tags to a specified resource.</p>"
+    },
+    "UntagResource":{
+      "name":"UntagResource",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UntagResourceRequest"},
+      "output":{"shape":"UntagResourceResponse"},
+      "errors":[
+        {"shape":"NotFoundException"}
+      ],
+      "documentation":"<p>Removes metadata tags from a specified resource.</p>"
+    },
+    "UpdateAddressBook":{
+      "name":"UpdateAddressBook",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UpdateAddressBookRequest"},
+      "output":{"shape":"UpdateAddressBookResponse"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"NameInUseException"},
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Updates address book details by the address book ARN.</p>"
+    },
+    "UpdateBusinessReportSchedule":{
+      "name":"UpdateBusinessReportSchedule",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UpdateBusinessReportScheduleRequest"},
+      "output":{"shape":"UpdateBusinessReportScheduleResponse"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Updates the configuration of the report delivery schedule with the specified schedule ARN.</p>"
+    },
+    "UpdateConferenceProvider":{
+      "name":"UpdateConferenceProvider",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UpdateConferenceProviderRequest"},
+      "output":{"shape":"UpdateConferenceProviderResponse"},
+      "errors":[
+        {"shape":"NotFoundException"}
+      ],
+      "documentation":"<p>Updates an existing conference provider's settings.</p>"
+    },
+    "UpdateContact":{
+      "name":"UpdateContact",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UpdateContactRequest"},
+      "output":{"shape":"UpdateContactResponse"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Updates the contact details by the contact ARN.</p>"
+    },
+    "UpdateDevice":{
+      "name":"UpdateDevice",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UpdateDeviceRequest"},
+      "output":{"shape":"UpdateDeviceResponse"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"ConcurrentModificationException"},
+        {"shape":"DeviceNotRegisteredException"}
+      ],
+      "documentation":"<p>Updates the device name by device ARN.</p>"
+    },
+    "UpdateGateway":{
+      "name":"UpdateGateway",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UpdateGatewayRequest"},
+      "output":{"shape":"UpdateGatewayResponse"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"NameInUseException"}
+      ],
+      "documentation":"<p>Updates the details of a gateway. If any optional field is not provided, the existing corresponding value is left unmodified.</p>"
+    },
+    "UpdateGatewayGroup":{
+      "name":"UpdateGatewayGroup",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UpdateGatewayGroupRequest"},
+      "output":{"shape":"UpdateGatewayGroupResponse"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"NameInUseException"}
+      ],
+      "documentation":"<p>Updates the details of a gateway group. If any optional field is not provided, the existing corresponding value is left unmodified.</p>"
+    },
+    "UpdateNetworkProfile":{
+      "name":"UpdateNetworkProfile",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UpdateNetworkProfileRequest"},
+      "output":{"shape":"UpdateNetworkProfileResponse"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"NameInUseException"},
+        {"shape":"ConcurrentModificationException"},
+        {"shape":"InvalidCertificateAuthorityException"},
+        {"shape":"InvalidSecretsManagerResourceException"}
+      ],
+      "documentation":"<p>Updates a network profile by the network profile ARN.</p>"
+    },
+    "UpdateProfile":{
+      "name":"UpdateProfile",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UpdateProfileRequest"},
+      "output":{"shape":"UpdateProfileResponse"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"NameInUseException"},
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Updates an existing room profile by room profile ARN.</p>"
+    },
+    "UpdateRoom":{
+      "name":"UpdateRoom",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UpdateRoomRequest"},
+      "output":{"shape":"UpdateRoomResponse"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"NameInUseException"}
+      ],
+      "documentation":"<p>Updates room details by room ARN.</p>"
+    },
+    "UpdateSkillGroup":{
+      "name":"UpdateSkillGroup",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UpdateSkillGroupRequest"},
+      "output":{"shape":"UpdateSkillGroupResponse"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"NameInUseException"},
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Updates skill group details by skill group ARN.</p>"
+    }
+  },
+  "shapes":{
+    "Address":{
+      "type":"string",
+      "max":500,
+      "min":1
+    },
+    "AddressBook":{
+      "type":"structure",
+      "members":{
+        "AddressBookArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the address book.</p>"
+        },
+        "Name":{
+          "shape":"AddressBookName",
+          "documentation":"<p>The name of the address book.</p>"
+        },
+        "Description":{
+          "shape":"AddressBookDescription",
+          "documentation":"<p>The description of the address book.</p>"
+        }
+      },
+      "documentation":"<p>An address book with attributes.</p>"
+    },
+    "AddressBookData":{
+      "type":"structure",
+      "members":{
+        "AddressBookArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the address book.</p>"
+        },
+        "Name":{
+          "shape":"AddressBookName",
+          "documentation":"<p>The name of the address book.</p>"
+        },
+        "Description":{
+          "shape":"AddressBookDescription",
+          "documentation":"<p>The description of the address book.</p>"
+        }
+      },
+      "documentation":"<p>Information related to an address book.</p>"
+    },
+    "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"}
+      },
+      "documentation":"<p>The resource being created already exists.</p>",
+      "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",
+          "documentation":"<p>The unique identifier of the skill.</p>"
+        }
+      }
+    },
+    "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",
+          "documentation":"<p>The ARN of the contact to associate with an address book.</p>"
+        },
+        "AddressBookArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the address book with which to associate the contact.</p>"
+        }
+      }
+    },
+    "AssociateContactWithAddressBookResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "AssociateDeviceWithNetworkProfileRequest":{
+      "type":"structure",
+      "required":[
+        "DeviceArn",
+        "NetworkProfileArn"
+      ],
+      "members":{
+        "DeviceArn":{
+          "shape":"Arn",
+          "documentation":"<p>The device ARN.</p>"
+        },
+        "NetworkProfileArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the network profile to associate with a device.</p>"
+        }
+      }
+    },
+    "AssociateDeviceWithNetworkProfileResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "AssociateDeviceWithRoomRequest":{
+      "type":"structure",
+      "members":{
+        "DeviceArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the device to associate to a room. Required.</p>"
+        },
+        "RoomArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the room with which to associate the device. Required.</p>"
+        }
+      }
+    },
+    "AssociateDeviceWithRoomResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "AssociateSkillGroupWithRoomRequest":{
+      "type":"structure",
+      "members":{
+        "SkillGroupArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the skill group to associate with a room. Required.</p>"
+        },
+        "RoomArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the room with which to associate the skill group. Required.</p>"
+        }
+      }
+    },
+    "AssociateSkillGroupWithRoomResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "AssociateSkillWithSkillGroupRequest":{
+      "type":"structure",
+      "required":["SkillId"],
+      "members":{
+        "SkillGroupArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the skill group to associate the skill to. Required.</p>"
+        },
+        "SkillId":{
+          "shape":"SkillId",
+          "documentation":"<p>The unique identifier of the skill.</p>"
+        }
+      }
+    },
+    "AssociateSkillWithSkillGroupResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "AssociateSkillWithUsersRequest":{
+      "type":"structure",
+      "required":["SkillId"],
+      "members":{
+        "SkillId":{
+          "shape":"SkillId",
+          "documentation":"<p>The private skill ID you want to make available to enrolled users.</p>"
+        }
+      }
+    },
+    "AssociateSkillWithUsersResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "Audio":{
+      "type":"structure",
+      "required":[
+        "Locale",
+        "Location"
+      ],
+      "members":{
+        "Locale":{
+          "shape":"Locale",
+          "documentation":"<p>The locale of the audio message. Currently, en-US is supported.</p>"
+        },
+        "Location":{
+          "shape":"AudioLocation",
+          "documentation":"<p>The location of the audio file. Currently, S3 URLs are supported. Only S3 locations comprised of safe characters are valid. For more information, see <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#Safe%20Characters\">Safe Characters</a>.</p>"
+        }
+      },
+      "documentation":"<p>The audio message. There is a 1 MB limit on the audio file input and the only supported format is MP3. To convert your MP3 audio files to an Alexa-friendly, </p> <p>required codec version (MPEG version 2) and bit rate (48 kbps), you might use converter software. One option for this is a command-line tool, FFmpeg. For more information, see <a href=\"https://www.ffmpeg.org/\">FFmpeg</a>. The following command converts the provided &lt;input-file&gt; to an MP3 file that is played in the announcement:</p> <p> <code>ffmpeg -i &lt;input-file&gt; -ac 2 -codec:a libmp3lame -b:a 48k -ar 16000 &lt;output-file.mp3&gt;</code> </p>"
+    },
+    "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",
+          "documentation":"<p>The status of the report generation execution (RUNNING, SUCCEEDED, or FAILED).</p>"
+        },
+        "FailureCode":{
+          "shape":"BusinessReportFailureCode",
+          "documentation":"<p>The failure code.</p>"
+        },
+        "S3Location":{
+          "shape":"BusinessReportS3Location",
+          "documentation":"<p>The S3 location of the output reports.</p>"
+        },
+        "DeliveryTime":{
+          "shape":"BusinessReportDeliveryTime",
+          "documentation":"<p>The time of report delivery.</p>"
+        },
+        "DownloadUrl":{
+          "shape":"BusinessReportDownloadUrl",
+          "documentation":"<p>The download link where a user can download the report.</p>"
+        }
+      },
+      "documentation":"<p>Usage report with specified parameters.</p>"
+    },
+    "BusinessReportContentRange":{
+      "type":"structure",
+      "required":["Interval"],
+      "members":{
+        "Interval":{
+          "shape":"BusinessReportInterval",
+          "documentation":"<p>The interval of the content range.</p>"
+        }
+      },
+      "documentation":"<p>The content range of the report.</p>"
+    },
+    "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",
+          "documentation":"<p>The start date.</p>"
+        }
+      },
+      "documentation":"<p>The recurrence of the reports.</p>"
+    },
+    "BusinessReportS3Location":{
+      "type":"structure",
+      "members":{
+        "Path":{
+          "shape":"BusinessReportS3Path",
+          "documentation":"<p>The path of the business report.</p>"
+        },
+        "BucketName":{
+          "shape":"CustomerS3BucketName",
+          "documentation":"<p>The S3 bucket name of the output reports.</p>"
+        }
+      },
+      "documentation":"<p>The S3 location of the output reports.</p>"
+    },
+    "BusinessReportS3Path":{"type":"string"},
+    "BusinessReportSchedule":{
+      "type":"structure",
+      "members":{
+        "ScheduleArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the business report schedule.</p>"
+        },
+        "ScheduleName":{
+          "shape":"BusinessReportScheduleName",
+          "documentation":"<p>The name identifier of the schedule.</p>"
+        },
+        "S3BucketName":{
+          "shape":"CustomerS3BucketName",
+          "documentation":"<p>The S3 bucket name of the output reports.</p>"
+        },
+        "S3KeyPrefix":{
+          "shape":"S3KeyPrefix",
+          "documentation":"<p>The S3 key where the report is delivered.</p>"
+        },
+        "Format":{
+          "shape":"BusinessReportFormat",
+          "documentation":"<p>The format of the generated report (individual CSV files or zipped files of individual files).</p>"
+        },
+        "ContentRange":{
+          "shape":"BusinessReportContentRange",
+          "documentation":"<p>The content range of the reports.</p>"
+        },
+        "Recurrence":{
+          "shape":"BusinessReportRecurrence",
+          "documentation":"<p>The recurrence of the reports.</p>"
+        },
+        "LastBusinessReport":{
+          "shape":"BusinessReport",
+          "documentation":"<p>The details of the last business report delivery for a specified time interval.</p>"
+        }
+      },
+      "documentation":"<p>The schedule of the usage report.</p>"
+    },
+    "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",
+          "documentation":"<p>The ID of the skill store category.</p>"
+        },
+        "CategoryName":{
+          "shape":"CategoryName",
+          "documentation":"<p>The name of the skill store category.</p>"
+        }
+      },
+      "documentation":"<p>The skill store category that is shown. Alexa skills are assigned a specific skill category during creation, such as News, Social, and Sports.</p>"
+    },
+    "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",
+      "documentation":"<p>A unique, user-specified identifier for the request that ensures idempotency.</p>",
+      "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"}
+      },
+      "documentation":"<p>There is a concurrent modification of resources.</p>",
+      "exception":true
+    },
+    "ConferencePreference":{
+      "type":"structure",
+      "members":{
+        "DefaultConferenceProviderArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the default conference provider.</p>"
+        }
+      },
+      "documentation":"<p>The default conference provider that is used if no other scheduled meetings are detected.</p>"
+    },
+    "ConferenceProvider":{
+      "type":"structure",
+      "members":{
+        "Arn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the newly created conference provider.</p>"
+        },
+        "Name":{
+          "shape":"ConferenceProviderName",
+          "documentation":"<p>The name of the conference provider.</p>"
+        },
+        "Type":{
+          "shape":"ConferenceProviderType",
+          "documentation":"<p>The type of conference providers.</p>"
+        },
+        "IPDialIn":{
+          "shape":"IPDialIn",
+          "documentation":"<p>The IP endpoint and protocol for calling.</p>"
+        },
+        "PSTNDialIn":{
+          "shape":"PSTNDialIn",
+          "documentation":"<p>The information for PSTN conferencing.</p>"
+        },
+        "MeetingSetting":{
+          "shape":"MeetingSetting",
+          "documentation":"<p>The meeting settings for the conference provider.</p>"
+        }
+      },
+      "documentation":"<p>An entity that provides a conferencing solution. Alexa for Business acts as the voice interface and mediator that connects users to their preferred conference provider. Examples of conference providers include Amazon Chime, Zoom, Cisco, and Polycom. </p>"
+    },
+    "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",
+          "documentation":"<p>The ARN of the contact.</p>"
+        },
+        "DisplayName":{
+          "shape":"ContactName",
+          "documentation":"<p>The name of the contact to display on the console.</p>"
+        },
+        "FirstName":{
+          "shape":"ContactName",
+          "documentation":"<p>The first name of the contact, used to call the contact on the device.</p>"
+        },
+        "LastName":{
+          "shape":"ContactName",
+          "documentation":"<p>The last name of the contact, used to call the contact on the device.</p>"
+        },
+        "PhoneNumber":{
+          "shape":"RawPhoneNumber",
+          "documentation":"<p>The phone number of the contact. The phone number type defaults to WORK. You can either specify PhoneNumber or PhoneNumbers. We recommend that you use PhoneNumbers, which lets you specify the phone number type and multiple numbers.</p>"
+        },
+        "PhoneNumbers":{
+          "shape":"PhoneNumberList",
+          "documentation":"<p>The list of phone numbers for the contact.</p>"
+        },
+        "SipAddresses":{
+          "shape":"SipAddressList",
+          "documentation":"<p>The list of SIP addresses for the contact.</p>"
+        }
+      },
+      "documentation":"<p>A contact with attributes.</p>"
+    },
+    "ContactData":{
+      "type":"structure",
+      "members":{
+        "ContactArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the contact.</p>"
+        },
+        "DisplayName":{
+          "shape":"ContactName",
+          "documentation":"<p>The name of the contact to display on the console.</p>"
+        },
+        "FirstName":{
+          "shape":"ContactName",
+          "documentation":"<p>The first name of the contact, used to call the contact on the device.</p>"
+        },
+        "LastName":{
+          "shape":"ContactName",
+          "documentation":"<p>The last name of the contact, used to call the contact on the device.</p>"
+        },
+        "PhoneNumber":{
+          "shape":"RawPhoneNumber",
+          "documentation":"<p>The phone number of the contact. The phone number type defaults to WORK. You can specify PhoneNumber or PhoneNumbers. We recommend that you use PhoneNumbers, which lets you specify the phone number type and multiple numbers.</p>"
+        },
+        "PhoneNumbers":{
+          "shape":"PhoneNumberList",
+          "documentation":"<p>The list of phone numbers for the contact.</p>"
+        },
+        "SipAddresses":{
+          "shape":"SipAddressList",
+          "documentation":"<p>The list of SIP addresses for the contact.</p>"
+        }
+      },
+      "documentation":"<p>Information related to a contact.</p>"
+    },
+    "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",
+          "documentation":"<p>The list of text messages.</p>"
+        },
+        "SsmlList":{
+          "shape":"SsmlList",
+          "documentation":"<p>The list of SSML messages.</p>"
+        },
+        "AudioList":{
+          "shape":"AudioList",
+          "documentation":"<p>The list of audio messages.</p>"
+        }
+      },
+      "documentation":"<p>The content definition. This can contain only one text, SSML, or audio list object.</p>"
+    },
+    "CountryCode":{
+      "type":"string",
+      "pattern":"\\d{1,3}"
+    },
+    "CreateAddressBookRequest":{
+      "type":"structure",
+      "required":["Name"],
+      "members":{
+        "Name":{
+          "shape":"AddressBookName",
+          "documentation":"<p>The name of the address book.</p>"
+        },
+        "Description":{
+          "shape":"AddressBookDescription",
+          "documentation":"<p>The description of the address book.</p>"
+        },
+        "ClientRequestToken":{
+          "shape":"ClientRequestToken",
+          "documentation":"<p>A unique, user-specified identifier for the request that ensures idempotency.</p>",
+          "idempotencyToken":true
+        },
+        "Tags":{
+          "shape":"TagList",
+          "documentation":"<p>The tags to be added to the specified resource. Do not provide system tags.</p>"
+        }
+      }
+    },
+    "CreateAddressBookResponse":{
+      "type":"structure",
+      "members":{
+        "AddressBookArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the newly created address book.</p>"
+        }
+      }
+    },
+    "CreateBusinessReportScheduleRequest":{
+      "type":"structure",
+      "required":[
+        "Format",
+        "ContentRange"
+      ],
+      "members":{
+        "ScheduleName":{
+          "shape":"BusinessReportScheduleName",
+          "documentation":"<p>The name identifier of the schedule.</p>"
+        },
+        "S3BucketName":{
+          "shape":"CustomerS3BucketName",
+          "documentation":"<p>The S3 bucket name of the output reports. If this isn't specified, the report can be retrieved from a download link by calling ListBusinessReportSchedule. </p>"
+        },
+        "S3KeyPrefix":{
+          "shape":"S3KeyPrefix",
+          "documentation":"<p>The S3 key where the report is delivered.</p>"
+        },
+        "Format":{
+          "shape":"BusinessReportFormat",
+          "documentation":"<p>The format of the generated report (individual CSV files or zipped files of individual files).</p>"
+        },
+        "ContentRange":{
+          "shape":"BusinessReportContentRange",
+          "documentation":"<p>The content range of the reports.</p>"
+        },
+        "Recurrence":{
+          "shape":"BusinessReportRecurrence",
+          "documentation":"<p>The recurrence of the reports. If this isn't specified, the report will only be delivered one time when the API is called. </p>"
+        },
+        "ClientRequestToken":{
+          "shape":"ClientRequestToken",
+          "documentation":"<p>The client request token.</p>",
+          "idempotencyToken":true
+        },
+        "Tags":{
+          "shape":"TagList",
+          "documentation":"<p>The tags for the business report schedule.</p>"
+        }
+      }
+    },
+    "CreateBusinessReportScheduleResponse":{
+      "type":"structure",
+      "members":{
+        "ScheduleArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the business report schedule.</p>"
+        }
+      }
+    },
+    "CreateConferenceProviderRequest":{
+      "type":"structure",
+      "required":[
+        "ConferenceProviderName",
+        "ConferenceProviderType",
+        "MeetingSetting"
+      ],
+      "members":{
+        "ConferenceProviderName":{
+          "shape":"ConferenceProviderName",
+          "documentation":"<p>The name of the conference provider.</p>"
+        },
+        "ConferenceProviderType":{
+          "shape":"ConferenceProviderType",
+          "documentation":"<p>Represents a type within a list of predefined types.</p>"
+        },
+        "IPDialIn":{
+          "shape":"IPDialIn",
+          "documentation":"<p>The IP endpoint and protocol for calling.</p>"
+        },
+        "PSTNDialIn":{
+          "shape":"PSTNDialIn",
+          "documentation":"<p>The information for PSTN conferencing.</p>"
+        },
+        "MeetingSetting":{
+          "shape":"MeetingSetting",
+          "documentation":"<p>The meeting settings for the conference provider.</p>"
+        },
+        "ClientRequestToken":{
+          "shape":"ClientRequestToken",
+          "documentation":"<p>The request token of the client.</p>",
+          "idempotencyToken":true
+        },
+        "Tags":{
+          "shape":"TagList",
+          "documentation":"<p>The tags to be added to the specified resource. Do not provide system tags.</p>"
+        }
+      }
+    },
+    "CreateConferenceProviderResponse":{
+      "type":"structure",
+      "members":{
+        "ConferenceProviderArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the newly-created conference provider.</p>"
+        }
+      }
+    },
+    "CreateContactRequest":{
+      "type":"structure",
+      "required":["FirstName"],
+      "members":{
+        "DisplayName":{
+          "shape":"ContactName",
+          "documentation":"<p>The name of the contact to display on the console.</p>"
+        },
+        "FirstName":{
+          "shape":"ContactName",
+          "documentation":"<p>The first name of the contact that is used to call the contact on the device.</p>"
+        },
+        "LastName":{
+          "shape":"ContactName",
+          "documentation":"<p>The last name of the contact that is used to call the contact on the device.</p>"
+        },
+        "PhoneNumber":{
+          "shape":"RawPhoneNumber",
+          "documentation":"<p>The phone number of the contact in E.164 format. The phone number type defaults to WORK. You can specify PhoneNumber or PhoneNumbers. We recommend that you use PhoneNumbers, which lets you specify the phone number type and multiple numbers.</p>"
+        },
+        "PhoneNumbers":{
+          "shape":"PhoneNumberList",
+          "documentation":"<p>The list of phone numbers for the contact.</p>"
+        },
+        "SipAddresses":{
+          "shape":"SipAddressList",
+          "documentation":"<p>The list of SIP addresses for the contact.</p>"
+        },
+        "ClientRequestToken":{
+          "shape":"ClientRequestToken",
+          "documentation":"<p>A unique, user-specified identifier for this request that ensures idempotency.</p>",
+          "idempotencyToken":true
+        },
+        "Tags":{
+          "shape":"TagList",
+          "documentation":"<p>The tags to be added to the specified resource. Do not provide system tags.</p>"
+        }
+      }
+    },
+    "CreateContactResponse":{
+      "type":"structure",
+      "members":{
+        "ContactArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the newly created address book.</p>"
+        }
+      }
+    },
+    "CreateEndOfMeetingReminder":{
+      "type":"structure",
+      "required":[
+        "ReminderAtMinutes",
+        "ReminderType",
+        "Enabled"
+      ],
+      "members":{
+        "ReminderAtMinutes":{
+          "shape":"EndOfMeetingReminderMinutesList",
+          "documentation":"<p> A range of 3 to 15 minutes that determines when the reminder begins.</p>"
+        },
+        "ReminderType":{
+          "shape":"EndOfMeetingReminderType",
+          "documentation":"<p>The type of sound that users hear during the end of meeting reminder. </p>"
+        },
+        "Enabled":{
+          "shape":"Boolean",
+          "documentation":"<p>Whether an end of meeting reminder is enabled or not.</p>"
+        }
+      },
+      "documentation":"<p>Creates settings for the end of meeting reminder feature that are applied to a room profile. The end of meeting reminder enables Alexa to remind users when a meeting is ending.</p>"
+    },
+    "CreateGatewayGroupRequest":{
+      "type":"structure",
+      "required":[
+        "Name",
+        "ClientRequestToken"
+      ],
+      "members":{
+        "Name":{
+          "shape":"GatewayGroupName",
+          "documentation":"<p>The name of the gateway group.</p>"
+        },
+        "Description":{
+          "shape":"GatewayGroupDescription",
+          "documentation":"<p>The description of the gateway group.</p>"
+        },
+        "ClientRequestToken":{
+          "shape":"ClientRequestToken",
+          "documentation":"<p> A unique, user-specified identifier for the request that ensures idempotency.</p>",
+          "idempotencyToken":true
+        },
+        "Tags":{
+          "shape":"TagList",
+          "documentation":"<p>The tags to be added to the specified resource. Do not provide system tags.</p>"
+        }
+      }
+    },
+    "CreateGatewayGroupResponse":{
+      "type":"structure",
+      "members":{
+        "GatewayGroupArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the created gateway group.</p>"
+        }
+      }
+    },
+    "CreateInstantBooking":{
+      "type":"structure",
+      "required":[
+        "DurationInMinutes",
+        "Enabled"
+      ],
+      "members":{
+        "DurationInMinutes":{
+          "shape":"Minutes",
+          "documentation":"<p>Duration between 15 and 240 minutes at increments of 15 that determines how long to book an available room when a meeting is started with Alexa.</p>"
+        },
+        "Enabled":{
+          "shape":"Boolean",
+          "documentation":"<p>Whether instant booking is enabled or not.</p>"
+        }
+      },
+      "documentation":"<p>Creates settings for the instant booking feature that are applied to a room profile. When users start their meeting with Alexa, Alexa automatically books the room for the configured duration if the room is available.</p>"
+    },
+    "CreateMeetingRoomConfiguration":{
+      "type":"structure",
+      "members":{
+        "RoomUtilizationMetricsEnabled":{
+          "shape":"Boolean",
+          "documentation":"<p>Whether room utilization metrics are enabled or not.</p>"
+        },
+        "EndOfMeetingReminder":{"shape":"CreateEndOfMeetingReminder"},
+        "InstantBooking":{
+          "shape":"CreateInstantBooking",
+          "documentation":"<p>Settings to automatically book a room for a configured duration if it's free when joining a meeting with Alexa.</p>"
+        },
+        "RequireCheckIn":{
+          "shape":"CreateRequireCheckIn",
+          "documentation":"<p>Settings for requiring a check in when a room is reserved. Alexa can cancel a room reservation if it's not checked into to make the room available for others. Users can check in by joining the meeting with Alexa or an AVS device, or by saying “Alexa, check in.”</p>"
+        }
+      },
+      "documentation":"<p>Creates meeting room settings of a room profile.</p>"
+    },
+    "CreateNetworkProfileRequest":{
+      "type":"structure",
+      "required":[
+        "NetworkProfileName",
+        "Ssid",
+        "SecurityType",
+        "ClientRequestToken"
+      ],
+      "members":{
+        "NetworkProfileName":{
+          "shape":"NetworkProfileName",
+          "documentation":"<p>The name of the network profile associated with a device.</p>"
+        },
+        "Description":{
+          "shape":"NetworkProfileDescription",
+          "documentation":"<p>Detailed information about a device's network profile.</p>"
+        },
+        "Ssid":{
+          "shape":"NetworkSsid",
+          "documentation":"<p>The SSID of the Wi-Fi network.</p>"
+        },
+        "SecurityType":{
+          "shape":"NetworkSecurityType",
+          "documentation":"<p>The security type of the Wi-Fi network. This can be WPA2_ENTERPRISE, WPA2_PSK, WPA_PSK, WEP, or OPEN.</p>"
+        },
+        "EapMethod":{
+          "shape":"NetworkEapMethod",
+          "documentation":"<p>The authentication standard that is used in the EAP framework. Currently, EAP_TLS is supported.</p>"
+        },
+        "CurrentPassword":{
+          "shape":"CurrentWiFiPassword",
+          "documentation":"<p>The current password of the Wi-Fi network.</p>"
+        },
+        "NextPassword":{
+          "shape":"NextWiFiPassword",
+          "documentation":"<p>The next, or subsequent, password of the Wi-Fi network. This password is asynchronously transmitted to the device and is used when the password of the network changes to NextPassword. </p>"
+        },
+        "CertificateAuthorityArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the Private Certificate Authority (PCA) created in AWS Certificate Manager (ACM). This is used to issue certificates to the devices. </p>"
+        },
+        "TrustAnchors":{
+          "shape":"TrustAnchorList",
+          "documentation":"<p>The root certificates of your authentication server that is installed on your devices and used to trust your authentication server during EAP negotiation. </p>"
+        },
+        "ClientRequestToken":{
+          "shape":"ClientRequestToken",
+          "idempotencyToken":true
+        },
+        "Tags":{
+          "shape":"TagList",
+          "documentation":"<p>The tags to be added to the specified resource. Do not provide system tags. </p>"
+        }
+      }
+    },
+    "CreateNetworkProfileResponse":{
+      "type":"structure",
+      "members":{
+        "NetworkProfileArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the network profile associated with a device.</p>"
+        }
+      }
+    },
+    "CreateProfileRequest":{
+      "type":"structure",
+      "required":[
+        "ProfileName",
+        "Timezone",
+        "Address",
+        "DistanceUnit",
+        "TemperatureUnit",
+        "WakeWord"
+      ],
+      "members":{
+        "ProfileName":{
+          "shape":"ProfileName",
+          "documentation":"<p>The name of a room profile.</p>"
+        },
+        "Timezone":{
+          "shape":"Timezone",
+          "documentation":"<p>The time zone used by a room profile.</p>"
+        },
+        "Address":{
+          "shape":"Address",
+          "documentation":"<p>The valid address for the room.</p>"
+        },
+        "DistanceUnit":{
+          "shape":"DistanceUnit",
+          "documentation":"<p>The distance unit to be used by devices in the profile.</p>"
+        },
+        "TemperatureUnit":{
+          "shape":"TemperatureUnit",
+          "documentation":"<p>The temperature unit to be used by devices in the profile.</p>"
+        },
+        "WakeWord":{
+          "shape":"WakeWord",
+          "documentation":"<p>A wake word for Alexa, Echo, Amazon, or a computer.</p>"
+        },
+        "Locale":{
+          "shape":"DeviceLocale",
+          "documentation":"<p>The locale of the room profile. (This is currently only available to a limited preview audience.)</p>"
+        },
+        "ClientRequestToken":{
+          "shape":"ClientRequestToken",
+          "documentation":"<p>The user-specified token that is used during the creation of a profile.</p>",
+          "idempotencyToken":true
+        },
+        "SetupModeDisabled":{
+          "shape":"Boolean",
+          "documentation":"<p>Whether room profile setup is enabled.</p>"
+        },
+        "MaxVolumeLimit":{
+          "shape":"MaxVolumeLimit",
+          "documentation":"<p>The maximum volume limit for a room profile.</p>"
+        },
+        "PSTNEnabled":{
+          "shape":"Boolean",
+          "documentation":"<p>Whether PSTN calling is enabled.</p>"
+        },
+        "DataRetentionOptIn":{
+          "shape":"Boolean",
+          "documentation":"<p>Whether data retention of the profile is enabled.</p>"
+        },
+        "MeetingRoomConfiguration":{
+          "shape":"CreateMeetingRoomConfiguration",
+          "documentation":"<p>The meeting room settings of a room profile.</p>"
+        },
+        "Tags":{
+          "shape":"TagList",
+          "documentation":"<p>The tags for the profile.</p>"
+        }
+      }
+    },
+    "CreateProfileResponse":{
+      "type":"structure",
+      "members":{
+        "ProfileArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the newly created room profile in the response.</p>"
+        }
+      }
+    },
+    "CreateRequireCheckIn":{
+      "type":"structure",
+      "required":[
+        "ReleaseAfterMinutes",
+        "Enabled"
+      ],
+      "members":{
+        "ReleaseAfterMinutes":{
+          "shape":"Minutes",
+          "documentation":"<p>Duration between 5 and 20 minutes to determine when to release the room if it's not checked into.</p>"
+        },
+        "Enabled":{
+          "shape":"Boolean",
+          "documentation":"<p>Whether require check in is enabled or not.</p>"
+        }
+      },
+      "documentation":"<p>Creates settings for the require check in feature that are applied to a room profile. Require check in allows a meeting room’s Alexa or AVS device to prompt the user to check in; otherwise, the room will be released.</p>"
+    },
+    "CreateRoomRequest":{
+      "type":"structure",
+      "required":["RoomName"],
+      "members":{
+        "RoomName":{
+          "shape":"RoomName",
+          "documentation":"<p>The name for the room.</p>"
+        },
+        "Description":{
+          "shape":"RoomDescription",
+          "documentation":"<p>The description for the room.</p>"
+        },
+        "ProfileArn":{
+          "shape":"Arn",
+          "documentation":"<p>The profile ARN for the room. This is required.</p>"
+        },
+        "ProviderCalendarId":{
+          "shape":"ProviderCalendarId",
+          "documentation":"<p>The calendar ARN for the room.</p>"
+        },
+        "ClientRequestToken":{
+          "shape":"ClientRequestToken",
+          "documentation":"<p>A unique, user-specified identifier for this request that ensures idempotency. </p>",
+          "idempotencyToken":true
+        },
+        "Tags":{
+          "shape":"TagList",
+          "documentation":"<p>The tags for the room.</p>"
+        }
+      }
+    },
+    "CreateRoomResponse":{
+      "type":"structure",
+      "members":{
+        "RoomArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the newly created room in the response.</p>"
+        }
+      }
+    },
+    "CreateSkillGroupRequest":{
+      "type":"structure",
+      "required":["SkillGroupName"],
+      "members":{
+        "SkillGroupName":{
+          "shape":"SkillGroupName",
+          "documentation":"<p>The name for the skill group.</p>"
+        },
+        "Description":{
+          "shape":"SkillGroupDescription",
+          "documentation":"<p>The description for the skill group.</p>"
+        },
+        "ClientRequestToken":{
+          "shape":"ClientRequestToken",
+          "documentation":"<p>A unique, user-specified identifier for this request that ensures idempotency. </p>",
+          "idempotencyToken":true
+        },
+        "Tags":{
+          "shape":"TagList",
+          "documentation":"<p>The tags for the skill group.</p>"
+        }
+      }
+    },
+    "CreateSkillGroupResponse":{
+      "type":"structure",
+      "members":{
+        "SkillGroupArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the newly created skill group in the response.</p>"
+        }
+      }
+    },
+    "CreateUserRequest":{
+      "type":"structure",
+      "required":["UserId"],
+      "members":{
+        "UserId":{
+          "shape":"user_UserId",
+          "documentation":"<p>The ARN for the user.</p>"
+        },
+        "FirstName":{
+          "shape":"user_FirstName",
+          "documentation":"<p>The first name for the user.</p>"
+        },
+        "LastName":{
+          "shape":"user_LastName",
+          "documentation":"<p>The last name for the user.</p>"
+        },
+        "Email":{
+          "shape":"Email",
+          "documentation":"<p>The email address for the user.</p>"
+        },
+        "ClientRequestToken":{
+          "shape":"ClientRequestToken",
+          "documentation":"<p>A unique, user-specified identifier for this request that ensures idempotency. </p>",
+          "idempotencyToken":true
+        },
+        "Tags":{
+          "shape":"TagList",
+          "documentation":"<p>The tags for the user.</p>"
+        }
+      }
+    },
+    "CreateUserResponse":{
+      "type":"structure",
+      "members":{
+        "UserArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the newly created user in the response.</p>"
+        }
+      }
+    },
+    "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",
+          "documentation":"<p>The ARN of the address book to delete.</p>"
+        }
+      }
+    },
+    "DeleteAddressBookResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeleteBusinessReportScheduleRequest":{
+      "type":"structure",
+      "required":["ScheduleArn"],
+      "members":{
+        "ScheduleArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the business report schedule.</p>"
+        }
+      }
+    },
+    "DeleteBusinessReportScheduleResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeleteConferenceProviderRequest":{
+      "type":"structure",
+      "required":["ConferenceProviderArn"],
+      "members":{
+        "ConferenceProviderArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the conference provider.</p>"
+        }
+      }
+    },
+    "DeleteConferenceProviderResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeleteContactRequest":{
+      "type":"structure",
+      "required":["ContactArn"],
+      "members":{
+        "ContactArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the contact to delete.</p>"
+        }
+      }
+    },
+    "DeleteContactResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeleteDeviceRequest":{
+      "type":"structure",
+      "required":["DeviceArn"],
+      "members":{
+        "DeviceArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the device for which to request details.</p>"
+        }
+      }
+    },
+    "DeleteDeviceResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeleteDeviceUsageDataRequest":{
+      "type":"structure",
+      "required":[
+        "DeviceArn",
+        "DeviceUsageType"
+      ],
+      "members":{
+        "DeviceArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the device.</p>"
+        },
+        "DeviceUsageType":{
+          "shape":"DeviceUsageType",
+          "documentation":"<p>The type of usage data to delete.</p>"
+        }
+      }
+    },
+    "DeleteDeviceUsageDataResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeleteGatewayGroupRequest":{
+      "type":"structure",
+      "required":["GatewayGroupArn"],
+      "members":{
+        "GatewayGroupArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the gateway group to delete.</p>"
+        }
+      }
+    },
+    "DeleteGatewayGroupResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeleteNetworkProfileRequest":{
+      "type":"structure",
+      "required":["NetworkProfileArn"],
+      "members":{
+        "NetworkProfileArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the network profile associated with a device.</p>"
+        }
+      }
+    },
+    "DeleteNetworkProfileResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeleteProfileRequest":{
+      "type":"structure",
+      "members":{
+        "ProfileArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the room profile to delete. Required.</p>"
+        }
+      }
+    },
+    "DeleteProfileResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeleteRoomRequest":{
+      "type":"structure",
+      "members":{
+        "RoomArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the room to delete. Required.</p>"
+        }
+      }
+    },
+    "DeleteRoomResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeleteRoomSkillParameterRequest":{
+      "type":"structure",
+      "required":[
+        "SkillId",
+        "ParameterKey"
+      ],
+      "members":{
+        "RoomArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the room from which to remove the room skill parameter details.</p>"
+        },
+        "SkillId":{
+          "shape":"SkillId",
+          "documentation":"<p>The ID of the skill from which to remove the room skill parameter details.</p>"
+        },
+        "ParameterKey":{
+          "shape":"RoomSkillParameterKey",
+          "documentation":"<p>The room skill parameter key for which to remove details.</p>"
+        }
+      }
+    },
+    "DeleteRoomSkillParameterResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeleteSkillAuthorizationRequest":{
+      "type":"structure",
+      "required":["SkillId"],
+      "members":{
+        "SkillId":{
+          "shape":"SkillId",
+          "documentation":"<p>The unique identifier of a skill.</p>"
+        },
+        "RoomArn":{
+          "shape":"Arn",
+          "documentation":"<p>The room that the skill is authorized for.</p>"
+        }
+      }
+    },
+    "DeleteSkillAuthorizationResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeleteSkillGroupRequest":{
+      "type":"structure",
+      "members":{
+        "SkillGroupArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the skill group to delete. Required.</p>"
+        }
+      }
+    },
+    "DeleteSkillGroupResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeleteUserRequest":{
+      "type":"structure",
+      "required":["EnrollmentId"],
+      "members":{
+        "UserArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the user to delete in the organization. Required.</p>"
+        },
+        "EnrollmentId":{
+          "shape":"EnrollmentId",
+          "documentation":"<p>The ARN of the user's enrollment in the organization. Required.</p>"
+        }
+      }
+    },
+    "DeleteUserResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeveloperInfo":{
+      "type":"structure",
+      "members":{
+        "DeveloperName":{
+          "shape":"DeveloperName",
+          "documentation":"<p>The name of the developer.</p>"
+        },
+        "PrivacyPolicy":{
+          "shape":"PrivacyPolicy",
+          "documentation":"<p>The URL of the privacy policy.</p>"
+        },
+        "Email":{
+          "shape":"Email",
+          "documentation":"<p>The email of the developer.</p>"
+        },
+        "Url":{
+          "shape":"Url",
+          "documentation":"<p>The website of the developer.</p>"
+        }
+      },
+      "documentation":"<p>The details about the developer that published the skill.</p>"
+    },
+    "DeveloperName":{"type":"string"},
+    "Device":{
+      "type":"structure",
+      "members":{
+        "DeviceArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of a device.</p>"
+        },
+        "DeviceSerialNumber":{
+          "shape":"DeviceSerialNumber",
+          "documentation":"<p>The serial number of a device.</p>"
+        },
+        "DeviceType":{
+          "shape":"DeviceType",
+          "documentation":"<p>The type of a device.</p>"
+        },
+        "DeviceName":{
+          "shape":"DeviceName",
+          "documentation":"<p>The name of a device.</p>"
+        },
+        "SoftwareVersion":{
+          "shape":"SoftwareVersion",
+          "documentation":"<p>The software version of a device.</p>"
+        },
+        "MacAddress":{
+          "shape":"MacAddress",
+          "documentation":"<p>The MAC address of a device.</p>"
+        },
+        "RoomArn":{
+          "shape":"Arn",
+          "documentation":"<p>The room ARN of a device.</p>"
+        },
+        "DeviceStatus":{
+          "shape":"DeviceStatus",
+          "documentation":"<p>The status of a device. If the status is not READY, check the DeviceStatusInfo value for details.</p>"
+        },
+        "DeviceStatusInfo":{
+          "shape":"DeviceStatusInfo",
+          "documentation":"<p>Detailed information about a device's status.</p>"
+        },
+        "NetworkProfileInfo":{
+          "shape":"DeviceNetworkProfileInfo",
+          "documentation":"<p>Detailed information about a device's network profile.</p>"
+        }
+      },
+      "documentation":"<p>A device with attributes.</p>"
+    },
+    "DeviceData":{
+      "type":"structure",
+      "members":{
+        "DeviceArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of a device.</p>"
+        },
+        "DeviceSerialNumber":{
+          "shape":"DeviceSerialNumber",
+          "documentation":"<p>The serial number of a device.</p>"
+        },
+        "DeviceType":{
+          "shape":"DeviceType",
+          "documentation":"<p>The type of a device.</p>"
+        },
+        "DeviceName":{
+          "shape":"DeviceName",
+          "documentation":"<p>The name of a device.</p>"
+        },
+        "SoftwareVersion":{
+          "shape":"SoftwareVersion",
+          "documentation":"<p>The software version of a device.</p>"
+        },
+        "MacAddress":{
+          "shape":"MacAddress",
+          "documentation":"<p>The MAC address of a device.</p>"
+        },
+        "DeviceStatus":{
+          "shape":"DeviceStatus",
+          "documentation":"<p>The status of a device.</p>"
+        },
+        "NetworkProfileArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the network profile associated with a device.</p>"
+        },
+        "NetworkProfileName":{
+          "shape":"NetworkProfileName",
+          "documentation":"<p>The name of the network profile associated with a device.</p>"
+        },
+        "RoomArn":{
+          "shape":"Arn",
+          "documentation":"<p>The room ARN associated with a device.</p>"
+        },
+        "RoomName":{
+          "shape":"DeviceRoomName",
+          "documentation":"<p>The name of the room associated with a device.</p>"
+        },
+        "DeviceStatusInfo":{
+          "shape":"DeviceStatusInfo",
+          "documentation":"<p>Detailed information about a device's status.</p>"
+        },
+        "CreatedTime":{
+          "shape":"DeviceDataCreatedTime",
+          "documentation":"<p>The time (in epoch) when the device data was created.</p>"
+        }
+      },
+      "documentation":"<p>Device attributes.</p>"
+    },
+    "DeviceDataCreatedTime":{"type":"timestamp"},
+    "DeviceDataList":{
+      "type":"list",
+      "member":{"shape":"DeviceData"}
+    },
+    "DeviceEvent":{
+      "type":"structure",
+      "members":{
+        "Type":{
+          "shape":"DeviceEventType",
+          "documentation":"<p>The type of device event.</p>"
+        },
+        "Value":{
+          "shape":"DeviceEventValue",
+          "documentation":"<p>The value of the event.</p>"
+        },
+        "Timestamp":{
+          "shape":"DeviceEventTime",
+          "documentation":"<p>The time (in epoch) when the event occurred. </p>"
+        }
+      },
+      "documentation":"<p>The list of device events.</p>"
+    },
+    "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",
+          "documentation":"<p>The ARN of the network profile associated with a device.</p>"
+        },
+        "CertificateArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the certificate associated with a device.</p>"
+        },
+        "CertificateExpirationTime":{
+          "shape":"CertificateTime",
+          "documentation":"<p>The time (in epoch) when the certificate expires.</p>"
+        }
+      },
+      "documentation":"<p>Detailed information about a device's network profile.</p>"
+    },
+    "DeviceNotRegisteredException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>The request failed because this device is no longer registered and therefore no longer managed by this account.</p>",
+      "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",
+          "documentation":"<p>The list of available features on the device.</p>"
+        },
+        "Code":{
+          "shape":"DeviceStatusDetailCode",
+          "documentation":"<p>The device status detail code.</p>"
+        }
+      },
+      "documentation":"<p>Details of a device’s status.</p>"
+    },
+    "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",
+          "documentation":"<p>One or more device status detail descriptions.</p>"
+        },
+        "ConnectionStatus":{
+          "shape":"ConnectionStatus",
+          "documentation":"<p>The latest available information about the connection status of a device. </p>"
+        },
+        "ConnectionStatusUpdatedTime":{
+          "shape":"ConnectionStatusUpdatedTime",
+          "documentation":"<p>The time (in epoch) when the device connection status changed.</p>"
+        }
+      },
+      "documentation":"<p>Detailed information about a device's status.</p>"
+    },
+    "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",
+          "documentation":"<p>The ARN of the contact to disassociate from an address book.</p>"
+        },
+        "AddressBookArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the address from which to disassociate the contact.</p>"
+        }
+      }
+    },
+    "DisassociateContactFromAddressBookResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DisassociateDeviceFromRoomRequest":{
+      "type":"structure",
+      "members":{
+        "DeviceArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the device to disassociate from a room. Required.</p>"
+        }
+      }
+    },
+    "DisassociateDeviceFromRoomResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DisassociateSkillFromSkillGroupRequest":{
+      "type":"structure",
+      "required":["SkillId"],
+      "members":{
+        "SkillGroupArn":{
+          "shape":"Arn",
+          "documentation":"<p>The unique identifier of a skill. Required.</p>"
+        },
+        "SkillId":{
+          "shape":"SkillId",
+          "documentation":"<p>The ARN of a skill group to associate to a skill.</p>"
+        }
+      }
+    },
+    "DisassociateSkillFromSkillGroupResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DisassociateSkillFromUsersRequest":{
+      "type":"structure",
+      "required":["SkillId"],
+      "members":{
+        "SkillId":{
+          "shape":"SkillId",
+          "documentation":"<p> The private skill ID you want to make unavailable for enrolled users.</p>"
+        }
+      }
+    },
+    "DisassociateSkillFromUsersResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DisassociateSkillGroupFromRoomRequest":{
+      "type":"structure",
+      "members":{
+        "SkillGroupArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the skill group to disassociate from a room. Required.</p>"
+        },
+        "RoomArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the room from which the skill group is to be disassociated. Required.</p>"
+        }
+      }
+    },
+    "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",
+          "documentation":"<p>A range of 3 to 15 minutes that determines when the reminder begins.</p>"
+        },
+        "ReminderType":{
+          "shape":"EndOfMeetingReminderType",
+          "documentation":"<p>The type of sound that users hear during the end of meeting reminder. </p>"
+        },
+        "Enabled":{
+          "shape":"Boolean",
+          "documentation":"<p>Whether an end of meeting reminder is enabled or not.</p>"
+        }
+      },
+      "documentation":"<p>Settings for the end of meeting reminder feature that are applied to a room profile. The end of meeting reminder enables Alexa to remind users when a meeting is ending. </p>"
+    },
+    "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",
+          "documentation":"<p>The key of a filter.</p>"
+        },
+        "Values":{
+          "shape":"FilterValueList",
+          "documentation":"<p>The values of a filter.</p>"
+        }
+      },
+      "documentation":"<p>A filter name and value pair that is used to return a more specific list of results. Filters can be used to match a set of resources by various criteria.</p>"
+    },
+    "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",
+          "documentation":"<p>The room that the appliances are associated with.</p>"
+        }
+      }
+    },
+    "ForgetSmartHomeAppliancesResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "Gateway":{
+      "type":"structure",
+      "members":{
+        "Arn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the gateway.</p>"
+        },
+        "Name":{
+          "shape":"GatewayName",
+          "documentation":"<p>The name of the gateway.</p>"
+        },
+        "Description":{
+          "shape":"GatewayDescription",
+          "documentation":"<p>The description of the gateway.</p>"
+        },
+        "GatewayGroupArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the gateway group that the gateway is associated to.</p>"
+        },
+        "SoftwareVersion":{
+          "shape":"GatewayVersion",
+          "documentation":"<p>The software version of the gateway. The gateway automatically updates its software version during normal operation.</p>"
+        }
+      },
+      "documentation":"<p>The details of the gateway. </p>"
+    },
+    "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",
+          "documentation":"<p>The ARN of the gateway group.</p>"
+        },
+        "Name":{
+          "shape":"GatewayGroupName",
+          "documentation":"<p>The name of the gateway group.</p>"
+        },
+        "Description":{
+          "shape":"GatewayGroupDescription",
+          "documentation":"<p>The description of the gateway group.</p>"
+        }
+      },
+      "documentation":"<p>The details of the gateway group.</p>"
+    },
+    "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",
+          "documentation":"<p>The ARN of the gateway group.</p>"
+        },
+        "Name":{
+          "shape":"GatewayGroupName",
+          "documentation":"<p>The name of the gateway group.</p>"
+        },
+        "Description":{
+          "shape":"GatewayGroupDescription",
+          "documentation":"<p>The description of the gateway group.</p>"
+        }
+      },
+      "documentation":"<p>The summary of a gateway group.</p>"
+    },
+    "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",
+          "documentation":"<p>The ARN of the gateway.</p>"
+        },
+        "Name":{
+          "shape":"GatewayName",
+          "documentation":"<p>The name of the gateway.</p>"
+        },
+        "Description":{
+          "shape":"GatewayDescription",
+          "documentation":"<p>The description of the gateway.</p>"
+        },
+        "GatewayGroupArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the gateway group that the gateway is associated to.</p>"
+        },
+        "SoftwareVersion":{
+          "shape":"GatewayVersion",
+          "documentation":"<p>The software version of the gateway. The gateway automatically updates its software version during normal operation.</p>"
+        }
+      },
+      "documentation":"<p>The summary of a gateway.</p>"
+    },
+    "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",
+          "documentation":"<p>The ARN of the address book for which to request details.</p>"
+        }
+      }
+    },
+    "GetAddressBookResponse":{
+      "type":"structure",
+      "members":{
+        "AddressBook":{
+          "shape":"AddressBook",
+          "documentation":"<p>The details of the requested address book.</p>"
+        }
+      }
+    },
+    "GetConferencePreferenceRequest":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "GetConferencePreferenceResponse":{
+      "type":"structure",
+      "members":{
+        "Preference":{
+          "shape":"ConferencePreference",
+          "documentation":"<p>The conference preference.</p>"
+        }
+      }
+    },
+    "GetConferenceProviderRequest":{
+      "type":"structure",
+      "required":["ConferenceProviderArn"],
+      "members":{
+        "ConferenceProviderArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the newly created conference provider.</p>"
+        }
+      }
+    },
+    "GetConferenceProviderResponse":{
+      "type":"structure",
+      "members":{
+        "ConferenceProvider":{
+          "shape":"ConferenceProvider",
+          "documentation":"<p>The conference provider.</p>"
+        }
+      }
+    },
+    "GetContactRequest":{
+      "type":"structure",
+      "required":["ContactArn"],
+      "members":{
+        "ContactArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the contact for which to request details.</p>"
+        }
+      }
+    },
+    "GetContactResponse":{
+      "type":"structure",
+      "members":{
+        "Contact":{
+          "shape":"Contact",
+          "documentation":"<p>The details of the requested contact.</p>"
+        }
+      }
+    },
+    "GetDeviceRequest":{
+      "type":"structure",
+      "members":{
+        "DeviceArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the device for which to request details. Required.</p>"
+        }
+      }
+    },
+    "GetDeviceResponse":{
+      "type":"structure",
+      "members":{
+        "Device":{
+          "shape":"Device",
+          "documentation":"<p>The details of the device requested. Required.</p>"
+        }
+      }
+    },
+    "GetGatewayGroupRequest":{
+      "type":"structure",
+      "required":["GatewayGroupArn"],
+      "members":{
+        "GatewayGroupArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the gateway group to get.</p>"
+        }
+      }
+    },
+    "GetGatewayGroupResponse":{
+      "type":"structure",
+      "members":{
+        "GatewayGroup":{"shape":"GatewayGroup"}
+      }
+    },
+    "GetGatewayRequest":{
+      "type":"structure",
+      "required":["GatewayArn"],
+      "members":{
+        "GatewayArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the gateway to get.</p>"
+        }
+      }
+    },
+    "GetGatewayResponse":{
+      "type":"structure",
+      "members":{
+        "Gateway":{
+          "shape":"Gateway",
+          "documentation":"<p>The details of the gateway.</p>"
+        }
+      }
+    },
+    "GetInvitationConfigurationRequest":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "GetInvitationConfigurationResponse":{
+      "type":"structure",
+      "members":{
+        "OrganizationName":{
+          "shape":"OrganizationName",
+          "documentation":"<p>The name of the organization sending the enrollment invite to a user.</p>"
+        },
+        "ContactEmail":{
+          "shape":"Email",
+          "documentation":"<p>The email ID of the organization or individual contact that the enrolled user can use. </p>"
+        },
+        "PrivateSkillIds":{
+          "shape":"ShortSkillIdList",
+          "documentation":"<p>The list of private skill IDs that you want to recommend to the user to enable in the invitation.</p>"
+        }
+      }
+    },
+    "GetNetworkProfileRequest":{
+      "type":"structure",
+      "required":["NetworkProfileArn"],
+      "members":{
+        "NetworkProfileArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the network profile associated with a device.</p>"
+        }
+      }
+    },
+    "GetNetworkProfileResponse":{
+      "type":"structure",
+      "members":{
+        "NetworkProfile":{
+          "shape":"NetworkProfile",
+          "documentation":"<p>The network profile associated with a device.</p>"
+        }
+      }
+    },
+    "GetProfileRequest":{
+      "type":"structure",
+      "members":{
+        "ProfileArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the room profile for which to request details. Required.</p>"
+        }
+      }
+    },
+    "GetProfileResponse":{
+      "type":"structure",
+      "members":{
+        "Profile":{
+          "shape":"Profile",
+          "documentation":"<p>The details of the room profile requested. Required.</p>"
+        }
+      }
+    },
+    "GetRoomRequest":{
+      "type":"structure",
+      "members":{
+        "RoomArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the room for which to request details. Required.</p>"
+        }
+      }
+    },
+    "GetRoomResponse":{
+      "type":"structure",
+      "members":{
+        "Room":{
+          "shape":"Room",
+          "documentation":"<p>The details of the room requested.</p>"
+        }
+      }
+    },
+    "GetRoomSkillParameterRequest":{
+      "type":"structure",
+      "required":[
+        "SkillId",
+        "ParameterKey"
+      ],
+      "members":{
+        "RoomArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the room from which to get the room skill parameter details. </p>"
+        },
+        "SkillId":{
+          "shape":"SkillId",
+          "documentation":"<p>The ARN of the skill from which to get the room skill parameter details. Required.</p>"
+        },
+        "ParameterKey":{
+          "shape":"RoomSkillParameterKey",
+          "documentation":"<p>The room skill parameter key for which to get details. Required.</p>"
+        }
+      }
+    },
+    "GetRoomSkillParameterResponse":{
+      "type":"structure",
+      "members":{
+        "RoomSkillParameter":{
+          "shape":"RoomSkillParameter",
+          "documentation":"<p>The details of the room skill parameter requested. Required.</p>"
+        }
+      }
+    },
+    "GetSkillGroupRequest":{
+      "type":"structure",
+      "members":{
+        "SkillGroupArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the skill group for which to get details. Required.</p>"
+        }
+      }
+    },
+    "GetSkillGroupResponse":{
+      "type":"structure",
+      "members":{
+        "SkillGroup":{
+          "shape":"SkillGroup",
+          "documentation":"<p>The details of the skill group requested. Required.</p>"
+        }
+      }
+    },
+    "IPDialIn":{
+      "type":"structure",
+      "required":[
+        "Endpoint",
+        "CommsProtocol"
+      ],
+      "members":{
+        "Endpoint":{
+          "shape":"Endpoint",
+          "documentation":"<p>The IP address.</p>"
+        },
+        "CommsProtocol":{
+          "shape":"CommsProtocol",
+          "documentation":"<p>The protocol, including SIP, SIPS, and H323.</p>"
+        }
+      },
+      "documentation":"<p>The IP endpoint and protocol for calling.</p>"
+    },
+    "IconUrl":{"type":"string"},
+    "InstantBooking":{
+      "type":"structure",
+      "members":{
+        "DurationInMinutes":{
+          "shape":"Minutes",
+          "documentation":"<p>Duration between 15 and 240 minutes at increments of 15 that determines how long to book an available room when a meeting is started with Alexa. </p>"
+        },
+        "Enabled":{
+          "shape":"Boolean",
+          "documentation":"<p>Whether instant booking is enabled or not.</p>"
+        }
+      },
+      "documentation":"<p>Settings for the instant booking feature that are applied to a room profile. When users start their meeting with Alexa, Alexa automatically books the room for the configured duration if the room is available.</p>"
+    },
+    "InvalidCertificateAuthorityException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>The Certificate Authority can't issue or revoke a certificate.</p>",
+      "exception":true
+    },
+    "InvalidDeviceException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>The device is in an invalid state.</p>",
+      "exception":true
+    },
+    "InvalidSecretsManagerResourceException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>A password in SecretsManager is in an invalid state.</p>",
+      "exception":true
+    },
+    "InvalidServiceLinkedRoleStateException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>The service linked role is locked for deletion. </p>",
+      "exception":true
+    },
+    "InvalidUserStatusException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>The attempt to update a user is invalid due to the user's current status.</p>",
+      "exception":true
+    },
+    "InvocationPhrase":{"type":"string"},
+    "Key":{
+      "type":"string",
+      "min":1
+    },
+    "LimitExceededException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>You are performing an action that would put you beyond your account's limits.</p>",
+      "exception":true
+    },
+    "ListBusinessReportSchedulesRequest":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The token used to list the remaining schedules from the previous API call.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of schedules listed in the call.</p>"
+        }
+      }
+    },
+    "ListBusinessReportSchedulesResponse":{
+      "type":"structure",
+      "members":{
+        "BusinessReportSchedules":{
+          "shape":"BusinessReportScheduleList",
+          "documentation":"<p>The schedule of the reports.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The token used to list the remaining schedules from the previous API call.</p>"
+        }
+      }
+    },
+    "ListConferenceProvidersRequest":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The tokens used for pagination.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of conference providers to be returned, per paginated calls.</p>"
+        }
+      }
+    },
+    "ListConferenceProvidersResponse":{
+      "type":"structure",
+      "members":{
+        "ConferenceProviders":{
+          "shape":"ConferenceProvidersList",
+          "documentation":"<p>The conference providers.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The tokens used for pagination.</p>"
+        }
+      }
+    },
+    "ListDeviceEventsRequest":{
+      "type":"structure",
+      "required":["DeviceArn"],
+      "members":{
+        "DeviceArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of a device.</p>"
+        },
+        "EventType":{
+          "shape":"DeviceEventType",
+          "documentation":"<p>The event type to filter device events. If EventType isn't specified, this returns a list of all device events in reverse chronological order. If EventType is specified, this returns a list of device events for that EventType in reverse chronological order. </p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response only includes results beyond the token, up to the value specified by MaxResults. When the end of results is reached, the response has a value of null.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of results to include in the response. The default value is 50. If more results exist than the specified MaxResults value, a token is included in the response so that the remaining results can be retrieved. </p>"
+        }
+      }
+    },
+    "ListDeviceEventsResponse":{
+      "type":"structure",
+      "members":{
+        "DeviceEvents":{
+          "shape":"DeviceEventList",
+          "documentation":"<p>The device events requested for the device ARN.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The token returned to indicate that there is more data available.</p>"
+        }
+      }
+    },
+    "ListGatewayGroupsRequest":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The token used to paginate though multiple pages of gateway group summaries.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of gateway group summaries to return. The default is 50.</p>"
+        }
+      }
+    },
+    "ListGatewayGroupsResponse":{
+      "type":"structure",
+      "members":{
+        "GatewayGroups":{
+          "shape":"GatewayGroupSummaries",
+          "documentation":"<p>The gateway groups in the list.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The token used to paginate though multiple pages of gateway group summaries.</p>"
+        }
+      }
+    },
+    "ListGatewaysRequest":{
+      "type":"structure",
+      "members":{
+        "GatewayGroupArn":{
+          "shape":"Arn",
+          "documentation":"<p>The gateway group ARN for which to list gateways.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The token used to paginate though multiple pages of gateway summaries.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of gateway summaries to return. The default is 50.</p>"
+        }
+      }
+    },
+    "ListGatewaysResponse":{
+      "type":"structure",
+      "members":{
+        "Gateways":{
+          "shape":"GatewaySummaries",
+          "documentation":"<p>The gateways in the list.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The token used to paginate though multiple pages of gateway summaries.</p>"
+        }
+      }
+    },
+    "ListSkillsRequest":{
+      "type":"structure",
+      "members":{
+        "SkillGroupArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the skill group for which to list enabled skills.</p>"
+        },
+        "EnablementType":{
+          "shape":"EnablementTypeFilter",
+          "documentation":"<p>Whether the skill is enabled under the user's account.</p>"
+        },
+        "SkillType":{
+          "shape":"SkillTypeFilter",
+          "documentation":"<p>Whether the skill is publicly available or is a private skill.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token, up to the value specified by <code>MaxResults</code>.</p>"
+        },
+        "MaxResults":{
+          "shape":"SkillListMaxResults",
+          "documentation":"<p>The maximum number of results to include in the response. If more results exist than the specified <code>MaxResults</code> value, a token is included in the response so that the remaining results can be retrieved.</p>"
+        }
+      }
+    },
+    "ListSkillsResponse":{
+      "type":"structure",
+      "members":{
+        "SkillSummaries":{
+          "shape":"SkillSummaryList",
+          "documentation":"<p>The list of enabled skills requested. Required.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The token returned to indicate that there is more data available.</p>"
+        }
+      }
+    },
+    "ListSkillsStoreCategoriesRequest":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The tokens used for pagination.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of categories returned, per paginated calls.</p>"
+        }
+      }
+    },
+    "ListSkillsStoreCategoriesResponse":{
+      "type":"structure",
+      "members":{
+        "CategoryList":{
+          "shape":"CategoryList",
+          "documentation":"<p>The list of categories.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The tokens used for pagination.</p>"
+        }
+      }
+    },
+    "ListSkillsStoreSkillsByCategoryRequest":{
+      "type":"structure",
+      "required":["CategoryId"],
+      "members":{
+        "CategoryId":{
+          "shape":"CategoryId",
+          "documentation":"<p>The category ID for which the skills are being retrieved from the skill store.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The tokens used for pagination.</p>"
+        },
+        "MaxResults":{
+          "shape":"SkillListMaxResults",
+          "documentation":"<p>The maximum number of skills returned per paginated calls.</p>"
+        }
+      }
+    },
+    "ListSkillsStoreSkillsByCategoryResponse":{
+      "type":"structure",
+      "members":{
+        "SkillsStoreSkills":{
+          "shape":"SkillsStoreSkillList",
+          "documentation":"<p>The skill store skills.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The tokens used for pagination.</p>"
+        }
+      }
+    },
+    "ListSmartHomeAppliancesRequest":{
+      "type":"structure",
+      "required":["RoomArn"],
+      "members":{
+        "RoomArn":{
+          "shape":"Arn",
+          "documentation":"<p>The room that the appliances are associated with.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of appliances to be returned, per paginated calls.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The tokens used for pagination.</p>"
+        }
+      }
+    },
+    "ListSmartHomeAppliancesResponse":{
+      "type":"structure",
+      "members":{
+        "SmartHomeAppliances":{
+          "shape":"SmartHomeApplianceList",
+          "documentation":"<p>The smart home appliances.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The tokens used for pagination.</p>"
+        }
+      }
+    },
+    "ListTagsRequest":{
+      "type":"structure",
+      "required":["Arn"],
+      "members":{
+        "Arn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the specified resource for which to list tags.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token, up to the value specified by <code>MaxResults</code>. </p>"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of results to include in the response. If more results exist than the specified <code>MaxResults</code> value, a token is included in the response so that the remaining results can be retrieved.</p>"
+        }
+      }
+    },
+    "ListTagsResponse":{
+      "type":"structure",
+      "members":{
+        "Tags":{
+          "shape":"TagList",
+          "documentation":"<p>The tags requested for the specified resource.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The token returned to indicate that there is more data available.</p>"
+        }
+      }
+    },
+    "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",
+          "documentation":"<p>Whether room utilization metrics are enabled or not.</p>"
+        },
+        "EndOfMeetingReminder":{
+          "shape":"EndOfMeetingReminder",
+          "documentation":"<p>Settings for the end of meeting reminder feature that are applied to a room profile. The end of meeting reminder enables Alexa to remind users when a meeting is ending. </p>"
+        },
+        "InstantBooking":{
+          "shape":"InstantBooking",
+          "documentation":"<p>Settings to automatically book the room if available for a configured duration when joining a meeting with Alexa. </p>"
+        },
+        "RequireCheckIn":{
+          "shape":"RequireCheckIn",
+          "documentation":"<p>Settings for requiring a check in when a room is reserved. Alexa can cancel a room reservation if it's not checked into. This makes the room available for others. Users can check in by joining the meeting with Alexa or an AVS device, or by saying “Alexa, check in.” </p>"
+        }
+      },
+      "documentation":"<p>Meeting room settings of a room profile.</p>"
+    },
+    "MeetingSetting":{
+      "type":"structure",
+      "required":["RequirePin"],
+      "members":{
+        "RequirePin":{
+          "shape":"RequirePin",
+          "documentation":"<p>The values that indicate whether the pin is always required.</p>"
+        }
+      },
+      "documentation":"<p>The values that indicate whether a pin is always required (YES), never required (NO), or OPTIONAL.</p> <ul> <li> <p>If YES, Alexa will always ask for a meeting pin.</p> </li> <li> <p>If NO, Alexa will never ask for a meeting pin.</p> </li> <li> <p>If OPTIONAL, Alexa will ask if you have a meeting pin and if the customer responds with yes, it will ask for the meeting pin.</p> </li> </ul>"
+    },
+    "Minutes":{"type":"integer"},
+    "NameInUseException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>The name sent in the request is already in use.</p>",
+      "exception":true
+    },
+    "NetworkEapMethod":{
+      "type":"string",
+      "enum":["EAP_TLS"]
+    },
+    "NetworkProfile":{
+      "type":"structure",
+      "members":{
+        "NetworkProfileArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the network profile associated with a device.</p>"
+        },
+        "NetworkProfileName":{
+          "shape":"NetworkProfileName",
+          "documentation":"<p>The name of the network profile associated with a device.</p>"
+        },
+        "Description":{
+          "shape":"NetworkProfileDescription",
+          "documentation":"<p>Detailed information about a device's network profile.</p>"
+        },
+        "Ssid":{
+          "shape":"NetworkSsid",
+          "documentation":"<p>The SSID of the Wi-Fi network.</p>"
+        },
+        "SecurityType":{
+          "shape":"NetworkSecurityType",
+          "documentation":"<p>The security type of the Wi-Fi network. This can be WPA2_ENTERPRISE, WPA2_PSK, WPA_PSK, WEP, or OPEN.</p>"
+        },
+        "EapMethod":{
+          "shape":"NetworkEapMethod",
+          "documentation":"<p>The authentication standard that is used in the EAP framework. Currently, EAP_TLS is supported. </p>"
+        },
+        "CurrentPassword":{
+          "shape":"CurrentWiFiPassword",
+          "documentation":"<p>The current password of the Wi-Fi network.</p>"
+        },
+        "NextPassword":{
+          "shape":"NextWiFiPassword",
+          "documentation":"<p>The next, or subsequent, password of the Wi-Fi network. This password is asynchronously transmitted to the device and is used when the password of the network changes to NextPassword. </p>"
+        },
+        "CertificateAuthorityArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the Private Certificate Authority (PCA) created in AWS Certificate Manager (ACM). This is used to issue certificates to the devices. </p>"
+        },
+        "TrustAnchors":{
+          "shape":"TrustAnchorList",
+          "documentation":"<p>The root certificates of your authentication server, which is installed on your devices and used to trust your authentication server during EAP negotiation.</p>"
+        }
+      },
+      "documentation":"<p>The network profile associated with a device.</p>"
+    },
+    "NetworkProfileData":{
+      "type":"structure",
+      "members":{
+        "NetworkProfileArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the network profile associated with a device.</p>"
+        },
+        "NetworkProfileName":{
+          "shape":"NetworkProfileName",
+          "documentation":"<p>The name of the network profile associated with a device.</p>"
+        },
+        "Description":{
+          "shape":"NetworkProfileDescription",
+          "documentation":"<p>Detailed information about a device's network profile.</p>"
+        },
+        "Ssid":{
+          "shape":"NetworkSsid",
+          "documentation":"<p>The SSID of the Wi-Fi network.</p>"
+        },
+        "SecurityType":{
+          "shape":"NetworkSecurityType",
+          "documentation":"<p>The security type of the Wi-Fi network. This can be WPA2_ENTERPRISE, WPA2_PSK, WPA_PSK, WEP, or OPEN.</p>"
+        },
+        "EapMethod":{
+          "shape":"NetworkEapMethod",
+          "documentation":"<p>The authentication standard that is used in the EAP framework. Currently, EAP_TLS is supported.</p>"
+        },
+        "CertificateAuthorityArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the Private Certificate Authority (PCA) created in AWS Certificate Manager (ACM). This is used to issue certificates to the devices.</p>"
+        }
+      },
+      "documentation":"<p>The data associated with a network profile.</p>"
+    },
+    "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"}
+      },
+      "documentation":"<p>The resource is not found.</p>",
+      "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",
+          "documentation":"<p>The zip code.</p>"
+        },
+        "PhoneNumber":{
+          "shape":"OutboundPhoneNumber",
+          "documentation":"<p>The phone number to call to join the conference.</p>"
+        },
+        "OneClickIdDelay":{
+          "shape":"OneClickIdDelay",
+          "documentation":"<p>The delay duration before Alexa enters the conference ID with dual-tone multi-frequency (DTMF). Each number on the dial pad corresponds to a DTMF tone, which is how we send data over the telephone network.</p>"
+        },
+        "OneClickPinDelay":{
+          "shape":"OneClickPinDelay",
+          "documentation":"<p>The delay duration before Alexa enters the conference pin with dual-tone multi-frequency (DTMF). Each number on the dial pad corresponds to a DTMF tone, which is how we send data over the telephone network.</p>"
+        }
+      },
+      "documentation":"<p>The information for public switched telephone network (PSTN) conferencing.</p>"
+    },
+    "PhoneNumber":{
+      "type":"structure",
+      "required":[
+        "Number",
+        "Type"
+      ],
+      "members":{
+        "Number":{
+          "shape":"RawPhoneNumber",
+          "documentation":"<p>The raw value of the phone number.</p>"
+        },
+        "Type":{
+          "shape":"PhoneNumberType",
+          "documentation":"<p>The type of the phone number.</p>"
+        }
+      },
+      "documentation":"<p>The phone number for the contact containing the raw number and phone number type.</p>"
+    },
+    "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",
+          "documentation":"<p>The ARN of a room profile.</p>"
+        },
+        "ProfileName":{
+          "shape":"ProfileName",
+          "documentation":"<p>The name of a room profile.</p>"
+        },
+        "IsDefault":{
+          "shape":"Boolean",
+          "documentation":"<p>Retrieves if the profile is default or not.</p>"
+        },
+        "Address":{
+          "shape":"Address",
+          "documentation":"<p>The address of a room profile.</p>"
+        },
+        "Timezone":{
+          "shape":"Timezone",
+          "documentation":"<p>The time zone of a room profile.</p>"
+        },
+        "DistanceUnit":{
+          "shape":"DistanceUnit",
+          "documentation":"<p>The distance unit of a room profile.</p>"
+        },
+        "TemperatureUnit":{
+          "shape":"TemperatureUnit",
+          "documentation":"<p>The temperature unit of a room profile.</p>"
+        },
+        "WakeWord":{
+          "shape":"WakeWord",
+          "documentation":"<p>The wake word of a room profile.</p>"
+        },
+        "Locale":{
+          "shape":"DeviceLocale",
+          "documentation":"<p>The locale of a room profile. (This is currently available only to a limited preview audience.)</p>"
+        },
+        "SetupModeDisabled":{
+          "shape":"Boolean",
+          "documentation":"<p>The setup mode of a room profile.</p>"
+        },
+        "MaxVolumeLimit":{
+          "shape":"MaxVolumeLimit",
+          "documentation":"<p>The max volume limit of a room profile.</p>"
+        },
+        "PSTNEnabled":{
+          "shape":"Boolean",
+          "documentation":"<p>The PSTN setting of a room profile.</p>"
+        },
+        "DataRetentionOptIn":{
+          "shape":"Boolean",
+          "documentation":"<p>Whether data retention of the profile is enabled.</p>"
+        },
+        "AddressBookArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the address book.</p>"
+        },
+        "MeetingRoomConfiguration":{
+          "shape":"MeetingRoomConfiguration",
+          "documentation":"<p>Meeting room settings of a room profile.</p>"
+        }
+      },
+      "documentation":"<p>A room profile with attributes.</p>"
+    },
+    "ProfileData":{
+      "type":"structure",
+      "members":{
+        "ProfileArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of a room profile.</p>"
+        },
+        "ProfileName":{
+          "shape":"ProfileName",
+          "documentation":"<p>The name of a room profile.</p>"
+        },
+        "IsDefault":{
+          "shape":"Boolean",
+          "documentation":"<p>Retrieves if the profile data is default or not.</p>"
+        },
+        "Address":{
+          "shape":"Address",
+          "documentation":"<p>The address of a room profile.</p>"
+        },
+        "Timezone":{
+          "shape":"Timezone",
+          "documentation":"<p>The time zone of a room profile.</p>"
+        },
+        "DistanceUnit":{
+          "shape":"DistanceUnit",
+          "documentation":"<p>The distance unit of a room profile.</p>"
+        },
+        "TemperatureUnit":{
+          "shape":"TemperatureUnit",
+          "documentation":"<p>The temperature unit of a room profile.</p>"
+        },
+        "WakeWord":{
+          "shape":"WakeWord",
+          "documentation":"<p>The wake word of a room profile.</p>"
+        },
+        "Locale":{
+          "shape":"DeviceLocale",
+          "documentation":"<p>The locale of a room profile. (This is currently available only to a limited preview audience.)</p>"
+        }
+      },
+      "documentation":"<p>The data of a room profile.</p>"
+    },
+    "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",
+          "documentation":"<p>The conference preference of a specific conference provider.</p>"
+        }
+      }
+    },
+    "PutConferencePreferenceResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "PutInvitationConfigurationRequest":{
+      "type":"structure",
+      "required":["OrganizationName"],
+      "members":{
+        "OrganizationName":{
+          "shape":"OrganizationName",
+          "documentation":"<p>The name of the organization sending the enrollment invite to a user.</p>"
+        },
+        "ContactEmail":{
+          "shape":"Email",
+          "documentation":"<p>The email ID of the organization or individual contact that the enrolled user can use. </p>"
+        },
+        "PrivateSkillIds":{
+          "shape":"ShortSkillIdList",
+          "documentation":"<p>The list of private skill IDs that you want to recommend to the user to enable in the invitation.</p>"
+        }
+      }
+    },
+    "PutInvitationConfigurationResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "PutRoomSkillParameterRequest":{
+      "type":"structure",
+      "required":[
+        "SkillId",
+        "RoomSkillParameter"
+      ],
+      "members":{
+        "RoomArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the room associated with the room skill parameter. Required.</p>"
+        },
+        "SkillId":{
+          "shape":"SkillId",
+          "documentation":"<p>The ARN of the skill associated with the room skill parameter. Required.</p>"
+        },
+        "RoomSkillParameter":{
+          "shape":"RoomSkillParameter",
+          "documentation":"<p>The updated room skill parameter. Required.</p>"
+        }
+      }
+    },
+    "PutRoomSkillParameterResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "PutSkillAuthorizationRequest":{
+      "type":"structure",
+      "required":[
+        "AuthorizationResult",
+        "SkillId"
+      ],
+      "members":{
+        "AuthorizationResult":{
+          "shape":"AuthorizationResult",
+          "documentation":"<p>The authorization result specific to OAUTH code grant output. \"Code” must be populated in the AuthorizationResult map to establish the authorization.</p>"
+        },
+        "SkillId":{
+          "shape":"SkillId",
+          "documentation":"<p>The unique identifier of a skill.</p>"
+        },
+        "RoomArn":{
+          "shape":"Arn",
+          "documentation":"<p>The room that the skill is authorized for.</p>"
+        }
+      }
+    },
+    "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",
+          "documentation":"<p>The client ID of the OEM used for code-based linking authorization on an AVS device.</p>"
+        },
+        "UserCode":{
+          "shape":"UserCode",
+          "documentation":"<p>The code that is obtained after your AVS device has made a POST request to LWA as a part of the Device Authorization Request component of the OAuth code-based linking specification.</p>"
+        },
+        "ProductId":{
+          "shape":"ProductId",
+          "documentation":"<p>The product ID used to identify your AVS device during authorization.</p>"
+        },
+        "DeviceSerialNumber":{
+          "shape":"DeviceSerialNumberForAVS",
+          "documentation":"<p>The key generated by the OEM that uniquely identifies a specified instance of your AVS device.</p>"
+        },
+        "AmazonId":{
+          "shape":"AmazonId",
+          "documentation":"<p>The device type ID for your AVS device generated by Amazon when the OEM creates a new product on Amazon's Developer Console.</p>"
+        },
+        "RoomArn":{
+          "shape":"Arn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the room with which to associate your AVS device.</p>"
+        },
+        "Tags":{
+          "shape":"TagList",
+          "documentation":"<p>The tags to be added to the specified resource. Do not provide system tags.</p>"
+        }
+      }
+    },
+    "RegisterAVSDeviceResponse":{
+      "type":"structure",
+      "members":{
+        "DeviceArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the device.</p>"
+        }
+      }
+    },
+    "RejectSkillRequest":{
+      "type":"structure",
+      "required":["SkillId"],
+      "members":{
+        "SkillId":{
+          "shape":"SkillId",
+          "documentation":"<p>The unique identifier of the skill.</p>"
+        }
+      }
+    },
+    "RejectSkillResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "ReleaseDate":{"type":"string"},
+    "RequireCheckIn":{
+      "type":"structure",
+      "members":{
+        "ReleaseAfterMinutes":{
+          "shape":"Minutes",
+          "documentation":"<p>Duration between 5 and 20 minutes to determine when to release the room if it's not checked into. </p>"
+        },
+        "Enabled":{
+          "shape":"Boolean",
+          "documentation":"<p>Whether require check in is enabled or not.</p>"
+        }
+      },
+      "documentation":"<p>Settings for the require check in feature that are applied to a room profile. Require check in allows a meeting room’s Alexa or AVS device to prompt the user to check in; otherwise, the room will be released. </p>"
+    },
+    "RequirePin":{
+      "type":"string",
+      "enum":[
+        "YES",
+        "NO",
+        "OPTIONAL"
+      ]
+    },
+    "ResolveRoomRequest":{
+      "type":"structure",
+      "required":[
+        "UserId",
+        "SkillId"
+      ],
+      "members":{
+        "UserId":{
+          "shape":"UserId",
+          "documentation":"<p>The ARN of the user. Required.</p>"
+        },
+        "SkillId":{
+          "shape":"SkillId",
+          "documentation":"<p>The ARN of the skill that was requested. Required.</p>"
+        }
+      }
+    },
+    "ResolveRoomResponse":{
+      "type":"structure",
+      "members":{
+        "RoomArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the room from which the skill request was invoked.</p>"
+        },
+        "RoomName":{
+          "shape":"RoomName",
+          "documentation":"<p>The name of the room from which the skill request was invoked.</p>"
+        },
+        "RoomSkillParameters":{
+          "shape":"RoomSkillParameters",
+          "documentation":"<p>Response to get the room profile request. Required.</p>"
+        }
+      }
+    },
+    "ResourceAssociatedException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>Another resource is associated with the resource in the request.</p>",
+      "exception":true
+    },
+    "ResourceInUseException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"},
+        "ClientRequestToken":{"shape":"ClientRequestToken"}
+      },
+      "documentation":"<p>The resource in the request is already in use.</p>",
+      "exception":true
+    },
+    "ReviewKey":{"type":"string"},
+    "ReviewValue":{"type":"string"},
+    "Reviews":{
+      "type":"map",
+      "key":{"shape":"ReviewKey"},
+      "value":{"shape":"ReviewValue"}
+    },
+    "RevokeInvitationRequest":{
+      "type":"structure",
+      "members":{
+        "UserArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the user for whom to revoke an enrollment invitation. Required.</p>"
+        },
+        "EnrollmentId":{
+          "shape":"EnrollmentId",
+          "documentation":"<p>The ARN of the enrollment invitation to revoke. Required.</p>"
+        }
+      }
+    },
+    "RevokeInvitationResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "Room":{
+      "type":"structure",
+      "members":{
+        "RoomArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of a room.</p>"
+        },
+        "RoomName":{
+          "shape":"RoomName",
+          "documentation":"<p>The name of a room.</p>"
+        },
+        "Description":{
+          "shape":"RoomDescription",
+          "documentation":"<p>The description of a room.</p>"
+        },
+        "ProviderCalendarId":{
+          "shape":"ProviderCalendarId",
+          "documentation":"<p>The provider calendar ARN of a room.</p>"
+        },
+        "ProfileArn":{
+          "shape":"Arn",
+          "documentation":"<p>The profile ARN of a room.</p>"
+        }
+      },
+      "documentation":"<p>A room with attributes.</p>"
+    },
+    "RoomData":{
+      "type":"structure",
+      "members":{
+        "RoomArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of a room.</p>"
+        },
+        "RoomName":{
+          "shape":"RoomName",
+          "documentation":"<p>The name of a room.</p>"
+        },
+        "Description":{
+          "shape":"RoomDescription",
+          "documentation":"<p>The description of a room.</p>"
+        },
+        "ProviderCalendarId":{
+          "shape":"ProviderCalendarId",
+          "documentation":"<p>The provider calendar ARN of a room.</p>"
+        },
+        "ProfileArn":{
+          "shape":"Arn",
+          "documentation":"<p>The profile ARN of a room.</p>"
+        },
+        "ProfileName":{
+          "shape":"ProfileName",
+          "documentation":"<p>The profile name of a room.</p>"
+        }
+      },
+      "documentation":"<p>The data of a room.</p>"
+    },
+    "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",
+          "documentation":"<p>The parameter key of a room skill parameter. ParameterKey is an enumerated type that only takes “DEFAULT” or “SCOPE” as valid values.</p>"
+        },
+        "ParameterValue":{
+          "shape":"RoomSkillParameterValue",
+          "documentation":"<p>The parameter value of a room skill parameter.</p>"
+        }
+      },
+      "documentation":"<p>A skill parameter associated with a room.</p>"
+    },
+    "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",
+          "documentation":"<p>The filters to use to list a specified set of address books. The supported filter key is AddressBookName.</p>"
+        },
+        "SortCriteria":{
+          "shape":"SortList",
+          "documentation":"<p>The sort order to use in listing the specified set of address books. The supported sort key is AddressBookName.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response only includes results beyond the token, up to the value specified by MaxResults.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of results to include in the response. If more results exist than the specified MaxResults value, a token is included in the response so that the remaining results can be retrieved.</p>"
+        }
+      }
+    },
+    "SearchAddressBooksResponse":{
+      "type":"structure",
+      "members":{
+        "AddressBooks":{
+          "shape":"AddressBookDataList",
+          "documentation":"<p>The address books that meet the specified set of filter criteria, in sort order.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The token returned to indicate that there is more data available.</p>"
+        },
+        "TotalCount":{
+          "shape":"TotalCount",
+          "documentation":"<p>The total number of address books returned.</p>"
+        }
+      }
+    },
+    "SearchContactsRequest":{
+      "type":"structure",
+      "members":{
+        "Filters":{
+          "shape":"FilterList",
+          "documentation":"<p>The filters to use to list a specified set of address books. The supported filter keys are DisplayName, FirstName, LastName, and AddressBookArns.</p>"
+        },
+        "SortCriteria":{
+          "shape":"SortList",
+          "documentation":"<p>The sort order to use in listing the specified set of contacts. The supported sort keys are DisplayName, FirstName, and LastName.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response only includes results beyond the token, up to the value specified by MaxResults.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of results to include in the response. If more results exist than the specified MaxResults value, a token is included in the response so that the remaining results can be retrieved.</p>"
+        }
+      }
+    },
+    "SearchContactsResponse":{
+      "type":"structure",
+      "members":{
+        "Contacts":{
+          "shape":"ContactDataList",
+          "documentation":"<p>The contacts that meet the specified set of filter criteria, in sort order.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The token returned to indicate that there is more data available.</p>"
+        },
+        "TotalCount":{
+          "shape":"TotalCount",
+          "documentation":"<p>The total number of contacts returned.</p>"
+        }
+      }
+    },
+    "SearchDevicesRequest":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token, up to the value specified by <code>MaxResults</code>.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of results to include in the response. If more results exist than the specified <code>MaxResults</code> value, a token is included in the response so that the remaining results can be retrieved.</p>"
+        },
+        "Filters":{
+          "shape":"FilterList",
+          "documentation":"<p>The filters to use to list a specified set of devices. Supported filter keys are DeviceName, DeviceStatus, DeviceStatusDetailCode, RoomName, DeviceType, DeviceSerialNumber, UnassociatedOnly, ConnectionStatus (ONLINE and OFFLINE), NetworkProfileName, NetworkProfileArn, Feature, and FailureCode.</p>"
+        },
+        "SortCriteria":{
+          "shape":"SortList",
+          "documentation":"<p>The sort order to use in listing the specified set of devices. Supported sort keys are DeviceName, DeviceStatus, RoomName, DeviceType, DeviceSerialNumber, ConnectionStatus, NetworkProfileName, NetworkProfileArn, Feature, and FailureCode.</p>"
+        }
+      }
+    },
+    "SearchDevicesResponse":{
+      "type":"structure",
+      "members":{
+        "Devices":{
+          "shape":"DeviceDataList",
+          "documentation":"<p>The devices that meet the specified set of filter criteria, in sort order.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The token returned to indicate that there is more data available.</p>"
+        },
+        "TotalCount":{
+          "shape":"TotalCount",
+          "documentation":"<p>The total number of devices returned.</p>"
+        }
+      }
+    },
+    "SearchNetworkProfilesRequest":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token, up to the value specified by MaxResults. </p>"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of results to include in the response. If more results exist than the specified MaxResults value, a token is included in the response so that the remaining results can be retrieved. </p>"
+        },
+        "Filters":{
+          "shape":"FilterList",
+          "documentation":"<p>The filters to use to list a specified set of network profiles. Valid filters are NetworkProfileName, Ssid, and SecurityType.</p>"
+        },
+        "SortCriteria":{
+          "shape":"SortList",
+          "documentation":"<p>The sort order to use to list the specified set of network profiles. Valid sort criteria includes NetworkProfileName, Ssid, and SecurityType.</p>"
+        }
+      }
+    },
+    "SearchNetworkProfilesResponse":{
+      "type":"structure",
+      "members":{
+        "NetworkProfiles":{
+          "shape":"NetworkProfileDataList",
+          "documentation":"<p>The network profiles that meet the specified set of filter criteria, in sort order. It is a list of NetworkProfileData objects. </p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token, up to the value specified by MaxResults.</p>"
+        },
+        "TotalCount":{
+          "shape":"TotalCount",
+          "documentation":"<p>The total number of network profiles returned.</p>"
+        }
+      }
+    },
+    "SearchProfilesRequest":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token, up to the value specified by <code>MaxResults</code>.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of results to include in the response. If more results exist than the specified <code>MaxResults</code> value, a token is included in the response so that the remaining results can be retrieved.</p>"
+        },
+        "Filters":{
+          "shape":"FilterList",
+          "documentation":"<p>The filters to use to list a specified set of room profiles. Supported filter keys are ProfileName and Address. Required. </p>"
+        },
+        "SortCriteria":{
+          "shape":"SortList",
+          "documentation":"<p>The sort order to use in listing the specified set of room profiles. Supported sort keys are ProfileName and Address.</p>"
+        }
+      }
+    },
+    "SearchProfilesResponse":{
+      "type":"structure",
+      "members":{
+        "Profiles":{
+          "shape":"ProfileDataList",
+          "documentation":"<p>The profiles that meet the specified set of filter criteria, in sort order.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The token returned to indicate that there is more data available.</p>"
+        },
+        "TotalCount":{
+          "shape":"TotalCount",
+          "documentation":"<p>The total number of room profiles returned.</p>"
+        }
+      }
+    },
+    "SearchRoomsRequest":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token, up to the value specified by <code>MaxResults</code>.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of results to include in the response. If more results exist than the specified <code>MaxResults</code> value, a token is included in the response so that the remaining results can be retrieved. </p>"
+        },
+        "Filters":{
+          "shape":"FilterList",
+          "documentation":"<p>The filters to use to list a specified set of rooms. The supported filter keys are RoomName and ProfileName.</p>"
+        },
+        "SortCriteria":{
+          "shape":"SortList",
+          "documentation":"<p>The sort order to use in listing the specified set of rooms. The supported sort keys are RoomName and ProfileName.</p>"
+        }
+      }
+    },
+    "SearchRoomsResponse":{
+      "type":"structure",
+      "members":{
+        "Rooms":{
+          "shape":"RoomDataList",
+          "documentation":"<p>The rooms that meet the specified set of filter criteria, in sort order.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The token returned to indicate that there is more data available.</p>"
+        },
+        "TotalCount":{
+          "shape":"TotalCount",
+          "documentation":"<p>The total number of rooms returned.</p>"
+        }
+      }
+    },
+    "SearchSkillGroupsRequest":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token, up to the value specified by <code>MaxResults</code>. Required.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of results to include in the response. If more results exist than the specified <code>MaxResults</code> value, a token is included in the response so that the remaining results can be retrieved. </p>"
+        },
+        "Filters":{
+          "shape":"FilterList",
+          "documentation":"<p>The filters to use to list a specified set of skill groups. The supported filter key is SkillGroupName. </p>"
+        },
+        "SortCriteria":{
+          "shape":"SortList",
+          "documentation":"<p>The sort order to use in listing the specified set of skill groups. The supported sort key is SkillGroupName. </p>"
+        }
+      }
+    },
+    "SearchSkillGroupsResponse":{
+      "type":"structure",
+      "members":{
+        "SkillGroups":{
+          "shape":"SkillGroupDataList",
+          "documentation":"<p>The skill groups that meet the filter criteria, in sort order.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The token returned to indicate that there is more data available.</p>"
+        },
+        "TotalCount":{
+          "shape":"TotalCount",
+          "documentation":"<p>The total number of skill groups returned.</p>"
+        }
+      }
+    },
+    "SearchUsersRequest":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>An optional token returned from a prior request. Use this token for pagination of results from this action. If this parameter is specified, the response includes only results beyond the token, up to the value specified by <code>MaxResults</code>. Required.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of results to include in the response. If more results exist than the specified <code>MaxResults</code> value, a token is included in the response so that the remaining results can be retrieved. Required.</p>"
+        },
+        "Filters":{
+          "shape":"FilterList",
+          "documentation":"<p>The filters to use for listing a specific set of users. Required. Supported filter keys are UserId, FirstName, LastName, Email, and EnrollmentStatus.</p>"
+        },
+        "SortCriteria":{
+          "shape":"SortList",
+          "documentation":"<p>The sort order to use in listing the filtered set of users. Required. Supported sort keys are UserId, FirstName, LastName, Email, and EnrollmentStatus.</p>"
+        }
+      }
+    },
+    "SearchUsersResponse":{
+      "type":"structure",
+      "members":{
+        "Users":{
+          "shape":"UserDataList",
+          "documentation":"<p>The users that meet the specified set of filter criteria, in sort order.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The token returned to indicate that there is more data available.</p>"
+        },
+        "TotalCount":{
+          "shape":"TotalCount",
+          "documentation":"<p>The total number of users returned.</p>"
+        }
+      }
+    },
+    "SendAnnouncementRequest":{
+      "type":"structure",
+      "required":[
+        "RoomFilters",
+        "Content",
+        "ClientRequestToken"
+      ],
+      "members":{
+        "RoomFilters":{
+          "shape":"FilterList",
+          "documentation":"<p>The filters to use to send an announcement to a specified list of rooms. The supported filter keys are RoomName, ProfileName, RoomArn, and ProfileArn. To send to all rooms, specify an empty RoomFilters list.</p>"
+        },
+        "Content":{
+          "shape":"Content",
+          "documentation":"<p>The announcement content. This can contain only one of the three possible announcement types (text, SSML or audio).</p>"
+        },
+        "TimeToLiveInSeconds":{
+          "shape":"TimeToLiveInSeconds",
+          "documentation":"<p>The time to live for an announcement. Default is 300. If delivery doesn't occur within this time, the announcement is not delivered.</p>"
+        },
+        "ClientRequestToken":{
+          "shape":"ClientRequestToken",
+          "documentation":"<p>The unique, user-specified identifier for the request that ensures idempotency.</p>",
+          "idempotencyToken":true
+        }
+      }
+    },
+    "SendAnnouncementResponse":{
+      "type":"structure",
+      "members":{
+        "AnnouncementArn":{
+          "shape":"Arn",
+          "documentation":"<p>The identifier of the announcement.</p>"
+        }
+      }
+    },
+    "SendInvitationRequest":{
+      "type":"structure",
+      "members":{
+        "UserArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the user to whom to send an invitation. Required.</p>"
+        }
+      }
+    },
+    "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",
+          "documentation":"<p>The URI for the SIP address.</p>"
+        },
+        "Type":{
+          "shape":"SipType",
+          "documentation":"<p>The type of the SIP address.</p>"
+        }
+      },
+      "documentation":"<p>The SIP address for the contact containing the URI and SIP address type.</p>"
+    },
+    "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",
+          "documentation":"<p>The description of the product.</p>"
+        },
+        "InvocationPhrase":{
+          "shape":"InvocationPhrase",
+          "documentation":"<p>The phrase used to trigger the skill.</p>"
+        },
+        "ReleaseDate":{
+          "shape":"ReleaseDate",
+          "documentation":"<p>The date when the skill was released.</p>"
+        },
+        "EndUserLicenseAgreement":{
+          "shape":"EndUserLicenseAgreement",
+          "documentation":"<p>The URL of the end user license agreement.</p>"
+        },
+        "GenericKeywords":{
+          "shape":"GenericKeywords",
+          "documentation":"<p>The generic keywords associated with the skill that can be used to find a skill.</p>"
+        },
+        "BulletPoints":{
+          "shape":"BulletPoints",
+          "documentation":"<p>The details about what the skill supports organized as bullet points.</p>"
+        },
+        "NewInThisVersionBulletPoints":{
+          "shape":"NewInThisVersionBulletPoints",
+          "documentation":"<p>The updates added in bullet points.</p>"
+        },
+        "SkillTypes":{
+          "shape":"SkillTypes",
+          "documentation":"<p>The types of skills.</p>"
+        },
+        "Reviews":{
+          "shape":"Reviews",
+          "documentation":"<p> <i>This member has been deprecated.</i> </p> <p>The list of reviews for the skill, including Key and Value pair.</p>"
+        },
+        "DeveloperInfo":{
+          "shape":"DeveloperInfo",
+          "documentation":"<p>The details about the developer that published the skill.</p>"
+        }
+      },
+      "documentation":"<p>Granular information about the skill.</p>"
+    },
+    "SkillGroup":{
+      "type":"structure",
+      "members":{
+        "SkillGroupArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of a skill group.</p>"
+        },
+        "SkillGroupName":{
+          "shape":"SkillGroupName",
+          "documentation":"<p>The name of a skill group.</p>"
+        },
+        "Description":{
+          "shape":"SkillGroupDescription",
+          "documentation":"<p>The description of a skill group.</p>"
+        }
+      },
+      "documentation":"<p>A skill group with attributes.</p>"
+    },
+    "SkillGroupData":{
+      "type":"structure",
+      "members":{
+        "SkillGroupArn":{
+          "shape":"Arn",
+          "documentation":"<p>The skill group ARN of a skill group.</p>"
+        },
+        "SkillGroupName":{
+          "shape":"SkillGroupName",
+          "documentation":"<p>The skill group name of a skill group.</p>"
+        },
+        "Description":{
+          "shape":"SkillGroupDescription",
+          "documentation":"<p>The description of a skill group.</p>"
+        }
+      },
+      "documentation":"<p>The attributes of a skill group.</p>"
+    },
+    "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"}
+      },
+      "documentation":"<p>The skill must be linked to a third-party account.</p>",
+      "exception":true
+    },
+    "SkillStoreType":{"type":"string"},
+    "SkillSummary":{
+      "type":"structure",
+      "members":{
+        "SkillId":{
+          "shape":"SkillId",
+          "documentation":"<p>The ARN of the skill summary.</p>"
+        },
+        "SkillName":{
+          "shape":"SkillName",
+          "documentation":"<p>The name of the skill.</p>"
+        },
+        "SupportsLinking":{
+          "shape":"boolean",
+          "documentation":"<p>Linking support for a skill.</p>"
+        },
+        "EnablementType":{
+          "shape":"EnablementType",
+          "documentation":"<p>Whether the skill is enabled under the user's account, or if it requires linking to be used.</p>"
+        },
+        "SkillType":{
+          "shape":"SkillType",
+          "documentation":"<p>Whether the skill is publicly available or is a private skill.</p>"
+        }
+      },
+      "documentation":"<p>The summary of skills.</p>"
+    },
+    "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",
+          "documentation":"<p>The ARN of the skill.</p>"
+        },
+        "SkillName":{
+          "shape":"SkillName",
+          "documentation":"<p>The name of the skill.</p>"
+        },
+        "ShortDescription":{
+          "shape":"ShortDescription",
+          "documentation":"<p>Short description about the skill.</p>"
+        },
+        "IconUrl":{
+          "shape":"IconUrl",
+          "documentation":"<p>The URL where the skill icon resides.</p>"
+        },
+        "SampleUtterances":{
+          "shape":"SampleUtterances",
+          "documentation":"<p>Sample utterances that interact with the skill.</p>"
+        },
+        "SkillDetails":{
+          "shape":"SkillDetails",
+          "documentation":"<p>Information about the skill.</p>"
+        },
+        "SupportsLinking":{
+          "shape":"boolean",
+          "documentation":"<p>Linking support for a skill.</p>"
+        }
+      },
+      "documentation":"<p>The detailed information about an Alexa skill.</p>"
+    },
+    "SkillsStoreSkillList":{
+      "type":"list",
+      "member":{"shape":"SkillsStoreSkill"}
+    },
+    "SmartHomeAppliance":{
+      "type":"structure",
+      "members":{
+        "FriendlyName":{
+          "shape":"ApplianceFriendlyName",
+          "documentation":"<p>The friendly name of the smart home appliance.</p>"
+        },
+        "Description":{
+          "shape":"ApplianceDescription",
+          "documentation":"<p>The description of the smart home appliance.</p>"
+        },
+        "ManufacturerName":{
+          "shape":"ApplianceManufacturerName",
+          "documentation":"<p>The name of the manufacturer of the smart home appliance.</p>"
+        }
+      },
+      "documentation":"<p>A smart home appliance that can connect to a central system. Any domestic device can be a smart appliance. </p>"
+    },
+    "SmartHomeApplianceList":{
+      "type":"list",
+      "member":{"shape":"SmartHomeAppliance"}
+    },
+    "SoftwareVersion":{"type":"string"},
+    "Sort":{
+      "type":"structure",
+      "required":[
+        "Key",
+        "Value"
+      ],
+      "members":{
+        "Key":{
+          "shape":"SortKey",
+          "documentation":"<p>The sort key of a sort object.</p>"
+        },
+        "Value":{
+          "shape":"SortValue",
+          "documentation":"<p>The sort value of a sort object.</p>"
+        }
+      },
+      "documentation":"<p>An object representing a sort criteria. </p>"
+    },
+    "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",
+          "documentation":"<p>The locale of the SSML message. Currently, en-US is supported.</p>"
+        },
+        "Value":{
+          "shape":"SsmlValue",
+          "documentation":"<p>The value of the SSML message in the correct SSML format. The audio tag is not supported.</p>"
+        }
+      },
+      "documentation":"<p>The SSML message. For more information, see <a href=\"https://developer.amazon.com/docs/custom-skills/speech-synthesis-markup-language-ssml-reference.html\">SSML Reference</a>.</p>"
+    },
+    "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",
+          "documentation":"<p>The ARN of the room with which the device to sync is associated. Required.</p>"
+        },
+        "DeviceArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the device to sync. Required.</p>"
+        },
+        "Features":{
+          "shape":"Features",
+          "documentation":"<p>Request structure to start the device sync. Required.</p>"
+        }
+      }
+    },
+    "StartDeviceSyncResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "StartSmartHomeApplianceDiscoveryRequest":{
+      "type":"structure",
+      "required":["RoomArn"],
+      "members":{
+        "RoomArn":{
+          "shape":"Arn",
+          "documentation":"<p>The room where smart home appliance discovery was initiated.</p>"
+        }
+      }
+    },
+    "StartSmartHomeApplianceDiscoveryResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "Tag":{
+      "type":"structure",
+      "required":[
+        "Key",
+        "Value"
+      ],
+      "members":{
+        "Key":{
+          "shape":"TagKey",
+          "documentation":"<p>The key of a tag. Tag keys are case-sensitive. </p>"
+        },
+        "Value":{
+          "shape":"TagValue",
+          "documentation":"<p>The value of a tag. Tag values are case sensitive and can be null.</p>"
+        }
+      },
+      "documentation":"<p>A key-value pair that can be associated with a resource. </p>"
+    },
+    "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",
+          "documentation":"<p>The ARN of the resource to which to add metadata tags. Required. </p>"
+        },
+        "Tags":{
+          "shape":"TagList",
+          "documentation":"<p>The tags to be added to the specified resource. Do not provide system tags. Required. </p>"
+        }
+      }
+    },
+    "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",
+          "documentation":"<p>The locale of the text message. Currently, en-US is supported.</p>"
+        },
+        "Value":{
+          "shape":"TextValue",
+          "documentation":"<p>The value of the text message.</p>"
+        }
+      },
+      "documentation":"<p>The text message.</p>"
+    },
+    "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"}
+      },
+      "documentation":"<p>The caller has no permissions to operate on the resource involved in the API call.</p>",
+      "exception":true
+    },
+    "UntagResourceRequest":{
+      "type":"structure",
+      "required":[
+        "Arn",
+        "TagKeys"
+      ],
+      "members":{
+        "Arn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the resource from which to remove metadata tags. Required. </p>"
+        },
+        "TagKeys":{
+          "shape":"TagKeyList",
+          "documentation":"<p>The tags to be removed from the specified resource. Do not provide system tags. Required. </p>"
+        }
+      }
+    },
+    "UntagResourceResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "UpdateAddressBookRequest":{
+      "type":"structure",
+      "required":["AddressBookArn"],
+      "members":{
+        "AddressBookArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the room to update.</p>"
+        },
+        "Name":{
+          "shape":"AddressBookName",
+          "documentation":"<p>The updated name of the room.</p>"
+        },
+        "Description":{
+          "shape":"AddressBookDescription",
+          "documentation":"<p>The updated description of the room.</p>"
+        }
+      }
+    },
+    "UpdateAddressBookResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "UpdateBusinessReportScheduleRequest":{
+      "type":"structure",
+      "required":["ScheduleArn"],
+      "members":{
+        "ScheduleArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the business report schedule.</p>"
+        },
+        "S3BucketName":{
+          "shape":"CustomerS3BucketName",
+          "documentation":"<p>The S3 location of the output reports.</p>"
+        },
+        "S3KeyPrefix":{
+          "shape":"S3KeyPrefix",
+          "documentation":"<p>The S3 key where the report is delivered.</p>"
+        },
+        "Format":{
+          "shape":"BusinessReportFormat",
+          "documentation":"<p>The format of the generated report (individual CSV files or zipped files of individual files).</p>"
+        },
+        "ScheduleName":{
+          "shape":"BusinessReportScheduleName",
+          "documentation":"<p>The name identifier of the schedule.</p>"
+        },
+        "Recurrence":{
+          "shape":"BusinessReportRecurrence",
+          "documentation":"<p>The recurrence of the reports.</p>"
+        }
+      }
+    },
+    "UpdateBusinessReportScheduleResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "UpdateConferenceProviderRequest":{
+      "type":"structure",
+      "required":[
+        "ConferenceProviderArn",
+        "ConferenceProviderType",
+        "MeetingSetting"
+      ],
+      "members":{
+        "ConferenceProviderArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the conference provider.</p>"
+        },
+        "ConferenceProviderType":{
+          "shape":"ConferenceProviderType",
+          "documentation":"<p>The type of the conference provider.</p>"
+        },
+        "IPDialIn":{
+          "shape":"IPDialIn",
+          "documentation":"<p>The IP endpoint and protocol for calling.</p>"
+        },
+        "PSTNDialIn":{
+          "shape":"PSTNDialIn",
+          "documentation":"<p>The information for PSTN conferencing.</p>"
+        },
+        "MeetingSetting":{
+          "shape":"MeetingSetting",
+          "documentation":"<p>The meeting settings for the conference provider.</p>"
+        }
+      }
+    },
+    "UpdateConferenceProviderResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "UpdateContactRequest":{
+      "type":"structure",
+      "required":["ContactArn"],
+      "members":{
+        "ContactArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the contact to update.</p>"
+        },
+        "DisplayName":{
+          "shape":"ContactName",
+          "documentation":"<p>The updated display name of the contact.</p>"
+        },
+        "FirstName":{
+          "shape":"ContactName",
+          "documentation":"<p>The updated first name of the contact.</p>"
+        },
+        "LastName":{
+          "shape":"ContactName",
+          "documentation":"<p>The updated last name of the contact.</p>"
+        },
+        "PhoneNumber":{
+          "shape":"RawPhoneNumber",
+          "documentation":"<p>The updated phone number of the contact. The phone number type defaults to WORK. You can either specify PhoneNumber or PhoneNumbers. We recommend that you use PhoneNumbers, which lets you specify the phone number type and multiple numbers.</p>"
+        },
+        "PhoneNumbers":{
+          "shape":"PhoneNumberList",
+          "documentation":"<p>The list of phone numbers for the contact.</p>"
+        },
+        "SipAddresses":{
+          "shape":"SipAddressList",
+          "documentation":"<p>The list of SIP addresses for the contact.</p>"
+        }
+      }
+    },
+    "UpdateContactResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "UpdateDeviceRequest":{
+      "type":"structure",
+      "members":{
+        "DeviceArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the device to update. Required.</p>"
+        },
+        "DeviceName":{
+          "shape":"DeviceName",
+          "documentation":"<p>The updated device name. Required.</p>"
+        }
+      }
+    },
+    "UpdateDeviceResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "UpdateEndOfMeetingReminder":{
+      "type":"structure",
+      "members":{
+        "ReminderAtMinutes":{
+          "shape":"EndOfMeetingReminderMinutesList",
+          "documentation":"<p>Updates settings for the end of meeting reminder feature that are applied to a room profile. The end of meeting reminder enables Alexa to remind users when a meeting is ending. </p>"
+        },
+        "ReminderType":{
+          "shape":"EndOfMeetingReminderType",
+          "documentation":"<p>The type of sound that users hear during the end of meeting reminder. </p>"
+        },
+        "Enabled":{
+          "shape":"Boolean",
+          "documentation":"<p>Whether an end of meeting reminder is enabled or not.</p>"
+        }
+      },
+      "documentation":"<p>Settings for the end of meeting reminder feature that are applied to a room profile. The end of meeting reminder enables Alexa to remind users when a meeting is ending. </p>"
+    },
+    "UpdateGatewayGroupRequest":{
+      "type":"structure",
+      "required":["GatewayGroupArn"],
+      "members":{
+        "GatewayGroupArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the gateway group to update.</p>"
+        },
+        "Name":{
+          "shape":"GatewayGroupName",
+          "documentation":"<p>The updated name of the gateway group.</p>"
+        },
+        "Description":{
+          "shape":"GatewayGroupDescription",
+          "documentation":"<p>The updated description of the gateway group.</p>"
+        }
+      }
+    },
+    "UpdateGatewayGroupResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "UpdateGatewayRequest":{
+      "type":"structure",
+      "required":["GatewayArn"],
+      "members":{
+        "GatewayArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the gateway to update.</p>"
+        },
+        "Name":{
+          "shape":"GatewayName",
+          "documentation":"<p>The updated name of the gateway.</p>"
+        },
+        "Description":{
+          "shape":"GatewayDescription",
+          "documentation":"<p>The updated description of the gateway.</p>"
+        },
+        "SoftwareVersion":{
+          "shape":"GatewayVersion",
+          "documentation":"<p>The updated software version of the gateway. The gateway automatically updates its software version during normal operation.</p>"
+        }
+      }
+    },
+    "UpdateGatewayResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "UpdateInstantBooking":{
+      "type":"structure",
+      "members":{
+        "DurationInMinutes":{
+          "shape":"Minutes",
+          "documentation":"<p>Duration between 15 and 240 minutes at increments of 15 that determines how long to book an available room when a meeting is started with Alexa.</p>"
+        },
+        "Enabled":{
+          "shape":"Boolean",
+          "documentation":"<p>Whether instant booking is enabled or not.</p>"
+        }
+      },
+      "documentation":"<p>Updates settings for the instant booking feature that are applied to a room profile. If instant booking is enabled, Alexa automatically reserves a room if it is free when a user joins a meeting with Alexa.</p>"
+    },
+    "UpdateMeetingRoomConfiguration":{
+      "type":"structure",
+      "members":{
+        "RoomUtilizationMetricsEnabled":{
+          "shape":"Boolean",
+          "documentation":"<p>Whether room utilization metrics are enabled or not.</p>"
+        },
+        "EndOfMeetingReminder":{
+          "shape":"UpdateEndOfMeetingReminder",
+          "documentation":"<p>Settings for the end of meeting reminder feature that are applied to a room profile. The end of meeting reminder enables Alexa to remind users when a meeting is ending. </p>"
+        },
+        "InstantBooking":{
+          "shape":"UpdateInstantBooking",
+          "documentation":"<p>Settings to automatically book an available room available for a configured duration when joining a meeting with Alexa.</p>"
+        },
+        "RequireCheckIn":{
+          "shape":"UpdateRequireCheckIn",
+          "documentation":"<p>Settings for requiring a check in when a room is reserved. Alexa can cancel a room reservation if it's not checked into to make the room available for others. Users can check in by joining the meeting with Alexa or an AVS device, or by saying “Alexa, check in.” </p>"
+        }
+      },
+      "documentation":"<p>Updates meeting room settings of a room profile.</p>"
+    },
+    "UpdateNetworkProfileRequest":{
+      "type":"structure",
+      "required":["NetworkProfileArn"],
+      "members":{
+        "NetworkProfileArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the network profile associated with a device.</p>"
+        },
+        "NetworkProfileName":{
+          "shape":"NetworkProfileName",
+          "documentation":"<p>The name of the network profile associated with a device.</p>"
+        },
+        "Description":{
+          "shape":"NetworkProfileDescription",
+          "documentation":"<p>Detailed information about a device's network profile.</p>"
+        },
+        "CurrentPassword":{
+          "shape":"CurrentWiFiPassword",
+          "documentation":"<p>The current password of the Wi-Fi network.</p>"
+        },
+        "NextPassword":{
+          "shape":"NextWiFiPassword",
+          "documentation":"<p>The next, or subsequent, password of the Wi-Fi network. This password is asynchronously transmitted to the device and is used when the password of the network changes to NextPassword. </p>"
+        },
+        "CertificateAuthorityArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the Private Certificate Authority (PCA) created in AWS Certificate Manager (ACM). This is used to issue certificates to the devices. </p>"
+        },
+        "TrustAnchors":{
+          "shape":"TrustAnchorList",
+          "documentation":"<p>The root certificate(s) of your authentication server that will be installed on your devices and used to trust your authentication server during EAP negotiation. </p>"
+        }
+      }
+    },
+    "UpdateNetworkProfileResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "UpdateProfileRequest":{
+      "type":"structure",
+      "members":{
+        "ProfileArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the room profile to update. Required.</p>"
+        },
+        "ProfileName":{
+          "shape":"ProfileName",
+          "documentation":"<p>The updated name for the room profile.</p>"
+        },
+        "IsDefault":{
+          "shape":"Boolean",
+          "documentation":"<p>Sets the profile as default if selected. If this is missing, no update is done to the default status.</p>"
+        },
+        "Timezone":{
+          "shape":"Timezone",
+          "documentation":"<p>The updated timezone for the room profile.</p>"
+        },
+        "Address":{
+          "shape":"Address",
+          "documentation":"<p>The updated address for the room profile.</p>"
+        },
+        "DistanceUnit":{
+          "shape":"DistanceUnit",
+          "documentation":"<p>The updated distance unit for the room profile.</p>"
+        },
+        "TemperatureUnit":{
+          "shape":"TemperatureUnit",
+          "documentation":"<p>The updated temperature unit for the room profile.</p>"
+        },
+        "WakeWord":{
+          "shape":"WakeWord",
+          "documentation":"<p>The updated wake word for the room profile.</p>"
+        },
+        "Locale":{
+          "shape":"DeviceLocale",
+          "documentation":"<p>The updated locale for the room profile. (This is currently only available to a limited preview audience.)</p>"
+        },
+        "SetupModeDisabled":{
+          "shape":"Boolean",
+          "documentation":"<p>Whether the setup mode of the profile is enabled.</p>"
+        },
+        "MaxVolumeLimit":{
+          "shape":"MaxVolumeLimit",
+          "documentation":"<p>The updated maximum volume limit for the room profile.</p>"
+        },
+        "PSTNEnabled":{
+          "shape":"Boolean",
+          "documentation":"<p>Whether the PSTN setting of the room profile is enabled.</p>"
+        },
+        "DataRetentionOptIn":{
+          "shape":"Boolean",
+          "documentation":"<p>Whether data retention of the profile is enabled.</p>"
+        },
+        "MeetingRoomConfiguration":{
+          "shape":"UpdateMeetingRoomConfiguration",
+          "documentation":"<p>The updated meeting room settings of a room profile.</p>"
+        }
+      }
+    },
+    "UpdateProfileResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "UpdateRequireCheckIn":{
+      "type":"structure",
+      "members":{
+        "ReleaseAfterMinutes":{
+          "shape":"Minutes",
+          "documentation":"<p>Duration between 5 and 20 minutes to determine when to release the room if it's not checked into. </p>"
+        },
+        "Enabled":{
+          "shape":"Boolean",
+          "documentation":"<p>Whether require check in is enabled or not.</p>"
+        }
+      },
+      "documentation":"<p>Updates settings for the require check in feature that are applied to a room profile. Require check in allows a meeting room’s Alexa or AVS device to prompt the user to check in; otherwise, the room will be released. </p>"
+    },
+    "UpdateRoomRequest":{
+      "type":"structure",
+      "members":{
+        "RoomArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the room to update. </p>"
+        },
+        "RoomName":{
+          "shape":"RoomName",
+          "documentation":"<p>The updated name for the room.</p>"
+        },
+        "Description":{
+          "shape":"RoomDescription",
+          "documentation":"<p>The updated description for the room.</p>"
+        },
+        "ProviderCalendarId":{
+          "shape":"ProviderCalendarId",
+          "documentation":"<p>The updated provider calendar ARN for the room.</p>"
+        },
+        "ProfileArn":{
+          "shape":"Arn",
+          "documentation":"<p>The updated profile ARN for the room.</p>"
+        }
+      }
+    },
+    "UpdateRoomResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "UpdateSkillGroupRequest":{
+      "type":"structure",
+      "members":{
+        "SkillGroupArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the skill group to update. </p>"
+        },
+        "SkillGroupName":{
+          "shape":"SkillGroupName",
+          "documentation":"<p>The updated name for the skill group.</p>"
+        },
+        "Description":{
+          "shape":"SkillGroupDescription",
+          "documentation":"<p>The updated description for the skill group.</p>"
+        }
+      }
+    },
+    "UpdateSkillGroupResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "Url":{"type":"string"},
+    "UserCode":{
+      "type":"string",
+      "max":128,
+      "min":1
+    },
+    "UserData":{
+      "type":"structure",
+      "members":{
+        "UserArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of a user.</p>"
+        },
+        "FirstName":{
+          "shape":"user_FirstName",
+          "documentation":"<p>The first name of a user.</p>"
+        },
+        "LastName":{
+          "shape":"user_LastName",
+          "documentation":"<p>The last name of a user.</p>"
+        },
+        "Email":{
+          "shape":"Email",
+          "documentation":"<p>The email of a user.</p>"
+        },
+        "EnrollmentStatus":{
+          "shape":"EnrollmentStatus",
+          "documentation":"<p>The enrollment status of a user.</p>"
+        },
+        "EnrollmentId":{
+          "shape":"EnrollmentId",
+          "documentation":"<p>The enrollment ARN of a user.</p>"
+        }
+      },
+      "documentation":"<p>Information related to a user.</p>"
+    },
+    "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@_+.-]*"
+    }
+  },
+  "documentation":"<p>Alexa for Business helps you use Alexa in your organization. Alexa for Business provides you with the tools to manage Alexa devices, enroll your users, and assign skills, at scale. You can build your own context-aware voice skills using the Alexa Skills Kit and the Alexa for Business API operations. You can also make these available as private skills for your organization. Alexa for Business makes it efficient to voice-enable your products and services, thus providing context-aware voice experiences for your customers. Device makers building with the Alexa Voice Service (AVS) can create fully integrated solutions, register their products with Alexa for Business, and manage them as shared devices in their organization. </p>"
+}

+ 10 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/amp/2020-08-01/paginators-1.json

@@ -0,0 +1,10 @@
+{
+  "pagination": {
+    "ListWorkspaces": {
+      "input_token": "nextToken",
+      "output_token": "nextToken",
+      "limit_key": "maxResults",
+      "result_key": "workspaces"
+    }
+  }
+}

+ 617 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/amp/2020-08-01/service-2.json

@@ -0,0 +1,617 @@
+{
+  "version":"2.0",
+  "metadata":{
+    "apiVersion":"2020-08-01",
+    "endpointPrefix":"aps",
+    "jsonVersion":"1.1",
+    "protocol":"rest-json",
+    "serviceFullName":"Amazon Prometheus Service",
+    "serviceId":"amp",
+    "signatureVersion":"v4",
+    "signingName":"aps",
+    "uid":"amp-2020-08-01"
+  },
+  "operations":{
+    "CreateWorkspace":{
+      "name":"CreateWorkspace",
+      "http":{
+        "method":"POST",
+        "requestUri":"/workspaces",
+        "responseCode":202
+      },
+      "input":{"shape":"CreateWorkspaceRequest"},
+      "output":{"shape":"CreateWorkspaceResponse"},
+      "errors":[
+        {"shape":"ThrottlingException"},
+        {"shape":"ConflictException"},
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"},
+        {"shape":"ServiceQuotaExceededException"}
+      ],
+      "documentation":"<p>Creates a new AMP workspace.</p>",
+      "idempotent":true
+    },
+    "DeleteWorkspace":{
+      "name":"DeleteWorkspace",
+      "http":{
+        "method":"DELETE",
+        "requestUri":"/workspaces/{workspaceId}",
+        "responseCode":202
+      },
+      "input":{"shape":"DeleteWorkspaceRequest"},
+      "errors":[
+        {"shape":"ThrottlingException"},
+        {"shape":"ValidationException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p>Deletes an AMP workspace.</p>",
+      "idempotent":true
+    },
+    "DescribeWorkspace":{
+      "name":"DescribeWorkspace",
+      "http":{
+        "method":"GET",
+        "requestUri":"/workspaces/{workspaceId}",
+        "responseCode":200
+      },
+      "input":{"shape":"DescribeWorkspaceRequest"},
+      "output":{"shape":"DescribeWorkspaceResponse"},
+      "errors":[
+        {"shape":"ThrottlingException"},
+        {"shape":"ValidationException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p>Describes an existing AMP workspace.</p>"
+    },
+    "ListWorkspaces":{
+      "name":"ListWorkspaces",
+      "http":{
+        "method":"GET",
+        "requestUri":"/workspaces",
+        "responseCode":200
+      },
+      "input":{"shape":"ListWorkspacesRequest"},
+      "output":{"shape":"ListWorkspacesResponse"},
+      "errors":[
+        {"shape":"ThrottlingException"},
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p>Lists all AMP workspaces, including workspaces being created or deleted.</p>"
+    },
+    "UpdateWorkspaceAlias":{
+      "name":"UpdateWorkspaceAlias",
+      "http":{
+        "method":"POST",
+        "requestUri":"/workspaces/{workspaceId}/alias",
+        "responseCode":204
+      },
+      "input":{"shape":"UpdateWorkspaceAliasRequest"},
+      "errors":[
+        {"shape":"ThrottlingException"},
+        {"shape":"ConflictException"},
+        {"shape":"ValidationException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"},
+        {"shape":"ServiceQuotaExceededException"}
+      ],
+      "documentation":"<p>Updates an AMP workspace alias.</p>",
+      "idempotent":true
+    }
+  },
+  "shapes":{
+    "AccessDeniedException":{
+      "type":"structure",
+      "required":["message"],
+      "members":{
+        "message":{
+          "shape":"String",
+          "documentation":"<p>Description of the error.</p>"
+        }
+      },
+      "documentation":"<p>User does not have sufficient access to perform this action.</p>",
+      "error":{
+        "httpStatusCode":403,
+        "senderFault":true
+      },
+      "exception":true
+    },
+    "ConflictException":{
+      "type":"structure",
+      "required":[
+        "message",
+        "resourceId",
+        "resourceType"
+      ],
+      "members":{
+        "message":{
+          "shape":"String",
+          "documentation":"<p>Description of the error.</p>"
+        },
+        "resourceId":{
+          "shape":"String",
+          "documentation":"<p>Identifier of the resource affected.</p>"
+        },
+        "resourceType":{
+          "shape":"String",
+          "documentation":"<p>Type of the resource affected.</p>"
+        }
+      },
+      "documentation":"<p>Updating or deleting a resource can cause an inconsistent state.</p>",
+      "error":{
+        "httpStatusCode":409,
+        "senderFault":true
+      },
+      "exception":true
+    },
+    "CreateWorkspaceRequest":{
+      "type":"structure",
+      "members":{
+        "alias":{
+          "shape":"WorkspaceAlias",
+          "documentation":"<p>An optional user-assigned alias for this workspace. This alias is for user reference and does not need to be unique.</p>"
+        },
+        "clientToken":{
+          "shape":"IdempotencyToken",
+          "documentation":"<p>Optional, unique, case-sensitive, user-provided identifier to ensure the idempotency of the request.</p>",
+          "idempotencyToken":true
+        }
+      },
+      "documentation":"<p>Represents the input of a CreateWorkspace operation.</p>"
+    },
+    "CreateWorkspaceResponse":{
+      "type":"structure",
+      "required":[
+        "arn",
+        "status",
+        "workspaceId"
+      ],
+      "members":{
+        "arn":{
+          "shape":"WorkspaceArn",
+          "documentation":"<p>The ARN of the workspace that was just created.</p>"
+        },
+        "status":{
+          "shape":"WorkspaceStatus",
+          "documentation":"<p>The status of the workspace that was just created (usually CREATING).</p>"
+        },
+        "workspaceId":{
+          "shape":"WorkspaceId",
+          "documentation":"<p>The generated ID of the workspace that was just created.</p>"
+        }
+      },
+      "documentation":"<p>Represents the output of a CreateWorkspace operation.</p>"
+    },
+    "DeleteWorkspaceRequest":{
+      "type":"structure",
+      "required":["workspaceId"],
+      "members":{
+        "clientToken":{
+          "shape":"IdempotencyToken",
+          "documentation":"<p>Optional, unique, case-sensitive, user-provided identifier to ensure the idempotency of the request.</p>",
+          "idempotencyToken":true,
+          "location":"querystring",
+          "locationName":"clientToken"
+        },
+        "workspaceId":{
+          "shape":"WorkspaceId",
+          "documentation":"<p>The ID of the workspace to delete.</p>",
+          "location":"uri",
+          "locationName":"workspaceId"
+        }
+      },
+      "documentation":"<p>Represents the input of a DeleteWorkspace operation.</p>"
+    },
+    "DescribeWorkspaceRequest":{
+      "type":"structure",
+      "required":["workspaceId"],
+      "members":{
+        "workspaceId":{
+          "shape":"WorkspaceId",
+          "documentation":"<p>The ID of the workspace to describe.</p>",
+          "location":"uri",
+          "locationName":"workspaceId"
+        }
+      },
+      "documentation":"<p>Represents the input of a DescribeWorkspace operation.</p>"
+    },
+    "DescribeWorkspaceResponse":{
+      "type":"structure",
+      "required":["workspace"],
+      "members":{
+        "workspace":{
+          "shape":"WorkspaceDescription",
+          "documentation":"<p>The properties of the selected workspace.</p>"
+        }
+      },
+      "documentation":"<p>Represents the output of a DescribeWorkspace operation.</p>"
+    },
+    "IdempotencyToken":{
+      "type":"string",
+      "documentation":"<p>An identifier used to ensure the idempotency of a write request.</p>",
+      "max":64,
+      "min":1,
+      "pattern":"[!-~]+"
+    },
+    "Integer":{
+      "type":"integer",
+      "box":true
+    },
+    "InternalServerException":{
+      "type":"structure",
+      "required":["message"],
+      "members":{
+        "message":{
+          "shape":"String",
+          "documentation":"<p>Description of the error.</p>"
+        },
+        "retryAfterSeconds":{
+          "shape":"Integer",
+          "documentation":"<p>Advice to clients on when the call can be safely retried.</p>",
+          "location":"header",
+          "locationName":"Retry-After"
+        }
+      },
+      "documentation":"<p>Unexpected error during processing of request.</p>",
+      "error":{"httpStatusCode":500},
+      "exception":true,
+      "fault":true,
+      "retryable":{"throttling":false}
+    },
+    "ListWorkspacesRequest":{
+      "type":"structure",
+      "members":{
+        "alias":{
+          "shape":"WorkspaceAlias",
+          "documentation":"<p>Optional filter for workspace alias. Only the workspaces with aliases that begin with this value will be returned.</p>",
+          "location":"querystring",
+          "locationName":"alias"
+        },
+        "maxResults":{
+          "shape":"ListWorkspacesRequestMaxResultsInteger",
+          "documentation":"<p>Maximum results to return in response (default=100, maximum=1000).</p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        },
+        "nextToken":{
+          "shape":"PaginationToken",
+          "documentation":"<p>Pagination token to request the next page in a paginated list. This token is obtained from the output of the previous ListWorkspaces request.</p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        }
+      },
+      "documentation":"<p>Represents the input of a ListWorkspaces operation.</p>"
+    },
+    "ListWorkspacesRequestMaxResultsInteger":{
+      "type":"integer",
+      "box":true,
+      "max":1000,
+      "min":1
+    },
+    "ListWorkspacesResponse":{
+      "type":"structure",
+      "required":["workspaces"],
+      "members":{
+        "nextToken":{
+          "shape":"PaginationToken",
+          "documentation":"<p>Pagination token to use when requesting the next page in this list.</p>"
+        },
+        "workspaces":{
+          "shape":"WorkspaceSummaryList",
+          "documentation":"<p>The list of existing workspaces, including those undergoing creation or deletion.</p>"
+        }
+      },
+      "documentation":"<p>Represents the output of a ListWorkspaces operation.</p>"
+    },
+    "PaginationToken":{
+      "type":"string",
+      "documentation":"<p>A token used to access the next page in a paginated result set.</p>"
+    },
+    "ResourceNotFoundException":{
+      "type":"structure",
+      "required":[
+        "message",
+        "resourceId",
+        "resourceType"
+      ],
+      "members":{
+        "message":{
+          "shape":"String",
+          "documentation":"<p>Description of the error.</p>"
+        },
+        "resourceId":{
+          "shape":"String",
+          "documentation":"<p>Identifier of the resource affected.</p>"
+        },
+        "resourceType":{
+          "shape":"String",
+          "documentation":"<p>Type of the resource affected.</p>"
+        }
+      },
+      "documentation":"<p>Request references a resource which does not exist.</p>",
+      "error":{
+        "httpStatusCode":404,
+        "senderFault":true
+      },
+      "exception":true
+    },
+    "ServiceQuotaExceededException":{
+      "type":"structure",
+      "required":[
+        "message",
+        "quotaCode",
+        "resourceId",
+        "resourceType",
+        "serviceCode"
+      ],
+      "members":{
+        "message":{
+          "shape":"String",
+          "documentation":"<p>Description of the error.</p>"
+        },
+        "quotaCode":{
+          "shape":"String",
+          "documentation":"<p>Service Quotas requirement to identify originating quota.</p>"
+        },
+        "resourceId":{
+          "shape":"String",
+          "documentation":"<p>Identifier of the resource affected.</p>"
+        },
+        "resourceType":{
+          "shape":"String",
+          "documentation":"<p>Type of the resource affected.</p>"
+        },
+        "serviceCode":{
+          "shape":"String",
+          "documentation":"<p>Service Quotas requirement to identify originating service.</p>"
+        }
+      },
+      "documentation":"<p>Request would cause a service quota to be exceeded.</p>",
+      "error":{
+        "httpStatusCode":402,
+        "senderFault":true
+      },
+      "exception":true
+    },
+    "String":{"type":"string"},
+    "ThrottlingException":{
+      "type":"structure",
+      "required":["message"],
+      "members":{
+        "message":{
+          "shape":"String",
+          "documentation":"<p>Description of the error.</p>"
+        },
+        "quotaCode":{
+          "shape":"String",
+          "documentation":"<p>Service Quotas requirement to identify originating quota.</p>"
+        },
+        "retryAfterSeconds":{
+          "shape":"Integer",
+          "documentation":"<p>Advice to clients on when the call can be safely retried.</p>",
+          "location":"header",
+          "locationName":"Retry-After"
+        },
+        "serviceCode":{
+          "shape":"String",
+          "documentation":"<p>Service Quotas requirement to identify originating service.</p>"
+        }
+      },
+      "documentation":"<p>Request was denied due to request throttling.</p>",
+      "error":{
+        "httpStatusCode":429,
+        "senderFault":true
+      },
+      "exception":true,
+      "retryable":{"throttling":false}
+    },
+    "Timestamp":{"type":"timestamp"},
+    "UpdateWorkspaceAliasRequest":{
+      "type":"structure",
+      "required":["workspaceId"],
+      "members":{
+        "alias":{
+          "shape":"WorkspaceAlias",
+          "documentation":"<p>The new alias of the workspace.</p>"
+        },
+        "clientToken":{
+          "shape":"IdempotencyToken",
+          "documentation":"<p>Optional, unique, case-sensitive, user-provided identifier to ensure the idempotency of the request.</p>",
+          "idempotencyToken":true
+        },
+        "workspaceId":{
+          "shape":"WorkspaceId",
+          "documentation":"<p>The ID of the workspace being updated.</p>",
+          "location":"uri",
+          "locationName":"workspaceId"
+        }
+      },
+      "documentation":"<p>Represents the input of an UpdateWorkspaceAlias operation.</p>"
+    },
+    "Uri":{
+      "type":"string",
+      "max":1024,
+      "min":1
+    },
+    "ValidationException":{
+      "type":"structure",
+      "required":[
+        "message",
+        "reason"
+      ],
+      "members":{
+        "fieldList":{
+          "shape":"ValidationExceptionFieldList",
+          "documentation":"<p>The field that caused the error, if applicable. If more than one field caused the error, pick one and elaborate in the message.</p>"
+        },
+        "message":{
+          "shape":"String",
+          "documentation":"<p>Description of the error.</p>"
+        },
+        "reason":{
+          "shape":"ValidationExceptionReason",
+          "documentation":"<p>Reason the request failed validation.</p>"
+        }
+      },
+      "documentation":"<p>The input fails to satisfy the constraints specified by an AWS service.</p>",
+      "error":{
+        "httpStatusCode":400,
+        "senderFault":true
+      },
+      "exception":true
+    },
+    "ValidationExceptionField":{
+      "type":"structure",
+      "required":[
+        "message",
+        "name"
+      ],
+      "members":{
+        "message":{
+          "shape":"String",
+          "documentation":"<p>Message describing why the field failed validation.</p>"
+        },
+        "name":{
+          "shape":"String",
+          "documentation":"<p>The field name.</p>"
+        }
+      },
+      "documentation":"<p>Stores information about a field passed inside a request that resulted in an exception.</p>"
+    },
+    "ValidationExceptionFieldList":{
+      "type":"list",
+      "member":{"shape":"ValidationExceptionField"},
+      "documentation":"<p>A list of fields.</p>"
+    },
+    "ValidationExceptionReason":{
+      "type":"string",
+      "documentation":"<p>Possible reasons a request failed validation.</p>",
+      "enum":[
+        "UNKNOWN_OPERATION",
+        "CANNOT_PARSE",
+        "FIELD_VALIDATION_FAILED",
+        "OTHER"
+      ]
+    },
+    "WorkspaceAlias":{
+      "type":"string",
+      "documentation":"<p>A user-assigned workspace alias.</p>",
+      "max":100,
+      "min":1
+    },
+    "WorkspaceArn":{
+      "type":"string",
+      "documentation":"<p>An ARN identifying a Workspace.</p>"
+    },
+    "WorkspaceDescription":{
+      "type":"structure",
+      "required":[
+        "arn",
+        "createdAt",
+        "status",
+        "workspaceId"
+      ],
+      "members":{
+        "alias":{
+          "shape":"WorkspaceAlias",
+          "documentation":"<p>Alias of this workspace.</p>"
+        },
+        "arn":{
+          "shape":"WorkspaceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of this workspace.</p>"
+        },
+        "createdAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time when the workspace was created.</p>"
+        },
+        "prometheusEndpoint":{
+          "shape":"Uri",
+          "documentation":"<p>Prometheus endpoint URI.</p>"
+        },
+        "status":{
+          "shape":"WorkspaceStatus",
+          "documentation":"<p>The status of this workspace.</p>"
+        },
+        "workspaceId":{
+          "shape":"WorkspaceId",
+          "documentation":"<p>Unique string identifying this workspace.</p>"
+        }
+      },
+      "documentation":"<p>Represents the properties of a workspace.</p>"
+    },
+    "WorkspaceId":{
+      "type":"string",
+      "documentation":"<p>A workspace ID.</p>",
+      "max":64,
+      "min":1,
+      "pattern":"[0-9A-Za-z][-.0-9A-Z_a-z]*"
+    },
+    "WorkspaceStatus":{
+      "type":"structure",
+      "required":["statusCode"],
+      "members":{
+        "statusCode":{
+          "shape":"WorkspaceStatusCode",
+          "documentation":"<p>Status code of this workspace.</p>"
+        }
+      },
+      "documentation":"<p>Represents the status of a workspace.</p>"
+    },
+    "WorkspaceStatusCode":{
+      "type":"string",
+      "documentation":"<p>State of a workspace.</p>",
+      "enum":[
+        "CREATING",
+        "ACTIVE",
+        "UPDATING",
+        "DELETING",
+        "CREATION_FAILED"
+      ]
+    },
+    "WorkspaceSummary":{
+      "type":"structure",
+      "required":[
+        "arn",
+        "createdAt",
+        "status",
+        "workspaceId"
+      ],
+      "members":{
+        "alias":{
+          "shape":"WorkspaceAlias",
+          "documentation":"<p>Alias of this workspace.</p>"
+        },
+        "arn":{
+          "shape":"WorkspaceArn",
+          "documentation":"<p>The AmazonResourceName of this workspace.</p>"
+        },
+        "createdAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time when the workspace was created.</p>"
+        },
+        "status":{
+          "shape":"WorkspaceStatus",
+          "documentation":"<p>The status of this workspace.</p>"
+        },
+        "workspaceId":{
+          "shape":"WorkspaceId",
+          "documentation":"<p>Unique string identifying this workspace.</p>"
+        }
+      },
+      "documentation":"<p>Represents a summary of the properties of a workspace.</p>"
+    },
+    "WorkspaceSummaryList":{
+      "type":"list",
+      "member":{"shape":"WorkspaceSummary"},
+      "documentation":"<p>A list of workspace summaries.</p>"
+    }
+  },
+  "documentation":"<p>Amazon Managed Service for Prometheus</p>"
+}

+ 28 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/amplify/2017-07-25/paginators-1.json

@@ -0,0 +1,28 @@
+{
+  "pagination": {
+    "ListApps": {
+      "input_token": "nextToken",
+      "limit_key": "maxResults",
+      "output_token": "nextToken",
+      "result_key": "apps"
+    },
+    "ListBranches": {
+      "input_token": "nextToken",
+      "limit_key": "maxResults",
+      "output_token": "nextToken",
+      "result_key": "branches"
+    },
+    "ListDomainAssociations": {
+      "input_token": "nextToken",
+      "limit_key": "maxResults",
+      "output_token": "nextToken",
+      "result_key": "domainAssociations"
+    },
+    "ListJobs": {
+      "input_token": "nextToken",
+      "limit_key": "maxResults",
+      "output_token": "nextToken",
+      "result_key": "jobSummaries"
+    }
+  }
+}

+ 3387 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/amplify/2017-07-25/service-2.json

@@ -0,0 +1,3387 @@
+{
+  "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"}
+      ],
+      "documentation":"<p> Creates a new Amplify app. </p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p> Creates a new backend environment for an Amplify app. </p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p> Creates a new branch for an Amplify app. </p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p> Creates a deployment for a manually deployed Amplify app. Manually deployed apps are not connected to a repository. </p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p> Creates a new domain association for an Amplify app. This action associates a custom domain with the Amplify app </p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p> Creates a new webhook on an Amplify app. </p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p> Deletes an existing Amplify app specified by an app ID. </p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p> Deletes a backend environment for an Amplify app. </p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p> Deletes a branch for an Amplify app. </p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p> Deletes a domain association for an Amplify app. </p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p> Deletes a job for a branch of an Amplify app. </p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p> Deletes a webhook. </p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p> Returns the website access logs for a specific time range using a presigned URL. </p>"
+    },
+    "GetApp":{
+      "name":"GetApp",
+      "http":{
+        "method":"GET",
+        "requestUri":"/apps/{appId}"
+      },
+      "input":{"shape":"GetAppRequest"},
+      "output":{"shape":"GetAppResult"},
+      "errors":[
+        {"shape":"BadRequestException"},
+        {"shape":"NotFoundException"},
+        {"shape":"UnauthorizedException"},
+        {"shape":"InternalFailureException"}
+      ],
+      "documentation":"<p> Returns an existing Amplify app by appID. </p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p> Returns the artifact info that corresponds to an artifact id. </p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p> Returns a backend environment for an Amplify app. </p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p> Returns a branch for an Amplify app. </p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p> Returns the domain information for an Amplify app. </p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p> Returns a job for a branch of an Amplify app. </p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p> Returns the webhook information that corresponds to a specified webhook ID. </p>"
+    },
+    "ListApps":{
+      "name":"ListApps",
+      "http":{
+        "method":"GET",
+        "requestUri":"/apps"
+      },
+      "input":{"shape":"ListAppsRequest"},
+      "output":{"shape":"ListAppsResult"},
+      "errors":[
+        {"shape":"BadRequestException"},
+        {"shape":"UnauthorizedException"},
+        {"shape":"InternalFailureException"}
+      ],
+      "documentation":"<p> Returns a list of the existing Amplify apps. </p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p> Returns a list of artifacts for a specified app, branch, and job. </p>"
+    },
+    "ListBackendEnvironments":{
+      "name":"ListBackendEnvironments",
+      "http":{
+        "method":"GET",
+        "requestUri":"/apps/{appId}/backendenvironments"
+      },
+      "input":{"shape":"ListBackendEnvironmentsRequest"},
+      "output":{"shape":"ListBackendEnvironmentsResult"},
+      "errors":[
+        {"shape":"BadRequestException"},
+        {"shape":"UnauthorizedException"},
+        {"shape":"InternalFailureException"}
+      ],
+      "documentation":"<p> Lists the backend environments for an Amplify app. </p>"
+    },
+    "ListBranches":{
+      "name":"ListBranches",
+      "http":{
+        "method":"GET",
+        "requestUri":"/apps/{appId}/branches"
+      },
+      "input":{"shape":"ListBranchesRequest"},
+      "output":{"shape":"ListBranchesResult"},
+      "errors":[
+        {"shape":"BadRequestException"},
+        {"shape":"UnauthorizedException"},
+        {"shape":"InternalFailureException"}
+      ],
+      "documentation":"<p> Lists the branches of an Amplify app. </p>"
+    },
+    "ListDomainAssociations":{
+      "name":"ListDomainAssociations",
+      "http":{
+        "method":"GET",
+        "requestUri":"/apps/{appId}/domains"
+      },
+      "input":{"shape":"ListDomainAssociationsRequest"},
+      "output":{"shape":"ListDomainAssociationsResult"},
+      "errors":[
+        {"shape":"BadRequestException"},
+        {"shape":"UnauthorizedException"},
+        {"shape":"InternalFailureException"}
+      ],
+      "documentation":"<p> Returns the domain associations for an Amplify app. </p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p> Lists the jobs for a branch of an Amplify app. </p>"
+    },
+    "ListTagsForResource":{
+      "name":"ListTagsForResource",
+      "http":{
+        "method":"GET",
+        "requestUri":"/tags/{resourceArn}"
+      },
+      "input":{"shape":"ListTagsForResourceRequest"},
+      "output":{"shape":"ListTagsForResourceResponse"},
+      "errors":[
+        {"shape":"InternalFailureException"},
+        {"shape":"BadRequestException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p> Returns a list of tags for a specified Amazon Resource Name (ARN). </p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p> Returns a list of webhooks for an Amplify app. </p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p> Starts a deployment for a manually deployed app. Manually deployed apps are not connected to a repository. </p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p> Starts a new job for a branch of an Amplify app. </p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p> Stops a job that is in progress for a branch of an Amplify app. </p>"
+    },
+    "TagResource":{
+      "name":"TagResource",
+      "http":{
+        "method":"POST",
+        "requestUri":"/tags/{resourceArn}"
+      },
+      "input":{"shape":"TagResourceRequest"},
+      "output":{"shape":"TagResourceResponse"},
+      "errors":[
+        {"shape":"InternalFailureException"},
+        {"shape":"BadRequestException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p> Tags the resource with a tag key and value. </p>"
+    },
+    "UntagResource":{
+      "name":"UntagResource",
+      "http":{
+        "method":"DELETE",
+        "requestUri":"/tags/{resourceArn}"
+      },
+      "input":{"shape":"UntagResourceRequest"},
+      "output":{"shape":"UntagResourceResponse"},
+      "errors":[
+        {"shape":"InternalFailureException"},
+        {"shape":"BadRequestException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p> Untags a resource with a specified Amazon Resource Name (ARN). </p>"
+    },
+    "UpdateApp":{
+      "name":"UpdateApp",
+      "http":{
+        "method":"POST",
+        "requestUri":"/apps/{appId}"
+      },
+      "input":{"shape":"UpdateAppRequest"},
+      "output":{"shape":"UpdateAppResult"},
+      "errors":[
+        {"shape":"BadRequestException"},
+        {"shape":"NotFoundException"},
+        {"shape":"UnauthorizedException"},
+        {"shape":"InternalFailureException"}
+      ],
+      "documentation":"<p> Updates an existing Amplify app. </p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p> Updates a branch for an Amplify app. </p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p> Creates a new domain association for an Amplify app.</p>"
+    },
+    "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"}
+      ],
+      "documentation":"<p> Updates a webhook. </p>"
+    }
+  },
+  "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",
+          "documentation":"<p> The unique ID of the Amplify app. </p>"
+        },
+        "appArn":{
+          "shape":"AppArn",
+          "documentation":"<p> The Amazon Resource Name (ARN) of the Amplify app. </p>"
+        },
+        "name":{
+          "shape":"Name",
+          "documentation":"<p> The name for the Amplify app. </p>"
+        },
+        "tags":{
+          "shape":"TagMap",
+          "documentation":"<p> The tag for the Amplify app. </p>"
+        },
+        "description":{
+          "shape":"Description",
+          "documentation":"<p> The description for the Amplify app. </p>"
+        },
+        "repository":{
+          "shape":"Repository",
+          "documentation":"<p> The repository for the Amplify app. </p>"
+        },
+        "platform":{
+          "shape":"Platform",
+          "documentation":"<p> The platform for the Amplify app. </p>"
+        },
+        "createTime":{
+          "shape":"CreateTime",
+          "documentation":"<p> Creates a date and time for the Amplify app. </p>"
+        },
+        "updateTime":{
+          "shape":"UpdateTime",
+          "documentation":"<p> Updates the date and time for the Amplify app. </p>"
+        },
+        "iamServiceRoleArn":{
+          "shape":"ServiceRoleArn",
+          "documentation":"<p> The AWS Identity and Access Management (IAM) service role for the Amazon Resource Name (ARN) of the Amplify app. </p>"
+        },
+        "environmentVariables":{
+          "shape":"EnvironmentVariables",
+          "documentation":"<p> The environment variables for the Amplify app. </p>"
+        },
+        "defaultDomain":{
+          "shape":"DefaultDomain",
+          "documentation":"<p> The default domain for the Amplify app. </p>"
+        },
+        "enableBranchAutoBuild":{
+          "shape":"EnableBranchAutoBuild",
+          "documentation":"<p> Enables the auto-building of branches for the Amplify app. </p>"
+        },
+        "enableBranchAutoDeletion":{
+          "shape":"EnableBranchAutoDeletion",
+          "documentation":"<p> Automatically disconnect a branch in the Amplify Console when you delete a branch from your Git repository. </p>"
+        },
+        "enableBasicAuth":{
+          "shape":"EnableBasicAuth",
+          "documentation":"<p> Enables basic authorization for the Amplify app's branches. </p>"
+        },
+        "basicAuthCredentials":{
+          "shape":"BasicAuthCredentials",
+          "documentation":"<p> The basic authorization credentials for branches for the Amplify app. </p>"
+        },
+        "customRules":{
+          "shape":"CustomRules",
+          "documentation":"<p> Describes the custom redirect and rewrite rules for the Amplify app. </p>"
+        },
+        "productionBranch":{
+          "shape":"ProductionBranch",
+          "documentation":"<p> Describes the information about a production branch of the Amplify app. </p>"
+        },
+        "buildSpec":{
+          "shape":"BuildSpec",
+          "documentation":"<p> Describes the content of the build specification (build spec) for the Amplify app. </p>"
+        },
+        "customHeaders":{
+          "shape":"CustomHeaders",
+          "documentation":"<p>Describes the custom HTTP headers for the Amplify app.</p>"
+        },
+        "enableAutoBranchCreation":{
+          "shape":"EnableAutoBranchCreation",
+          "documentation":"<p> Enables automated branch creation for the Amplify app. </p>"
+        },
+        "autoBranchCreationPatterns":{
+          "shape":"AutoBranchCreationPatterns",
+          "documentation":"<p> Describes the automated branch creation glob patterns for the Amplify app. </p>"
+        },
+        "autoBranchCreationConfig":{
+          "shape":"AutoBranchCreationConfig",
+          "documentation":"<p> Describes the automated branch creation configuration for the Amplify app. </p>"
+        }
+      },
+      "documentation":"<p> Represents the different branches of a repository for building, deploying, and hosting an Amplify app. </p>"
+    },
+    "AppArn":{
+      "type":"string",
+      "max":1000
+    },
+    "AppId":{
+      "type":"string",
+      "max":20,
+      "min":1,
+      "pattern":"d[a-z0-9]+"
+    },
+    "Apps":{
+      "type":"list",
+      "member":{"shape":"App"}
+    },
+    "Artifact":{
+      "type":"structure",
+      "required":[
+        "artifactFileName",
+        "artifactId"
+      ],
+      "members":{
+        "artifactFileName":{
+          "shape":"ArtifactFileName",
+          "documentation":"<p> The file name for the artifact. </p>"
+        },
+        "artifactId":{
+          "shape":"ArtifactId",
+          "documentation":"<p> The unique ID for the artifact. </p>"
+        }
+      },
+      "documentation":"<p> Describes an artifact. </p>"
+    },
+    "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",
+          "documentation":"<p> Describes the current stage for the autocreated branch. </p>"
+        },
+        "framework":{
+          "shape":"Framework",
+          "documentation":"<p> The framework for the autocreated branch. </p>"
+        },
+        "enableAutoBuild":{
+          "shape":"EnableAutoBuild",
+          "documentation":"<p> Enables auto building for the autocreated branch. </p>"
+        },
+        "environmentVariables":{
+          "shape":"EnvironmentVariables",
+          "documentation":"<p> The environment variables for the autocreated branch. </p>"
+        },
+        "basicAuthCredentials":{
+          "shape":"BasicAuthCredentials",
+          "documentation":"<p> The basic authorization credentials for the autocreated branch. </p>"
+        },
+        "enableBasicAuth":{
+          "shape":"EnableBasicAuth",
+          "documentation":"<p> Enables basic authorization for the autocreated branch. </p>"
+        },
+        "enablePerformanceMode":{
+          "shape":"EnablePerformanceMode",
+          "documentation":"<p>Enables performance mode for the branch.</p> <p>Performance mode optimizes for faster hosting performance by keeping content cached at the edge for a longer interval. When performance mode is enabled, hosting configuration or code changes can take up to 10 minutes to roll out. </p>"
+        },
+        "buildSpec":{
+          "shape":"BuildSpec",
+          "documentation":"<p> The build specification (build spec) for the autocreated branch. </p>"
+        },
+        "enablePullRequestPreview":{
+          "shape":"EnablePullRequestPreview",
+          "documentation":"<p> Enables pull request previews for the autocreated branch. </p>"
+        },
+        "pullRequestEnvironmentName":{
+          "shape":"PullRequestEnvironmentName",
+          "documentation":"<p> The Amplify environment name for the pull request. </p>"
+        }
+      },
+      "documentation":"<p> Describes the automated branch creation configuration. </p>"
+    },
+    "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",
+          "documentation":"<p> The Amazon Resource Name (ARN) for a backend environment that is part of an Amplify app. </p>"
+        },
+        "environmentName":{
+          "shape":"EnvironmentName",
+          "documentation":"<p> The name for a backend environment that is part of an Amplify app. </p>"
+        },
+        "stackName":{
+          "shape":"StackName",
+          "documentation":"<p> The AWS CloudFormation stack name of a backend environment. </p>"
+        },
+        "deploymentArtifacts":{
+          "shape":"DeploymentArtifacts",
+          "documentation":"<p> The name of deployment artifacts. </p>"
+        },
+        "createTime":{
+          "shape":"CreateTime",
+          "documentation":"<p> The creation date and time for a backend environment that is part of an Amplify app. </p>"
+        },
+        "updateTime":{
+          "shape":"UpdateTime",
+          "documentation":"<p> The last updated date and time for a backend environment that is part of an Amplify app. </p>"
+        }
+      },
+      "documentation":"<p> Describes the backend environment for an Amplify app. </p>"
+    },
+    "BackendEnvironmentArn":{
+      "type":"string",
+      "max":1000,
+      "min":1
+    },
+    "BackendEnvironments":{
+      "type":"list",
+      "member":{"shape":"BackendEnvironment"}
+    },
+    "BadRequestException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p> A request contains unexpected data. </p>",
+      "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",
+          "documentation":"<p> The Amazon Resource Name (ARN) for a branch that is part of an Amplify app. </p>"
+        },
+        "branchName":{
+          "shape":"BranchName",
+          "documentation":"<p> The name for the branch that is part of an Amplify app. </p>"
+        },
+        "description":{
+          "shape":"Description",
+          "documentation":"<p> The description for the branch that is part of an Amplify app. </p>"
+        },
+        "tags":{
+          "shape":"TagMap",
+          "documentation":"<p> The tag for the branch of an Amplify app. </p>"
+        },
+        "stage":{
+          "shape":"Stage",
+          "documentation":"<p> The current stage for the branch that is part of an Amplify app. </p>"
+        },
+        "displayName":{
+          "shape":"DisplayName",
+          "documentation":"<p> The display name for the branch. This is used as the default domain prefix. </p>"
+        },
+        "enableNotification":{
+          "shape":"EnableNotification",
+          "documentation":"<p> Enables notifications for a branch that is part of an Amplify app. </p>"
+        },
+        "createTime":{
+          "shape":"CreateTime",
+          "documentation":"<p> The creation date and time for a branch that is part of an Amplify app. </p>"
+        },
+        "updateTime":{
+          "shape":"UpdateTime",
+          "documentation":"<p> The last updated date and time for a branch that is part of an Amplify app. </p>"
+        },
+        "environmentVariables":{
+          "shape":"EnvironmentVariables",
+          "documentation":"<p> The environment variables specific to a branch of an Amplify app. </p>"
+        },
+        "enableAutoBuild":{
+          "shape":"EnableAutoBuild",
+          "documentation":"<p> Enables auto-building on push for a branch of an Amplify app. </p>"
+        },
+        "customDomains":{
+          "shape":"CustomDomains",
+          "documentation":"<p> The custom domains for a branch of an Amplify app. </p>"
+        },
+        "framework":{
+          "shape":"Framework",
+          "documentation":"<p> The framework for a branch of an Amplify app. </p>"
+        },
+        "activeJobId":{
+          "shape":"ActiveJobId",
+          "documentation":"<p> The ID of the active job for a branch of an Amplify app. </p>"
+        },
+        "totalNumberOfJobs":{
+          "shape":"TotalNumberOfJobs",
+          "documentation":"<p> The total number of jobs that are part of an Amplify app. </p>"
+        },
+        "enableBasicAuth":{
+          "shape":"EnableBasicAuth",
+          "documentation":"<p> Enables basic authorization for a branch of an Amplify app. </p>"
+        },
+        "enablePerformanceMode":{
+          "shape":"EnablePerformanceMode",
+          "documentation":"<p>Enables performance mode for the branch.</p> <p>Performance mode optimizes for faster hosting performance by keeping content cached at the edge for a longer interval. When performance mode is enabled, hosting configuration or code changes can take up to 10 minutes to roll out. </p>"
+        },
+        "thumbnailUrl":{
+          "shape":"ThumbnailUrl",
+          "documentation":"<p> The thumbnail URL for the branch of an Amplify app. </p>"
+        },
+        "basicAuthCredentials":{
+          "shape":"BasicAuthCredentials",
+          "documentation":"<p> The basic authorization credentials for a branch of an Amplify app. </p>"
+        },
+        "buildSpec":{
+          "shape":"BuildSpec",
+          "documentation":"<p> The build specification (build spec) content for the branch of an Amplify app. </p>"
+        },
+        "ttl":{
+          "shape":"TTL",
+          "documentation":"<p> The content Time to Live (TTL) for the website in seconds. </p>"
+        },
+        "associatedResources":{
+          "shape":"AssociatedResources",
+          "documentation":"<p> A list of custom resources that are linked to this branch. </p>"
+        },
+        "enablePullRequestPreview":{
+          "shape":"EnablePullRequestPreview",
+          "documentation":"<p> Enables pull request previews for the branch. </p>"
+        },
+        "pullRequestEnvironmentName":{
+          "shape":"PullRequestEnvironmentName",
+          "documentation":"<p> The Amplify environment name for the pull request. </p>"
+        },
+        "destinationBranch":{
+          "shape":"BranchName",
+          "documentation":"<p> The destination branch if the branch is a pull request branch. </p>"
+        },
+        "sourceBranch":{
+          "shape":"BranchName",
+          "documentation":"<p> The source branch if the branch is a pull request branch. </p>"
+        },
+        "backendEnvironmentArn":{
+          "shape":"BackendEnvironmentArn",
+          "documentation":"<p> The Amazon Resource Name (ARN) for a backend environment that is part of an Amplify app. </p>"
+        }
+      },
+      "documentation":"<p> The branch for an Amplify app, which maps to a third-party repository branch. </p>"
+    },
+    "BranchArn":{
+      "type":"string",
+      "max":1000
+    },
+    "BranchName":{
+      "type":"string",
+      "max":255,
+      "min":1
+    },
+    "Branches":{
+      "type":"list",
+      "member":{"shape":"Branch"},
+      "max":255
+    },
+    "BuildSpec":{
+      "type":"string",
+      "documentation":"<p> The build specification (build spec) file for an Amplify app build. </p>",
+      "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",
+          "documentation":"<p> The name for an Amplify app. </p>"
+        },
+        "description":{
+          "shape":"Description",
+          "documentation":"<p> The description for an Amplify app. </p>"
+        },
+        "repository":{
+          "shape":"Repository",
+          "documentation":"<p> The repository for an Amplify app. </p>"
+        },
+        "platform":{
+          "shape":"Platform",
+          "documentation":"<p> The platform or framework for an Amplify app. </p>"
+        },
+        "iamServiceRoleArn":{
+          "shape":"ServiceRoleArn",
+          "documentation":"<p> The AWS Identity and Access Management (IAM) service role for an Amplify app. </p>"
+        },
+        "oauthToken":{
+          "shape":"OauthToken",
+          "documentation":"<p> The OAuth token for a third-party source control system for an Amplify app. The OAuth token is used to create a webhook and a read-only deploy key. The OAuth token is not stored. </p>"
+        },
+        "accessToken":{
+          "shape":"AccessToken",
+          "documentation":"<p> The personal access token for a third-party source control system for an Amplify app. The personal access token is used to create a webhook and a read-only deploy key. The token is not stored. </p>"
+        },
+        "environmentVariables":{
+          "shape":"EnvironmentVariables",
+          "documentation":"<p> The environment variables map for an Amplify app. </p>"
+        },
+        "enableBranchAutoBuild":{
+          "shape":"EnableBranchAutoBuild",
+          "documentation":"<p> Enables the auto building of branches for an Amplify app. </p>"
+        },
+        "enableBranchAutoDeletion":{
+          "shape":"EnableBranchAutoDeletion",
+          "documentation":"<p> Automatically disconnects a branch in the Amplify Console when you delete a branch from your Git repository. </p>"
+        },
+        "enableBasicAuth":{
+          "shape":"EnableBasicAuth",
+          "documentation":"<p> Enables basic authorization for an Amplify app. This will apply to all branches that are part of this app. </p>"
+        },
+        "basicAuthCredentials":{
+          "shape":"BasicAuthCredentials",
+          "documentation":"<p> The credentials for basic authorization for an Amplify app. </p>"
+        },
+        "customRules":{
+          "shape":"CustomRules",
+          "documentation":"<p> The custom rewrite and redirect rules for an Amplify app. </p>"
+        },
+        "tags":{
+          "shape":"TagMap",
+          "documentation":"<p> The tag for an Amplify app. </p>"
+        },
+        "buildSpec":{
+          "shape":"BuildSpec",
+          "documentation":"<p> The build specification (build spec) for an Amplify app. </p>"
+        },
+        "customHeaders":{
+          "shape":"CustomHeaders",
+          "documentation":"<p>The custom HTTP headers for an Amplify app.</p>"
+        },
+        "enableAutoBranchCreation":{
+          "shape":"EnableAutoBranchCreation",
+          "documentation":"<p> Enables automated branch creation for an Amplify app. </p>"
+        },
+        "autoBranchCreationPatterns":{
+          "shape":"AutoBranchCreationPatterns",
+          "documentation":"<p> The automated branch creation glob patterns for an Amplify app. </p>"
+        },
+        "autoBranchCreationConfig":{
+          "shape":"AutoBranchCreationConfig",
+          "documentation":"<p> The automated branch creation configuration for an Amplify app. </p>"
+        }
+      },
+      "documentation":"<p> The request structure used to create apps in Amplify. </p>"
+    },
+    "CreateAppResult":{
+      "type":"structure",
+      "required":["app"],
+      "members":{
+        "app":{"shape":"App"}
+      }
+    },
+    "CreateBackendEnvironmentRequest":{
+      "type":"structure",
+      "required":[
+        "appId",
+        "environmentName"
+      ],
+      "members":{
+        "appId":{
+          "shape":"AppId",
+          "documentation":"<p> The unique ID for an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"appId"
+        },
+        "environmentName":{
+          "shape":"EnvironmentName",
+          "documentation":"<p> The name for the backend environment. </p>"
+        },
+        "stackName":{
+          "shape":"StackName",
+          "documentation":"<p> The AWS CloudFormation stack name of a backend environment. </p>"
+        },
+        "deploymentArtifacts":{
+          "shape":"DeploymentArtifacts",
+          "documentation":"<p> The name of deployment artifacts. </p>"
+        }
+      },
+      "documentation":"<p> The request structure for the backend environment create request. </p>"
+    },
+    "CreateBackendEnvironmentResult":{
+      "type":"structure",
+      "required":["backendEnvironment"],
+      "members":{
+        "backendEnvironment":{
+          "shape":"BackendEnvironment",
+          "documentation":"<p> Describes the backend environment for an Amplify app. </p>"
+        }
+      },
+      "documentation":"<p> The result structure for the create backend environment request. </p>"
+    },
+    "CreateBranchRequest":{
+      "type":"structure",
+      "required":[
+        "appId",
+        "branchName"
+      ],
+      "members":{
+        "appId":{
+          "shape":"AppId",
+          "documentation":"<p> The unique ID for an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"appId"
+        },
+        "branchName":{
+          "shape":"BranchName",
+          "documentation":"<p> The name for the branch. </p>"
+        },
+        "description":{
+          "shape":"Description",
+          "documentation":"<p> The description for the branch. </p>"
+        },
+        "stage":{
+          "shape":"Stage",
+          "documentation":"<p> Describes the current stage for the branch. </p>"
+        },
+        "framework":{
+          "shape":"Framework",
+          "documentation":"<p> The framework for the branch. </p>"
+        },
+        "enableNotification":{
+          "shape":"EnableNotification",
+          "documentation":"<p> Enables notifications for the branch. </p>"
+        },
+        "enableAutoBuild":{
+          "shape":"EnableAutoBuild",
+          "documentation":"<p> Enables auto building for the branch. </p>"
+        },
+        "environmentVariables":{
+          "shape":"EnvironmentVariables",
+          "documentation":"<p> The environment variables for the branch. </p>"
+        },
+        "basicAuthCredentials":{
+          "shape":"BasicAuthCredentials",
+          "documentation":"<p> The basic authorization credentials for the branch. </p>"
+        },
+        "enableBasicAuth":{
+          "shape":"EnableBasicAuth",
+          "documentation":"<p> Enables basic authorization for the branch. </p>"
+        },
+        "enablePerformanceMode":{
+          "shape":"EnablePerformanceMode",
+          "documentation":"<p>Enables performance mode for the branch.</p> <p>Performance mode optimizes for faster hosting performance by keeping content cached at the edge for a longer interval. When performance mode is enabled, hosting configuration or code changes can take up to 10 minutes to roll out. </p>"
+        },
+        "tags":{
+          "shape":"TagMap",
+          "documentation":"<p> The tag for the branch. </p>"
+        },
+        "buildSpec":{
+          "shape":"BuildSpec",
+          "documentation":"<p> The build specification (build spec) for the branch. </p>"
+        },
+        "ttl":{
+          "shape":"TTL",
+          "documentation":"<p> The content Time To Live (TTL) for the website in seconds. </p>"
+        },
+        "displayName":{
+          "shape":"DisplayName",
+          "documentation":"<p> The display name for a branch. This is used as the default domain prefix. </p>"
+        },
+        "enablePullRequestPreview":{
+          "shape":"EnablePullRequestPreview",
+          "documentation":"<p> Enables pull request previews for this branch. </p>"
+        },
+        "pullRequestEnvironmentName":{
+          "shape":"PullRequestEnvironmentName",
+          "documentation":"<p> The Amplify environment name for the pull request. </p>"
+        },
+        "backendEnvironmentArn":{
+          "shape":"BackendEnvironmentArn",
+          "documentation":"<p> The Amazon Resource Name (ARN) for a backend environment that is part of an Amplify app. </p>"
+        }
+      },
+      "documentation":"<p> The request structure for the create branch request. </p>"
+    },
+    "CreateBranchResult":{
+      "type":"structure",
+      "required":["branch"],
+      "members":{
+        "branch":{
+          "shape":"Branch",
+          "documentation":"<p> Describes the branch for an Amplify app, which maps to a third-party repository branch. </p>"
+        }
+      },
+      "documentation":"<p> The result structure for create branch request. </p>"
+    },
+    "CreateDeploymentRequest":{
+      "type":"structure",
+      "required":[
+        "appId",
+        "branchName"
+      ],
+      "members":{
+        "appId":{
+          "shape":"AppId",
+          "documentation":"<p> The unique ID for an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"appId"
+        },
+        "branchName":{
+          "shape":"BranchName",
+          "documentation":"<p> The name for the branch, for the job. </p>",
+          "location":"uri",
+          "locationName":"branchName"
+        },
+        "fileMap":{
+          "shape":"FileMap",
+          "documentation":"<p> An optional file map that contains the file name as the key and the file content md5 hash as the value. If this argument is provided, the service will generate a unique upload URL per file. Otherwise, the service will only generate a single upload URL for the zipped files. </p>"
+        }
+      },
+      "documentation":"<p> The request structure for the create a new deployment request. </p>"
+    },
+    "CreateDeploymentResult":{
+      "type":"structure",
+      "required":[
+        "fileUploadUrls",
+        "zipUploadUrl"
+      ],
+      "members":{
+        "jobId":{
+          "shape":"JobId",
+          "documentation":"<p> The job ID for this deployment. will supply to start deployment api. </p>"
+        },
+        "fileUploadUrls":{
+          "shape":"FileUploadUrls",
+          "documentation":"<p> When the <code>fileMap</code> argument is provided in the request, <code>fileUploadUrls</code> will contain a map of file names to upload URLs. </p>"
+        },
+        "zipUploadUrl":{
+          "shape":"UploadUrl",
+          "documentation":"<p> When the <code>fileMap</code> argument is not provided in the request, this <code>zipUploadUrl</code> is returned. </p>"
+        }
+      },
+      "documentation":"<p> The result structure for the create a new deployment request. </p>"
+    },
+    "CreateDomainAssociationRequest":{
+      "type":"structure",
+      "required":[
+        "appId",
+        "domainName",
+        "subDomainSettings"
+      ],
+      "members":{
+        "appId":{
+          "shape":"AppId",
+          "documentation":"<p> The unique ID for an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"appId"
+        },
+        "domainName":{
+          "shape":"DomainName",
+          "documentation":"<p> The domain name for the domain association. </p>"
+        },
+        "enableAutoSubDomain":{
+          "shape":"EnableAutoSubDomain",
+          "documentation":"<p> Enables the automated creation of subdomains for branches. </p>"
+        },
+        "subDomainSettings":{
+          "shape":"SubDomainSettings",
+          "documentation":"<p> The setting for the subdomain. </p>"
+        },
+        "autoSubDomainCreationPatterns":{
+          "shape":"AutoSubDomainCreationPatterns",
+          "documentation":"<p> Sets the branch patterns for automatic subdomain creation. </p>"
+        },
+        "autoSubDomainIAMRole":{
+          "shape":"AutoSubDomainIAMRole",
+          "documentation":"<p> The required AWS Identity and Access Management (IAM) service role for the Amazon Resource Name (ARN) for automatically creating subdomains. </p>"
+        }
+      },
+      "documentation":"<p> The request structure for the create domain association request. </p>"
+    },
+    "CreateDomainAssociationResult":{
+      "type":"structure",
+      "required":["domainAssociation"],
+      "members":{
+        "domainAssociation":{
+          "shape":"DomainAssociation",
+          "documentation":"<p> Describes the structure of a domain association, which associates a custom domain with an Amplify app. </p>"
+        }
+      },
+      "documentation":"<p> The result structure for the create domain association request. </p>"
+    },
+    "CreateTime":{"type":"timestamp"},
+    "CreateWebhookRequest":{
+      "type":"structure",
+      "required":[
+        "appId",
+        "branchName"
+      ],
+      "members":{
+        "appId":{
+          "shape":"AppId",
+          "documentation":"<p> The unique ID for an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"appId"
+        },
+        "branchName":{
+          "shape":"BranchName",
+          "documentation":"<p> The name for a branch that is part of an Amplify app. </p>"
+        },
+        "description":{
+          "shape":"Description",
+          "documentation":"<p> The description for a webhook. </p>"
+        }
+      },
+      "documentation":"<p> The request structure for the create webhook request. </p>"
+    },
+    "CreateWebhookResult":{
+      "type":"structure",
+      "required":["webhook"],
+      "members":{
+        "webhook":{
+          "shape":"Webhook",
+          "documentation":"<p> Describes a webhook that connects repository events to an Amplify app. </p>"
+        }
+      },
+      "documentation":"<p> The result structure for the create webhook request. </p>"
+    },
+    "CustomDomain":{
+      "type":"string",
+      "max":255
+    },
+    "CustomDomains":{
+      "type":"list",
+      "member":{"shape":"CustomDomain"},
+      "max":255
+    },
+    "CustomHeaders":{
+      "type":"string",
+      "max":25000,
+      "min":1
+    },
+    "CustomRule":{
+      "type":"structure",
+      "required":[
+        "source",
+        "target"
+      ],
+      "members":{
+        "source":{
+          "shape":"Source",
+          "documentation":"<p> The source pattern for a URL rewrite or redirect rule. </p>"
+        },
+        "target":{
+          "shape":"Target",
+          "documentation":"<p> The target pattern for a URL rewrite or redirect rule. </p>"
+        },
+        "status":{
+          "shape":"Status",
+          "documentation":"<p> The status code for a URL rewrite or redirect rule. </p> <dl> <dt>200</dt> <dd> <p>Represents a 200 rewrite rule.</p> </dd> <dt>301</dt> <dd> <p>Represents a 301 (moved pemanently) redirect rule. This and all future requests should be directed to the target URL. </p> </dd> <dt>302</dt> <dd> <p>Represents a 302 temporary redirect rule.</p> </dd> <dt>404</dt> <dd> <p>Represents a 404 redirect rule.</p> </dd> <dt>404-200</dt> <dd> <p>Represents a 404 rewrite rule.</p> </dd> </dl>"
+        },
+        "condition":{
+          "shape":"Condition",
+          "documentation":"<p> The condition for a URL rewrite or redirect rule, such as a country code. </p>"
+        }
+      },
+      "documentation":"<p> Describes a custom rewrite or redirect rule. </p>"
+    },
+    "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",
+          "documentation":"<p> The unique ID for an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"appId"
+        }
+      },
+      "documentation":"<p> Describes the request structure for the delete app request. </p>"
+    },
+    "DeleteAppResult":{
+      "type":"structure",
+      "required":["app"],
+      "members":{
+        "app":{"shape":"App"}
+      },
+      "documentation":"<p> The result structure for the delete app request. </p>"
+    },
+    "DeleteBackendEnvironmentRequest":{
+      "type":"structure",
+      "required":[
+        "appId",
+        "environmentName"
+      ],
+      "members":{
+        "appId":{
+          "shape":"AppId",
+          "documentation":"<p> The unique ID of an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"appId"
+        },
+        "environmentName":{
+          "shape":"EnvironmentName",
+          "documentation":"<p> The name of a backend environment of an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"environmentName"
+        }
+      },
+      "documentation":"<p> The request structure for the delete backend environment request. </p>"
+    },
+    "DeleteBackendEnvironmentResult":{
+      "type":"structure",
+      "required":["backendEnvironment"],
+      "members":{
+        "backendEnvironment":{
+          "shape":"BackendEnvironment",
+          "documentation":"<p> Describes the backend environment for an Amplify app. </p>"
+        }
+      },
+      "documentation":"<p> The result structure of the delete backend environment result. </p>"
+    },
+    "DeleteBranchRequest":{
+      "type":"structure",
+      "required":[
+        "appId",
+        "branchName"
+      ],
+      "members":{
+        "appId":{
+          "shape":"AppId",
+          "documentation":"<p> The unique ID for an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"appId"
+        },
+        "branchName":{
+          "shape":"BranchName",
+          "documentation":"<p> The name for the branch. </p>",
+          "location":"uri",
+          "locationName":"branchName"
+        }
+      },
+      "documentation":"<p> The request structure for the delete branch request. </p>"
+    },
+    "DeleteBranchResult":{
+      "type":"structure",
+      "required":["branch"],
+      "members":{
+        "branch":{
+          "shape":"Branch",
+          "documentation":"<p> The branch for an Amplify app, which maps to a third-party repository branch. </p>"
+        }
+      },
+      "documentation":"<p> The result structure for the delete branch request. </p>"
+    },
+    "DeleteDomainAssociationRequest":{
+      "type":"structure",
+      "required":[
+        "appId",
+        "domainName"
+      ],
+      "members":{
+        "appId":{
+          "shape":"AppId",
+          "documentation":"<p> The unique id for an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"appId"
+        },
+        "domainName":{
+          "shape":"DomainName",
+          "documentation":"<p> The name of the domain. </p>",
+          "location":"uri",
+          "locationName":"domainName"
+        }
+      },
+      "documentation":"<p> The request structure for the delete domain association request. </p>"
+    },
+    "DeleteDomainAssociationResult":{
+      "type":"structure",
+      "required":["domainAssociation"],
+      "members":{
+        "domainAssociation":{"shape":"DomainAssociation"}
+      }
+    },
+    "DeleteJobRequest":{
+      "type":"structure",
+      "required":[
+        "appId",
+        "branchName",
+        "jobId"
+      ],
+      "members":{
+        "appId":{
+          "shape":"AppId",
+          "documentation":"<p> The unique ID for an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"appId"
+        },
+        "branchName":{
+          "shape":"BranchName",
+          "documentation":"<p> The name for the branch, for the job. </p>",
+          "location":"uri",
+          "locationName":"branchName"
+        },
+        "jobId":{
+          "shape":"JobId",
+          "documentation":"<p> The unique ID for the job. </p>",
+          "location":"uri",
+          "locationName":"jobId"
+        }
+      },
+      "documentation":"<p> The request structure for the delete job request. </p>"
+    },
+    "DeleteJobResult":{
+      "type":"structure",
+      "required":["jobSummary"],
+      "members":{
+        "jobSummary":{"shape":"JobSummary"}
+      },
+      "documentation":"<p> The result structure for the delete job request. </p>"
+    },
+    "DeleteWebhookRequest":{
+      "type":"structure",
+      "required":["webhookId"],
+      "members":{
+        "webhookId":{
+          "shape":"WebhookId",
+          "documentation":"<p> The unique ID for a webhook. </p>",
+          "location":"uri",
+          "locationName":"webhookId"
+        }
+      },
+      "documentation":"<p> The request structure for the delete webhook request. </p>"
+    },
+    "DeleteWebhookResult":{
+      "type":"structure",
+      "required":["webhook"],
+      "members":{
+        "webhook":{
+          "shape":"Webhook",
+          "documentation":"<p> Describes a webhook that connects repository events to an Amplify app. </p>"
+        }
+      },
+      "documentation":"<p> The result structure for the delete webhook request. </p>"
+    },
+    "DependentServiceFailureException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p> An operation failed because a dependent service threw an exception. </p>",
+      "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",
+          "documentation":"<p> The Amazon Resource Name (ARN) for the domain association. </p>"
+        },
+        "domainName":{
+          "shape":"DomainName",
+          "documentation":"<p> The name of the domain. </p>"
+        },
+        "enableAutoSubDomain":{
+          "shape":"EnableAutoSubDomain",
+          "documentation":"<p> Enables the automated creation of subdomains for branches. </p>"
+        },
+        "autoSubDomainCreationPatterns":{
+          "shape":"AutoSubDomainCreationPatterns",
+          "documentation":"<p> Sets branch patterns for automatic subdomain creation. </p>"
+        },
+        "autoSubDomainIAMRole":{
+          "shape":"AutoSubDomainIAMRole",
+          "documentation":"<p> The required AWS Identity and Access Management (IAM) service role for the Amazon Resource Name (ARN) for automatically creating subdomains. </p>"
+        },
+        "domainStatus":{
+          "shape":"DomainStatus",
+          "documentation":"<p> The current status of the domain association. </p>"
+        },
+        "statusReason":{
+          "shape":"StatusReason",
+          "documentation":"<p> The reason for the current status of the domain association. </p>"
+        },
+        "certificateVerificationDNSRecord":{
+          "shape":"CertificateVerificationDNSRecord",
+          "documentation":"<p> The DNS record for certificate verification. </p>"
+        },
+        "subDomains":{
+          "shape":"SubDomains",
+          "documentation":"<p> The subdomains for the domain association. </p>"
+        }
+      },
+      "documentation":"<p> Describes a domain association that associates a custom domain with an Amplify app. </p>"
+    },
+    "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"},
+    "EnablePerformanceMode":{"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",
+          "documentation":"<p> The time at which the logs should start. The time range specified is inclusive of the start time. </p>"
+        },
+        "endTime":{
+          "shape":"EndTime",
+          "documentation":"<p> The time at which the logs should end. The time range specified is inclusive of the end time. </p>"
+        },
+        "domainName":{
+          "shape":"DomainName",
+          "documentation":"<p> The name of the domain. </p>"
+        },
+        "appId":{
+          "shape":"AppId",
+          "documentation":"<p> The unique ID for an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"appId"
+        }
+      },
+      "documentation":"<p> The request structure for the generate access logs request. </p>"
+    },
+    "GenerateAccessLogsResult":{
+      "type":"structure",
+      "members":{
+        "logUrl":{
+          "shape":"LogUrl",
+          "documentation":"<p> The pre-signed URL for the requested access logs. </p>"
+        }
+      },
+      "documentation":"<p> The result structure for the generate access logs request. </p>"
+    },
+    "GetAppRequest":{
+      "type":"structure",
+      "required":["appId"],
+      "members":{
+        "appId":{
+          "shape":"AppId",
+          "documentation":"<p> The unique ID for an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"appId"
+        }
+      },
+      "documentation":"<p> The request structure for the get app request. </p>"
+    },
+    "GetAppResult":{
+      "type":"structure",
+      "required":["app"],
+      "members":{
+        "app":{"shape":"App"}
+      }
+    },
+    "GetArtifactUrlRequest":{
+      "type":"structure",
+      "required":["artifactId"],
+      "members":{
+        "artifactId":{
+          "shape":"ArtifactId",
+          "documentation":"<p> The unique ID for an artifact. </p>",
+          "location":"uri",
+          "locationName":"artifactId"
+        }
+      },
+      "documentation":"<p> Returns the request structure for the get artifact request. </p>"
+    },
+    "GetArtifactUrlResult":{
+      "type":"structure",
+      "required":[
+        "artifactId",
+        "artifactUrl"
+      ],
+      "members":{
+        "artifactId":{
+          "shape":"ArtifactId",
+          "documentation":"<p> The unique ID for an artifact. </p>"
+        },
+        "artifactUrl":{
+          "shape":"ArtifactUrl",
+          "documentation":"<p> The presigned URL for the artifact. </p>"
+        }
+      },
+      "documentation":"<p> Returns the result structure for the get artifact request. </p>"
+    },
+    "GetBackendEnvironmentRequest":{
+      "type":"structure",
+      "required":[
+        "appId",
+        "environmentName"
+      ],
+      "members":{
+        "appId":{
+          "shape":"AppId",
+          "documentation":"<p> The unique id for an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"appId"
+        },
+        "environmentName":{
+          "shape":"EnvironmentName",
+          "documentation":"<p> The name for the backend environment. </p>",
+          "location":"uri",
+          "locationName":"environmentName"
+        }
+      },
+      "documentation":"<p> The request structure for the get backend environment request. </p>"
+    },
+    "GetBackendEnvironmentResult":{
+      "type":"structure",
+      "required":["backendEnvironment"],
+      "members":{
+        "backendEnvironment":{
+          "shape":"BackendEnvironment",
+          "documentation":"<p> Describes the backend environment for an Amplify app. </p>"
+        }
+      },
+      "documentation":"<p> The result structure for the get backend environment result. </p>"
+    },
+    "GetBranchRequest":{
+      "type":"structure",
+      "required":[
+        "appId",
+        "branchName"
+      ],
+      "members":{
+        "appId":{
+          "shape":"AppId",
+          "documentation":"<p> The unique ID for an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"appId"
+        },
+        "branchName":{
+          "shape":"BranchName",
+          "documentation":"<p> The name for the branch. </p>",
+          "location":"uri",
+          "locationName":"branchName"
+        }
+      },
+      "documentation":"<p> The request structure for the get branch request. </p>"
+    },
+    "GetBranchResult":{
+      "type":"structure",
+      "required":["branch"],
+      "members":{
+        "branch":{"shape":"Branch"}
+      }
+    },
+    "GetDomainAssociationRequest":{
+      "type":"structure",
+      "required":[
+        "appId",
+        "domainName"
+      ],
+      "members":{
+        "appId":{
+          "shape":"AppId",
+          "documentation":"<p> The unique id for an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"appId"
+        },
+        "domainName":{
+          "shape":"DomainName",
+          "documentation":"<p> The name of the domain. </p>",
+          "location":"uri",
+          "locationName":"domainName"
+        }
+      },
+      "documentation":"<p> The request structure for the get domain association request. </p>"
+    },
+    "GetDomainAssociationResult":{
+      "type":"structure",
+      "required":["domainAssociation"],
+      "members":{
+        "domainAssociation":{
+          "shape":"DomainAssociation",
+          "documentation":"<p> Describes the structure of a domain association, which associates a custom domain with an Amplify app. </p>"
+        }
+      },
+      "documentation":"<p> The result structure for the get domain association request. </p>"
+    },
+    "GetJobRequest":{
+      "type":"structure",
+      "required":[
+        "appId",
+        "branchName",
+        "jobId"
+      ],
+      "members":{
+        "appId":{
+          "shape":"AppId",
+          "documentation":"<p> The unique ID for an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"appId"
+        },
+        "branchName":{
+          "shape":"BranchName",
+          "documentation":"<p> The branch name for the job. </p>",
+          "location":"uri",
+          "locationName":"branchName"
+        },
+        "jobId":{
+          "shape":"JobId",
+          "documentation":"<p> The unique ID for the job. </p>",
+          "location":"uri",
+          "locationName":"jobId"
+        }
+      },
+      "documentation":"<p> The request structure for the get job request. </p>"
+    },
+    "GetJobResult":{
+      "type":"structure",
+      "required":["job"],
+      "members":{
+        "job":{"shape":"Job"}
+      }
+    },
+    "GetWebhookRequest":{
+      "type":"structure",
+      "required":["webhookId"],
+      "members":{
+        "webhookId":{
+          "shape":"WebhookId",
+          "documentation":"<p> The unique ID for a webhook. </p>",
+          "location":"uri",
+          "locationName":"webhookId"
+        }
+      },
+      "documentation":"<p> The request structure for the get webhook request. </p>"
+    },
+    "GetWebhookResult":{
+      "type":"structure",
+      "required":["webhook"],
+      "members":{
+        "webhook":{
+          "shape":"Webhook",
+          "documentation":"<p> Describes the structure of a webhook. </p>"
+        }
+      },
+      "documentation":"<p> The result structure for the get webhook request. </p>"
+    },
+    "InternalFailureException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p> The service failed to perform an operation due to an internal issue. </p>",
+      "error":{"httpStatusCode":500},
+      "exception":true,
+      "fault":true
+    },
+    "Job":{
+      "type":"structure",
+      "required":[
+        "summary",
+        "steps"
+      ],
+      "members":{
+        "summary":{
+          "shape":"JobSummary",
+          "documentation":"<p> Describes the summary for an execution job for an Amplify app. </p>"
+        },
+        "steps":{
+          "shape":"Steps",
+          "documentation":"<p> The execution steps for an execution job, for an Amplify app. </p>"
+        }
+      },
+      "documentation":"<p> Describes an execution job for an Amplify app. </p>"
+    },
+    "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",
+          "documentation":"<p> The Amazon Resource Name (ARN) for the job. </p>"
+        },
+        "jobId":{
+          "shape":"JobId",
+          "documentation":"<p> The unique ID for the job. </p>"
+        },
+        "commitId":{
+          "shape":"CommitId",
+          "documentation":"<p> The commit ID from a third-party repository provider for the job. </p>"
+        },
+        "commitMessage":{
+          "shape":"CommitMessage",
+          "documentation":"<p> The commit message from a third-party repository provider for the job. </p>"
+        },
+        "commitTime":{
+          "shape":"CommitTime",
+          "documentation":"<p> The commit date and time for the job. </p>"
+        },
+        "startTime":{
+          "shape":"StartTime",
+          "documentation":"<p> The start date and time for the job. </p>"
+        },
+        "status":{
+          "shape":"JobStatus",
+          "documentation":"<p> The current status for the job. </p>"
+        },
+        "endTime":{
+          "shape":"EndTime",
+          "documentation":"<p> The end date and time for the job. </p>"
+        },
+        "jobType":{
+          "shape":"JobType",
+          "documentation":"<p> The type for the job. If the value is <code>RELEASE</code>, the job was manually released from its source by using the <code>StartJob</code> API. If the value is <code>RETRY</code>, the job was manually retried using the <code>StartJob</code> API. If the value is <code>WEB_HOOK</code>, the job was automatically triggered by webhooks. </p>"
+        }
+      },
+      "documentation":"<p> Describes the summary for an execution job for an Amplify app. </p>"
+    },
+    "JobType":{
+      "type":"string",
+      "enum":[
+        "RELEASE",
+        "RETRY",
+        "MANUAL",
+        "WEB_HOOK"
+      ],
+      "max":10
+    },
+    "LastDeployTime":{"type":"timestamp"},
+    "LimitExceededException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p> A resource could not be created because service quotas were exceeded. </p>",
+      "error":{"httpStatusCode":429},
+      "exception":true
+    },
+    "ListAppsRequest":{
+      "type":"structure",
+      "members":{
+        "nextToken":{
+          "shape":"NextToken",
+          "documentation":"<p> A pagination token. If non-null, the pagination token is returned in a result. Pass its value in another request to retrieve more entries. </p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "maxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p> The maximum number of records to list in a single response. </p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        }
+      },
+      "documentation":"<p> The request structure for the list apps request. </p>"
+    },
+    "ListAppsResult":{
+      "type":"structure",
+      "required":["apps"],
+      "members":{
+        "apps":{
+          "shape":"Apps",
+          "documentation":"<p> A list of Amplify apps. </p>"
+        },
+        "nextToken":{
+          "shape":"NextToken",
+          "documentation":"<p> A pagination token. Set to null to start listing apps from start. If non-null, the pagination token is returned in a result. Pass its value in here to list more projects. </p>"
+        }
+      },
+      "documentation":"<p> The result structure for an Amplify app list request. </p>"
+    },
+    "ListArtifactsRequest":{
+      "type":"structure",
+      "required":[
+        "appId",
+        "branchName",
+        "jobId"
+      ],
+      "members":{
+        "appId":{
+          "shape":"AppId",
+          "documentation":"<p> The unique ID for an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"appId"
+        },
+        "branchName":{
+          "shape":"BranchName",
+          "documentation":"<p> The name of a branch that is part of an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"branchName"
+        },
+        "jobId":{
+          "shape":"JobId",
+          "documentation":"<p> The unique ID for a job. </p>",
+          "location":"uri",
+          "locationName":"jobId"
+        },
+        "nextToken":{
+          "shape":"NextToken",
+          "documentation":"<p> A pagination token. Set to null to start listing artifacts from start. If a non-null pagination token is returned in a result, pass its value in here to list more artifacts. </p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "maxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p> The maximum number of records to list in a single response. </p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        }
+      },
+      "documentation":"<p> Describes the request structure for the list artifacts request. </p>"
+    },
+    "ListArtifactsResult":{
+      "type":"structure",
+      "required":["artifacts"],
+      "members":{
+        "artifacts":{
+          "shape":"Artifacts",
+          "documentation":"<p> A list of artifacts. </p>"
+        },
+        "nextToken":{
+          "shape":"NextToken",
+          "documentation":"<p> A pagination token. If a non-null pagination token is returned in a result, pass its value in another request to retrieve more entries. </p>"
+        }
+      },
+      "documentation":"<p> The result structure for the list artifacts request. </p>"
+    },
+    "ListBackendEnvironmentsRequest":{
+      "type":"structure",
+      "required":["appId"],
+      "members":{
+        "appId":{
+          "shape":"AppId",
+          "documentation":"<p> The unique ID for an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"appId"
+        },
+        "environmentName":{
+          "shape":"EnvironmentName",
+          "documentation":"<p> The name of the backend environment </p>",
+          "location":"querystring",
+          "locationName":"environmentName"
+        },
+        "nextToken":{
+          "shape":"NextToken",
+          "documentation":"<p> A pagination token. Set to null to start listing backend environments from the start. If a non-null pagination token is returned in a result, pass its value in here to list more backend environments. </p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "maxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p> The maximum number of records to list in a single response. </p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        }
+      },
+      "documentation":"<p> The request structure for the list backend environments request. </p>"
+    },
+    "ListBackendEnvironmentsResult":{
+      "type":"structure",
+      "required":["backendEnvironments"],
+      "members":{
+        "backendEnvironments":{
+          "shape":"BackendEnvironments",
+          "documentation":"<p> The list of backend environments for an Amplify app. </p>"
+        },
+        "nextToken":{
+          "shape":"NextToken",
+          "documentation":"<p> A pagination token. If a non-null pagination token is returned in a result, pass its value in another request to retrieve more entries. </p>"
+        }
+      },
+      "documentation":"<p> The result structure for the list backend environments result. </p>"
+    },
+    "ListBranchesRequest":{
+      "type":"structure",
+      "required":["appId"],
+      "members":{
+        "appId":{
+          "shape":"AppId",
+          "documentation":"<p> The unique ID for an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"appId"
+        },
+        "nextToken":{
+          "shape":"NextToken",
+          "documentation":"<p> A pagination token. Set to null to start listing branches from the start. If a non-null pagination token is returned in a result, pass its value in here to list more branches. </p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "maxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p> The maximum number of records to list in a single response. </p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        }
+      },
+      "documentation":"<p> The request structure for the list branches request. </p>"
+    },
+    "ListBranchesResult":{
+      "type":"structure",
+      "required":["branches"],
+      "members":{
+        "branches":{
+          "shape":"Branches",
+          "documentation":"<p> A list of branches for an Amplify app. </p>"
+        },
+        "nextToken":{
+          "shape":"NextToken",
+          "documentation":"<p> A pagination token. If a non-null pagination token is returned in a result, pass its value in another request to retrieve more entries. </p>"
+        }
+      },
+      "documentation":"<p> The result structure for the list branches request. </p>"
+    },
+    "ListDomainAssociationsRequest":{
+      "type":"structure",
+      "required":["appId"],
+      "members":{
+        "appId":{
+          "shape":"AppId",
+          "documentation":"<p> The unique ID for an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"appId"
+        },
+        "nextToken":{
+          "shape":"NextToken",
+          "documentation":"<p> A pagination token. Set to null to start listing apps from the start. If non-null, a pagination token is returned in a result. Pass its value in here to list more projects. </p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "maxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p> The maximum number of records to list in a single response. </p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        }
+      },
+      "documentation":"<p> The request structure for the list domain associations request. </p>"
+    },
+    "ListDomainAssociationsResult":{
+      "type":"structure",
+      "required":["domainAssociations"],
+      "members":{
+        "domainAssociations":{
+          "shape":"DomainAssociations",
+          "documentation":"<p> A list of domain associations. </p>"
+        },
+        "nextToken":{
+          "shape":"NextToken",
+          "documentation":"<p> A pagination token. If non-null, a pagination token is returned in a result. Pass its value in another request to retrieve more entries. </p>"
+        }
+      },
+      "documentation":"<p> The result structure for the list domain association request. </p>"
+    },
+    "ListJobsRequest":{
+      "type":"structure",
+      "required":[
+        "appId",
+        "branchName"
+      ],
+      "members":{
+        "appId":{
+          "shape":"AppId",
+          "documentation":"<p> The unique ID for an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"appId"
+        },
+        "branchName":{
+          "shape":"BranchName",
+          "documentation":"<p> The name for a branch. </p>",
+          "location":"uri",
+          "locationName":"branchName"
+        },
+        "nextToken":{
+          "shape":"NextToken",
+          "documentation":"<p> A pagination token. Set to null to start listing steps from the start. If a non-null pagination token is returned in a result, pass its value in here to list more steps. </p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "maxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p> The maximum number of records to list in a single response. </p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        }
+      },
+      "documentation":"<p> The request structure for the list jobs request. </p>"
+    },
+    "ListJobsResult":{
+      "type":"structure",
+      "required":["jobSummaries"],
+      "members":{
+        "jobSummaries":{
+          "shape":"JobSummaries",
+          "documentation":"<p> The result structure for the list job result request. </p>"
+        },
+        "nextToken":{
+          "shape":"NextToken",
+          "documentation":"<p> A pagination token. If non-null the pagination token is returned in a result. Pass its value in another request to retrieve more entries. </p>"
+        }
+      },
+      "documentation":"<p> The maximum number of records to list in a single response. </p>"
+    },
+    "ListTagsForResourceRequest":{
+      "type":"structure",
+      "required":["resourceArn"],
+      "members":{
+        "resourceArn":{
+          "shape":"ResourceArn",
+          "documentation":"<p> The Amazon Resource Name (ARN) to use to list tags. </p>",
+          "location":"uri",
+          "locationName":"resourceArn"
+        }
+      },
+      "documentation":"<p> The request structure to use to list tags for a resource. </p>"
+    },
+    "ListTagsForResourceResponse":{
+      "type":"structure",
+      "members":{
+        "tags":{
+          "shape":"TagMap",
+          "documentation":"<p> A list of tags for the specified The Amazon Resource Name (ARN). </p>"
+        }
+      },
+      "documentation":"<p> The response for the list tags for resource request. </p>"
+    },
+    "ListWebhooksRequest":{
+      "type":"structure",
+      "required":["appId"],
+      "members":{
+        "appId":{
+          "shape":"AppId",
+          "documentation":"<p> The unique ID for an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"appId"
+        },
+        "nextToken":{
+          "shape":"NextToken",
+          "documentation":"<p> A pagination token. Set to null to start listing webhooks from the start. If non-null,the pagination token is returned in a result. Pass its value in here to list more webhooks. </p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "maxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p> The maximum number of records to list in a single response. </p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        }
+      },
+      "documentation":"<p> The request structure for the list webhooks request. </p>"
+    },
+    "ListWebhooksResult":{
+      "type":"structure",
+      "required":["webhooks"],
+      "members":{
+        "webhooks":{
+          "shape":"Webhooks",
+          "documentation":"<p> A list of webhooks. </p>"
+        },
+        "nextToken":{
+          "shape":"NextToken",
+          "documentation":"<p> A pagination token. If non-null, the pagination token is returned in a result. Pass its value in another request to retrieve more entries. </p>"
+        }
+      },
+      "documentation":"<p> The result structure for the list webhooks request. </p>"
+    },
+    "LogUrl":{
+      "type":"string",
+      "max":1000
+    },
+    "MD5Hash":{
+      "type":"string",
+      "max":32
+    },
+    "MaxResults":{
+      "type":"integer",
+      "max":100,
+      "min":0
+    },
+    "Name":{
+      "type":"string",
+      "max":255,
+      "min":1
+    },
+    "NextToken":{
+      "type":"string",
+      "max":2000
+    },
+    "NotFoundException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p> An entity was not found during an operation. </p>",
+      "error":{"httpStatusCode":404},
+      "exception":true
+    },
+    "OauthToken":{
+      "type":"string",
+      "max":1000,
+      "sensitive":true
+    },
+    "Platform":{
+      "type":"string",
+      "enum":["WEB"]
+    },
+    "ProductionBranch":{
+      "type":"structure",
+      "members":{
+        "lastDeployTime":{
+          "shape":"LastDeployTime",
+          "documentation":"<p> The last deploy time of the production branch. </p>"
+        },
+        "status":{
+          "shape":"Status",
+          "documentation":"<p> The status of the production branch. </p>"
+        },
+        "thumbnailUrl":{
+          "shape":"ThumbnailUrl",
+          "documentation":"<p> The thumbnail URL for the production branch. </p>"
+        },
+        "branchName":{
+          "shape":"BranchName",
+          "documentation":"<p> The branch name for the production branch. </p>"
+        }
+      },
+      "documentation":"<p> Describes the information about a production branch for an Amplify app. </p>"
+    },
+    "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"}
+      },
+      "documentation":"<p> An operation failed due to a non-existent resource. </p>",
+      "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",
+          "documentation":"<p> The unique ID for an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"appId"
+        },
+        "branchName":{
+          "shape":"BranchName",
+          "documentation":"<p> The name for the branch, for the job. </p>",
+          "location":"uri",
+          "locationName":"branchName"
+        },
+        "jobId":{
+          "shape":"JobId",
+          "documentation":"<p> The job ID for this deployment, generated by the create deployment request. </p>"
+        },
+        "sourceUrl":{
+          "shape":"SourceUrl",
+          "documentation":"<p> The source URL for this deployment, used when calling start deployment without create deployment. The source URL can be any HTTP GET URL that is publicly accessible and downloads a single .zip file. </p>"
+        }
+      },
+      "documentation":"<p> The request structure for the start a deployment request. </p>"
+    },
+    "StartDeploymentResult":{
+      "type":"structure",
+      "required":["jobSummary"],
+      "members":{
+        "jobSummary":{
+          "shape":"JobSummary",
+          "documentation":"<p> The summary for the job. </p>"
+        }
+      },
+      "documentation":"<p> The result structure for the start a deployment request. </p>"
+    },
+    "StartJobRequest":{
+      "type":"structure",
+      "required":[
+        "appId",
+        "branchName",
+        "jobType"
+      ],
+      "members":{
+        "appId":{
+          "shape":"AppId",
+          "documentation":"<p> The unique ID for an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"appId"
+        },
+        "branchName":{
+          "shape":"BranchName",
+          "documentation":"<p> The branch name for the job. </p>",
+          "location":"uri",
+          "locationName":"branchName"
+        },
+        "jobId":{
+          "shape":"JobId",
+          "documentation":"<p> The unique ID for an existing job. This is required if the value of <code>jobType</code> is <code>RETRY</code>. </p>"
+        },
+        "jobType":{
+          "shape":"JobType",
+          "documentation":"<p> Describes the type for the job. The job type <code>RELEASE</code> starts a new job with the latest change from the specified branch. This value is available only for apps that are connected to a repository. The job type <code>RETRY</code> retries an existing job. If the job type value is <code>RETRY</code>, the <code>jobId</code> is also required. </p>"
+        },
+        "jobReason":{
+          "shape":"JobReason",
+          "documentation":"<p> A descriptive reason for starting this job. </p>"
+        },
+        "commitId":{
+          "shape":"CommitId",
+          "documentation":"<p> The commit ID from a third-party repository provider for the job. </p>"
+        },
+        "commitMessage":{
+          "shape":"CommitMessage",
+          "documentation":"<p> The commit message from a third-party repository provider for the job. </p>"
+        },
+        "commitTime":{
+          "shape":"CommitTime",
+          "documentation":"<p> The commit date and time for the job. </p>"
+        }
+      },
+      "documentation":"<p> The request structure for the start job request. </p>"
+    },
+    "StartJobResult":{
+      "type":"structure",
+      "required":["jobSummary"],
+      "members":{
+        "jobSummary":{
+          "shape":"JobSummary",
+          "documentation":"<p> The summary for the job. </p>"
+        }
+      },
+      "documentation":"<p> The result structure for the run job request. </p>"
+    },
+    "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",
+          "documentation":"<p> The name of the execution step. </p>"
+        },
+        "startTime":{
+          "shape":"StartTime",
+          "documentation":"<p> The start date and time of the execution step. </p>"
+        },
+        "status":{
+          "shape":"JobStatus",
+          "documentation":"<p> The status of the execution step. </p>"
+        },
+        "endTime":{
+          "shape":"EndTime",
+          "documentation":"<p> The end date and time of the execution step. </p>"
+        },
+        "logUrl":{
+          "shape":"LogUrl",
+          "documentation":"<p> The URL to the logs for the execution step. </p>"
+        },
+        "artifactsUrl":{
+          "shape":"ArtifactsUrl",
+          "documentation":"<p> The URL to the artifact for the execution step. </p>"
+        },
+        "testArtifactsUrl":{
+          "shape":"TestArtifactsUrl",
+          "documentation":"<p> The URL to the test artifact for the execution step. </p>"
+        },
+        "testConfigUrl":{
+          "shape":"TestConfigUrl",
+          "documentation":"<p> The URL to the test configuration for the execution step. </p>"
+        },
+        "screenshots":{
+          "shape":"Screenshots",
+          "documentation":"<p> The list of screenshot URLs for the execution step, if relevant. </p>"
+        },
+        "statusReason":{
+          "shape":"StatusReason",
+          "documentation":"<p> The reason for the current step status. </p>"
+        },
+        "context":{
+          "shape":"Context",
+          "documentation":"<p> The context for the current step. Includes a build image if the step is build. </p>"
+        }
+      },
+      "documentation":"<p> Describes an execution step, for an execution job, for an Amplify app. </p>"
+    },
+    "StepName":{
+      "type":"string",
+      "max":255
+    },
+    "Steps":{
+      "type":"list",
+      "member":{"shape":"Step"}
+    },
+    "StopJobRequest":{
+      "type":"structure",
+      "required":[
+        "appId",
+        "branchName",
+        "jobId"
+      ],
+      "members":{
+        "appId":{
+          "shape":"AppId",
+          "documentation":"<p> The unique ID for an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"appId"
+        },
+        "branchName":{
+          "shape":"BranchName",
+          "documentation":"<p> The name for the branch, for the job. </p>",
+          "location":"uri",
+          "locationName":"branchName"
+        },
+        "jobId":{
+          "shape":"JobId",
+          "documentation":"<p> The unique id for the job. </p>",
+          "location":"uri",
+          "locationName":"jobId"
+        }
+      },
+      "documentation":"<p> The request structure for the stop job request. </p>"
+    },
+    "StopJobResult":{
+      "type":"structure",
+      "required":["jobSummary"],
+      "members":{
+        "jobSummary":{
+          "shape":"JobSummary",
+          "documentation":"<p> The summary for the job. </p>"
+        }
+      },
+      "documentation":"<p> The result structure for the stop job request. </p>"
+    },
+    "SubDomain":{
+      "type":"structure",
+      "required":[
+        "subDomainSetting",
+        "verified",
+        "dnsRecord"
+      ],
+      "members":{
+        "subDomainSetting":{
+          "shape":"SubDomainSetting",
+          "documentation":"<p> Describes the settings for the subdomain. </p>"
+        },
+        "verified":{
+          "shape":"Verified",
+          "documentation":"<p> The verified status of the subdomain </p>"
+        },
+        "dnsRecord":{
+          "shape":"DNSRecord",
+          "documentation":"<p> The DNS record for the subdomain. </p>"
+        }
+      },
+      "documentation":"<p> The subdomain for the domain association. </p>"
+    },
+    "SubDomainSetting":{
+      "type":"structure",
+      "required":[
+        "prefix",
+        "branchName"
+      ],
+      "members":{
+        "prefix":{
+          "shape":"DomainPrefix",
+          "documentation":"<p> The prefix setting for the subdomain. </p>"
+        },
+        "branchName":{
+          "shape":"BranchName",
+          "documentation":"<p> The branch name setting for the subdomain. </p>"
+        }
+      },
+      "documentation":"<p> Describes the settings for the subdomain. </p>"
+    },
+    "SubDomainSettings":{
+      "type":"list",
+      "member":{"shape":"SubDomainSetting"},
+      "max":255
+    },
+    "SubDomains":{
+      "type":"list",
+      "member":{"shape":"SubDomain"},
+      "max":255
+    },
+    "TTL":{
+      "type":"string",
+      "documentation":"<p> The content Time to Live (TTL) for the website in seconds. </p>"
+    },
+    "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",
+          "documentation":"<p> The Amazon Resource Name (ARN) to use to tag a resource. </p>",
+          "location":"uri",
+          "locationName":"resourceArn"
+        },
+        "tags":{
+          "shape":"TagMap",
+          "documentation":"<p> The tags used to tag the resource. </p>"
+        }
+      },
+      "documentation":"<p> The request structure to tag a resource with a tag key and value. </p>"
+    },
+    "TagResourceResponse":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> The response for the tag resource request. </p>"
+    },
+    "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"}
+      },
+      "documentation":"<p> An operation failed due to a lack of access. </p>",
+      "error":{"httpStatusCode":401},
+      "exception":true
+    },
+    "UntagResourceRequest":{
+      "type":"structure",
+      "required":[
+        "resourceArn",
+        "tagKeys"
+      ],
+      "members":{
+        "resourceArn":{
+          "shape":"ResourceArn",
+          "documentation":"<p> The Amazon Resource Name (ARN) to use to untag a resource. </p>",
+          "location":"uri",
+          "locationName":"resourceArn"
+        },
+        "tagKeys":{
+          "shape":"TagKeyList",
+          "documentation":"<p> The tag keys to use to untag a resource. </p>",
+          "location":"querystring",
+          "locationName":"tagKeys"
+        }
+      },
+      "documentation":"<p> The request structure for the untag resource request. </p>"
+    },
+    "UntagResourceResponse":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> The response for the untag resource request. </p>"
+    },
+    "UpdateAppRequest":{
+      "type":"structure",
+      "required":["appId"],
+      "members":{
+        "appId":{
+          "shape":"AppId",
+          "documentation":"<p> The unique ID for an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"appId"
+        },
+        "name":{
+          "shape":"Name",
+          "documentation":"<p> The name for an Amplify app. </p>"
+        },
+        "description":{
+          "shape":"Description",
+          "documentation":"<p> The description for an Amplify app. </p>"
+        },
+        "platform":{
+          "shape":"Platform",
+          "documentation":"<p> The platform for an Amplify app. </p>"
+        },
+        "iamServiceRoleArn":{
+          "shape":"ServiceRoleArn",
+          "documentation":"<p> The AWS Identity and Access Management (IAM) service role for an Amplify app. </p>"
+        },
+        "environmentVariables":{
+          "shape":"EnvironmentVariables",
+          "documentation":"<p> The environment variables for an Amplify app. </p>"
+        },
+        "enableBranchAutoBuild":{
+          "shape":"EnableAutoBuild",
+          "documentation":"<p> Enables branch auto-building for an Amplify app. </p>"
+        },
+        "enableBranchAutoDeletion":{
+          "shape":"EnableBranchAutoDeletion",
+          "documentation":"<p> Automatically disconnects a branch in the Amplify Console when you delete a branch from your Git repository. </p>"
+        },
+        "enableBasicAuth":{
+          "shape":"EnableBasicAuth",
+          "documentation":"<p> Enables basic authorization for an Amplify app. </p>"
+        },
+        "basicAuthCredentials":{
+          "shape":"BasicAuthCredentials",
+          "documentation":"<p> The basic authorization credentials for an Amplify app. </p>"
+        },
+        "customRules":{
+          "shape":"CustomRules",
+          "documentation":"<p> The custom redirect and rewrite rules for an Amplify app. </p>"
+        },
+        "buildSpec":{
+          "shape":"BuildSpec",
+          "documentation":"<p> The build specification (build spec) for an Amplify app. </p>"
+        },
+        "customHeaders":{
+          "shape":"CustomHeaders",
+          "documentation":"<p>The custom HTTP headers for an Amplify app.</p>"
+        },
+        "enableAutoBranchCreation":{
+          "shape":"EnableAutoBranchCreation",
+          "documentation":"<p> Enables automated branch creation for an Amplify app. </p>"
+        },
+        "autoBranchCreationPatterns":{
+          "shape":"AutoBranchCreationPatterns",
+          "documentation":"<p> Describes the automated branch creation glob patterns for an Amplify app. </p>"
+        },
+        "autoBranchCreationConfig":{
+          "shape":"AutoBranchCreationConfig",
+          "documentation":"<p> The automated branch creation configuration for an Amplify app. </p>"
+        },
+        "repository":{
+          "shape":"Repository",
+          "documentation":"<p> The name of the repository for an Amplify app </p>"
+        },
+        "oauthToken":{
+          "shape":"OauthToken",
+          "documentation":"<p> The OAuth token for a third-party source control system for an Amplify app. The token is used to create a webhook and a read-only deploy key. The OAuth token is not stored. </p>"
+        },
+        "accessToken":{
+          "shape":"AccessToken",
+          "documentation":"<p> The personal access token for a third-party source control system for an Amplify app. The token is used to create webhook and a read-only deploy key. The token is not stored. </p>"
+        }
+      },
+      "documentation":"<p> The request structure for the update app request. </p>"
+    },
+    "UpdateAppResult":{
+      "type":"structure",
+      "required":["app"],
+      "members":{
+        "app":{
+          "shape":"App",
+          "documentation":"<p> Represents the updated Amplify app. </p>"
+        }
+      },
+      "documentation":"<p> The result structure for an Amplify app update request. </p>"
+    },
+    "UpdateBranchRequest":{
+      "type":"structure",
+      "required":[
+        "appId",
+        "branchName"
+      ],
+      "members":{
+        "appId":{
+          "shape":"AppId",
+          "documentation":"<p> The unique ID for an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"appId"
+        },
+        "branchName":{
+          "shape":"BranchName",
+          "documentation":"<p> The name for the branch. </p>",
+          "location":"uri",
+          "locationName":"branchName"
+        },
+        "description":{
+          "shape":"Description",
+          "documentation":"<p> The description for the branch. </p>"
+        },
+        "framework":{
+          "shape":"Framework",
+          "documentation":"<p> The framework for the branch. </p>"
+        },
+        "stage":{
+          "shape":"Stage",
+          "documentation":"<p> Describes the current stage for the branch. </p>"
+        },
+        "enableNotification":{
+          "shape":"EnableNotification",
+          "documentation":"<p> Enables notifications for the branch. </p>"
+        },
+        "enableAutoBuild":{
+          "shape":"EnableAutoBuild",
+          "documentation":"<p> Enables auto building for the branch. </p>"
+        },
+        "environmentVariables":{
+          "shape":"EnvironmentVariables",
+          "documentation":"<p> The environment variables for the branch. </p>"
+        },
+        "basicAuthCredentials":{
+          "shape":"BasicAuthCredentials",
+          "documentation":"<p> The basic authorization credentials for the branch. </p>"
+        },
+        "enableBasicAuth":{
+          "shape":"EnableBasicAuth",
+          "documentation":"<p> Enables basic authorization for the branch. </p>"
+        },
+        "enablePerformanceMode":{
+          "shape":"EnablePerformanceMode",
+          "documentation":"<p>Enables performance mode for the branch.</p> <p>Performance mode optimizes for faster hosting performance by keeping content cached at the edge for a longer interval. When performance mode is enabled, hosting configuration or code changes can take up to 10 minutes to roll out. </p>"
+        },
+        "buildSpec":{
+          "shape":"BuildSpec",
+          "documentation":"<p> The build specification (build spec) for the branch. </p>"
+        },
+        "ttl":{
+          "shape":"TTL",
+          "documentation":"<p> The content Time to Live (TTL) for the website in seconds. </p>"
+        },
+        "displayName":{
+          "shape":"DisplayName",
+          "documentation":"<p> The display name for a branch. This is used as the default domain prefix. </p>"
+        },
+        "enablePullRequestPreview":{
+          "shape":"EnablePullRequestPreview",
+          "documentation":"<p> Enables pull request previews for this branch. </p>"
+        },
+        "pullRequestEnvironmentName":{
+          "shape":"PullRequestEnvironmentName",
+          "documentation":"<p> The Amplify environment name for the pull request. </p>"
+        },
+        "backendEnvironmentArn":{
+          "shape":"BackendEnvironmentArn",
+          "documentation":"<p> The Amazon Resource Name (ARN) for a backend environment that is part of an Amplify app. </p>"
+        }
+      },
+      "documentation":"<p> The request structure for the update branch request. </p>"
+    },
+    "UpdateBranchResult":{
+      "type":"structure",
+      "required":["branch"],
+      "members":{
+        "branch":{
+          "shape":"Branch",
+          "documentation":"<p> The branch for an Amplify app, which maps to a third-party repository branch. </p>"
+        }
+      },
+      "documentation":"<p> The result structure for the update branch request. </p>"
+    },
+    "UpdateDomainAssociationRequest":{
+      "type":"structure",
+      "required":[
+        "appId",
+        "domainName",
+        "subDomainSettings"
+      ],
+      "members":{
+        "appId":{
+          "shape":"AppId",
+          "documentation":"<p> The unique ID for an Amplify app. </p>",
+          "location":"uri",
+          "locationName":"appId"
+        },
+        "domainName":{
+          "shape":"DomainName",
+          "documentation":"<p> The name of the domain. </p>",
+          "location":"uri",
+          "locationName":"domainName"
+        },
+        "enableAutoSubDomain":{
+          "shape":"EnableAutoSubDomain",
+          "documentation":"<p> Enables the automated creation of subdomains for branches. </p>"
+        },
+        "subDomainSettings":{
+          "shape":"SubDomainSettings",
+          "documentation":"<p> Describes the settings for the subdomain. </p>"
+        },
+        "autoSubDomainCreationPatterns":{
+          "shape":"AutoSubDomainCreationPatterns",
+          "documentation":"<p> Sets the branch patterns for automatic subdomain creation. </p>"
+        },
+        "autoSubDomainIAMRole":{
+          "shape":"AutoSubDomainIAMRole",
+          "documentation":"<p> The required AWS Identity and Access Management (IAM) service role for the Amazon Resource Name (ARN) for automatically creating subdomains. </p>"
+        }
+      },
+      "documentation":"<p> The request structure for the update domain association request. </p>"
+    },
+    "UpdateDomainAssociationResult":{
+      "type":"structure",
+      "required":["domainAssociation"],
+      "members":{
+        "domainAssociation":{
+          "shape":"DomainAssociation",
+          "documentation":"<p> Describes a domain association, which associates a custom domain with an Amplify app. </p>"
+        }
+      },
+      "documentation":"<p> The result structure for the update domain association request. </p>"
+    },
+    "UpdateTime":{"type":"timestamp"},
+    "UpdateWebhookRequest":{
+      "type":"structure",
+      "required":["webhookId"],
+      "members":{
+        "webhookId":{
+          "shape":"WebhookId",
+          "documentation":"<p> The unique ID for a webhook. </p>",
+          "location":"uri",
+          "locationName":"webhookId"
+        },
+        "branchName":{
+          "shape":"BranchName",
+          "documentation":"<p> The name for a branch that is part of an Amplify app. </p>"
+        },
+        "description":{
+          "shape":"Description",
+          "documentation":"<p> The description for a webhook. </p>"
+        }
+      },
+      "documentation":"<p> The request structure for the update webhook request. </p>"
+    },
+    "UpdateWebhookResult":{
+      "type":"structure",
+      "required":["webhook"],
+      "members":{
+        "webhook":{
+          "shape":"Webhook",
+          "documentation":"<p> Describes a webhook that connects repository events to an Amplify app. </p>"
+        }
+      },
+      "documentation":"<p> The result structure for the update webhook request. </p>"
+    },
+    "UploadUrl":{
+      "type":"string",
+      "max":1000
+    },
+    "Verified":{"type":"boolean"},
+    "Webhook":{
+      "type":"structure",
+      "required":[
+        "webhookArn",
+        "webhookId",
+        "webhookUrl",
+        "branchName",
+        "description",
+        "createTime",
+        "updateTime"
+      ],
+      "members":{
+        "webhookArn":{
+          "shape":"WebhookArn",
+          "documentation":"<p> The Amazon Resource Name (ARN) for the webhook. </p>"
+        },
+        "webhookId":{
+          "shape":"WebhookId",
+          "documentation":"<p> The ID of the webhook. </p>"
+        },
+        "webhookUrl":{
+          "shape":"WebhookUrl",
+          "documentation":"<p> The URL of the webhook. </p>"
+        },
+        "branchName":{
+          "shape":"BranchName",
+          "documentation":"<p> The name for a branch that is part of an Amplify app. </p>"
+        },
+        "description":{
+          "shape":"Description",
+          "documentation":"<p> The description for a webhook. </p>"
+        },
+        "createTime":{
+          "shape":"CreateTime",
+          "documentation":"<p> The create date and time for a webhook. </p>"
+        },
+        "updateTime":{
+          "shape":"UpdateTime",
+          "documentation":"<p> Updates the date and time for a webhook. </p>"
+        }
+      },
+      "documentation":"<p> Describes a webhook that connects repository events to an Amplify app. </p>"
+    },
+    "WebhookArn":{
+      "type":"string",
+      "max":1000
+    },
+    "WebhookId":{
+      "type":"string",
+      "max":255
+    },
+    "WebhookUrl":{
+      "type":"string",
+      "max":1000
+    },
+    "Webhooks":{
+      "type":"list",
+      "member":{"shape":"Webhook"}
+    }
+  },
+  "documentation":"<p>Amplify enables developers to develop and deploy cloud-powered mobile and web apps. The Amplify Console provides a continuous delivery and hosting service for web applications. For more information, see the <a href=\"https://docs.aws.amazon.com/amplify/latest/userguide/welcome.html\">Amplify Console User Guide</a>. The Amplify Framework is a comprehensive set of SDKs, libraries, tools, and documentation for client app development. For more information, see the <a href=\"https://docs.amplify.aws/\">Amplify Framework.</a> </p>"
+}

+ 10 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/amplifybackend/2020-08-11/paginators-1.json

@@ -0,0 +1,10 @@
+{
+  "pagination": {
+    "ListBackendJobs": {
+      "input_token": "NextToken",
+      "output_token": "NextToken",
+      "limit_key": "MaxResults",
+      "result_key": "Jobs"
+    }
+  }
+}

+ 4091 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/amplifybackend/2020-08-11/service-2.json

@@ -0,0 +1,4091 @@
+{
+  "metadata": {
+    "apiVersion": "2020-08-11",
+    "endpointPrefix": "amplifybackend",
+    "signingName": "amplifybackend",
+    "serviceFullName": "AmplifyBackend",
+    "serviceId": "AmplifyBackend",
+    "protocol": "rest-json",
+    "jsonVersion": "1.1",
+    "uid": "amplifybackend-2020-08-11",
+    "signatureVersion": "v4"
+  },
+  "operations": {
+    "CloneBackend": {
+      "name": "CloneBackend",
+      "http": {
+        "method": "POST",
+        "requestUri": "/backend/{appId}/environments/{backendEnvironmentName}/clone",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "CloneBackendRequest"
+      },
+      "output": {
+        "shape": "CloneBackendResponse",
+        "documentation": "<p>200 response</p>"
+      },
+      "errors": [
+        {
+          "shape": "NotFoundException",
+          "documentation": "<p>404 response</p>"
+        },
+        {
+          "shape": "GatewayTimeoutException",
+          "documentation": "<p>504 response</p>"
+        },
+        {
+          "shape": "TooManyRequestsException",
+          "documentation": "<p>429 response</p>"
+        },
+        {
+          "shape": "BadRequestException",
+          "documentation": "<p>400 response</p>"
+        }
+      ],
+      "documentation": "<p>This operation clones an existing backend.</p>"
+    },
+    "CreateBackend": {
+      "name": "CreateBackend",
+      "http": {
+        "method": "POST",
+        "requestUri": "/backend",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "CreateBackendRequest"
+      },
+      "output": {
+        "shape": "CreateBackendResponse",
+        "documentation": "<p>200 response</p>"
+      },
+      "errors": [
+        {
+          "shape": "NotFoundException",
+          "documentation": "<p>404 response</p>"
+        },
+        {
+          "shape": "GatewayTimeoutException",
+          "documentation": "<p>504 response</p>"
+        },
+        {
+          "shape": "TooManyRequestsException",
+          "documentation": "<p>429 response</p>"
+        },
+        {
+          "shape": "BadRequestException",
+          "documentation": "<p>400 response</p>"
+        }
+      ],
+      "documentation": "<p>This operation creates a backend for an Amplify app. Backends are automatically created at the time of app creation.</p>"
+    },
+    "CreateBackendAPI": {
+      "name": "CreateBackendAPI",
+      "http": {
+        "method": "POST",
+        "requestUri": "/backend/{appId}/api",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "CreateBackendAPIRequest"
+      },
+      "output": {
+        "shape": "CreateBackendAPIResponse",
+        "documentation": "<p>200 response</p>"
+      },
+      "errors": [
+        {
+          "shape": "NotFoundException",
+          "documentation": "<p>404 response</p>"
+        },
+        {
+          "shape": "GatewayTimeoutException",
+          "documentation": "<p>504 response</p>"
+        },
+        {
+          "shape": "TooManyRequestsException",
+          "documentation": "<p>429 response</p>"
+        },
+        {
+          "shape": "BadRequestException",
+          "documentation": "<p>400 response</p>"
+        }
+      ],
+      "documentation": "<p>Creates a new backend API resource.</p>"
+    },
+    "CreateBackendAuth": {
+      "name": "CreateBackendAuth",
+      "http": {
+        "method": "POST",
+        "requestUri": "/backend/{appId}/auth",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "CreateBackendAuthRequest"
+      },
+      "output": {
+        "shape": "CreateBackendAuthResponse",
+        "documentation": "<p>200 response</p>"
+      },
+      "errors": [
+        {
+          "shape": "NotFoundException",
+          "documentation": "<p>404 response</p>"
+        },
+        {
+          "shape": "GatewayTimeoutException",
+          "documentation": "<p>504 response</p>"
+        },
+        {
+          "shape": "TooManyRequestsException",
+          "documentation": "<p>429 response</p>"
+        },
+        {
+          "shape": "BadRequestException",
+          "documentation": "<p>400 response</p>"
+        }
+      ],
+      "documentation": "<p>Creates a new backend authentication resource.</p>"
+    },
+    "CreateBackendConfig": {
+      "name": "CreateBackendConfig",
+      "http": {
+        "method": "POST",
+        "requestUri": "/backend/{appId}/config",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "CreateBackendConfigRequest"
+      },
+      "output": {
+        "shape": "CreateBackendConfigResponse",
+        "documentation": "<p>200 response</p>"
+      },
+      "errors": [
+        {
+          "shape": "NotFoundException",
+          "documentation": "<p>404 response</p>"
+        },
+        {
+          "shape": "GatewayTimeoutException",
+          "documentation": "<p>504 response</p>"
+        },
+        {
+          "shape": "TooManyRequestsException",
+          "documentation": "<p>429 response</p>"
+        },
+        {
+          "shape": "BadRequestException",
+          "documentation": "<p>400 response</p>"
+        }
+      ],
+      "documentation": "<p>Creates a config object for a backend.</p>"
+    },
+    "CreateToken": {
+      "name": "CreateToken",
+      "http": {
+        "method": "POST",
+        "requestUri": "/backend/{appId}/challenge",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "CreateTokenRequest"
+      },
+      "output": {
+        "shape": "CreateTokenResponse",
+        "documentation": "<p>200 response</p>"
+      },
+      "errors": [
+        {
+          "shape": "NotFoundException",
+          "documentation": "<p>404 response</p>"
+        },
+        {
+          "shape": "GatewayTimeoutException",
+          "documentation": "<p>504 response</p>"
+        },
+        {
+          "shape": "TooManyRequestsException",
+          "documentation": "<p>429 response</p>"
+        },
+        {
+          "shape": "BadRequestException",
+          "documentation": "<p>400 response</p>"
+        }
+      ],
+      "documentation": "<p>Generates a one-time challenge code to authenticate a user into your Amplify Admin UI.</p>"
+    },
+    "DeleteBackend": {
+      "name": "DeleteBackend",
+      "http": {
+        "method": "POST",
+        "requestUri": "/backend/{appId}/environments/{backendEnvironmentName}/remove",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "DeleteBackendRequest"
+      },
+      "output": {
+        "shape": "DeleteBackendResponse",
+        "documentation": "<p>200 response</p>"
+      },
+      "errors": [
+        {
+          "shape": "NotFoundException",
+          "documentation": "<p>404 response</p>"
+        },
+        {
+          "shape": "GatewayTimeoutException",
+          "documentation": "<p>504 response</p>"
+        },
+        {
+          "shape": "TooManyRequestsException",
+          "documentation": "<p>429 response</p>"
+        },
+        {
+          "shape": "BadRequestException",
+          "documentation": "<p>400 response</p>"
+        }
+      ],
+      "documentation": "<p>Removes an existing environment from your Amplify project.</p>"
+    },
+    "DeleteBackendAPI": {
+      "name": "DeleteBackendAPI",
+      "http": {
+        "method": "POST",
+        "requestUri": "/backend/{appId}/api/{backendEnvironmentName}/remove",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "DeleteBackendAPIRequest"
+      },
+      "output": {
+        "shape": "DeleteBackendAPIResponse",
+        "documentation": "<p>200 response</p>"
+      },
+      "errors": [
+        {
+          "shape": "NotFoundException",
+          "documentation": "<p>404 response</p>"
+        },
+        {
+          "shape": "GatewayTimeoutException",
+          "documentation": "<p>504 response</p>"
+        },
+        {
+          "shape": "TooManyRequestsException",
+          "documentation": "<p>429 response</p>"
+        },
+        {
+          "shape": "BadRequestException",
+          "documentation": "<p>400 response</p>"
+        }
+      ],
+      "documentation": "<p>Deletes an existing backend API resource.</p>"
+    },
+    "DeleteBackendAuth": {
+      "name": "DeleteBackendAuth",
+      "http": {
+        "method": "POST",
+        "requestUri": "/backend/{appId}/auth/{backendEnvironmentName}/remove",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "DeleteBackendAuthRequest"
+      },
+      "output": {
+        "shape": "DeleteBackendAuthResponse",
+        "documentation": "<p>200 response</p>"
+      },
+      "errors": [
+        {
+          "shape": "NotFoundException",
+          "documentation": "<p>404 response</p>"
+        },
+        {
+          "shape": "GatewayTimeoutException",
+          "documentation": "<p>504 response</p>"
+        },
+        {
+          "shape": "TooManyRequestsException",
+          "documentation": "<p>429 response</p>"
+        },
+        {
+          "shape": "BadRequestException",
+          "documentation": "<p>400 response</p>"
+        }
+      ],
+      "documentation": "<p>Deletes an existing backend authentication resource.</p>"
+    },
+    "DeleteToken": {
+      "name": "DeleteToken",
+      "http": {
+        "method": "POST",
+        "requestUri": "/backend/{appId}/challenge/{sessionId}/remove",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "DeleteTokenRequest"
+      },
+      "output": {
+        "shape": "DeleteTokenResponse",
+        "documentation": "<p>200 response</p>"
+      },
+      "errors": [
+        {
+          "shape": "NotFoundException",
+          "documentation": "<p>404 response</p>"
+        },
+        {
+          "shape": "GatewayTimeoutException",
+          "documentation": "<p>504 response</p>"
+        },
+        {
+          "shape": "TooManyRequestsException",
+          "documentation": "<p>429 response</p>"
+        },
+        {
+          "shape": "BadRequestException",
+          "documentation": "<p>400 response</p>"
+        }
+      ],
+      "documentation": "<p>Deletes the challenge token based on the given appId and sessionId.</p>"
+    },
+    "GenerateBackendAPIModels": {
+      "name": "GenerateBackendAPIModels",
+      "http": {
+        "method": "POST",
+        "requestUri": "/backend/{appId}/api/{backendEnvironmentName}/generateModels",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "GenerateBackendAPIModelsRequest"
+      },
+      "output": {
+        "shape": "GenerateBackendAPIModelsResponse",
+        "documentation": "<p>200 response</p>"
+      },
+      "errors": [
+        {
+          "shape": "NotFoundException",
+          "documentation": "<p>404 response</p>"
+        },
+        {
+          "shape": "GatewayTimeoutException",
+          "documentation": "<p>504 response</p>"
+        },
+        {
+          "shape": "TooManyRequestsException",
+          "documentation": "<p>429 response</p>"
+        },
+        {
+          "shape": "BadRequestException",
+          "documentation": "<p>400 response</p>"
+        }
+      ],
+      "documentation": "<p>Generates a model schema for an existing backend API resource.</p>"
+    },
+    "GetBackend": {
+      "name": "GetBackend",
+      "http": {
+        "method": "POST",
+        "requestUri": "/backend/{appId}/details",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "GetBackendRequest"
+      },
+      "output": {
+        "shape": "GetBackendResponse",
+        "documentation": "<p>200 response</p>"
+      },
+      "errors": [
+        {
+          "shape": "NotFoundException",
+          "documentation": "<p>404 response</p>"
+        },
+        {
+          "shape": "GatewayTimeoutException",
+          "documentation": "<p>504 response</p>"
+        },
+        {
+          "shape": "TooManyRequestsException",
+          "documentation": "<p>429 response</p>"
+        },
+        {
+          "shape": "BadRequestException",
+          "documentation": "<p>400 response</p>"
+        }
+      ],
+      "documentation": "<p>Provides project-level details for your Amplify UI project.</p>"
+    },
+    "GetBackendAPI": {
+      "name": "GetBackendAPI",
+      "http": {
+        "method": "POST",
+        "requestUri": "/backend/{appId}/api/{backendEnvironmentName}/details",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "GetBackendAPIRequest"
+      },
+      "output": {
+        "shape": "GetBackendAPIResponse",
+        "documentation": "<p>200 response</p>"
+      },
+      "errors": [
+        {
+          "shape": "NotFoundException",
+          "documentation": "<p>404 response</p>"
+        },
+        {
+          "shape": "GatewayTimeoutException",
+          "documentation": "<p>504 response</p>"
+        },
+        {
+          "shape": "TooManyRequestsException",
+          "documentation": "<p>429 response</p>"
+        },
+        {
+          "shape": "BadRequestException",
+          "documentation": "<p>400 response</p>"
+        }
+      ],
+      "documentation": "<p>Gets the details for a backend API.</p>"
+    },
+    "GetBackendAPIModels": {
+      "name": "GetBackendAPIModels",
+      "http": {
+        "method": "POST",
+        "requestUri": "/backend/{appId}/api/{backendEnvironmentName}/getModels",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "GetBackendAPIModelsRequest"
+      },
+      "output": {
+        "shape": "GetBackendAPIModelsResponse",
+        "documentation": "<p>200 response</p>"
+      },
+      "errors": [
+        {
+          "shape": "NotFoundException",
+          "documentation": "<p>404 response</p>"
+        },
+        {
+          "shape": "GatewayTimeoutException",
+          "documentation": "<p>504 response</p>"
+        },
+        {
+          "shape": "TooManyRequestsException",
+          "documentation": "<p>429 response</p>"
+        },
+        {
+          "shape": "BadRequestException",
+          "documentation": "<p>400 response</p>"
+        }
+      ],
+      "documentation": "<p>Generates a model schema for existing backend API resource.</p>"
+    },
+    "GetBackendAuth": {
+      "name": "GetBackendAuth",
+      "http": {
+        "method": "POST",
+        "requestUri": "/backend/{appId}/auth/{backendEnvironmentName}/details",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "GetBackendAuthRequest"
+      },
+      "output": {
+        "shape": "GetBackendAuthResponse",
+        "documentation": "<p>200 response</p>"
+      },
+      "errors": [
+        {
+          "shape": "NotFoundException",
+          "documentation": "<p>404 response</p>"
+        },
+        {
+          "shape": "GatewayTimeoutException",
+          "documentation": "<p>504 response</p>"
+        },
+        {
+          "shape": "TooManyRequestsException",
+          "documentation": "<p>429 response</p>"
+        },
+        {
+          "shape": "BadRequestException",
+          "documentation": "<p>400 response</p>"
+        }
+      ],
+      "documentation": "<p>Gets a backend auth details.</p>"
+    },
+    "GetBackendJob": {
+      "name": "GetBackendJob",
+      "http": {
+        "method": "GET",
+        "requestUri": "/backend/{appId}/job/{backendEnvironmentName}/{jobId}",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "GetBackendJobRequest"
+      },
+      "output": {
+        "shape": "GetBackendJobResponse",
+        "documentation": "<p>200 response</p>"
+      },
+      "errors": [
+        {
+          "shape": "NotFoundException",
+          "documentation": "<p>404 response</p>"
+        },
+        {
+          "shape": "GatewayTimeoutException",
+          "documentation": "<p>504 response</p>"
+        },
+        {
+          "shape": "TooManyRequestsException",
+          "documentation": "<p>429 response</p>"
+        },
+        {
+          "shape": "BadRequestException",
+          "documentation": "<p>400 response</p>"
+        }
+      ],
+      "documentation": "<p>Returns information about a specific job.</p>"
+    },
+    "GetToken": {
+      "name": "GetToken",
+      "http": {
+        "method": "GET",
+        "requestUri": "/backend/{appId}/challenge/{sessionId}",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "GetTokenRequest"
+      },
+      "output": {
+        "shape": "GetTokenResponse",
+        "documentation": "<p>200 response</p>"
+      },
+      "errors": [
+        {
+          "shape": "NotFoundException",
+          "documentation": "<p>404 response</p>"
+        },
+        {
+          "shape": "GatewayTimeoutException",
+          "documentation": "<p>504 response</p>"
+        },
+        {
+          "shape": "TooManyRequestsException",
+          "documentation": "<p>429 response</p>"
+        },
+        {
+          "shape": "BadRequestException",
+          "documentation": "<p>400 response</p>"
+        }
+      ],
+      "documentation": "<p>Gets the challenge token based on the given appId and sessionId.</p>"
+    },
+    "ImportBackendAuth": {
+      "name": "ImportBackendAuth",
+      "http": {
+        "method": "POST",
+        "requestUri": "/backend/{appId}/auth/{backendEnvironmentName}/import",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "ImportBackendAuthRequest"
+      },
+      "output": {
+        "shape": "ImportBackendAuthResponse",
+        "documentation": "<p>200 response</p>"
+      },
+      "errors": [
+        {
+          "shape": "NotFoundException",
+          "documentation": "<p>404 response</p>"
+        },
+        {
+          "shape": "GatewayTimeoutException",
+          "documentation": "<p>504 response</p>"
+        },
+        {
+          "shape": "TooManyRequestsException",
+          "documentation": "<p>429 response</p>"
+        },
+        {
+          "shape": "BadRequestException",
+          "documentation": "<p>400 response</p>"
+        }
+      ],
+      "documentation": "<p>Imports an existing backend authentication resource.</p>"
+    },
+    "ListBackendJobs": {
+      "name": "ListBackendJobs",
+      "http": {
+        "method": "POST",
+        "requestUri": "/backend/{appId}/job/{backendEnvironmentName}",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "ListBackendJobsRequest"
+      },
+      "output": {
+        "shape": "ListBackendJobsResponse",
+        "documentation": "<p>200 response</p>"
+      },
+      "errors": [
+        {
+          "shape": "NotFoundException",
+          "documentation": "<p>404 response</p>"
+        },
+        {
+          "shape": "GatewayTimeoutException",
+          "documentation": "<p>504 response</p>"
+        },
+        {
+          "shape": "TooManyRequestsException",
+          "documentation": "<p>429 response</p>"
+        },
+        {
+          "shape": "BadRequestException",
+          "documentation": "<p>400 response</p>"
+        }
+      ],
+      "documentation": "<p>Lists the jobs for the backend of an Amplify app.</p>"
+    },
+    "RemoveAllBackends": {
+      "name": "RemoveAllBackends",
+      "http": {
+        "method": "POST",
+        "requestUri": "/backend/{appId}/remove",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "RemoveAllBackendsRequest"
+      },
+      "output": {
+        "shape": "RemoveAllBackendsResponse",
+        "documentation": "<p>200 response</p>"
+      },
+      "errors": [
+        {
+          "shape": "NotFoundException",
+          "documentation": "<p>404 response</p>"
+        },
+        {
+          "shape": "GatewayTimeoutException",
+          "documentation": "<p>504 response</p>"
+        },
+        {
+          "shape": "TooManyRequestsException",
+          "documentation": "<p>429 response</p>"
+        },
+        {
+          "shape": "BadRequestException",
+          "documentation": "<p>400 response</p>"
+        }
+      ],
+      "documentation": "<p>Removes all backend environments from your Amplify project.</p>"
+    },
+    "RemoveBackendConfig": {
+      "name": "RemoveBackendConfig",
+      "http": {
+        "method": "POST",
+        "requestUri": "/backend/{appId}/config/remove",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "RemoveBackendConfigRequest"
+      },
+      "output": {
+        "shape": "RemoveBackendConfigResponse",
+        "documentation": "<p>200 response</p>"
+      },
+      "errors": [
+        {
+          "shape": "NotFoundException",
+          "documentation": "<p>404 response</p>"
+        },
+        {
+          "shape": "GatewayTimeoutException",
+          "documentation": "<p>504 response</p>"
+        },
+        {
+          "shape": "TooManyRequestsException",
+          "documentation": "<p>429 response</p>"
+        },
+        {
+          "shape": "BadRequestException",
+          "documentation": "<p>400 response</p>"
+        }
+      ],
+      "documentation": "<p>Removes the AWS resources required to access the Amplify Admin UI.</p>"
+    },
+    "UpdateBackendAPI": {
+      "name": "UpdateBackendAPI",
+      "http": {
+        "method": "POST",
+        "requestUri": "/backend/{appId}/api/{backendEnvironmentName}",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "UpdateBackendAPIRequest"
+      },
+      "output": {
+        "shape": "UpdateBackendAPIResponse",
+        "documentation": "<p>200 response</p>"
+      },
+      "errors": [
+        {
+          "shape": "NotFoundException",
+          "documentation": "<p>404 response</p>"
+        },
+        {
+          "shape": "GatewayTimeoutException",
+          "documentation": "<p>504 response</p>"
+        },
+        {
+          "shape": "TooManyRequestsException",
+          "documentation": "<p>429 response</p>"
+        },
+        {
+          "shape": "BadRequestException",
+          "documentation": "<p>400 response</p>"
+        }
+      ],
+      "documentation": "<p>Updates an existing backend API resource.</p>"
+    },
+    "UpdateBackendAuth": {
+      "name": "UpdateBackendAuth",
+      "http": {
+        "method": "POST",
+        "requestUri": "/backend/{appId}/auth/{backendEnvironmentName}",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "UpdateBackendAuthRequest"
+      },
+      "output": {
+        "shape": "UpdateBackendAuthResponse",
+        "documentation": "<p>200 response</p>"
+      },
+      "errors": [
+        {
+          "shape": "NotFoundException",
+          "documentation": "<p>404 response</p>"
+        },
+        {
+          "shape": "GatewayTimeoutException",
+          "documentation": "<p>504 response</p>"
+        },
+        {
+          "shape": "TooManyRequestsException",
+          "documentation": "<p>429 response</p>"
+        },
+        {
+          "shape": "BadRequestException",
+          "documentation": "<p>400 response</p>"
+        }
+      ],
+      "documentation": "<p>Updates an existing backend authentication resource.</p>"
+    },
+    "UpdateBackendConfig": {
+      "name": "UpdateBackendConfig",
+      "http": {
+        "method": "POST",
+        "requestUri": "/backend/{appId}/config/update",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "UpdateBackendConfigRequest"
+      },
+      "output": {
+        "shape": "UpdateBackendConfigResponse",
+        "documentation": "<p>200 response</p>"
+      },
+      "errors": [
+        {
+          "shape": "NotFoundException",
+          "documentation": "<p>404 response</p>"
+        },
+        {
+          "shape": "GatewayTimeoutException",
+          "documentation": "<p>504 response</p>"
+        },
+        {
+          "shape": "TooManyRequestsException",
+          "documentation": "<p>429 response</p>"
+        },
+        {
+          "shape": "BadRequestException",
+          "documentation": "<p>400 response</p>"
+        }
+      ],
+      "documentation": "<p>Updates the AWS resources required to access the Amplify Admin UI.</p>"
+    },
+    "UpdateBackendJob": {
+      "name": "UpdateBackendJob",
+      "http": {
+        "method": "POST",
+        "requestUri": "/backend/{appId}/job/{backendEnvironmentName}/{jobId}",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "UpdateBackendJobRequest"
+      },
+      "output": {
+        "shape": "UpdateBackendJobResponse",
+        "documentation": "<p>200 response</p>"
+      },
+      "errors": [
+        {
+          "shape": "NotFoundException",
+          "documentation": "<p>404 response</p>"
+        },
+        {
+          "shape": "GatewayTimeoutException",
+          "documentation": "<p>504 response</p>"
+        },
+        {
+          "shape": "TooManyRequestsException",
+          "documentation": "<p>429 response</p>"
+        },
+        {
+          "shape": "BadRequestException",
+          "documentation": "<p>400 response</p>"
+        }
+      ],
+      "documentation": "<p>Updates a specific job.</p>"
+    }
+  },
+  "shapes": {
+    "AuthResources": {
+      "type": "string",
+      "enum": [
+        "USER_POOL_ONLY",
+        "IDENTITY_POOL_AND_USER_POOL"
+      ]
+    },
+    "BackendAPIAppSyncAuthSettings": {
+      "type": "structure",
+      "members": {
+        "CognitoUserPoolId": {
+          "shape": "__string",
+          "locationName": "cognitoUserPoolId",
+          "documentation": "<p>The Amazon Cognito user pool ID, if Amazon Cognito was used as an authentication setting to access your data models.</p>"
+        },
+        "Description": {
+          "shape": "__string",
+          "locationName": "description",
+          "documentation": "<p>The API key description for API_KEY, if it was used as an authentication mechanism to access your data models.</p>"
+        },
+        "ExpirationTime": {
+          "shape": "__double",
+          "locationName": "expirationTime",
+          "documentation": "<p>The API key expiration time for API_KEY, if it was used as an authentication mechanism to access your data models.</p>"
+        },
+        "OpenIDAuthTTL": {
+          "shape": "__string",
+          "locationName": "openIDAuthTTL",
+          "documentation": "<p>The expiry time for the OpenID authentication mechanism.</p>"
+        },
+        "OpenIDClientId": {
+          "shape": "__string",
+          "locationName": "openIDClientId",
+          "documentation": "<p>The clientID for openID, if openID was used as an authentication setting to access your data models.</p>"
+        },
+        "OpenIDIatTTL": {
+          "shape": "__string",
+          "locationName": "openIDIatTTL",
+          "documentation": "<p>The expiry time for the OpenID authentication mechanism.</p>"
+        },
+        "OpenIDIssueURL": {
+          "shape": "__string",
+          "locationName": "openIDIssueURL",
+          "documentation": "<p>The openID issuer URL, if openID was used as an authentication setting to access your data models.</p>"
+        },
+        "OpenIDProviderName": {
+          "shape": "__string",
+          "locationName": "openIDProviderName",
+          "documentation": "<p>The OpenID provider name, if OpenID was used as an authentication mechanism to access your data models.</p>"
+        }
+      },
+      "documentation": "<p>The authentication settings for accessing provisioned data models in your Amplify project.</p>"
+    },
+    "BackendAPIAuthType": {
+      "type": "structure",
+      "members": {
+        "Mode": {
+          "shape": "Mode",
+          "locationName": "mode",
+          "documentation": "<p>Describes the authentication mode.</p>"
+        },
+        "Settings": {
+          "shape": "BackendAPIAppSyncAuthSettings",
+          "locationName": "settings",
+          "documentation": "<p>Describes settings for the authentication mode.</p>"
+        }
+      },
+      "documentation": "<p>Describes the auth types for your configured data models.</p>"
+    },
+    "BackendAPICodegenReqObj": {
+      "type": "structure",
+      "members": {
+        "ResourceName": {
+          "shape": "__string",
+          "locationName": "resourceName",
+          "documentation": "<p>The name of this resource.</p>"
+        }
+      },
+      "documentation": "<p>The request object for this operation.</p>",
+      "required": [
+        "ResourceName"
+      ]
+    },
+    "BackendAPICodegenRespObj": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        },
+        "JobId": {
+          "shape": "__string",
+          "locationName": "jobId",
+          "documentation": "<p>The ID for the job.</p>"
+        },
+        "Operation": {
+          "shape": "__string",
+          "locationName": "operation",
+          "documentation": "<p>The name of the operation.</p>"
+        },
+        "Status": {
+          "shape": "__string",
+          "locationName": "status",
+          "documentation": "<p>The current status of the request.</p>"
+        }
+      },
+      "documentation": "<p>The response object sent when a backend is created.</p>",
+      "required": [
+        "AppId",
+        "BackendEnvironmentName"
+      ]
+    },
+    "BackendAPIConflictResolution": {
+      "type": "structure",
+      "members": {
+        "ResolutionStrategy": {
+          "shape": "ResolutionStrategy",
+          "locationName": "resolutionStrategy",
+          "documentation": "<p>The strategy for conflict resolution.</p>"
+        }
+      },
+      "documentation": "<p>Describes the conflict resolution configuration for your data model configured in your Amplify project.</p>"
+    },
+    "BackendAPIReqObj": {
+      "type": "structure",
+      "members": {
+        "ResourceConfig": {
+          "shape": "BackendAPIResourceConfig",
+          "locationName": "resourceConfig",
+          "documentation": "<p>Defines the resource configuration for the data model in your Amplify project.</p>"
+        },
+        "ResourceName": {
+          "shape": "__string",
+          "locationName": "resourceName",
+          "documentation": "<p>The name of this resource.</p>"
+        }
+      },
+      "documentation": "<p>The request object for this operation.</p>",
+      "required": [
+        "ResourceName"
+      ]
+    },
+    "BackendAPIResourceConfig": {
+      "type": "structure",
+      "members": {
+        "AdditionalAuthTypes": {
+          "shape": "ListOfBackendAPIAuthType",
+          "locationName": "additionalAuthTypes",
+          "documentation": "<p>Additional authentication methods used to interact with your data models.</p>"
+        },
+        "ApiName": {
+          "shape": "__string",
+          "locationName": "apiName",
+          "documentation": "<p>The API name used to interact with the data model, configured as a part of the amplify project.</p>"
+        },
+        "ConflictResolution": {
+          "shape": "BackendAPIConflictResolution",
+          "locationName": "conflictResolution",
+          "documentation": "<p>The conflict resolution strategy for your data stored in the data models.</p>"
+        },
+        "DefaultAuthType": {
+          "shape": "BackendAPIAuthType",
+          "locationName": "defaultAuthType",
+          "documentation": "<p>The default authentication type for interacting with the configured data models in your Amplify project.</p>"
+        },
+        "Service": {
+          "shape": "__string",
+          "locationName": "service",
+          "documentation": "<p>The service used to provision and interact with the data model.</p>"
+        },
+        "TransformSchema": {
+          "shape": "__string",
+          "locationName": "transformSchema",
+          "documentation": "<p>The definition of the data model in the annotated transform of the GraphQL schema.</p>"
+        }
+      },
+      "documentation": "<p>The resource config for the data model, configured as a part of the Amplify project.</p>"
+    },
+    "BackendAPIRespObj": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        },
+        "JobId": {
+          "shape": "__string",
+          "locationName": "jobId",
+          "documentation": "<p>The ID for the job.</p>"
+        },
+        "Operation": {
+          "shape": "__string",
+          "locationName": "operation",
+          "documentation": "<p>The name of the operation.</p>"
+        },
+        "Status": {
+          "shape": "__string",
+          "locationName": "status",
+          "documentation": "<p>The current status of the request.</p>"
+        }
+      },
+      "documentation": "<p>The response object sent when a backend is created.</p>",
+      "required": [
+        "AppId",
+        "BackendEnvironmentName"
+      ]
+    },
+    "BackendAuthRespObj": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        },
+        "JobId": {
+          "shape": "__string",
+          "locationName": "jobId",
+          "documentation": "<p>The ID for the job.</p>"
+        },
+        "Operation": {
+          "shape": "__string",
+          "locationName": "operation",
+          "documentation": "<p>The name of the operation.</p>"
+        },
+        "Status": {
+          "shape": "__string",
+          "locationName": "status",
+          "documentation": "<p>The current status of the request.</p>"
+        }
+      },
+      "documentation": "<p>The response object for this operation.</p>",
+      "required": [
+        "AppId",
+        "BackendEnvironmentName"
+      ]
+    },
+    "BackendAuthSocialProviderConfig": {
+      "type": "structure",
+      "members": {
+        "ClientId": {
+          "shape": "__string",
+          "locationName": "client_id",
+          "documentation": "<p>Describes the client_id which can be obtained from the third-party social federation provider.</p>"
+        },
+        "ClientSecret": {
+          "shape": "__string",
+          "locationName": "client_secret",
+          "documentation": "<p>Describes the client_secret which can be obtained from third-party social federation providers.</p>"
+        }
+      },
+      "documentation": "<p>Describes third-party social federation configurations for allowing your app users to sign in using OAuth.</p>"
+    },
+    "BackendConfigRespObj": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendManagerAppId": {
+          "shape": "__string",
+          "locationName": "backendManagerAppId",
+          "documentation": "<p>The app ID for the backend manager.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        },
+        "LoginAuthConfig": {
+          "shape": "LoginAuthConfigReqObj",
+          "locationName": "loginAuthConfig",
+          "documentation": "<p>Describes the Amazon Cognito configurations for the Admin UI auth resource to log in with.</p>"
+        }
+      },
+      "documentation": "<p>The response object for this operation.</p>"
+    },
+    "BackendJobReqObj": {
+      "type": "structure",
+      "members": {
+        "Operation": {
+          "shape": "__string",
+          "locationName": "operation",
+          "documentation": "<p>Filters the list of response objects to only include those with the specified operation name.</p>"
+        },
+        "Status": {
+          "shape": "__string",
+          "locationName": "status",
+          "documentation": "<p>Filters the list of response objects to include only those with the specified status.</p>"
+        }
+      },
+      "documentation": "<p>The request object for this operation.</p>"
+    },
+    "BackendJobRespObj": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "CreateTime": {
+          "shape": "__string",
+          "locationName": "createTime",
+          "documentation": "<p>The time when the job was created.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        },
+        "JobId": {
+          "shape": "__string",
+          "locationName": "jobId",
+          "documentation": "<p>The ID for the job.</p>"
+        },
+        "Operation": {
+          "shape": "__string",
+          "locationName": "operation",
+          "documentation": "<p>The name of the operation.</p>"
+        },
+        "Status": {
+          "shape": "__string",
+          "locationName": "status",
+          "documentation": "<p>The current status of the request.</p>"
+        },
+        "UpdateTime": {
+          "shape": "__string",
+          "locationName": "updateTime",
+          "documentation": "<p>The time when the job was last updated.</p>"
+        }
+      },
+      "documentation": "<p>The response object for this operation.</p>",
+      "required": [
+        "AppId",
+        "BackendEnvironmentName"
+      ]
+    },
+    "BadRequestException": {
+      "type": "structure",
+      "members": {
+        "Message": {
+          "shape": "__string",
+          "locationName": "message",
+          "documentation": "<p>An error message to inform that the request failed.</p>"
+        }
+      },
+      "documentation": "<p>An error returned if a request is not formed properly.</p>",
+      "exception": true,
+      "error": {
+        "httpStatusCode": 400
+      }
+    },
+    "CloneBackendReqObj": {
+      "type": "structure",
+      "members": {
+        "TargetEnvironmentName": {
+          "shape": "__string",
+          "locationName": "targetEnvironmentName",
+          "documentation": "<p>The name of the destination backend environment to be created.</p>"
+        }
+      },
+      "documentation": "<p>The request object for this operation.</p>",
+      "required": [
+        "TargetEnvironmentName"
+      ]
+    },
+    "CloneBackendRequest": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "TargetEnvironmentName": {
+          "shape": "__string",
+          "locationName": "targetEnvironmentName",
+          "documentation": "<p>The name of the destination backend environment to be created.</p>"
+        }
+      },
+      "documentation": "<p>The request body for CloneBackend.</p>",
+      "required": [
+        "AppId",
+        "BackendEnvironmentName",
+        "TargetEnvironmentName"
+      ]
+    },
+    "CloneBackendRespObj": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        },
+        "JobId": {
+          "shape": "__string",
+          "locationName": "jobId",
+          "documentation": "<p>The ID for the job.</p>"
+        },
+        "Operation": {
+          "shape": "__string",
+          "locationName": "operation",
+          "documentation": "<p>The name of the operation.</p>"
+        },
+        "Status": {
+          "shape": "__string",
+          "locationName": "status",
+          "documentation": "<p>The current status of the request.</p>"
+        }
+      },
+      "documentation": "<p>The response object sent when a backend is created.</p>",
+      "required": [
+        "AppId",
+        "BackendEnvironmentName"
+      ]
+    },
+    "CloneBackendResponse": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        },
+        "JobId": {
+          "shape": "__string",
+          "locationName": "jobId",
+          "documentation": "<p>The ID for the job.</p>"
+        },
+        "Operation": {
+          "shape": "__string",
+          "locationName": "operation",
+          "documentation": "<p>The name of the operation.</p>"
+        },
+        "Status": {
+          "shape": "__string",
+          "locationName": "status",
+          "documentation": "<p>The current status of the request.</p>"
+        }
+      }
+    },
+    "CreateBackendAPIReqObj": {
+      "type": "structure",
+      "members": {
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "ResourceConfig": {
+          "shape": "BackendAPIResourceConfig",
+          "locationName": "resourceConfig",
+          "documentation": "<p>The resource configuration for this request.</p>"
+        },
+        "ResourceName": {
+          "shape": "__string",
+          "locationName": "resourceName",
+          "documentation": "<p>The name of this resource.</p>"
+        }
+      },
+      "documentation": "<p>The request object for this operation.</p>",
+      "required": [
+        "ResourceName",
+        "BackendEnvironmentName",
+        "ResourceConfig"
+      ]
+    },
+    "CreateBackendAPIRequest": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "ResourceConfig": {
+          "shape": "BackendAPIResourceConfig",
+          "locationName": "resourceConfig",
+          "documentation": "<p>The resource configuration for this request.</p>"
+        },
+        "ResourceName": {
+          "shape": "__string",
+          "locationName": "resourceName",
+          "documentation": "<p>The name of this resource.</p>"
+        }
+      },
+      "documentation": "<p>The request body for CreateBackendAPI.</p>",
+      "required": [
+        "AppId",
+        "ResourceName",
+        "BackendEnvironmentName",
+        "ResourceConfig"
+      ]
+    },
+    "CreateBackendAPIResponse": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        },
+        "JobId": {
+          "shape": "__string",
+          "locationName": "jobId",
+          "documentation": "<p>The ID for the job.</p>"
+        },
+        "Operation": {
+          "shape": "__string",
+          "locationName": "operation",
+          "documentation": "<p>The name of the operation.</p>"
+        },
+        "Status": {
+          "shape": "__string",
+          "locationName": "status",
+          "documentation": "<p>The current status of the request.</p>"
+        }
+      }
+    },
+    "CreateBackendAuthForgotPasswordConfig": {
+      "type": "structure",
+      "members": {
+        "DeliveryMethod": {
+          "shape": "DeliveryMethod",
+          "locationName": "deliveryMethod",
+          "documentation": "<p>Describes which mode to use (either SMS or email) to deliver messages to app users that want to recover their password.</p>"
+        },
+        "EmailSettings": {
+          "shape": "EmailSettings",
+          "locationName": "emailSettings",
+          "documentation": "<p>The configuration for the email sent when an app user forgets their password.</p>"
+        },
+        "SmsSettings": {
+          "shape": "SmsSettings",
+          "locationName": "smsSettings",
+          "documentation": "<p>The configuration for the SMS message sent when an app user forgets their password.</p>"
+        }
+      },
+      "documentation": "<p>Describes the forgot password policy for authenticating into the Amplify app.</p>",
+      "required": [
+        "DeliveryMethod"
+      ]
+    },
+    "CreateBackendAuthIdentityPoolConfig": {
+      "type": "structure",
+      "members": {
+        "IdentityPoolName": {
+          "shape": "__string",
+          "locationName": "identityPoolName",
+          "documentation": "<p>Name of the Amazon Cognito identity pool used for authorization.</p>"
+        },
+        "UnauthenticatedLogin": {
+          "shape": "__boolean",
+          "locationName": "unauthenticatedLogin",
+          "documentation": "<p>Set to true or false based on whether you want to enable guest authorization to your Amplify app.</p>"
+        }
+      },
+      "documentation": "<p>Describes authorization configurations for the auth resources, configured as a part of your Amplify project.</p>",
+      "required": [
+        "UnauthenticatedLogin",
+        "IdentityPoolName"
+      ]
+    },
+    "CreateBackendAuthMFAConfig": {
+      "type": "structure",
+      "members": {
+        "MFAMode": {
+          "shape": "MFAMode",
+          "documentation": "<p>Describes whether MFA should be [ON, OFF, OPTIONAL] for authentication in your Amplify project.</p>"
+        },
+        "Settings": {
+          "shape": "Settings",
+          "locationName": "settings",
+          "documentation": "<p>Describes the configuration settings and methods for your Amplify app users to use MFA.</p>"
+        }
+      },
+      "documentation": "<p>Describes whether multi-factor authentication policies should be applied for your Amazon Cognito user pool configured as a part of your Amplify project.</p>",
+      "required": [
+        "MFAMode"
+      ]
+    },
+    "CreateBackendAuthOAuthConfig": {
+      "type": "structure",
+      "members": {
+        "DomainPrefix": {
+          "shape": "__string",
+          "locationName": "domainPrefix",
+          "documentation": "<p>The domain prefix for your Amplify app.</p>"
+        },
+        "OAuthGrantType": {
+          "shape": "OAuthGrantType",
+          "locationName": "oAuthGrantType",
+          "documentation": "<p>The OAuth grant type that you use to allow app users to authenticate from your Amplify app.</p>"
+        },
+        "OAuthScopes": {
+          "shape": "ListOfOAuthScopesElement",
+          "locationName": "oAuthScopes",
+          "documentation": "<p>List of OAuth-related flows used to allow your app users to authenticate from your Amplify app.</p>"
+        },
+        "RedirectSignInURIs": {
+          "shape": "ListOf__string",
+          "locationName": "redirectSignInURIs",
+          "documentation": "<p>The redirected URI for signing in to your Amplify app.</p>"
+        },
+        "RedirectSignOutURIs": {
+          "shape": "ListOf__string",
+          "locationName": "redirectSignOutURIs",
+          "documentation": "<p>Redirect URLs used by OAuth when a user signs out of an Amplify app.</p>"
+        },
+        "SocialProviderSettings": {
+          "shape": "SocialProviderSettings",
+          "locationName": "socialProviderSettings",
+          "documentation": "<p>The settings for using social providers to access your Amplify app.</p>"
+        }
+      },
+      "documentation": "<p>Creates the OAuth configuration for your Amplify project.</p>",
+      "required": [
+        "RedirectSignOutURIs",
+        "RedirectSignInURIs",
+        "OAuthGrantType",
+        "OAuthScopes"
+      ]
+    },
+    "CreateBackendAuthPasswordPolicyConfig": {
+      "type": "structure",
+      "members": {
+        "AdditionalConstraints": {
+          "shape": "ListOfAdditionalConstraintsElement",
+          "locationName": "additionalConstraints",
+          "documentation": "<p>Additional constraints for the password used to access the backend of your Amplify project.</p>"
+        },
+        "MinimumLength": {
+          "shape": "__double",
+          "locationName": "minimumLength",
+          "documentation": "<p>The minimum length of the password used to access the backend of your Amplify project.</p>"
+        }
+      },
+      "documentation": "<p>The password policy configuration for the backend to your Amplify project.</p>",
+      "required": [
+        "MinimumLength"
+      ]
+    },
+    "CreateBackendAuthReqObj": {
+      "type": "structure",
+      "members": {
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "ResourceConfig": {
+          "shape": "CreateBackendAuthResourceConfig",
+          "locationName": "resourceConfig",
+          "documentation": "<p>The resource configuration for this request object.</p>"
+        },
+        "ResourceName": {
+          "shape": "__string",
+          "locationName": "resourceName",
+          "documentation": "<p>The name of this resource.</p>"
+        }
+      },
+      "documentation": "<p>The request object for this operation.</p>",
+      "required": [
+        "ResourceName",
+        "BackendEnvironmentName",
+        "ResourceConfig"
+      ]
+    },
+    "CreateBackendAuthRequest": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "ResourceConfig": {
+          "shape": "CreateBackendAuthResourceConfig",
+          "locationName": "resourceConfig",
+          "documentation": "<p>The resource configuration for this request object.</p>"
+        },
+        "ResourceName": {
+          "shape": "__string",
+          "locationName": "resourceName",
+          "documentation": "<p>The name of this resource.</p>"
+        }
+      },
+      "documentation": "<p>The request body for CreateBackendAuth.</p>",
+      "required": [
+        "AppId",
+        "ResourceName",
+        "BackendEnvironmentName",
+        "ResourceConfig"
+      ]
+    },
+    "CreateBackendAuthResourceConfig": {
+      "type": "structure",
+      "members": {
+        "AuthResources": {
+          "shape": "AuthResources",
+          "locationName": "authResources",
+          "documentation": "<p>Defines whether you want to configure only authentication or both authentication and authorization settings.</p>"
+        },
+        "IdentityPoolConfigs": {
+          "shape": "CreateBackendAuthIdentityPoolConfig",
+          "locationName": "identityPoolConfigs",
+          "documentation": "<p>Describes the authorization configuration for the Amazon Cognito identity pool, provisioned as a part of your auth resource in the Amplify project.</p>"
+        },
+        "Service": {
+          "shape": "Service",
+          "locationName": "service",
+          "documentation": "<p>Defines the service name to use when configuring an authentication resource in your Amplify project.</p>"
+        },
+        "UserPoolConfigs": {
+          "shape": "CreateBackendAuthUserPoolConfig",
+          "locationName": "userPoolConfigs",
+          "documentation": "<p>Describes authentication configuration for the Amazon Cognito user pool, provisioned as a part of your auth resource in the Amplify project.</p>"
+        }
+      },
+      "documentation": "<p>Defines the resource configuration when creating an auth resource in your Amplify project.</p>",
+      "required": [
+        "AuthResources",
+        "UserPoolConfigs",
+        "Service"
+      ]
+    },
+    "CreateBackendAuthResponse": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        },
+        "JobId": {
+          "shape": "__string",
+          "locationName": "jobId",
+          "documentation": "<p>The ID for the job.</p>"
+        },
+        "Operation": {
+          "shape": "__string",
+          "locationName": "operation",
+          "documentation": "<p>The name of the operation.</p>"
+        },
+        "Status": {
+          "shape": "__string",
+          "locationName": "status",
+          "documentation": "<p>The current status of the request.</p>"
+        }
+      }
+    },
+    "CreateBackendAuthUserPoolConfig": {
+      "type": "structure",
+      "members": {
+        "ForgotPassword": {
+          "shape": "CreateBackendAuthForgotPasswordConfig",
+          "locationName": "forgotPassword",
+          "documentation": "<p>Describes the forgotten password policy for your Amazon Cognito user pool, configured as a part of your Amplify project.</p>"
+        },
+        "Mfa": {
+          "shape": "CreateBackendAuthMFAConfig",
+          "locationName": "mfa",
+          "documentation": "<p>Describes whether multi-factor authentication policies should be applied for your Amazon Cognito user pool configured as a part of your Amplify project.</p>"
+        },
+        "OAuth": {
+          "shape": "CreateBackendAuthOAuthConfig",
+          "locationName": "oAuth",
+          "documentation": "<p>Describes the OAuth policy and rules for your Amazon Cognito user pool, configured as a part of your Amplify project.</p>"
+        },
+        "PasswordPolicy": {
+          "shape": "CreateBackendAuthPasswordPolicyConfig",
+          "locationName": "passwordPolicy",
+          "documentation": "<p>Describes the password policy for your Amazon Cognito user pool, configured as a part of your Amplify project.</p>"
+        },
+        "RequiredSignUpAttributes": {
+          "shape": "ListOfRequiredSignUpAttributesElement",
+          "locationName": "requiredSignUpAttributes",
+          "documentation": "<p>The required attributes to sign up new users in the user pool.</p>"
+        },
+        "SignInMethod": {
+          "shape": "SignInMethod",
+          "locationName": "signInMethod",
+          "documentation": "<p>Describes the sign-in methods that your Amplify app users use to log in using the Amazon Cognito user pool, configured as a part of your Amplify project.</p>"
+        },
+        "UserPoolName": {
+          "shape": "__string",
+          "locationName": "userPoolName",
+          "documentation": "<p>The Amazon Cognito user pool name.</p>"
+        }
+      },
+      "documentation": "<p>Describes the Amazon Cognito user pool configuration for the auth resource to be configured for your Amplify project.</p>",
+      "required": [
+        "RequiredSignUpAttributes",
+        "SignInMethod",
+        "UserPoolName"
+      ]
+    },
+    "CreateBackendConfigReqObj": {
+      "type": "structure",
+      "members": {
+        "BackendManagerAppId": {
+          "shape": "__string",
+          "locationName": "backendManagerAppId",
+          "documentation": "<p>The app ID for the backend manager.</p>"
+        }
+      },
+      "documentation": "<p>The request object for this operation.</p>"
+    },
+    "CreateBackendConfigRequest": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendManagerAppId": {
+          "shape": "__string",
+          "locationName": "backendManagerAppId",
+          "documentation": "<p>The app ID for the backend manager.</p>"
+        }
+      },
+      "documentation": "<p>The request body for CreateBackendConfig.</p>",
+      "required": [
+        "AppId"
+      ]
+    },
+    "CreateBackendConfigRespObj": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "JobId": {
+          "shape": "__string",
+          "locationName": "jobId",
+          "documentation": "<p>The ID for the job.</p>"
+        },
+        "Status": {
+          "shape": "__string",
+          "locationName": "status",
+          "documentation": "<p>The current status of the request.</p>"
+        }
+      },
+      "documentation": "<p>The response object for this operation.</p>",
+      "required": [
+        "AppId"
+      ]
+    },
+    "CreateBackendConfigResponse": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "JobId": {
+          "shape": "__string",
+          "locationName": "jobId",
+          "documentation": "<p>The ID for the job.</p>"
+        },
+        "Status": {
+          "shape": "__string",
+          "locationName": "status",
+          "documentation": "<p>The current status of the request.</p>"
+        }
+      }
+    },
+    "CreateBackendReqObj": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "AppName": {
+          "shape": "__string",
+          "locationName": "appName",
+          "documentation": "<p>The name of the app.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "ResourceConfig": {
+          "shape": "ResourceConfig",
+          "locationName": "resourceConfig",
+          "documentation": "<p>The resource configuration for the create backend request.</p>"
+        },
+        "ResourceName": {
+          "shape": "__string",
+          "locationName": "resourceName",
+          "documentation": "<p>The name of the resource.</p>"
+        }
+      },
+      "documentation": "<p>The request object for this operation.</p>",
+      "required": [
+        "AppId",
+        "BackendEnvironmentName",
+        "AppName"
+      ]
+    },
+    "CreateBackendRequest": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "AppName": {
+          "shape": "__string",
+          "locationName": "appName",
+          "documentation": "<p>The name of the app.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "ResourceConfig": {
+          "shape": "ResourceConfig",
+          "locationName": "resourceConfig",
+          "documentation": "<p>The resource configuration for the create backend request.</p>"
+        },
+        "ResourceName": {
+          "shape": "__string",
+          "locationName": "resourceName",
+          "documentation": "<p>The name of the resource.</p>"
+        }
+      },
+      "documentation": "<p>The request body for CreateBackend.</p>",
+      "required": [
+        "AppId",
+        "BackendEnvironmentName",
+        "AppName"
+      ]
+    },
+    "CreateBackendRespObj": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        },
+        "JobId": {
+          "shape": "__string",
+          "locationName": "jobId",
+          "documentation": "<p>The ID for the job.</p>"
+        },
+        "Operation": {
+          "shape": "__string",
+          "locationName": "operation",
+          "documentation": "<p>The name of the operation.</p>"
+        },
+        "Status": {
+          "shape": "__string",
+          "locationName": "status",
+          "documentation": "<p>The current status of the request.</p>"
+        }
+      },
+      "documentation": "<p>The response object sent when a backend is created.</p>",
+      "required": [
+        "AppId",
+        "BackendEnvironmentName"
+      ]
+    },
+    "CreateBackendResponse": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        },
+        "JobId": {
+          "shape": "__string",
+          "locationName": "jobId",
+          "documentation": "<p>The ID for the job.</p>"
+        },
+        "Operation": {
+          "shape": "__string",
+          "locationName": "operation",
+          "documentation": "<p>The name of the operation.</p>"
+        },
+        "Status": {
+          "shape": "__string",
+          "locationName": "status",
+          "documentation": "<p>The current status of the request.</p>"
+        }
+      }
+    },
+    "CreateTokenRequest": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        }
+      },
+      "required": [
+        "AppId"
+      ]
+    },
+    "CreateTokenRespObj": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "ChallengeCode": {
+          "shape": "__string",
+          "locationName": "challengeCode",
+          "documentation": "<p>One-time challenge code for authenticating into the Amplify Admin UI.</p>"
+        },
+        "SessionId": {
+          "shape": "__string",
+          "locationName": "sessionId",
+          "documentation": "<p>A unique ID provided when creating a new challenge token.</p>"
+        },
+        "Ttl": {
+          "shape": "__string",
+          "locationName": "ttl",
+          "documentation": "<p>The expiry time for the one-time generated token code.</p>"
+        }
+      },
+      "documentation": "<p>The response object for this operation.</p>",
+      "required": [
+        "AppId",
+        "Ttl",
+        "SessionId",
+        "ChallengeCode"
+      ]
+    },
+    "CreateTokenResponse": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "ChallengeCode": {
+          "shape": "__string",
+          "locationName": "challengeCode",
+          "documentation": "<p>One-time challenge code for authenticating into the Amplify Admin UI.</p>"
+        },
+        "SessionId": {
+          "shape": "__string",
+          "locationName": "sessionId",
+          "documentation": "<p>A unique ID provided when creating a new challenge token.</p>"
+        },
+        "Ttl": {
+          "shape": "__string",
+          "locationName": "ttl",
+          "documentation": "<p>The expiry time for the one-time generated token code.</p>"
+        }
+      }
+    },
+    "DeleteBackendAPIRequest": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "ResourceConfig": {
+          "shape": "BackendAPIResourceConfig",
+          "locationName": "resourceConfig",
+          "documentation": "<p>Defines the resource configuration for the data model in your Amplify project.</p>"
+        },
+        "ResourceName": {
+          "shape": "__string",
+          "locationName": "resourceName",
+          "documentation": "<p>The name of this resource.</p>"
+        }
+      },
+      "documentation": "<p>The request body for DeleteBackendAPI.</p>",
+      "required": [
+        "AppId",
+        "BackendEnvironmentName",
+        "ResourceName"
+      ]
+    },
+    "DeleteBackendAPIResponse": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        },
+        "JobId": {
+          "shape": "__string",
+          "locationName": "jobId",
+          "documentation": "<p>The ID for the job.</p>"
+        },
+        "Operation": {
+          "shape": "__string",
+          "locationName": "operation",
+          "documentation": "<p>The name of the operation.</p>"
+        },
+        "Status": {
+          "shape": "__string",
+          "locationName": "status",
+          "documentation": "<p>The current status of the request.</p>"
+        }
+      }
+    },
+    "DeleteBackendAuthRequest": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "ResourceName": {
+          "shape": "__string",
+          "locationName": "resourceName",
+          "documentation": "<p>The name of this resource.</p>"
+        }
+      },
+      "documentation": "<p>The request body for DeleteBackendAuth.</p>",
+      "required": [
+        "AppId",
+        "BackendEnvironmentName",
+        "ResourceName"
+      ]
+    },
+    "DeleteBackendAuthResponse": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        },
+        "JobId": {
+          "shape": "__string",
+          "locationName": "jobId",
+          "documentation": "<p>The ID for the job.</p>"
+        },
+        "Operation": {
+          "shape": "__string",
+          "locationName": "operation",
+          "documentation": "<p>The name of the operation.</p>"
+        },
+        "Status": {
+          "shape": "__string",
+          "locationName": "status",
+          "documentation": "<p>The current status of the request.</p>"
+        }
+      }
+    },
+    "DeleteBackendRequest": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        }
+      },
+      "required": [
+        "AppId",
+        "BackendEnvironmentName"
+      ]
+    },
+    "DeleteBackendRespObj": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        },
+        "JobId": {
+          "shape": "__string",
+          "locationName": "jobId",
+          "documentation": "<p>The ID for the job.</p>"
+        },
+        "Operation": {
+          "shape": "__string",
+          "locationName": "operation",
+          "documentation": "<p>The name of the operation.</p>"
+        },
+        "Status": {
+          "shape": "__string",
+          "locationName": "status",
+          "documentation": "<p>The current status of the request.</p>"
+        }
+      },
+      "documentation": "<p>The returned object for a request to delete a backend.</p>",
+      "required": [
+        "AppId",
+        "BackendEnvironmentName"
+      ]
+    },
+    "DeleteBackendResponse": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        },
+        "JobId": {
+          "shape": "__string",
+          "locationName": "jobId",
+          "documentation": "<p>The ID for the job.</p>"
+        },
+        "Operation": {
+          "shape": "__string",
+          "locationName": "operation",
+          "documentation": "<p>The name of the operation.</p>"
+        },
+        "Status": {
+          "shape": "__string",
+          "locationName": "status",
+          "documentation": "<p>The current status of the request.</p>"
+        }
+      }
+    },
+    "DeleteTokenRequest": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "SessionId": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "sessionId",
+          "documentation": "<p>The session ID.</p>"
+        }
+      },
+      "required": [
+        "SessionId",
+        "AppId"
+      ]
+    },
+    "DeleteTokenRespObj": {
+      "type": "structure",
+      "members": {
+        "IsSuccess": {
+          "shape": "__boolean",
+          "locationName": "isSuccess",
+          "documentation": "<p>Indicates whether the request succeeded or failed.</p>"
+        }
+      },
+      "documentation": "<p>The response object for this operation.</p>",
+      "required": [
+        "IsSuccess"
+      ]
+    },
+    "DeleteTokenResponse": {
+      "type": "structure",
+      "members": {
+        "IsSuccess": {
+          "shape": "__boolean",
+          "locationName": "isSuccess",
+          "documentation": "<p>Indicates whether the request succeeded or failed.</p>"
+        }
+      }
+    },
+    "DeliveryMethod": {
+      "type": "string",
+      "enum": [
+        "EMAIL",
+        "SMS"
+      ]
+    },
+    "EmailSettings": {
+      "type": "structure",
+      "members": {
+        "EmailMessage": {
+          "shape": "__string",
+          "locationName": "emailMessage",
+          "documentation": "<p>The body of the email.</p>"
+        },
+        "EmailSubject": {
+          "shape": "__string",
+          "locationName": "emailSubject",
+          "documentation": "<p>The subject of the email.</p>"
+        }
+      },
+      "documentation": "<p>The configuration for the email sent when an app user forgets their password.</p>"
+    },
+    "GatewayTimeoutException": {
+      "type": "structure",
+      "members": {
+        "Message": {
+          "shape": "__string",
+          "locationName": "message",
+          "documentation": "<p>An error message to inform that the request failed.</p>"
+        }
+      },
+      "documentation": "<p>An error returned if there's a temporary issue with the service.</p>",
+      "exception": true,
+      "error": {
+        "httpStatusCode": 504
+      }
+    },
+    "GenerateBackendAPIModelsRequest": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "ResourceName": {
+          "shape": "__string",
+          "locationName": "resourceName",
+          "documentation": "<p>The name of this resource.</p>"
+        }
+      },
+      "documentation": "<p>The request body for GenerateBackendAPIModels.</p>",
+      "required": [
+        "AppId",
+        "BackendEnvironmentName",
+        "ResourceName"
+      ]
+    },
+    "GenerateBackendAPIModelsResponse": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        },
+        "JobId": {
+          "shape": "__string",
+          "locationName": "jobId",
+          "documentation": "<p>The ID for the job.</p>"
+        },
+        "Operation": {
+          "shape": "__string",
+          "locationName": "operation",
+          "documentation": "<p>The name of the operation.</p>"
+        },
+        "Status": {
+          "shape": "__string",
+          "locationName": "status",
+          "documentation": "<p>The current status of the request.</p>"
+        }
+      }
+    },
+    "GetBackendAPICodegenRespObj": {
+      "type": "structure",
+      "members": {
+        "Models": {
+          "shape": "__string",
+          "locationName": "models",
+          "documentation": "<p>Stringified JSON of the datastore model.</p>"
+        },
+        "Status": {
+          "shape": "Status",
+          "locationName": "status",
+          "documentation": "<p>The current status of the request.</p>"
+        }
+      },
+      "documentation": "<p>The response object for this operation.</p>"
+    },
+    "GetBackendAPIModelsRequest": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "ResourceName": {
+          "shape": "__string",
+          "locationName": "resourceName",
+          "documentation": "<p>The name of this resource.</p>"
+        }
+      },
+      "documentation": "<p>The request body for GetBackendAPIModels.</p>",
+      "required": [
+        "AppId",
+        "BackendEnvironmentName",
+        "ResourceName"
+      ]
+    },
+    "GetBackendAPIModelsResponse": {
+      "type": "structure",
+      "members": {
+        "Models": {
+          "shape": "__string",
+          "locationName": "models",
+          "documentation": "<p>Stringified JSON of the datastore model.</p>"
+        },
+        "Status": {
+          "shape": "Status",
+          "locationName": "status",
+          "documentation": "<p>The current status of the request.</p>"
+        }
+      }
+    },
+    "GetBackendAPIRequest": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "ResourceConfig": {
+          "shape": "BackendAPIResourceConfig",
+          "locationName": "resourceConfig",
+          "documentation": "<p>Defines the resource configuration for the data model in your Amplify project.</p>"
+        },
+        "ResourceName": {
+          "shape": "__string",
+          "locationName": "resourceName",
+          "documentation": "<p>The name of this resource.</p>"
+        }
+      },
+      "documentation": "<p>The request body for GetBackendAPI.</p>",
+      "required": [
+        "AppId",
+        "BackendEnvironmentName",
+        "ResourceName"
+      ]
+    },
+    "GetBackendAPIRespObj": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        },
+        "ResourceConfig": {
+          "shape": "BackendAPIResourceConfig",
+          "locationName": "resourceConfig",
+          "documentation": "<p>The resource configuration for this response object.</p>"
+        },
+        "ResourceName": {
+          "shape": "__string",
+          "locationName": "resourceName",
+          "documentation": "<p>The name of this resource.</p>"
+        }
+      },
+      "documentation": "<p>The response object for this operation.</p>",
+      "required": [
+        "AppId",
+        "BackendEnvironmentName"
+      ]
+    },
+    "GetBackendAPIResponse": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        },
+        "ResourceConfig": {
+          "shape": "BackendAPIResourceConfig",
+          "locationName": "resourceConfig",
+          "documentation": "<p>The resource configuration for this response object.</p>"
+        },
+        "ResourceName": {
+          "shape": "__string",
+          "locationName": "resourceName",
+          "documentation": "<p>The name of this resource.</p>"
+        }
+      }
+    },
+    "GetBackendAuthReqObj": {
+      "type": "structure",
+      "members": {
+        "ResourceName": {
+          "shape": "__string",
+          "locationName": "resourceName",
+          "documentation": "<p>The name of this resource.</p>"
+        }
+      },
+      "documentation": "<p>The request object for this operation.</p>",
+      "required": [
+        "ResourceName"
+      ]
+    },
+    "GetBackendAuthRequest": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "ResourceName": {
+          "shape": "__string",
+          "locationName": "resourceName",
+          "documentation": "<p>The name of this resource.</p>"
+        }
+      },
+      "documentation": "<p>The request body for GetBackendAuth.</p>",
+      "required": [
+        "AppId",
+        "BackendEnvironmentName",
+        "ResourceName"
+      ]
+    },
+    "GetBackendAuthRespObj": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        },
+        "ResourceConfig": {
+          "shape": "CreateBackendAuthResourceConfig",
+          "locationName": "resourceConfig",
+          "documentation": "<p>The resource configuration for authorization requests to the backend of your Amplify project.</p>"
+        },
+        "ResourceName": {
+          "shape": "__string",
+          "locationName": "resourceName",
+          "documentation": "<p>The name of this resource.</p>"
+        }
+      },
+      "documentation": "<p>The response object for this operation.</p>",
+      "required": [
+        "AppId",
+        "BackendEnvironmentName"
+      ]
+    },
+    "GetBackendAuthResponse": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        },
+        "ResourceConfig": {
+          "shape": "CreateBackendAuthResourceConfig",
+          "locationName": "resourceConfig",
+          "documentation": "<p>The resource configuration for authorization requests to the backend of your Amplify project.</p>"
+        },
+        "ResourceName": {
+          "shape": "__string",
+          "locationName": "resourceName",
+          "documentation": "<p>The name of this resource.</p>"
+        }
+      }
+    },
+    "GetBackendJobRequest": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "JobId": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "jobId",
+          "documentation": "<p>The ID for the job.</p>"
+        }
+      },
+      "required": [
+        "AppId",
+        "BackendEnvironmentName",
+        "JobId"
+      ]
+    },
+    "GetBackendJobResponse": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "CreateTime": {
+          "shape": "__string",
+          "locationName": "createTime",
+          "documentation": "<p>The time when the job was created.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        },
+        "JobId": {
+          "shape": "__string",
+          "locationName": "jobId",
+          "documentation": "<p>The ID for the job.</p>"
+        },
+        "Operation": {
+          "shape": "__string",
+          "locationName": "operation",
+          "documentation": "<p>The name of the operation.</p>"
+        },
+        "Status": {
+          "shape": "__string",
+          "locationName": "status",
+          "documentation": "<p>The current status of the request.</p>"
+        },
+        "UpdateTime": {
+          "shape": "__string",
+          "locationName": "updateTime",
+          "documentation": "<p>The time when the job was last updated.</p>"
+        }
+      }
+    },
+    "GetBackendReqObj": {
+      "type": "structure",
+      "members": {
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        }
+      },
+      "documentation": "<p>The request object for this operation.</p>"
+    },
+    "GetBackendRequest": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        }
+      },
+      "documentation": "<p>The request body for GetBackend.</p>",
+      "required": [
+        "AppId"
+      ]
+    },
+    "GetBackendRespObj": {
+      "type": "structure",
+      "members": {
+        "AmplifyMetaConfig": {
+          "shape": "__string",
+          "locationName": "amplifyMetaConfig",
+          "documentation": "<p>A stringified version of the current configs for your Amplify project.</p>"
+        },
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "AppName": {
+          "shape": "__string",
+          "locationName": "appName",
+          "documentation": "<p>The name of the app.</p>"
+        },
+        "BackendEnvironmentList": {
+          "shape": "ListOf__string",
+          "locationName": "backendEnvironmentList",
+          "documentation": "<p>A list of backend environments in an array.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request failed, this is the returned error.</p>"
+        }
+      },
+      "documentation": "<p>The response object for this operation.</p>",
+      "required": [
+        "AppId"
+      ]
+    },
+    "GetBackendResponse": {
+      "type": "structure",
+      "members": {
+        "AmplifyMetaConfig": {
+          "shape": "__string",
+          "locationName": "amplifyMetaConfig",
+          "documentation": "<p>A stringified version of the current configs for your Amplify project.</p>"
+        },
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "AppName": {
+          "shape": "__string",
+          "locationName": "appName",
+          "documentation": "<p>The name of the app.</p>"
+        },
+        "BackendEnvironmentList": {
+          "shape": "ListOf__string",
+          "locationName": "backendEnvironmentList",
+          "documentation": "<p>A list of backend environments in an array.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request failed, this is the returned error.</p>"
+        }
+      }
+    },
+    "GetTokenRequest": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "SessionId": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "sessionId",
+          "documentation": "<p>The session ID.</p>"
+        }
+      },
+      "required": [
+        "SessionId",
+        "AppId"
+      ]
+    },
+    "GetTokenRespObj": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "ChallengeCode": {
+          "shape": "__string",
+          "locationName": "challengeCode",
+          "documentation": "<p>The one-time challenge code for authenticating into the Amplify Admin UI.</p>"
+        },
+        "SessionId": {
+          "shape": "__string",
+          "locationName": "sessionId",
+          "documentation": "<p>A unique ID provided when creating a new challenge token.</p>"
+        },
+        "Ttl": {
+          "shape": "__string",
+          "locationName": "ttl",
+          "documentation": "<p>The expiry time for the one-time generated token code.</p>"
+        }
+      },
+      "documentation": "<p>The response object for this operation.</p>",
+      "required": [
+        "AppId",
+        "Ttl",
+        "SessionId",
+        "ChallengeCode"
+      ]
+    },
+    "GetTokenResponse": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "ChallengeCode": {
+          "shape": "__string",
+          "locationName": "challengeCode",
+          "documentation": "<p>The one-time challenge code for authenticating into the Amplify Admin UI.</p>"
+        },
+        "SessionId": {
+          "shape": "__string",
+          "locationName": "sessionId",
+          "documentation": "<p>A unique ID provided when creating a new challenge token.</p>"
+        },
+        "Ttl": {
+          "shape": "__string",
+          "locationName": "ttl",
+          "documentation": "<p>The expiry time for the one-time generated token code.</p>"
+        }
+      }
+    },
+    "ImportBackendAuthReqObj": {
+      "type": "structure",
+      "members": {
+        "IdentityPoolId": {
+          "shape": "__string",
+          "locationName": "identityPoolId",
+          "documentation": "<p>The ID of the Amazon Cognito identity pool.</p>"
+        },
+        "NativeClientId": {
+          "shape": "__string",
+          "locationName": "nativeClientId",
+          "documentation": "<p>The ID of the Amazon Cognito native client.</p>"
+        },
+        "UserPoolId": {
+          "shape": "__string",
+          "locationName": "userPoolId",
+          "documentation": "<p>The ID of the Amazon Cognito user pool.</p>"
+        },
+        "WebClientId": {
+          "shape": "__string",
+          "locationName": "webClientId",
+          "documentation": "<p>The ID of the Amazon Cognito web client.</p>"
+        }
+      },
+      "documentation": "<p>The request object for this operation.</p>",
+      "required": [
+        "UserPoolId",
+        "NativeClientId",
+        "WebClientId"
+      ]
+    },
+    "ImportBackendAuthRequest": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "IdentityPoolId": {
+          "shape": "__string",
+          "locationName": "identityPoolId",
+          "documentation": "<p>The ID of the Amazon Cognito identity pool.</p>"
+        },
+        "NativeClientId": {
+          "shape": "__string",
+          "locationName": "nativeClientId",
+          "documentation": "<p>The ID of the Amazon Cognito native client.</p>"
+        },
+        "UserPoolId": {
+          "shape": "__string",
+          "locationName": "userPoolId",
+          "documentation": "<p>The ID of the Amazon Cognito user pool.</p>"
+        },
+        "WebClientId": {
+          "shape": "__string",
+          "locationName": "webClientId",
+          "documentation": "<p>The ID of the Amazon Cognito web client.</p>"
+        }
+      },
+      "documentation": "<p>The request body for ImportBackendAuth.</p>",
+      "required": [
+        "AppId",
+        "BackendEnvironmentName",
+        "UserPoolId",
+        "NativeClientId",
+        "WebClientId"
+      ]
+    },
+    "ImportBackendAuthResponse": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        },
+        "JobId": {
+          "shape": "__string",
+          "locationName": "jobId",
+          "documentation": "<p>The ID for the job.</p>"
+        },
+        "Operation": {
+          "shape": "__string",
+          "locationName": "operation",
+          "documentation": "<p>The name of the operation.</p>"
+        },
+        "Status": {
+          "shape": "__string",
+          "locationName": "status",
+          "documentation": "<p>The current status of the request.</p>"
+        }
+      }
+    },
+    "InternalServiceException": {
+      "type": "structure",
+      "members": {
+        "Message": {
+          "shape": "__string",
+          "locationName": "message",
+          "documentation": "<p>An error message to inform that the request failed.</p>"
+        }
+      },
+      "documentation": "<p>An error returned if there's a temporary issue with the service.</p>"
+    },
+    "LimitExceededException": {
+      "type": "structure",
+      "members": {
+        "LimitType": {
+          "shape": "__string",
+          "locationName": "limitType",
+          "documentation": "<p>The type of limit that was exceeded.</p>"
+        },
+        "Message": {
+          "shape": "__string",
+          "locationName": "message",
+          "documentation": "<p>An error message to inform that the request has failed.</p>"
+        }
+      },
+      "documentation": "<p>An error that is returned when a limit of a specific type has been exceeded.</p>"
+    },
+    "ListBackendJobReqObj": {
+      "type": "structure",
+      "members": {
+        "JobId": {
+          "shape": "__string",
+          "locationName": "jobId",
+          "documentation": "<p>The ID for the job.</p>"
+        },
+        "MaxResults": {
+          "shape": "__integerMin1Max25",
+          "locationName": "maxResults",
+          "documentation": "<p>The maximum number of results that you want in the response.</p>"
+        },
+        "NextToken": {
+          "shape": "__string",
+          "locationName": "nextToken",
+          "documentation": "<p>The token for the next set of results.</p>"
+        },
+        "Operation": {
+          "shape": "__string",
+          "locationName": "operation",
+          "documentation": "<p>Filters the list of response objects to include only those with the specified operation name.</p>"
+        },
+        "Status": {
+          "shape": "__string",
+          "locationName": "status",
+          "documentation": "<p>Filters the list of response objects to include only those with the specified status.</p>"
+        }
+      },
+      "documentation": "<p>The request object for this operation.</p>"
+    },
+    "ListBackendJobRespObj": {
+      "type": "structure",
+      "members": {
+        "Jobs": {
+          "shape": "ListOfBackendJobRespObj",
+          "locationName": "jobs",
+          "documentation": "<p>An array of jobs and their properties.</p>"
+        },
+        "NextToken": {
+          "shape": "__string",
+          "locationName": "nextToken",
+          "documentation": "<p>The token for the next set of results.</p>"
+        }
+      },
+      "documentation": "<p>The returned list of backend jobs.</p>"
+    },
+    "ListBackendJobsRequest": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "JobId": {
+          "shape": "__string",
+          "locationName": "jobId",
+          "documentation": "<p>The ID for the job.</p>"
+        },
+        "MaxResults": {
+          "shape": "__integerMin1Max25",
+          "locationName": "maxResults",
+          "documentation": "<p>The maximum number of results that you want in the response.</p>"
+        },
+        "NextToken": {
+          "shape": "__string",
+          "locationName": "nextToken",
+          "documentation": "<p>The token for the next set of results.</p>"
+        },
+        "Operation": {
+          "shape": "__string",
+          "locationName": "operation",
+          "documentation": "<p>Filters the list of response objects to include only those with the specified operation name.</p>"
+        },
+        "Status": {
+          "shape": "__string",
+          "locationName": "status",
+          "documentation": "<p>Filters the list of response objects to include only those with the specified status.</p>"
+        }
+      },
+      "documentation": "<p>The request body for ListBackendJobs.</p>",
+      "required": [
+        "AppId",
+        "BackendEnvironmentName"
+      ]
+    },
+    "ListBackendJobsResponse": {
+      "type": "structure",
+      "members": {
+        "Jobs": {
+          "shape": "ListOfBackendJobRespObj",
+          "locationName": "jobs",
+          "documentation": "<p>An array of jobs and their properties.</p>"
+        },
+        "NextToken": {
+          "shape": "__string",
+          "locationName": "nextToken",
+          "documentation": "<p>The token for the next set of results.</p>"
+        }
+      }
+    },
+    "LoginAuthConfigReqObj": {
+      "type": "structure",
+      "members": {
+        "AwsCognitoIdentityPoolId": {
+          "shape": "__string",
+          "locationName": "aws_cognito_identity_pool_id",
+          "documentation": "<p>The Amazon Cognito identity pool ID used for the Amplify Admin UI login authorization.</p>"
+        },
+        "AwsCognitoRegion": {
+          "shape": "__string",
+          "locationName": "aws_cognito_region",
+          "documentation": "<p>The AWS Region for the Amplify Admin UI login.</p>"
+        },
+        "AwsUserPoolsId": {
+          "shape": "__string",
+          "locationName": "aws_user_pools_id",
+          "documentation": "<p>The Amazon Cognito user pool ID used for Amplify Admin UI login authentication.</p>"
+        },
+        "AwsUserPoolsWebClientId": {
+          "shape": "__string",
+          "locationName": "aws_user_pools_web_client_id",
+          "documentation": "<p>The web client ID for the Amazon Cognito user pools.</p>"
+        }
+      },
+      "documentation": "<p>The request object for this operation.</p>"
+    },
+    "MFAMode": {
+      "type": "string",
+      "enum": [
+        "ON",
+        "OFF",
+        "OPTIONAL"
+      ]
+    },
+    "Mode": {
+      "type": "string",
+      "enum": [
+        "API_KEY",
+        "AWS_IAM",
+        "AMAZON_COGNITO_USER_POOLS",
+        "OPENID_CONNECT"
+      ]
+    },
+    "NotFoundException": {
+      "type": "structure",
+      "members": {
+        "Message": {
+          "shape": "__string",
+          "locationName": "message",
+          "documentation": "<p>An error message to inform that the request has failed.</p>"
+        },
+        "ResourceType": {
+          "shape": "__string",
+          "locationName": "resourceType",
+          "documentation": "<p>The type of resource that is not found.</p>"
+        }
+      },
+      "documentation": "<p>An error returned when a specific resource type is not found.</p>",
+      "exception": true,
+      "error": {
+        "httpStatusCode": 404
+      }
+    },
+    "OAuthGrantType": {
+      "type": "string",
+      "enum": [
+        "CODE",
+        "IMPLICIT"
+      ]
+    },
+    "RemoveAllBackendsReqObj": {
+      "type": "structure",
+      "members": {
+        "CleanAmplifyApp": {
+          "shape": "__boolean",
+          "locationName": "cleanAmplifyApp",
+          "documentation": "<p>Cleans up the Amplify Console app if this value is set to true.</p>"
+        }
+      },
+      "documentation": "<p>The request object for this operation.</p>"
+    },
+    "RemoveAllBackendsRequest": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "CleanAmplifyApp": {
+          "shape": "__boolean",
+          "locationName": "cleanAmplifyApp",
+          "documentation": "<p>Cleans up the Amplify Console app if this value is set to true.</p>"
+        }
+      },
+      "documentation": "<p>The request body for RemoveAllBackends.</p>",
+      "required": [
+        "AppId"
+      ]
+    },
+    "RemoveAllBackendsRespObj": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        },
+        "JobId": {
+          "shape": "__string",
+          "locationName": "jobId",
+          "documentation": "<p>The ID for the job.</p>"
+        },
+        "Operation": {
+          "shape": "__string",
+          "locationName": "operation",
+          "documentation": "<p>The name of the operation.</p>"
+        },
+        "Status": {
+          "shape": "__string",
+          "locationName": "status",
+          "documentation": "<p>The current status of the request.</p>"
+        }
+      },
+      "documentation": "<p>The response object for this operation.</p>",
+      "required": [
+        "AppId"
+      ]
+    },
+    "RemoveAllBackendsResponse": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        },
+        "JobId": {
+          "shape": "__string",
+          "locationName": "jobId",
+          "documentation": "<p>The ID for the job.</p>"
+        },
+        "Operation": {
+          "shape": "__string",
+          "locationName": "operation",
+          "documentation": "<p>The name of the operation.</p>"
+        },
+        "Status": {
+          "shape": "__string",
+          "locationName": "status",
+          "documentation": "<p>The current status of the request.</p>"
+        }
+      }
+    },
+    "RemoveBackendAuthReqObj": {
+      "type": "structure",
+      "members": {
+        "ResourceName": {
+          "shape": "__string",
+          "locationName": "resourceName",
+          "documentation": "<p>The name of this resource.</p>"
+        }
+      },
+      "documentation": "<p>The request object for this operation.</p>",
+      "required": [
+        "ResourceName"
+      ]
+    },
+    "RemoveBackendConfigRequest": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        }
+      },
+      "required": [
+        "AppId"
+      ]
+    },
+    "RemoveBackendConfigRespObj": {
+      "type": "structure",
+      "members": {
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        }
+      },
+      "documentation": "<p>The response object for this operation.</p>"
+    },
+    "RemoveBackendConfigResponse": {
+      "type": "structure",
+      "members": {
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        }
+      }
+    },
+    "ResolutionStrategy": {
+      "type": "string",
+      "enum": [
+        "OPTIMISTIC_CONCURRENCY",
+        "LAMBDA",
+        "AUTOMERGE",
+        "NONE"
+      ]
+    },
+    "ResourceConfig": {
+      "type": "structure",
+      "members": {},
+      "documentation": "<p>Defines the resource configuration for the data model in your Amplify project.</p>"
+    },
+    "Service": {
+      "type": "string",
+      "enum": [
+        "COGNITO"
+      ]
+    },
+    "Settings": {
+      "type": "structure",
+      "members": {
+        "MfaTypes": {
+          "shape": "ListOfMfaTypesElement",
+          "locationName": "mfaTypes",
+          "documentation": "<p>The supported MFA types.</p>"
+        },
+        "SmsMessage": {
+          "shape": "__string",
+          "locationName": "smsMessage",
+          "documentation": "<p>The body of the SMS message.</p>"
+        }
+      },
+      "documentation": "<p>The settings of your MFA configuration for the backend of your Amplify project.</p>"
+    },
+    "SignInMethod": {
+      "type": "string",
+      "enum": [
+        "EMAIL",
+        "EMAIL_AND_PHONE_NUMBER",
+        "PHONE_NUMBER",
+        "USERNAME"
+      ]
+    },
+    "SmsSettings": {
+      "type": "structure",
+      "members": {
+        "SmsMessage": {
+          "shape": "__string",
+          "locationName": "smsMessage",
+          "documentation": "<p>The body of the SMS message.</p>"
+        }
+      },
+      "documentation": "<p>SMS settings for authentication.</p>"
+    },
+    "SocialProviderSettings": {
+      "type": "structure",
+      "members": {
+        "Facebook": {
+          "shape": "BackendAuthSocialProviderConfig"
+        },
+        "Google": {
+          "shape": "BackendAuthSocialProviderConfig"
+        },
+        "LoginWithAmazon": {
+          "shape": "BackendAuthSocialProviderConfig"
+        }
+      },
+      "documentation": "<p>The settings for using the social identity providers for access to your Amplify app.</p>"
+    },
+    "Status": {
+      "type": "string",
+      "enum": [
+        "LATEST",
+        "STALE"
+      ]
+    },
+    "TooManyRequestsException": {
+      "type": "structure",
+      "members": {
+        "LimitType": {
+          "shape": "__string",
+          "locationName": "limitType",
+          "documentation": "<p>The type of limit that was exceeded.</p>"
+        },
+        "Message": {
+          "shape": "__string",
+          "locationName": "message",
+          "documentation": "<p>An error message to inform that the request has failed.</p>"
+        }
+      },
+      "documentation": "<p>An error that is returned when a limit of a specific type has been exceeded.</p>",
+      "exception": true,
+      "error": {
+        "httpStatusCode": 429
+      }
+    },
+    "UpdateBackendAPIRequest": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "ResourceConfig": {
+          "shape": "BackendAPIResourceConfig",
+          "locationName": "resourceConfig",
+          "documentation": "<p>Defines the resource configuration for the data model in your Amplify project.</p>"
+        },
+        "ResourceName": {
+          "shape": "__string",
+          "locationName": "resourceName",
+          "documentation": "<p>The name of this resource.</p>"
+        }
+      },
+      "documentation": "<p>The request body for UpdateBackendAPI.</p>",
+      "required": [
+        "AppId",
+        "BackendEnvironmentName",
+        "ResourceName"
+      ]
+    },
+    "UpdateBackendAPIResponse": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        },
+        "JobId": {
+          "shape": "__string",
+          "locationName": "jobId",
+          "documentation": "<p>The ID for the job.</p>"
+        },
+        "Operation": {
+          "shape": "__string",
+          "locationName": "operation",
+          "documentation": "<p>The name of the operation.</p>"
+        },
+        "Status": {
+          "shape": "__string",
+          "locationName": "status",
+          "documentation": "<p>The current status of the request.</p>"
+        }
+      }
+    },
+    "UpdateBackendAuthForgotPasswordConfig": {
+      "type": "structure",
+      "members": {
+        "DeliveryMethod": {
+          "shape": "DeliveryMethod",
+          "locationName": "deliveryMethod",
+          "documentation": "<p>Describes which mode to use (either SMS or email) to deliver messages to app users that want to recover their password.</p>"
+        },
+        "EmailSettings": {
+          "shape": "EmailSettings",
+          "locationName": "emailSettings",
+          "documentation": "<p>The configuration for the email sent when an app user forgets their password.</p>"
+        },
+        "SmsSettings": {
+          "shape": "SmsSettings",
+          "locationName": "smsSettings",
+          "documentation": "<p>The configuration for the SMS message sent when an Amplify app user forgets their password.</p>"
+        }
+      },
+      "documentation": "<p>Describes the forgot password policy for authenticating into the Amplify app.</p>"
+    },
+    "UpdateBackendAuthIdentityPoolConfig": {
+      "type": "structure",
+      "members": {
+        "UnauthenticatedLogin": {
+          "shape": "__boolean",
+          "locationName": "unauthenticatedLogin",
+          "documentation": "<p>A boolean value which can be set to allow or disallow guest-level authorization into your Amplify app.</p>"
+        }
+      },
+      "documentation": "<p>Describes the authorization configuration for the Amazon Cognito identity pool, provisioned as a part of your auth resource in the Amplify project.</p>"
+    },
+    "UpdateBackendAuthMFAConfig": {
+      "type": "structure",
+      "members": {
+        "MFAMode": {
+          "shape": "MFAMode",
+          "documentation": "<p>The MFA mode for the backend of your Amplify project.</p>"
+        },
+        "Settings": {
+          "shape": "Settings",
+          "locationName": "settings",
+          "documentation": "<p>The settings of your MFA configuration for the backend of your Amplify project.</p>"
+        }
+      },
+      "documentation": "<p>Updates the multi-factor authentication (MFA) configuration for the backend of your Amplify project.</p>"
+    },
+    "UpdateBackendAuthOAuthConfig": {
+      "type": "structure",
+      "members": {
+        "DomainPrefix": {
+          "shape": "__string",
+          "locationName": "domainPrefix",
+          "documentation": "<p>The Amazon Cognito domain prefix used to create a hosted UI for authentication.</p>"
+        },
+        "OAuthGrantType": {
+          "shape": "OAuthGrantType",
+          "locationName": "oAuthGrantType",
+          "documentation": "<p>The OAuth grant type to allow app users to authenticate from your Amplify app.</p>"
+        },
+        "OAuthScopes": {
+          "shape": "ListOfOAuthScopesElement",
+          "locationName": "oAuthScopes",
+          "documentation": "<p>The list of OAuth-related flows that can allow users to authenticate from your Amplify app.</p>"
+        },
+        "RedirectSignInURIs": {
+          "shape": "ListOf__string",
+          "locationName": "redirectSignInURIs",
+          "documentation": "<p>Redirect URLs used by OAuth when a user signs in to an Amplify app.</p>"
+        },
+        "RedirectSignOutURIs": {
+          "shape": "ListOf__string",
+          "locationName": "redirectSignOutURIs",
+          "documentation": "<p>Redirect URLs used by OAuth when a user signs out of an Amplify app.</p>"
+        },
+        "SocialProviderSettings": {
+          "shape": "SocialProviderSettings",
+          "locationName": "socialProviderSettings",
+          "documentation": "<p>Describes third-party social federation configurations for allowing your users to sign in with OAuth.</p>"
+        }
+      },
+      "documentation": "<p>The OAuth configurations for authenticating users into your Amplify app.</p>"
+    },
+    "UpdateBackendAuthPasswordPolicyConfig": {
+      "type": "structure",
+      "members": {
+        "AdditionalConstraints": {
+          "shape": "ListOfAdditionalConstraintsElement",
+          "locationName": "additionalConstraints",
+          "documentation": "<p>Describes additional constraints on password requirements to sign in to the auth resource, configured as a part of your Amplify project.</p>"
+        },
+        "MinimumLength": {
+          "shape": "__double",
+          "locationName": "minimumLength",
+          "documentation": "<p>Describes the minimum length of the password required to sign in to the auth resource, configured as a part of your Amplify project.</p>"
+        }
+      },
+      "documentation": "<p>Describes the password policy for your Amazon Cognito user pool configured as a part of your Amplify project.</p>"
+    },
+    "UpdateBackendAuthReqObj": {
+      "type": "structure",
+      "members": {
+        "ResourceConfig": {
+          "shape": "UpdateBackendAuthResourceConfig",
+          "locationName": "resourceConfig",
+          "documentation": "<p>The resource configuration for this request object.</p>"
+        },
+        "ResourceName": {
+          "shape": "__string",
+          "locationName": "resourceName",
+          "documentation": "<p>The name of this resource.</p>"
+        }
+      },
+      "documentation": "<p>The request object for this operation.</p>",
+      "required": [
+        "ResourceName",
+        "ResourceConfig"
+      ]
+    },
+    "UpdateBackendAuthRequest": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "ResourceConfig": {
+          "shape": "UpdateBackendAuthResourceConfig",
+          "locationName": "resourceConfig",
+          "documentation": "<p>The resource configuration for this request object.</p>"
+        },
+        "ResourceName": {
+          "shape": "__string",
+          "locationName": "resourceName",
+          "documentation": "<p>The name of this resource.</p>"
+        }
+      },
+      "documentation": "<p>The request body for UpdateBackendAuth.</p>",
+      "required": [
+        "AppId",
+        "BackendEnvironmentName",
+        "ResourceName",
+        "ResourceConfig"
+      ]
+    },
+    "UpdateBackendAuthResourceConfig": {
+      "type": "structure",
+      "members": {
+        "AuthResources": {
+          "shape": "AuthResources",
+          "locationName": "authResources",
+          "documentation": "<p>Defines the service name to use when configuring an authentication resource in your Amplify project.</p>"
+        },
+        "IdentityPoolConfigs": {
+          "shape": "UpdateBackendAuthIdentityPoolConfig",
+          "locationName": "identityPoolConfigs",
+          "documentation": "<p>Describes the authorization configuration for the Amazon Cognito identity pool, provisioned as a part of your auth resource in the Amplify project.</p>"
+        },
+        "Service": {
+          "shape": "Service",
+          "locationName": "service",
+          "documentation": "<p>Defines the service name to use when configuring an authentication resource in your Amplify project.</p>"
+        },
+        "UserPoolConfigs": {
+          "shape": "UpdateBackendAuthUserPoolConfig",
+          "locationName": "userPoolConfigs",
+          "documentation": "<p>Describes the authentication configuration for the Amazon Cognito user pool, provisioned as a part of your auth resource in the Amplify project.</p>"
+        }
+      },
+      "documentation": "<p>Defines the resource configuration when updating an authentication resource in your Amplify project.</p>",
+      "required": [
+        "AuthResources",
+        "UserPoolConfigs",
+        "Service"
+      ]
+    },
+    "UpdateBackendAuthResponse": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        },
+        "JobId": {
+          "shape": "__string",
+          "locationName": "jobId",
+          "documentation": "<p>The ID for the job.</p>"
+        },
+        "Operation": {
+          "shape": "__string",
+          "locationName": "operation",
+          "documentation": "<p>The name of the operation.</p>"
+        },
+        "Status": {
+          "shape": "__string",
+          "locationName": "status",
+          "documentation": "<p>The current status of the request.</p>"
+        }
+      }
+    },
+    "UpdateBackendAuthUserPoolConfig": {
+      "type": "structure",
+      "members": {
+        "ForgotPassword": {
+          "shape": "UpdateBackendAuthForgotPasswordConfig",
+          "locationName": "forgotPassword",
+          "documentation": "<p>Describes the forgot password policy for your Amazon Cognito user pool, configured as a part of your Amplify project.</p>"
+        },
+        "Mfa": {
+          "shape": "UpdateBackendAuthMFAConfig",
+          "locationName": "mfa",
+          "documentation": "<p>Describes whether multi-factor authentication policies should be applied for your Amazon Cognito user pool configured as a part of your Amplify project.</p>"
+        },
+        "OAuth": {
+          "shape": "UpdateBackendAuthOAuthConfig",
+          "locationName": "oAuth",
+          "documentation": "<p>Describes the OAuth policy and rules for your Amazon Cognito user pool, configured as a part of your Amplify project.</p>"
+        },
+        "PasswordPolicy": {
+          "shape": "UpdateBackendAuthPasswordPolicyConfig",
+          "locationName": "passwordPolicy",
+          "documentation": "<p>Describes the password policy for your Amazon Cognito user pool, configured as a part of your Amplify project.</p>"
+        }
+      },
+      "documentation": "<p>Describes the Amazon Cognito user pool configuration for the authorization resource to be configured for your Amplify project on an update.</p>"
+    },
+    "UpdateBackendConfigReqObj": {
+      "type": "structure",
+      "members": {
+        "LoginAuthConfig": {
+          "shape": "LoginAuthConfigReqObj",
+          "locationName": "loginAuthConfig",
+          "documentation": "<p>Describes the Amazon Cognito configuration for Admin UI access.</p>"
+        }
+      },
+      "documentation": "<p>The request object for this operation.</p>"
+    },
+    "UpdateBackendConfigRequest": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "LoginAuthConfig": {
+          "shape": "LoginAuthConfigReqObj",
+          "locationName": "loginAuthConfig",
+          "documentation": "<p>Describes the Amazon Cognito configuration for Admin UI access.</p>"
+        }
+      },
+      "documentation": "<p>The request body for UpdateBackendConfig.</p>",
+      "required": [
+        "AppId"
+      ]
+    },
+    "UpdateBackendConfigResponse": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendManagerAppId": {
+          "shape": "__string",
+          "locationName": "backendManagerAppId",
+          "documentation": "<p>The app ID for the backend manager.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        },
+        "LoginAuthConfig": {
+          "shape": "LoginAuthConfigReqObj",
+          "locationName": "loginAuthConfig",
+          "documentation": "<p>Describes the Amazon Cognito configurations for the Admin UI auth resource to log in with.</p>"
+        }
+      }
+    },
+    "UpdateBackendJobRequest": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "JobId": {
+          "shape": "__string",
+          "location": "uri",
+          "locationName": "jobId",
+          "documentation": "<p>The ID for the job.</p>"
+        },
+        "Operation": {
+          "shape": "__string",
+          "locationName": "operation",
+          "documentation": "<p>Filters the list of response objects to only include those with the specified operation name.</p>"
+        },
+        "Status": {
+          "shape": "__string",
+          "locationName": "status",
+          "documentation": "<p>Filters the list of response objects to include only those with the specified status.</p>"
+        }
+      },
+      "documentation": "<p>The request body for GetBackendJob.</p>",
+      "required": [
+        "AppId",
+        "BackendEnvironmentName",
+        "JobId"
+      ]
+    },
+    "UpdateBackendJobResponse": {
+      "type": "structure",
+      "members": {
+        "AppId": {
+          "shape": "__string",
+          "locationName": "appId",
+          "documentation": "<p>The app ID.</p>"
+        },
+        "BackendEnvironmentName": {
+          "shape": "__string",
+          "locationName": "backendEnvironmentName",
+          "documentation": "<p>The name of the backend environment.</p>"
+        },
+        "CreateTime": {
+          "shape": "__string",
+          "locationName": "createTime",
+          "documentation": "<p>The time when the job was created.</p>"
+        },
+        "Error": {
+          "shape": "__string",
+          "locationName": "error",
+          "documentation": "<p>If the request fails, this error is returned.</p>"
+        },
+        "JobId": {
+          "shape": "__string",
+          "locationName": "jobId",
+          "documentation": "<p>The ID for the job.</p>"
+        },
+        "Operation": {
+          "shape": "__string",
+          "locationName": "operation",
+          "documentation": "<p>The name of the operation.</p>"
+        },
+        "Status": {
+          "shape": "__string",
+          "locationName": "status",
+          "documentation": "<p>The current status of the request.</p>"
+        },
+        "UpdateTime": {
+          "shape": "__string",
+          "locationName": "updateTime",
+          "documentation": "<p>The time when the job was last updated.</p>"
+        }
+      }
+    },
+    "AdditionalConstraintsElement": {
+      "type": "string",
+      "enum": [
+        "REQUIRE_DIGIT",
+        "REQUIRE_LOWERCASE",
+        "REQUIRE_SYMBOL",
+        "REQUIRE_UPPERCASE"
+      ]
+    },
+    "MfaTypesElement": {
+      "type": "string",
+      "enum": [
+        "SMS",
+        "TOTP"
+      ]
+    },
+    "OAuthScopesElement": {
+      "type": "string",
+      "enum": [
+        "PHONE",
+        "EMAIL",
+        "OPENID",
+        "PROFILE",
+        "AWS_COGNITO_SIGNIN_USER_ADMIN"
+      ]
+    },
+    "RequiredSignUpAttributesElement": {
+      "type": "string",
+      "enum": [
+        "ADDRESS",
+        "BIRTHDATE",
+        "EMAIL",
+        "FAMILY_NAME",
+        "GENDER",
+        "GIVEN_NAME",
+        "LOCALE",
+        "MIDDLE_NAME",
+        "NAME",
+        "NICKNAME",
+        "PHONE_NUMBER",
+        "PICTURE",
+        "PREFERRED_USERNAME",
+        "PROFILE",
+        "UPDATED_AT",
+        "WEBSITE",
+        "ZONE_INFO"
+      ]
+    },
+    "__boolean": {
+      "type": "boolean"
+    },
+    "__double": {
+      "type": "double"
+    },
+    "__integer": {
+      "type": "integer"
+    },
+    "__integerMin1Max25": {
+      "type": "integer",
+      "min": 1,
+      "max": 25
+    },
+    "ListOfBackendAPIAuthType": {
+      "type": "list",
+      "member": {
+        "shape": "BackendAPIAuthType"
+      }
+    },
+    "ListOfBackendJobRespObj": {
+      "type": "list",
+      "member": {
+        "shape": "BackendJobRespObj"
+      }
+    },
+    "ListOfAdditionalConstraintsElement": {
+      "type": "list",
+      "member": {
+        "shape": "AdditionalConstraintsElement"
+      }
+    },
+    "ListOfMfaTypesElement": {
+      "type": "list",
+      "member": {
+        "shape": "MfaTypesElement"
+      }
+    },
+    "ListOfOAuthScopesElement": {
+      "type": "list",
+      "member": {
+        "shape": "OAuthScopesElement"
+      }
+    },
+    "ListOfRequiredSignUpAttributesElement": {
+      "type": "list",
+      "member": {
+        "shape": "RequiredSignUpAttributesElement"
+      }
+    },
+    "ListOf__string": {
+      "type": "list",
+      "member": {
+        "shape": "__string"
+      }
+    },
+    "__long": {
+      "type": "long"
+    },
+    "__string": {
+      "type": "string"
+    },
+    "__timestampIso8601": {
+      "type": "timestamp",
+      "timestampFormat": "iso8601"
+    },
+    "__timestampUnix": {
+      "type": "timestamp",
+      "timestampFormat": "unixTimestamp"
+    }
+  },
+  "documentation": "<p>AWS Amplify Admin API</p>"
+}

+ 5 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/apigateway/2015-07-09/examples-1.json

@@ -0,0 +1,5 @@
+{
+  "version": "1.0",
+  "examples": {
+  }
+}

+ 112 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/apigateway/2015-07-09/paginators-1.json

@@ -0,0 +1,112 @@
+{
+  "pagination": {
+    "GetApiKeys": {
+      "input_token": "position",
+      "output_token": "position",
+      "limit_key": "limit",
+      "result_key": "items"
+    },
+    "GetBasePathMappings": {
+      "input_token": "position",
+      "output_token": "position",
+      "limit_key": "limit",
+      "result_key": "items"
+    },
+    "GetClientCertificates": {
+      "input_token": "position",
+      "output_token": "position",
+      "limit_key": "limit",
+      "result_key": "items"
+    },
+    "GetDeployments": {
+      "input_token": "position",
+      "output_token": "position",
+      "limit_key": "limit",
+      "result_key": "items"
+    },
+    "GetDomainNames": {
+      "input_token": "position",
+      "output_token": "position",
+      "limit_key": "limit",
+      "result_key": "items"
+    },
+    "GetModels": {
+      "input_token": "position",
+      "output_token": "position",
+      "limit_key": "limit",
+      "result_key": "items"
+    },
+    "GetResources": {
+      "input_token": "position",
+      "output_token": "position",
+      "limit_key": "limit",
+      "result_key": "items"
+    },
+    "GetRestApis": {
+      "input_token": "position",
+      "output_token": "position",
+      "limit_key": "limit",
+      "result_key": "items"
+    },
+    "GetUsage": {
+      "input_token": "position",
+      "output_token": "position",
+      "limit_key": "limit",
+      "result_key": "items"
+    },
+    "GetUsagePlans": {
+      "input_token": "position",
+      "output_token": "position",
+      "limit_key": "limit",
+      "result_key": "items"
+    },
+    "GetUsagePlanKeys": {
+      "input_token": "position",
+      "output_token": "position",
+      "limit_key": "limit",
+      "result_key": "items"
+    },
+    "GetVpcLinks": {
+      "input_token": "position",
+      "limit_key": "limit",
+      "output_token": "position",
+      "result_key": "items"
+    },
+    "GetAuthorizers": {
+      "input_token": "position",
+      "limit_key": "limit",
+      "output_token": "position",
+      "result_key": "items"
+    },
+    "GetDocumentationParts": {
+      "input_token": "position",
+      "limit_key": "limit",
+      "output_token": "position",
+      "result_key": "items"
+    },
+    "GetDocumentationVersions": {
+      "input_token": "position",
+      "limit_key": "limit",
+      "output_token": "position",
+      "result_key": "items"
+    },
+    "GetGatewayResponses": {
+      "input_token": "position",
+      "limit_key": "limit",
+      "output_token": "position",
+      "result_key": "items"
+    },
+    "GetRequestValidators": {
+      "input_token": "position",
+      "limit_key": "limit",
+      "output_token": "position",
+      "result_key": "items"
+    },
+    "GetSdkTypes": {
+      "input_token": "position",
+      "limit_key": "limit",
+      "output_token": "position",
+      "result_key": "items"
+    }
+  }
+}

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 2023 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/apigateway/2015-07-09/service-2.json


+ 3 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/apigatewaymanagementapi/2018-11-29/paginators-1.json

@@ -0,0 +1,3 @@
+{
+  "pagination": {}
+}

+ 217 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/apigatewaymanagementapi/2018-11-29/service-2.json

@@ -0,0 +1,217 @@
+{
+  "metadata" : {
+    "apiVersion" : "2018-11-29",
+    "endpointPrefix" : "execute-api",
+    "signingName" : "execute-api",
+    "serviceFullName" : "AmazonApiGatewayManagementApi",
+    "serviceId" : "ApiGatewayManagementApi",
+    "protocol" : "rest-json",
+    "jsonVersion" : "1.1",
+    "uid" : "apigatewaymanagementapi-2018-11-29",
+    "signatureVersion" : "v4"
+  },
+  "operations" : {
+    "DeleteConnection" : {
+      "name" : "DeleteConnection",
+      "http" : {
+        "method" : "DELETE",
+        "requestUri" : "/@connections/{connectionId}",
+        "responseCode" : 204
+      },
+      "input" : {
+        "shape" : "DeleteConnectionRequest"
+      },
+      "errors" : [ {
+        "shape" : "GoneException",
+        "documentation" : "<p>The connection with the provided id no longer exists.</p>"
+      }, {
+        "shape" : "LimitExceededException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time or the WebSocket client side buffer is full.</p>"
+      }, {
+        "shape" : "ForbiddenException",
+        "documentation" : "<p>The caller is not authorized to invoke this operation.</p>"
+      } ],
+      "documentation" : "<p>Delete the connection with the provided id.</p>"
+    },
+    "GetConnection" : {
+      "name" : "GetConnection",
+      "http" : {
+        "method" : "GET",
+        "requestUri" : "/@connections/{connectionId}",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "GetConnectionRequest"
+      },
+      "output" : {
+        "shape" : "GetConnectionResponse"
+      },
+      "errors" : [ {
+        "shape" : "GoneException",
+        "documentation" : "<p>The connection with the provided id no longer exists.</p>"
+      }, {
+        "shape" : "LimitExceededException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time or the WebSocket client side buffer is full.</p>"
+      }, {
+        "shape" : "ForbiddenException",
+        "documentation" : "<p>The caller is not authorized to invoke this operation.</p>"
+      } ],
+      "documentation" : "<p>Get information about the connection with the provided id.</p>"
+    },
+    "PostToConnection" : {
+      "name" : "PostToConnection",
+      "http" : {
+        "method" : "POST",
+        "requestUri" : "/@connections/{connectionId}",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "PostToConnectionRequest"
+      },
+      "errors" : [ {
+        "shape" : "GoneException",
+        "documentation" : "<p>The connection with the provided id no longer exists.</p>"
+      }, {
+        "shape" : "LimitExceededException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time or the WebSocket client side buffer is full.</p>"
+      }, {
+        "shape" : "PayloadTooLargeException",
+        "documentation" : "<p>The data has exceeded the maximum size allowed.</p>"
+      }, {
+        "shape" : "ForbiddenException",
+        "documentation" : "<p>The caller is not authorized to invoke this operation.</p>"
+      } ],
+      "documentation" : "<p>Sends the provided data to the specified connection.</p>"
+    }
+  },
+  "shapes" : {
+    "Data" : {
+      "type" : "blob",
+      "max" : 131072,
+      "documentation" : "<p>The data to be sent to the client specified by its connection id.</p>"
+    },
+    "DeleteConnectionRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ConnectionId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "connectionId"
+        }
+      },
+      "required" : [ "ConnectionId" ]
+    },
+    "ForbiddenException" : {
+      "type" : "structure",
+      "members" : { },
+      "documentation" : "<p>The caller is not authorized to invoke this operation.</p>",
+      "exception" : true,
+      "error" : {
+        "httpStatusCode" : 403
+      }
+    },
+    "GetConnectionRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ConnectionId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "connectionId"
+        }
+      },
+      "required" : [ "ConnectionId" ]
+    },
+    "GetConnectionResponse" : {
+      "type" : "structure",
+      "members" : {
+        "ConnectedAt" : {
+          "shape" : "__timestampIso8601",
+          "locationName" : "connectedAt",
+          "documentation" : "<p>The time in ISO 8601 format for when the connection was established.</p>"
+        },
+        "Identity" : {
+          "shape" : "Identity",
+          "locationName" : "identity"
+        },
+        "LastActiveAt" : {
+          "shape" : "__timestampIso8601",
+          "locationName" : "lastActiveAt",
+          "documentation" : "<p>The time in ISO 8601 format for when the connection was last active.</p>"
+        }
+      }
+    },
+    "GoneException" : {
+      "type" : "structure",
+      "members" : { },
+      "documentation" : "<p>The connection with the provided id no longer exists.</p>",
+      "exception" : true,
+      "error" : {
+        "httpStatusCode" : 410
+      }
+    },
+    "Identity" : {
+      "type" : "structure",
+      "members" : {
+        "SourceIp" : {
+          "shape" : "__string",
+          "locationName" : "sourceIp",
+          "documentation" : "<p>The source IP address of the TCP connection making the request to API Gateway.</p>"
+        },
+        "UserAgent" : {
+          "shape" : "__string",
+          "locationName" : "userAgent",
+          "documentation" : "<p>The User Agent of the API caller.</p>"
+        }
+      },
+      "required" : [ "SourceIp", "UserAgent" ]
+    },
+    "PayloadTooLargeException" : {
+      "type" : "structure",
+      "members" : {
+        "Message" : {
+          "shape" : "__string",
+          "locationName" : "message"
+        }
+      },
+      "documentation" : "<p>The data has exceeded the maximum size allowed.</p>",
+      "exception" : true,
+      "error" : {
+        "httpStatusCode" : 413
+      }
+    },
+    "PostToConnectionRequest" : {
+      "type" : "structure",
+      "members" : {
+        "Data" : {
+          "shape" : "Data",
+          "documentation" : "<p>The data to be sent to the client specified by its connection id.</p>"
+        },
+        "ConnectionId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "connectionId",
+          "documentation" : "<p>The identifier of the connection that a specific client is using.</p>"
+        }
+      },
+      "required" : [ "ConnectionId", "Data" ],
+      "payload" : "Data"
+    },
+    "LimitExceededException" : {
+      "type" : "structure",
+      "members" : { },
+      "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time or the WebSocket client side buffer is full.</p>",
+      "exception" : true,
+      "error" : {
+        "httpStatusCode" : 429
+      }
+    },
+    "__string" : {
+      "type" : "string"
+    },
+    "__timestampIso8601" : {
+      "type" : "timestamp",
+      "timestampFormat" : "iso8601"
+    }
+  },
+  "documentation" : "<p>The Amazon API Gateway Management API allows you to directly manage runtime aspects of your deployed APIs. To use it, you must explicitly set the SDK's endpoint to point to the endpoint of your deployed API. The endpoint will be of the form https://{api-id}.execute-api.{region}.amazonaws.com/{stage}, or will be the endpoint corresponding to your API's custom domain and base path, if applicable.</p>"
+}

+ 64 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/apigatewayv2/2018-11-29/paginators-1.json

@@ -0,0 +1,64 @@
+{
+  "pagination": {
+    "GetApis": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "Items"
+    },
+    "GetAuthorizers": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "Items"
+    },
+    "GetDeployments": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "Items"
+    },
+    "GetDomainNames": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "Items"
+    },
+    "GetIntegrationResponses": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "Items"
+    },
+    "GetIntegrations": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "Items"
+    },
+    "GetModels": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "Items"
+    },
+    "GetRouteResponses": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "Items"
+    },
+    "GetRoutes": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "Items"
+    },
+    "GetStages": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "Items"
+    }
+  }
+}

+ 8813 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/apigatewayv2/2018-11-29/service-2.json

@@ -0,0 +1,8813 @@
+{
+  "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",
+        "documentation" : "<p>The request has succeeded and has resulted in the creation of a resource.</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      }, {
+        "shape" : "ConflictException",
+        "documentation" : "<p>The resource already exists.</p>"
+      } ],
+      "documentation" : "<p>Creates an Api resource.</p>"
+    },
+    "CreateApiMapping" : {
+      "name" : "CreateApiMapping",
+      "http" : {
+        "method" : "POST",
+        "requestUri" : "/v2/domainnames/{domainName}/apimappings",
+        "responseCode" : 201
+      },
+      "input" : {
+        "shape" : "CreateApiMappingRequest"
+      },
+      "output" : {
+        "shape" : "CreateApiMappingResponse",
+        "documentation" : "<p>The request has succeeded and has resulted in the creation of a resource.</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      }, {
+        "shape" : "ConflictException",
+        "documentation" : "<p>The resource already exists.</p>"
+      } ],
+      "documentation" : "<p>Creates an API mapping.</p>"
+    },
+    "CreateAuthorizer" : {
+      "name" : "CreateAuthorizer",
+      "http" : {
+        "method" : "POST",
+        "requestUri" : "/v2/apis/{apiId}/authorizers",
+        "responseCode" : 201
+      },
+      "input" : {
+        "shape" : "CreateAuthorizerRequest"
+      },
+      "output" : {
+        "shape" : "CreateAuthorizerResponse",
+        "documentation" : "<p>The request has succeeded and has resulted in the creation of a resource.</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      }, {
+        "shape" : "ConflictException",
+        "documentation" : "<p>The resource already exists.</p>"
+      } ],
+      "documentation" : "<p>Creates an Authorizer for an API.</p>"
+    },
+    "CreateDeployment" : {
+      "name" : "CreateDeployment",
+      "http" : {
+        "method" : "POST",
+        "requestUri" : "/v2/apis/{apiId}/deployments",
+        "responseCode" : 201
+      },
+      "input" : {
+        "shape" : "CreateDeploymentRequest"
+      },
+      "output" : {
+        "shape" : "CreateDeploymentResponse",
+        "documentation" : "<p>The request has succeeded and has resulted in the creation of a resource.</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      }, {
+        "shape" : "ConflictException",
+        "documentation" : "<p>The resource already exists.</p>"
+      } ],
+      "documentation" : "<p>Creates a Deployment for an API.</p>"
+    },
+    "CreateDomainName" : {
+      "name" : "CreateDomainName",
+      "http" : {
+        "method" : "POST",
+        "requestUri" : "/v2/domainnames",
+        "responseCode" : 201
+      },
+      "input" : {
+        "shape" : "CreateDomainNameRequest"
+      },
+      "output" : {
+        "shape" : "CreateDomainNameResponse",
+        "documentation" : "<p>The request has succeeded and has resulted in the creation of a resource.</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      }, {
+        "shape" : "ConflictException",
+        "documentation" : "<p>The resource already exists.</p>"
+      }, {
+        "shape" : "AccessDeniedException",
+        "documentation" : "<p>403 response</p>"
+      } ],
+      "documentation" : "<p>Creates a domain name.</p>"
+    },
+    "CreateIntegration" : {
+      "name" : "CreateIntegration",
+      "http" : {
+        "method" : "POST",
+        "requestUri" : "/v2/apis/{apiId}/integrations",
+        "responseCode" : 201
+      },
+      "input" : {
+        "shape" : "CreateIntegrationRequest"
+      },
+      "output" : {
+        "shape" : "CreateIntegrationResult",
+        "documentation" : "<p>The request has succeeded and has resulted in the creation of a resource.</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      }, {
+        "shape" : "ConflictException",
+        "documentation" : "<p>The resource already exists.</p>"
+      } ],
+      "documentation" : "<p>Creates an Integration.</p>"
+    },
+    "CreateIntegrationResponse" : {
+      "name" : "CreateIntegrationResponse",
+      "http" : {
+        "method" : "POST",
+        "requestUri" : "/v2/apis/{apiId}/integrations/{integrationId}/integrationresponses",
+        "responseCode" : 201
+      },
+      "input" : {
+        "shape" : "CreateIntegrationResponseRequest"
+      },
+      "output" : {
+        "shape" : "CreateIntegrationResponseResponse",
+        "documentation" : "<p>The request has succeeded and has resulted in the creation of a resource.</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      }, {
+        "shape" : "ConflictException",
+        "documentation" : "<p>The resource already exists.</p>"
+      } ],
+      "documentation" : "<p>Creates an IntegrationResponses.</p>"
+    },
+    "CreateModel" : {
+      "name" : "CreateModel",
+      "http" : {
+        "method" : "POST",
+        "requestUri" : "/v2/apis/{apiId}/models",
+        "responseCode" : 201
+      },
+      "input" : {
+        "shape" : "CreateModelRequest"
+      },
+      "output" : {
+        "shape" : "CreateModelResponse",
+        "documentation" : "<p>The request has succeeded and has resulted in the creation of a resource.</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      }, {
+        "shape" : "ConflictException",
+        "documentation" : "<p>The resource already exists.</p>"
+      } ],
+      "documentation" : "<p>Creates a Model for an API.</p>"
+    },
+    "CreateRoute" : {
+      "name" : "CreateRoute",
+      "http" : {
+        "method" : "POST",
+        "requestUri" : "/v2/apis/{apiId}/routes",
+        "responseCode" : 201
+      },
+      "input" : {
+        "shape" : "CreateRouteRequest"
+      },
+      "output" : {
+        "shape" : "CreateRouteResult",
+        "documentation" : "<p>The request has succeeded and has resulted in the creation of a resource.</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      }, {
+        "shape" : "ConflictException",
+        "documentation" : "<p>The resource already exists.</p>"
+      } ],
+      "documentation" : "<p>Creates a Route for an API.</p>"
+    },
+    "CreateRouteResponse" : {
+      "name" : "CreateRouteResponse",
+      "http" : {
+        "method" : "POST",
+        "requestUri" : "/v2/apis/{apiId}/routes/{routeId}/routeresponses",
+        "responseCode" : 201
+      },
+      "input" : {
+        "shape" : "CreateRouteResponseRequest"
+      },
+      "output" : {
+        "shape" : "CreateRouteResponseResponse",
+        "documentation" : "<p>The request has succeeded and has resulted in the creation of a resource.</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      }, {
+        "shape" : "ConflictException",
+        "documentation" : "<p>The resource already exists.</p>"
+      } ],
+      "documentation" : "<p>Creates a RouteResponse for a Route.</p>"
+    },
+    "CreateStage" : {
+      "name" : "CreateStage",
+      "http" : {
+        "method" : "POST",
+        "requestUri" : "/v2/apis/{apiId}/stages",
+        "responseCode" : 201
+      },
+      "input" : {
+        "shape" : "CreateStageRequest"
+      },
+      "output" : {
+        "shape" : "CreateStageResponse",
+        "documentation" : "<p>The request has succeeded and has resulted in the creation of a resource.</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      }, {
+        "shape" : "ConflictException",
+        "documentation" : "<p>The resource already exists.</p>"
+      } ],
+      "documentation" : "<p>Creates a Stage for an API.</p>"
+    },
+    "CreateVpcLink" : {
+      "name" : "CreateVpcLink",
+      "http" : {
+        "method" : "POST",
+        "requestUri" : "/v2/vpclinks",
+        "responseCode" : 201
+      },
+      "input" : {
+        "shape" : "CreateVpcLinkRequest"
+      },
+      "output" : {
+        "shape" : "CreateVpcLinkResponse",
+        "documentation" : "<p>The request has succeeded and has resulted in the creation of a resource.</p>"
+      },
+      "errors" : [ {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Creates a VPC link.</p>"
+    },
+    "DeleteAccessLogSettings" : {
+      "name" : "DeleteAccessLogSettings",
+      "http" : {
+        "method" : "DELETE",
+        "requestUri" : "/v2/apis/{apiId}/stages/{stageName}/accesslogsettings",
+        "responseCode" : 204
+      },
+      "input" : {
+        "shape" : "DeleteAccessLogSettingsRequest"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Deletes the AccessLogSettings for a Stage. To disable access logging for a Stage, delete its AccessLogSettings.</p>"
+    },
+    "DeleteApi" : {
+      "name" : "DeleteApi",
+      "http" : {
+        "method" : "DELETE",
+        "requestUri" : "/v2/apis/{apiId}",
+        "responseCode" : 204
+      },
+      "input" : {
+        "shape" : "DeleteApiRequest"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Deletes an Api resource.</p>"
+    },
+    "DeleteApiMapping" : {
+      "name" : "DeleteApiMapping",
+      "http" : {
+        "method" : "DELETE",
+        "requestUri" : "/v2/domainnames/{domainName}/apimappings/{apiMappingId}",
+        "responseCode" : 204
+      },
+      "input" : {
+        "shape" : "DeleteApiMappingRequest"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      } ],
+      "documentation" : "<p>Deletes an API mapping.</p>"
+    },
+    "DeleteAuthorizer" : {
+      "name" : "DeleteAuthorizer",
+      "http" : {
+        "method" : "DELETE",
+        "requestUri" : "/v2/apis/{apiId}/authorizers/{authorizerId}",
+        "responseCode" : 204
+      },
+      "input" : {
+        "shape" : "DeleteAuthorizerRequest"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Deletes an Authorizer.</p>"
+    },
+    "DeleteCorsConfiguration" : {
+      "name" : "DeleteCorsConfiguration",
+      "http" : {
+        "method" : "DELETE",
+        "requestUri" : "/v2/apis/{apiId}/cors",
+        "responseCode" : 204
+      },
+      "input" : {
+        "shape" : "DeleteCorsConfigurationRequest"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Deletes a CORS configuration.</p>"
+    },
+    "DeleteDeployment" : {
+      "name" : "DeleteDeployment",
+      "http" : {
+        "method" : "DELETE",
+        "requestUri" : "/v2/apis/{apiId}/deployments/{deploymentId}",
+        "responseCode" : 204
+      },
+      "input" : {
+        "shape" : "DeleteDeploymentRequest"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Deletes a Deployment.</p>"
+    },
+    "DeleteDomainName" : {
+      "name" : "DeleteDomainName",
+      "http" : {
+        "method" : "DELETE",
+        "requestUri" : "/v2/domainnames/{domainName}",
+        "responseCode" : 204
+      },
+      "input" : {
+        "shape" : "DeleteDomainNameRequest"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Deletes a domain name.</p>"
+    },
+    "DeleteIntegration" : {
+      "name" : "DeleteIntegration",
+      "http" : {
+        "method" : "DELETE",
+        "requestUri" : "/v2/apis/{apiId}/integrations/{integrationId}",
+        "responseCode" : 204
+      },
+      "input" : {
+        "shape" : "DeleteIntegrationRequest"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Deletes an Integration.</p>"
+    },
+    "DeleteIntegrationResponse" : {
+      "name" : "DeleteIntegrationResponse",
+      "http" : {
+        "method" : "DELETE",
+        "requestUri" : "/v2/apis/{apiId}/integrations/{integrationId}/integrationresponses/{integrationResponseId}",
+        "responseCode" : 204
+      },
+      "input" : {
+        "shape" : "DeleteIntegrationResponseRequest"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Deletes an IntegrationResponses.</p>"
+    },
+    "DeleteModel" : {
+      "name" : "DeleteModel",
+      "http" : {
+        "method" : "DELETE",
+        "requestUri" : "/v2/apis/{apiId}/models/{modelId}",
+        "responseCode" : 204
+      },
+      "input" : {
+        "shape" : "DeleteModelRequest"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Deletes a Model.</p>"
+    },
+    "DeleteRoute" : {
+      "name" : "DeleteRoute",
+      "http" : {
+        "method" : "DELETE",
+        "requestUri" : "/v2/apis/{apiId}/routes/{routeId}",
+        "responseCode" : 204
+      },
+      "input" : {
+        "shape" : "DeleteRouteRequest"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Deletes a Route.</p>"
+    },
+    "DeleteRouteRequestParameter" : {
+      "name" : "DeleteRouteRequestParameter",
+      "http" : {
+        "method" : "DELETE",
+        "requestUri" : "/v2/apis/{apiId}/routes/{routeId}/requestparameters/{requestParameterKey}",
+        "responseCode" : 204
+      },
+      "input" : {
+        "shape" : "DeleteRouteRequestParameterRequest"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Deletes a route request parameter.</p>"
+    },
+    "DeleteRouteResponse" : {
+      "name" : "DeleteRouteResponse",
+      "http" : {
+        "method" : "DELETE",
+        "requestUri" : "/v2/apis/{apiId}/routes/{routeId}/routeresponses/{routeResponseId}",
+        "responseCode" : 204
+      },
+      "input" : {
+        "shape" : "DeleteRouteResponseRequest"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Deletes a RouteResponse.</p>"
+    },
+    "DeleteRouteSettings" : {
+      "name" : "DeleteRouteSettings",
+      "http" : {
+        "method" : "DELETE",
+        "requestUri" : "/v2/apis/{apiId}/stages/{stageName}/routesettings/{routeKey}",
+        "responseCode" : 204
+      },
+      "input" : {
+        "shape" : "DeleteRouteSettingsRequest"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Deletes the RouteSettings for a stage.</p>"
+    },
+    "DeleteStage" : {
+      "name" : "DeleteStage",
+      "http" : {
+        "method" : "DELETE",
+        "requestUri" : "/v2/apis/{apiId}/stages/{stageName}",
+        "responseCode" : 204
+      },
+      "input" : {
+        "shape" : "DeleteStageRequest"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Deletes a Stage.</p>"
+    },
+    "DeleteVpcLink" : {
+      "name" : "DeleteVpcLink",
+      "http" : {
+        "method" : "DELETE",
+        "requestUri" : "/v2/vpclinks/{vpcLinkId}",
+        "responseCode" : 202
+      },
+      "input" : {
+        "shape" : "DeleteVpcLinkRequest"
+      },
+      "output" : {
+        "shape" : "DeleteVpcLinkResponse",
+        "documentation" : "<p>202 response</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Deletes a VPC link.</p>"
+    },
+    "ExportApi" : {
+      "name" : "ExportApi",
+      "http" : {
+        "method" : "GET",
+        "requestUri" : "/v2/apis/{apiId}/exports/{specification}",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "ExportApiRequest"
+      },
+      "output" : {
+        "shape" : "ExportApiResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      } ]
+    },
+    "ResetAuthorizersCache" : {
+      "name" : "ResetAuthorizersCache",
+      "http" : {
+        "method" : "DELETE",
+        "requestUri" : "/v2/apis/{apiId}/stages/{stageName}/cache/authorizers",
+        "responseCode" : 204
+      },
+      "input" : {
+        "shape" : "ResetAuthorizersCacheRequest"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Resets all authorizer cache entries on a stage. Supported only for HTTP APIs.</p>"
+    },
+    "GetApi" : {
+      "name" : "GetApi",
+      "http" : {
+        "method" : "GET",
+        "requestUri" : "/v2/apis/{apiId}",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "GetApiRequest"
+      },
+      "output" : {
+        "shape" : "GetApiResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Gets an Api resource.</p>"
+    },
+    "GetApiMapping" : {
+      "name" : "GetApiMapping",
+      "http" : {
+        "method" : "GET",
+        "requestUri" : "/v2/domainnames/{domainName}/apimappings/{apiMappingId}",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "GetApiMappingRequest"
+      },
+      "output" : {
+        "shape" : "GetApiMappingResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      } ],
+      "documentation" : "<p>Gets an API mapping.</p>"
+    },
+    "GetApiMappings" : {
+      "name" : "GetApiMappings",
+      "http" : {
+        "method" : "GET",
+        "requestUri" : "/v2/domainnames/{domainName}/apimappings",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "GetApiMappingsRequest"
+      },
+      "output" : {
+        "shape" : "GetApiMappingsResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      } ],
+      "documentation" : "<p>Gets API mappings.</p>"
+    },
+    "GetApis" : {
+      "name" : "GetApis",
+      "http" : {
+        "method" : "GET",
+        "requestUri" : "/v2/apis",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "GetApisRequest"
+      },
+      "output" : {
+        "shape" : "GetApisResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      } ],
+      "documentation" : "<p>Gets a collection of Api resources.</p>"
+    },
+    "GetAuthorizer" : {
+      "name" : "GetAuthorizer",
+      "http" : {
+        "method" : "GET",
+        "requestUri" : "/v2/apis/{apiId}/authorizers/{authorizerId}",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "GetAuthorizerRequest"
+      },
+      "output" : {
+        "shape" : "GetAuthorizerResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Gets an Authorizer.</p>"
+    },
+    "GetAuthorizers" : {
+      "name" : "GetAuthorizers",
+      "http" : {
+        "method" : "GET",
+        "requestUri" : "/v2/apis/{apiId}/authorizers",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "GetAuthorizersRequest"
+      },
+      "output" : {
+        "shape" : "GetAuthorizersResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      } ],
+      "documentation" : "<p>Gets the Authorizers for an API.</p>"
+    },
+    "GetDeployment" : {
+      "name" : "GetDeployment",
+      "http" : {
+        "method" : "GET",
+        "requestUri" : "/v2/apis/{apiId}/deployments/{deploymentId}",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "GetDeploymentRequest"
+      },
+      "output" : {
+        "shape" : "GetDeploymentResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Gets a Deployment.</p>"
+    },
+    "GetDeployments" : {
+      "name" : "GetDeployments",
+      "http" : {
+        "method" : "GET",
+        "requestUri" : "/v2/apis/{apiId}/deployments",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "GetDeploymentsRequest"
+      },
+      "output" : {
+        "shape" : "GetDeploymentsResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      } ],
+      "documentation" : "<p>Gets the Deployments for an API.</p>"
+    },
+    "GetDomainName" : {
+      "name" : "GetDomainName",
+      "http" : {
+        "method" : "GET",
+        "requestUri" : "/v2/domainnames/{domainName}",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "GetDomainNameRequest"
+      },
+      "output" : {
+        "shape" : "GetDomainNameResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Gets a domain name.</p>"
+    },
+    "GetDomainNames" : {
+      "name" : "GetDomainNames",
+      "http" : {
+        "method" : "GET",
+        "requestUri" : "/v2/domainnames",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "GetDomainNamesRequest"
+      },
+      "output" : {
+        "shape" : "GetDomainNamesResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      } ],
+      "documentation" : "<p>Gets the domain names for an AWS account.</p>"
+    },
+    "GetIntegration" : {
+      "name" : "GetIntegration",
+      "http" : {
+        "method" : "GET",
+        "requestUri" : "/v2/apis/{apiId}/integrations/{integrationId}",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "GetIntegrationRequest"
+      },
+      "output" : {
+        "shape" : "GetIntegrationResult",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Gets an Integration.</p>"
+    },
+    "GetIntegrationResponse" : {
+      "name" : "GetIntegrationResponse",
+      "http" : {
+        "method" : "GET",
+        "requestUri" : "/v2/apis/{apiId}/integrations/{integrationId}/integrationresponses/{integrationResponseId}",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "GetIntegrationResponseRequest"
+      },
+      "output" : {
+        "shape" : "GetIntegrationResponseResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Gets an IntegrationResponses.</p>"
+    },
+    "GetIntegrationResponses" : {
+      "name" : "GetIntegrationResponses",
+      "http" : {
+        "method" : "GET",
+        "requestUri" : "/v2/apis/{apiId}/integrations/{integrationId}/integrationresponses",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "GetIntegrationResponsesRequest"
+      },
+      "output" : {
+        "shape" : "GetIntegrationResponsesResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      } ],
+      "documentation" : "<p>Gets the IntegrationResponses for an Integration.</p>"
+    },
+    "GetIntegrations" : {
+      "name" : "GetIntegrations",
+      "http" : {
+        "method" : "GET",
+        "requestUri" : "/v2/apis/{apiId}/integrations",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "GetIntegrationsRequest"
+      },
+      "output" : {
+        "shape" : "GetIntegrationsResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      } ],
+      "documentation" : "<p>Gets the Integrations for an API.</p>"
+    },
+    "GetModel" : {
+      "name" : "GetModel",
+      "http" : {
+        "method" : "GET",
+        "requestUri" : "/v2/apis/{apiId}/models/{modelId}",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "GetModelRequest"
+      },
+      "output" : {
+        "shape" : "GetModelResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Gets a Model.</p>"
+    },
+    "GetModelTemplate" : {
+      "name" : "GetModelTemplate",
+      "http" : {
+        "method" : "GET",
+        "requestUri" : "/v2/apis/{apiId}/models/{modelId}/template",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "GetModelTemplateRequest"
+      },
+      "output" : {
+        "shape" : "GetModelTemplateResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Gets a model template.</p>"
+    },
+    "GetModels" : {
+      "name" : "GetModels",
+      "http" : {
+        "method" : "GET",
+        "requestUri" : "/v2/apis/{apiId}/models",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "GetModelsRequest"
+      },
+      "output" : {
+        "shape" : "GetModelsResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      } ],
+      "documentation" : "<p>Gets the Models for an API.</p>"
+    },
+    "GetRoute" : {
+      "name" : "GetRoute",
+      "http" : {
+        "method" : "GET",
+        "requestUri" : "/v2/apis/{apiId}/routes/{routeId}",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "GetRouteRequest"
+      },
+      "output" : {
+        "shape" : "GetRouteResult",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Gets a Route.</p>"
+    },
+    "GetRouteResponse" : {
+      "name" : "GetRouteResponse",
+      "http" : {
+        "method" : "GET",
+        "requestUri" : "/v2/apis/{apiId}/routes/{routeId}/routeresponses/{routeResponseId}",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "GetRouteResponseRequest"
+      },
+      "output" : {
+        "shape" : "GetRouteResponseResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Gets a RouteResponse.</p>"
+    },
+    "GetRouteResponses" : {
+      "name" : "GetRouteResponses",
+      "http" : {
+        "method" : "GET",
+        "requestUri" : "/v2/apis/{apiId}/routes/{routeId}/routeresponses",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "GetRouteResponsesRequest"
+      },
+      "output" : {
+        "shape" : "GetRouteResponsesResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      } ],
+      "documentation" : "<p>Gets the RouteResponses for a Route.</p>"
+    },
+    "GetRoutes" : {
+      "name" : "GetRoutes",
+      "http" : {
+        "method" : "GET",
+        "requestUri" : "/v2/apis/{apiId}/routes",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "GetRoutesRequest"
+      },
+      "output" : {
+        "shape" : "GetRoutesResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      } ],
+      "documentation" : "<p>Gets the Routes for an API.</p>"
+    },
+    "GetStage" : {
+      "name" : "GetStage",
+      "http" : {
+        "method" : "GET",
+        "requestUri" : "/v2/apis/{apiId}/stages/{stageName}",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "GetStageRequest"
+      },
+      "output" : {
+        "shape" : "GetStageResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Gets a Stage.</p>"
+    },
+    "GetStages" : {
+      "name" : "GetStages",
+      "http" : {
+        "method" : "GET",
+        "requestUri" : "/v2/apis/{apiId}/stages",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "GetStagesRequest"
+      },
+      "output" : {
+        "shape" : "GetStagesResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      } ],
+      "documentation" : "<p>Gets the Stages for an API.</p>"
+    },
+    "GetTags" : {
+      "name" : "GetTags",
+      "http" : {
+        "method" : "GET",
+        "requestUri" : "/v2/tags/{resource-arn}",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "GetTagsRequest"
+      },
+      "output" : {
+        "shape" : "GetTagsResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      }, {
+        "shape" : "ConflictException",
+        "documentation" : "<p>The resource already exists.</p>"
+      } ],
+      "documentation" : "<p>Gets a collection of Tag resources.</p>"
+    },
+    "GetVpcLink" : {
+      "name" : "GetVpcLink",
+      "http" : {
+        "method" : "GET",
+        "requestUri" : "/v2/vpclinks/{vpcLinkId}",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "GetVpcLinkRequest"
+      },
+      "output" : {
+        "shape" : "GetVpcLinkResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Gets a VPC link.</p>"
+    },
+    "GetVpcLinks" : {
+      "name" : "GetVpcLinks",
+      "http" : {
+        "method" : "GET",
+        "requestUri" : "/v2/vpclinks",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "GetVpcLinksRequest"
+      },
+      "output" : {
+        "shape" : "GetVpcLinksResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      } ],
+      "documentation" : "<p>Gets a collection of VPC links.</p>"
+    },
+    "ImportApi" : {
+      "name" : "ImportApi",
+      "http" : {
+        "method" : "PUT",
+        "requestUri" : "/v2/apis",
+        "responseCode" : 201
+      },
+      "input" : {
+        "shape" : "ImportApiRequest"
+      },
+      "output" : {
+        "shape" : "ImportApiResponse",
+        "documentation" : "<p>The request has succeeded and has resulted in the creation of a resource.</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      }, {
+        "shape" : "ConflictException",
+        "documentation" : "<p>The resource already exists.</p>"
+      } ],
+      "documentation" : "<p>Imports an API.</p>"
+    },
+    "ReimportApi" : {
+      "name" : "ReimportApi",
+      "http" : {
+        "method" : "PUT",
+        "requestUri" : "/v2/apis/{apiId}",
+        "responseCode" : 201
+      },
+      "input" : {
+        "shape" : "ReimportApiRequest"
+      },
+      "output" : {
+        "shape" : "ReimportApiResponse",
+        "documentation" : "<p>The request has succeeded and has resulted in the creation of a resource.</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      }, {
+        "shape" : "ConflictException",
+        "documentation" : "<p>The resource already exists.</p>"
+      } ],
+      "documentation" : "<p>Puts an Api resource.</p>"
+    },
+    "TagResource" : {
+      "name" : "TagResource",
+      "http" : {
+        "method" : "POST",
+        "requestUri" : "/v2/tags/{resource-arn}",
+        "responseCode" : 201
+      },
+      "input" : {
+        "shape" : "TagResourceRequest"
+      },
+      "output" : {
+        "shape" : "TagResourceResponse",
+        "documentation" : "<p>The request has succeeded and has resulted in the creation of a resource.</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      }, {
+        "shape" : "ConflictException",
+        "documentation" : "<p>The resource already exists.</p>"
+      } ],
+      "documentation" : "<p>Creates a new Tag resource to represent a tag.</p>"
+    },
+    "UntagResource" : {
+      "name" : "UntagResource",
+      "http" : {
+        "method" : "DELETE",
+        "requestUri" : "/v2/tags/{resource-arn}",
+        "responseCode" : 204
+      },
+      "input" : {
+        "shape" : "UntagResourceRequest"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      }, {
+        "shape" : "ConflictException",
+        "documentation" : "<p>The resource already exists.</p>"
+      } ],
+      "documentation" : "<p>Deletes a Tag.</p>"
+    },
+    "UpdateApi" : {
+      "name" : "UpdateApi",
+      "http" : {
+        "method" : "PATCH",
+        "requestUri" : "/v2/apis/{apiId}",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "UpdateApiRequest"
+      },
+      "output" : {
+        "shape" : "UpdateApiResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      }, {
+        "shape" : "ConflictException",
+        "documentation" : "<p>The resource already exists.</p>"
+      } ],
+      "documentation" : "<p>Updates an Api resource.</p>"
+    },
+    "UpdateApiMapping" : {
+      "name" : "UpdateApiMapping",
+      "http" : {
+        "method" : "PATCH",
+        "requestUri" : "/v2/domainnames/{domainName}/apimappings/{apiMappingId}",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "UpdateApiMappingRequest"
+      },
+      "output" : {
+        "shape" : "UpdateApiMappingResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      }, {
+        "shape" : "ConflictException",
+        "documentation" : "<p>The resource already exists.</p>"
+      } ],
+      "documentation" : "<p>The API mapping.</p>"
+    },
+    "UpdateAuthorizer" : {
+      "name" : "UpdateAuthorizer",
+      "http" : {
+        "method" : "PATCH",
+        "requestUri" : "/v2/apis/{apiId}/authorizers/{authorizerId}",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "UpdateAuthorizerRequest"
+      },
+      "output" : {
+        "shape" : "UpdateAuthorizerResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      }, {
+        "shape" : "ConflictException",
+        "documentation" : "<p>The resource already exists.</p>"
+      } ],
+      "documentation" : "<p>Updates an Authorizer.</p>"
+    },
+    "UpdateDeployment" : {
+      "name" : "UpdateDeployment",
+      "http" : {
+        "method" : "PATCH",
+        "requestUri" : "/v2/apis/{apiId}/deployments/{deploymentId}",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "UpdateDeploymentRequest"
+      },
+      "output" : {
+        "shape" : "UpdateDeploymentResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      }, {
+        "shape" : "ConflictException",
+        "documentation" : "<p>The resource already exists.</p>"
+      } ],
+      "documentation" : "<p>Updates a Deployment.</p>"
+    },
+    "UpdateDomainName" : {
+      "name" : "UpdateDomainName",
+      "http" : {
+        "method" : "PATCH",
+        "requestUri" : "/v2/domainnames/{domainName}",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "UpdateDomainNameRequest"
+      },
+      "output" : {
+        "shape" : "UpdateDomainNameResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      }, {
+        "shape" : "ConflictException",
+        "documentation" : "<p>The resource already exists.</p>"
+      } ],
+      "documentation" : "<p>Updates a domain name.</p>"
+    },
+    "UpdateIntegration" : {
+      "name" : "UpdateIntegration",
+      "http" : {
+        "method" : "PATCH",
+        "requestUri" : "/v2/apis/{apiId}/integrations/{integrationId}",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "UpdateIntegrationRequest"
+      },
+      "output" : {
+        "shape" : "UpdateIntegrationResult",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      }, {
+        "shape" : "ConflictException",
+        "documentation" : "<p>The resource already exists.</p>"
+      } ],
+      "documentation" : "<p>Updates an Integration.</p>"
+    },
+    "UpdateIntegrationResponse" : {
+      "name" : "UpdateIntegrationResponse",
+      "http" : {
+        "method" : "PATCH",
+        "requestUri" : "/v2/apis/{apiId}/integrations/{integrationId}/integrationresponses/{integrationResponseId}",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "UpdateIntegrationResponseRequest"
+      },
+      "output" : {
+        "shape" : "UpdateIntegrationResponseResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      }, {
+        "shape" : "ConflictException",
+        "documentation" : "<p>The resource already exists.</p>"
+      } ],
+      "documentation" : "<p>Updates an IntegrationResponses.</p>"
+    },
+    "UpdateModel" : {
+      "name" : "UpdateModel",
+      "http" : {
+        "method" : "PATCH",
+        "requestUri" : "/v2/apis/{apiId}/models/{modelId}",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "UpdateModelRequest"
+      },
+      "output" : {
+        "shape" : "UpdateModelResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      }, {
+        "shape" : "ConflictException",
+        "documentation" : "<p>The resource already exists.</p>"
+      } ],
+      "documentation" : "<p>Updates a Model.</p>"
+    },
+    "UpdateRoute" : {
+      "name" : "UpdateRoute",
+      "http" : {
+        "method" : "PATCH",
+        "requestUri" : "/v2/apis/{apiId}/routes/{routeId}",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "UpdateRouteRequest"
+      },
+      "output" : {
+        "shape" : "UpdateRouteResult",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      }, {
+        "shape" : "ConflictException",
+        "documentation" : "<p>The resource already exists.</p>"
+      } ],
+      "documentation" : "<p>Updates a Route.</p>"
+    },
+    "UpdateRouteResponse" : {
+      "name" : "UpdateRouteResponse",
+      "http" : {
+        "method" : "PATCH",
+        "requestUri" : "/v2/apis/{apiId}/routes/{routeId}/routeresponses/{routeResponseId}",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "UpdateRouteResponseRequest"
+      },
+      "output" : {
+        "shape" : "UpdateRouteResponseResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      }, {
+        "shape" : "ConflictException",
+        "documentation" : "<p>The resource already exists.</p>"
+      } ],
+      "documentation" : "<p>Updates a RouteResponse.</p>"
+    },
+    "UpdateStage" : {
+      "name" : "UpdateStage",
+      "http" : {
+        "method" : "PATCH",
+        "requestUri" : "/v2/apis/{apiId}/stages/{stageName}",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "UpdateStageRequest"
+      },
+      "output" : {
+        "shape" : "UpdateStageResponse",
+        "documentation" : "<p>Success</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      }, {
+        "shape" : "ConflictException",
+        "documentation" : "<p>The resource already exists.</p>"
+      } ],
+      "documentation" : "<p>Updates a Stage.</p>"
+    },
+    "UpdateVpcLink" : {
+      "name" : "UpdateVpcLink",
+      "http" : {
+        "method" : "PATCH",
+        "requestUri" : "/v2/vpclinks/{vpcLinkId}",
+        "responseCode" : 200
+      },
+      "input" : {
+        "shape" : "UpdateVpcLinkRequest"
+      },
+      "output" : {
+        "shape" : "UpdateVpcLinkResponse",
+        "documentation" : "<p>200 response</p>"
+      },
+      "errors" : [ {
+        "shape" : "NotFoundException",
+        "documentation" : "<p>The resource specified in the request was not found.</p>"
+      }, {
+        "shape" : "TooManyRequestsException",
+        "documentation" : "<p>The client is sending more than the allowed number of requests per unit of time.</p>"
+      }, {
+        "shape" : "BadRequestException",
+        "documentation" : "<p>One of the parameters in the request is invalid.</p>"
+      } ],
+      "documentation" : "<p>Updates a VPC link.</p>"
+    }
+  },
+  "shapes" : {
+    "AccessDeniedException" : {
+      "type" : "structure",
+      "members" : {
+        "Message" : {
+          "shape" : "__string",
+          "locationName" : "message"
+        }
+      },
+      "exception" : true,
+      "error" : {
+        "httpStatusCode" : 403
+      }
+    },
+    "AccessLogSettings" : {
+      "type" : "structure",
+      "members" : {
+        "DestinationArn" : {
+          "shape" : "Arn",
+          "locationName" : "destinationArn",
+          "documentation" : "<p>The ARN of the CloudWatch Logs log group to receive access logs.</p>"
+        },
+        "Format" : {
+          "shape" : "StringWithLengthBetween1And1024",
+          "locationName" : "format",
+          "documentation" : "<p>A single line format of the access logs of data, as specified by selected $context variables. The format must include at least $context.requestId.</p>"
+        }
+      },
+      "documentation" : "<p>Settings for logging access in a stage.</p>"
+    },
+    "Api" : {
+      "type" : "structure",
+      "members" : {
+        "ApiEndpoint" : {
+          "shape" : "__string",
+          "locationName" : "apiEndpoint",
+          "documentation" : "<p>The URI of the API, of the form {api-id}.execute-api.{region}.amazonaws.com. The stage name is typically appended to this URI to form a complete path to a deployed API stage.</p>"
+        },
+        "ApiGatewayManaged" : {
+          "shape" : "__boolean",
+          "locationName" : "apiGatewayManaged",
+          "documentation" : "<p>Specifies whether an API is managed by API Gateway. You can't update or delete a managed API by using API Gateway. A managed API can be deleted only through the tooling or service that created it.</p>"
+        },
+        "ApiId" : {
+          "shape" : "Id",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API ID.</p>"
+        },
+        "ApiKeySelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "apiKeySelectionExpression",
+          "documentation" : "<p>An API key selection expression. Supported only for WebSocket APIs. See <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-apikey-selection-expressions\">API Key Selection Expressions</a>.</p>"
+        },
+        "CorsConfiguration" : {
+          "shape" : "Cors",
+          "locationName" : "corsConfiguration",
+          "documentation" : "<p>A CORS configuration. Supported only for HTTP APIs.</p>"
+        },
+        "CreatedDate" : {
+          "shape" : "__timestampIso8601",
+          "locationName" : "createdDate",
+          "documentation" : "<p>The timestamp when the API was created.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description of the API.</p>"
+        },
+        "DisableSchemaValidation" : {
+          "shape" : "__boolean",
+          "locationName" : "disableSchemaValidation",
+          "documentation" : "<p>Avoid validating models when creating a deployment. Supported only for WebSocket APIs.</p>"
+        },
+        "DisableExecuteApiEndpoint" : {
+          "shape" : "__boolean",
+          "locationName" : "disableExecuteApiEndpoint",
+          "documentation" : "<p>Specifies whether clients can invoke your API by using the default execute-api endpoint. By default, clients can invoke your API with the default https://{api_id}.execute-api.{region}.amazonaws.com endpoint. To require that clients use a custom domain name to invoke your API, disable the default endpoint.</p>"
+        },
+        "ImportInfo" : {
+          "shape" : "__listOf__string",
+          "locationName" : "importInfo",
+          "documentation" : "<p>The validation information during API import. This may include particular properties of your OpenAPI definition which are ignored during import. Supported only for HTTP APIs.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the API.</p>"
+        },
+        "ProtocolType" : {
+          "shape" : "ProtocolType",
+          "locationName" : "protocolType",
+          "documentation" : "<p>The API protocol.</p>"
+        },
+        "RouteSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "routeSelectionExpression",
+          "documentation" : "<p>The route selection expression for the API. For HTTP APIs, the routeSelectionExpression must be ${request.method} ${request.path}. If not provided, this will be the default for HTTP APIs. This property is required for WebSocket APIs.</p>"
+        },
+        "Tags" : {
+          "shape" : "Tags",
+          "locationName" : "tags",
+          "documentation" : "<p>A collection of tags associated with the API.</p>"
+        },
+        "Version" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "version",
+          "documentation" : "<p>A version identifier for the API.</p>"
+        },
+        "Warnings" : {
+          "shape" : "__listOf__string",
+          "locationName" : "warnings",
+          "documentation" : "<p>The warning messages reported when failonwarnings is turned on during API import.</p>"
+        }
+      },
+      "documentation" : "<p>Represents an API.</p>",
+      "required" : [ "RouteSelectionExpression", "Name", "ProtocolType" ]
+    },
+    "ApiMapping" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "Id",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "ApiMappingId" : {
+          "shape" : "Id",
+          "locationName" : "apiMappingId",
+          "documentation" : "<p>The API mapping identifier.</p>"
+        },
+        "ApiMappingKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "apiMappingKey",
+          "documentation" : "<p>The API mapping key.</p>"
+        },
+        "Stage" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "stage",
+          "documentation" : "<p>The API stage.</p>"
+        }
+      },
+      "documentation" : "<p>Represents an API mapping.</p>",
+      "required" : [ "Stage", "ApiId" ]
+    },
+    "ApiMappings" : {
+      "type" : "structure",
+      "members" : {
+        "Items" : {
+          "shape" : "__listOfApiMapping",
+          "locationName" : "items",
+          "documentation" : "<p>The elements from this collection.</p>"
+        },
+        "NextToken" : {
+          "shape" : "NextToken",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      },
+      "documentation" : "<p>Represents a collection of ApiMappings resources.</p>"
+    },
+    "Apis" : {
+      "type" : "structure",
+      "members" : {
+        "Items" : {
+          "shape" : "__listOfApi",
+          "locationName" : "items",
+          "documentation" : "<p>The elements from this collection.</p>"
+        },
+        "NextToken" : {
+          "shape" : "NextToken",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      },
+      "documentation" : "<p>Represents a collection of APIs.</p>"
+    },
+    "Arn" : {
+      "type" : "string",
+      "documentation" : "<p>Represents an Amazon Resource Name (ARN).</p>"
+    },
+    "AuthorizationScopes" : {
+      "type" : "list",
+      "documentation" : "<p>A list of authorization scopes configured on a route. The scopes are used with a JWT authorizer to authorize the method invocation. The authorization works by matching the route scopes against the scopes parsed from the access token in the incoming request. The method invocation is authorized if any route scope matches a claimed scope in the access token. Otherwise, the invocation is not authorized. When the route scope is configured, the client must provide an access token instead of an identity token for authorization purposes.</p>",
+      "member" : {
+        "shape" : "StringWithLengthBetween1And64"
+      }
+    },
+    "AuthorizationType" : {
+      "type" : "string",
+      "documentation" : "<p>The authorization type. For WebSocket APIs, valid values are NONE for open access, AWS_IAM for using AWS IAM permissions, and CUSTOM for using a Lambda authorizer. For HTTP APIs, valid values are NONE for open access, JWT for using JSON Web Tokens, AWS_IAM for using AWS IAM permissions, and CUSTOM for using a Lambda authorizer.</p>",
+      "enum" : [ "NONE", "AWS_IAM", "CUSTOM", "JWT" ]
+    },
+    "Authorizer" : {
+      "type" : "structure",
+      "members" : {
+        "AuthorizerCredentialsArn" : {
+          "shape" : "Arn",
+          "locationName" : "authorizerCredentialsArn",
+          "documentation" : "<p>Specifies the required credentials as an IAM role for API Gateway to invoke the authorizer. To specify an IAM role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To use resource-based permissions on the Lambda function, don't specify this parameter. Supported only for REQUEST authorizers.</p>"
+        },
+        "AuthorizerId" : {
+          "shape" : "Id",
+          "locationName" : "authorizerId",
+          "documentation" : "<p>The authorizer identifier.</p>"
+        },
+        "AuthorizerPayloadFormatVersion" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "authorizerPayloadFormatVersion",
+          "documentation" : "<p>Specifies the format of the payload sent to an HTTP API Lambda authorizer. Required for HTTP API Lambda authorizers. Supported values are 1.0 and 2.0. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html\">Working with AWS Lambda authorizers for HTTP APIs</a>.</p>"
+        },
+        "AuthorizerResultTtlInSeconds" : {
+          "shape" : "IntegerWithLengthBetween0And3600",
+          "locationName" : "authorizerResultTtlInSeconds",
+          "documentation" : "<p>The time to live (TTL) for cached authorizer results, in seconds. If it equals 0, authorization caching is disabled. If it is greater than 0, API Gateway caches authorizer responses. The maximum value is 3600, or 1 hour. Supported only for HTTP API Lambda authorizers.</p>"
+        },
+        "AuthorizerType" : {
+          "shape" : "AuthorizerType",
+          "locationName" : "authorizerType",
+          "documentation" : "<p>The authorizer type. Specify REQUEST for a Lambda function using incoming request parameters. Specify JWT to use JSON Web Tokens (supported only for HTTP APIs).</p>"
+        },
+        "AuthorizerUri" : {
+          "shape" : "UriWithLengthBetween1And2048",
+          "locationName" : "authorizerUri",
+          "documentation" : "<p>The authorizer's Uniform Resource Identifier (URI). For REQUEST authorizers, this must be a well-formed Lambda function URI, for example, arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:<replaceable>{account_id}</replaceable>:function:<replaceable>{lambda_function_name}</replaceable>/invocations. In general, the URI has this form: arn:aws:apigateway:<replaceable>{region}</replaceable>:lambda:path/<replaceable>{service_api}</replaceable>\n               , where <replaceable></replaceable>{region} is the same as the region hosting the Lambda function, path indicates that the remaining substring in the URI should be treated as the path to the resource, including the initial /. For Lambda functions, this is usually of the form /2015-03-31/functions/[FunctionARN]/invocations. Supported only for REQUEST authorizers.</p>"
+        },
+        "EnableSimpleResponses" : {
+          "shape" : "__boolean",
+          "locationName" : "enableSimpleResponses",
+          "documentation" : "<p>Specifies whether a Lambda authorizer returns a response in a simple format. If enabled, the Lambda authorizer can return a boolean value instead of an IAM policy. Supported only for HTTP APIs. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html\">Working with AWS Lambda authorizers for HTTP APIs</a></p>"
+        },
+        "IdentitySource" : {
+          "shape" : "IdentitySourceList",
+          "locationName" : "identitySource",
+          "documentation" : "<p>The identity source for which authorization is requested.</p> <p>For a REQUEST authorizer, this is optional. The value is a set of one or more mapping expressions of the specified request parameters. The identity source can be headers, query string parameters, stage variables, and context parameters. For example, if an Auth header and a Name query string parameter are defined as identity sources, this value is route.request.header.Auth, route.request.querystring.Name for WebSocket APIs. For HTTP APIs, use selection expressions prefixed with $, for example, $request.header.Auth, $request.querystring.Name. These parameters are used to perform runtime validation for Lambda-based authorizers by verifying all of the identity-related request parameters are present in the request, not null, and non-empty. Only when this is true does the authorizer invoke the authorizer Lambda function. Otherwise, it returns a 401 Unauthorized response without calling the Lambda function. For HTTP APIs, identity sources are also used as the cache key when caching is enabled. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html\">Working with AWS Lambda authorizers for HTTP APIs</a>.</p> <p>For JWT, a single entry that specifies where to extract the JSON Web Token (JWT) from inbound requests. Currently only header-based and query parameter-based selections are supported, for example $request.header.Authorization.</p>"
+        },
+        "IdentityValidationExpression" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "identityValidationExpression",
+          "documentation" : "<p>The validation expression does not apply to the REQUEST authorizer.</p>"
+        },
+        "JwtConfiguration" : {
+          "shape" : "JWTConfiguration",
+          "locationName" : "jwtConfiguration",
+          "documentation" : "<p>Represents the configuration of a JWT authorizer. Required for the JWT authorizer type. Supported only for HTTP APIs.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the authorizer.</p>"
+        }
+      },
+      "documentation" : "<p>Represents an authorizer.</p>",
+      "required" : [ "Name" ]
+    },
+    "AuthorizerType" : {
+      "type" : "string",
+      "documentation" : "<p>The authorizer type. Specify REQUEST for a Lambda function using incoming request parameters. Specify JWT to use JSON Web Tokens (supported only for HTTP APIs).</p>",
+      "enum" : [ "REQUEST", "JWT" ]
+    },
+    "Authorizers" : {
+      "type" : "structure",
+      "members" : {
+        "Items" : {
+          "shape" : "__listOfAuthorizer",
+          "locationName" : "items",
+          "documentation" : "<p>The elements from this collection.</p>"
+        },
+        "NextToken" : {
+          "shape" : "NextToken",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      },
+      "documentation" : "<p>Represents a collection of authorizers.</p>"
+    },
+    "BadRequestException" : {
+      "type" : "structure",
+      "members" : {
+        "Message" : {
+          "shape" : "__string",
+          "locationName" : "message",
+          "documentation" : "<p>Describes the error encountered.</p>"
+        }
+      },
+      "documentation" : "<p>The request is not valid, for example, the input is incomplete or incorrect. See the accompanying error message for details.</p>",
+      "exception" : true,
+      "error" : {
+        "httpStatusCode" : 400
+      }
+    },
+    "ConflictException" : {
+      "type" : "structure",
+      "members" : {
+        "Message" : {
+          "shape" : "__string",
+          "locationName" : "message",
+          "documentation" : "<p>Describes the error encountered.</p>"
+        }
+      },
+      "documentation" : "<p>The requested operation would cause a conflict with the current state of a service resource associated with the request. Resolve the conflict before retrying this request. See the accompanying error message for details.</p>",
+      "exception" : true,
+      "error" : {
+        "httpStatusCode" : 409
+      }
+    },
+    "ConnectionType" : {
+      "type" : "string",
+      "documentation" : "<p>Represents a connection type.</p>",
+      "enum" : [ "INTERNET", "VPC_LINK" ]
+    },
+    "ContentHandlingStrategy" : {
+      "type" : "string",
+      "documentation" : "<p>Specifies how to handle response payload content type conversions. Supported only for WebSocket APIs.</p>",
+      "enum" : [ "CONVERT_TO_BINARY", "CONVERT_TO_TEXT" ]
+    },
+    "Cors" : {
+      "type" : "structure",
+      "members" : {
+        "AllowCredentials" : {
+          "shape" : "__boolean",
+          "locationName" : "allowCredentials",
+          "documentation" : "<p>Specifies whether credentials are included in the CORS request. Supported only for HTTP APIs.</p>"
+        },
+        "AllowHeaders" : {
+          "shape" : "CorsHeaderList",
+          "locationName" : "allowHeaders",
+          "documentation" : "<p>Represents a collection of allowed headers. Supported only for HTTP APIs.</p>"
+        },
+        "AllowMethods" : {
+          "shape" : "CorsMethodList",
+          "locationName" : "allowMethods",
+          "documentation" : "<p>Represents a collection of allowed HTTP methods. Supported only for HTTP APIs.</p>"
+        },
+        "AllowOrigins" : {
+          "shape" : "CorsOriginList",
+          "locationName" : "allowOrigins",
+          "documentation" : "<p>Represents a collection of allowed origins. Supported only for HTTP APIs.</p>"
+        },
+        "ExposeHeaders" : {
+          "shape" : "CorsHeaderList",
+          "locationName" : "exposeHeaders",
+          "documentation" : "<p>Represents a collection of exposed headers. Supported only for HTTP APIs.</p>"
+        },
+        "MaxAge" : {
+          "shape" : "IntegerWithLengthBetweenMinus1And86400",
+          "locationName" : "maxAge",
+          "documentation" : "<p>The number of seconds that the browser should cache preflight request results. Supported only for HTTP APIs.</p>"
+        }
+      },
+      "documentation" : "<p>Represents a CORS configuration. Supported only for HTTP APIs. See <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-cors.html\">Configuring CORS</a> for more information.</p>"
+    },
+    "CorsHeaderList" : {
+      "type" : "list",
+      "documentation" : "<p>Represents a collection of allowed headers. Supported only for HTTP APIs.</p>",
+      "member" : {
+        "shape" : "__string"
+      }
+    },
+    "CorsMethodList" : {
+      "type" : "list",
+      "documentation" : "<p>Represents a collection of methods. Supported only for HTTP APIs.</p>",
+      "member" : {
+        "shape" : "StringWithLengthBetween1And64"
+      }
+    },
+    "CorsOriginList" : {
+      "type" : "list",
+      "documentation" : "<p>Represents a collection of origins. Supported only for HTTP APIs.</p>",
+      "member" : {
+        "shape" : "__string"
+      }
+    },
+    "CreateApiInput" : {
+      "type" : "structure",
+      "members" : {
+        "ApiKeySelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "apiKeySelectionExpression",
+          "documentation" : "<p>An API key selection expression. Supported only for WebSocket APIs. See <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-apikey-selection-expressions\">API Key Selection Expressions</a>.</p>"
+        },
+        "CorsConfiguration" : {
+          "shape" : "Cors",
+          "locationName" : "corsConfiguration",
+          "documentation" : "<p>A CORS configuration. Supported only for HTTP APIs. See <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-cors.html\">Configuring CORS</a> for more information.</p>"
+        },
+        "CredentialsArn" : {
+          "shape" : "Arn",
+          "locationName" : "credentialsArn",
+          "documentation" : "<p>This property is part of quick create. It specifies the credentials required for the integration, if any. For a Lambda integration, three options are available. To specify an IAM Role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To require that the caller's identity be passed through from the request, specify arn:aws:iam::*:user/*. To use resource-based permissions on supported AWS services, specify null. Currently, this property is not used for HTTP integrations. Supported only for HTTP APIs.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description of the API.</p>"
+        },
+        "DisableSchemaValidation" : {
+          "shape" : "__boolean",
+          "locationName" : "disableSchemaValidation",
+          "documentation" : "<p>Avoid validating models when creating a deployment. Supported only for WebSocket APIs.</p>"
+        },
+        "DisableExecuteApiEndpoint" : {
+          "shape" : "__boolean",
+          "locationName" : "disableExecuteApiEndpoint",
+          "documentation" : "<p>Specifies whether clients can invoke your API by using the default execute-api endpoint. By default, clients can invoke your API with the default https://{api_id}.execute-api.{region}.amazonaws.com endpoint. To require that clients use a custom domain name to invoke your API, disable the default endpoint.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the API.</p>"
+        },
+        "ProtocolType" : {
+          "shape" : "ProtocolType",
+          "locationName" : "protocolType",
+          "documentation" : "<p>The API protocol.</p>"
+        },
+        "RouteKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "routeKey",
+          "documentation" : "<p>This property is part of quick create. If you don't specify a routeKey, a default route of $default is created. The $default route acts as a catch-all for any request made to your API, for a particular stage. The $default route key can't be modified. You can add routes after creating the API, and you can update the route keys of additional routes. Supported only for HTTP APIs.</p>"
+        },
+        "RouteSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "routeSelectionExpression",
+          "documentation" : "<p>The route selection expression for the API. For HTTP APIs, the routeSelectionExpression must be ${request.method} ${request.path}. If not provided, this will be the default for HTTP APIs. This property is required for WebSocket APIs.</p>"
+        },
+        "Tags" : {
+          "shape" : "Tags",
+          "locationName" : "tags",
+          "documentation" : "<p>The collection of tags. Each tag element is associated with a given resource.</p>"
+        },
+        "Target" : {
+          "shape" : "UriWithLengthBetween1And2048",
+          "locationName" : "target",
+          "documentation" : "<p>This property is part of quick create. Quick create produces an API with an integration, a default catch-all route, and a default stage which is configured to automatically deploy changes. For HTTP integrations, specify a fully qualified URL. For Lambda integrations, specify a function ARN. The type of the integration will be HTTP_PROXY or AWS_PROXY, respectively. Supported only for HTTP APIs.</p>"
+        },
+        "Version" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "version",
+          "documentation" : "<p>A version identifier for the API.</p>"
+        }
+      },
+      "documentation" : "<p>Represents the input parameters for a CreateApi request.</p>",
+      "required" : [ "ProtocolType", "Name" ]
+    },
+    "CreateApiMappingInput" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "Id",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "ApiMappingKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "apiMappingKey",
+          "documentation" : "The API mapping key."
+        },
+        "Stage" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "stage",
+          "documentation" : "<p>The API stage.</p>"
+        }
+      },
+      "documentation" : "<p>Represents the input parameters for a CreateApiMapping request.</p>",
+      "required" : [ "Stage", "ApiId" ]
+    },
+    "CreateApiMappingRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "Id",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "ApiMappingKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "apiMappingKey",
+          "documentation" : "The API mapping key."
+        },
+        "DomainName" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "domainName",
+          "documentation" : "<p>The domain name.</p>"
+        },
+        "Stage" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "stage",
+          "documentation" : "<p>The API stage.</p>"
+        }
+      },
+      "documentation" : "<p>Creates a new ApiMapping resource to represent an API mapping.</p>",
+      "required" : [ "DomainName", "Stage", "ApiId" ]
+    },
+    "CreateApiMappingResponse" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "Id",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "ApiMappingId" : {
+          "shape" : "Id",
+          "locationName" : "apiMappingId",
+          "documentation" : "<p>The API mapping identifier.</p>"
+        },
+        "ApiMappingKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "apiMappingKey",
+          "documentation" : "<p>The API mapping key.</p>"
+        },
+        "Stage" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "stage",
+          "documentation" : "<p>The API stage.</p>"
+        }
+      }
+    },
+    "CreateApiRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiKeySelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "apiKeySelectionExpression",
+          "documentation" : "<p>An API key selection expression. Supported only for WebSocket APIs. See <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-apikey-selection-expressions\">API Key Selection Expressions</a>.</p>"
+        },
+        "CorsConfiguration" : {
+          "shape" : "Cors",
+          "locationName" : "corsConfiguration",
+          "documentation" : "<p>A CORS configuration. Supported only for HTTP APIs. See <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-cors.html\">Configuring CORS</a> for more information.</p>"
+        },
+        "CredentialsArn" : {
+          "shape" : "Arn",
+          "locationName" : "credentialsArn",
+          "documentation" : "<p>This property is part of quick create. It specifies the credentials required for the integration, if any. For a Lambda integration, three options are available. To specify an IAM Role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To require that the caller's identity be passed through from the request, specify arn:aws:iam::*:user/*. To use resource-based permissions on supported AWS services, specify null. Currently, this property is not used for HTTP integrations. Supported only for HTTP APIs.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description of the API.</p>"
+        },
+        "DisableSchemaValidation" : {
+          "shape" : "__boolean",
+          "locationName" : "disableSchemaValidation",
+          "documentation" : "<p>Avoid validating models when creating a deployment. Supported only for WebSocket APIs.</p>"
+        },
+        "DisableExecuteApiEndpoint" : {
+          "shape" : "__boolean",
+          "locationName" : "disableExecuteApiEndpoint",
+          "documentation" : "<p>Specifies whether clients can invoke your API by using the default execute-api endpoint. By default, clients can invoke your API with the default https://{api_id}.execute-api.{region}.amazonaws.com endpoint. To require that clients use a custom domain name to invoke your API, disable the default endpoint.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the API.</p>"
+        },
+        "ProtocolType" : {
+          "shape" : "ProtocolType",
+          "locationName" : "protocolType",
+          "documentation" : "<p>The API protocol.</p>"
+        },
+        "RouteKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "routeKey",
+          "documentation" : "<p>This property is part of quick create. If you don't specify a routeKey, a default route of $default is created. The $default route acts as a catch-all for any request made to your API, for a particular stage. The $default route key can't be modified. You can add routes after creating the API, and you can update the route keys of additional routes. Supported only for HTTP APIs.</p>"
+        },
+        "RouteSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "routeSelectionExpression",
+          "documentation" : "<p>The route selection expression for the API. For HTTP APIs, the routeSelectionExpression must be ${request.method} ${request.path}. If not provided, this will be the default for HTTP APIs. This property is required for WebSocket APIs.</p>"
+        },
+        "Tags" : {
+          "shape" : "Tags",
+          "locationName" : "tags",
+          "documentation" : "<p>The collection of tags. Each tag element is associated with a given resource.</p>"
+        },
+        "Target" : {
+          "shape" : "UriWithLengthBetween1And2048",
+          "locationName" : "target",
+          "documentation" : "<p>This property is part of quick create. Quick create produces an API with an integration, a default catch-all route, and a default stage which is configured to automatically deploy changes. For HTTP integrations, specify a fully qualified URL. For Lambda integrations, specify a function ARN. The type of the integration will be HTTP_PROXY or AWS_PROXY, respectively. Supported only for HTTP APIs.</p>"
+        },
+        "Version" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "version",
+          "documentation" : "<p>A version identifier for the API.</p>"
+        }
+      },
+      "documentation" : "<p>Creates a new Api resource to represent an API.</p>",
+      "required" : [ "ProtocolType", "Name" ]
+    },
+    "CreateApiResponse" : {
+      "type" : "structure",
+      "members" : {
+        "ApiEndpoint" : {
+          "shape" : "__string",
+          "locationName" : "apiEndpoint",
+          "documentation" : "<p>The URI of the API, of the form {api-id}.execute-api.{region}.amazonaws.com. The stage name is typically appended to this URI to form a complete path to a deployed API stage.</p>"
+        },
+        "ApiGatewayManaged" : {
+          "shape" : "__boolean",
+          "locationName" : "apiGatewayManaged",
+          "documentation" : "<p>Specifies whether an API is managed by API Gateway. You can't update or delete a managed API by using API Gateway. A managed API can be deleted only through the tooling or service that created it.</p>"
+        },
+        "ApiId" : {
+          "shape" : "Id",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API ID.</p>"
+        },
+        "ApiKeySelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "apiKeySelectionExpression",
+          "documentation" : "<p>An API key selection expression. Supported only for WebSocket APIs. See <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-apikey-selection-expressions\">API Key Selection Expressions</a>.</p>"
+        },
+        "CorsConfiguration" : {
+          "shape" : "Cors",
+          "locationName" : "corsConfiguration",
+          "documentation" : "<p>A CORS configuration. Supported only for HTTP APIs.</p>"
+        },
+        "CreatedDate" : {
+          "shape" : "__timestampIso8601",
+          "locationName" : "createdDate",
+          "documentation" : "<p>The timestamp when the API was created.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description of the API.</p>"
+        },
+        "DisableSchemaValidation" : {
+          "shape" : "__boolean",
+          "locationName" : "disableSchemaValidation",
+          "documentation" : "<p>Avoid validating models when creating a deployment. Supported only for WebSocket APIs.</p>"
+        },
+        "DisableExecuteApiEndpoint" : {
+          "shape" : "__boolean",
+          "locationName" : "disableExecuteApiEndpoint",
+          "documentation" : "<p>Specifies whether clients can invoke your API by using the default execute-api endpoint. By default, clients can invoke your API with the default https://{api_id}.execute-api.{region}.amazonaws.com endpoint. To require that clients use a custom domain name to invoke your API, disable the default endpoint.</p>"
+        },
+        "ImportInfo" : {
+          "shape" : "__listOf__string",
+          "locationName" : "importInfo",
+          "documentation" : "<p>The validation information during API import. This may include particular properties of your OpenAPI definition which are ignored during import. Supported only for HTTP APIs.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the API.</p>"
+        },
+        "ProtocolType" : {
+          "shape" : "ProtocolType",
+          "locationName" : "protocolType",
+          "documentation" : "<p>The API protocol.</p>"
+        },
+        "RouteSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "routeSelectionExpression",
+          "documentation" : "<p>The route selection expression for the API. For HTTP APIs, the routeSelectionExpression must be ${request.method} ${request.path}. If not provided, this will be the default for HTTP APIs. This property is required for WebSocket APIs.</p>"
+        },
+        "Tags" : {
+          "shape" : "Tags",
+          "locationName" : "tags",
+          "documentation" : "<p>A collection of tags associated with the API.</p>"
+        },
+        "Version" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "version",
+          "documentation" : "<p>A version identifier for the API.</p>"
+        },
+        "Warnings" : {
+          "shape" : "__listOf__string",
+          "locationName" : "warnings",
+          "documentation" : "<p>The warning messages reported when failonwarnings is turned on during API import.</p>"
+        }
+      }
+    },
+    "CreateAuthorizerInput" : {
+      "type" : "structure",
+      "members" : {
+        "AuthorizerCredentialsArn" : {
+          "shape" : "Arn",
+          "locationName" : "authorizerCredentialsArn",
+          "documentation" : "<p>Specifies the required credentials as an IAM role for API Gateway to invoke the authorizer. To specify an IAM role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To use resource-based permissions on the Lambda function, don't specify this parameter. Supported only for REQUEST authorizers.</p>"
+        },
+        "AuthorizerPayloadFormatVersion" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "authorizerPayloadFormatVersion",
+          "documentation" : "<p>Specifies the format of the payload sent to an HTTP API Lambda authorizer. Required for HTTP API Lambda authorizers. Supported values are 1.0 and 2.0. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html\">Working with AWS Lambda authorizers for HTTP APIs</a>.</p>"
+        },
+        "AuthorizerResultTtlInSeconds" : {
+          "shape" : "IntegerWithLengthBetween0And3600",
+          "locationName" : "authorizerResultTtlInSeconds",
+          "documentation" : "<p>The time to live (TTL) for cached authorizer results, in seconds. If it equals 0, authorization caching is disabled. If it is greater than 0, API Gateway caches authorizer responses. The maximum value is 3600, or 1 hour. Supported only for HTTP API Lambda authorizers.</p>"
+        },
+        "AuthorizerType" : {
+          "shape" : "AuthorizerType",
+          "locationName" : "authorizerType",
+          "documentation" : "<p>The authorizer type. Specify REQUEST for a Lambda function using incoming request parameters. Specify JWT to use JSON Web Tokens (supported only for HTTP APIs).</p>"
+        },
+        "AuthorizerUri" : {
+          "shape" : "UriWithLengthBetween1And2048",
+          "locationName" : "authorizerUri",
+          "documentation" : "<p>The authorizer's Uniform Resource Identifier (URI). For REQUEST authorizers, this must be a well-formed Lambda function URI, for example, arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:<replaceable>{account_id}</replaceable>:function:<replaceable>{lambda_function_name}</replaceable>/invocations. In general, the URI has this form: arn:aws:apigateway:<replaceable>{region}</replaceable>:lambda:path/<replaceable>{service_api}</replaceable>\n               , where <replaceable></replaceable>{region} is the same as the region hosting the Lambda function, path indicates that the remaining substring in the URI should be treated as the path to the resource, including the initial /. For Lambda functions, this is usually of the form /2015-03-31/functions/[FunctionARN]/invocations. Supported only for REQUEST authorizers.</p>"
+        },
+        "EnableSimpleResponses" : {
+          "shape" : "__boolean",
+          "locationName" : "enableSimpleResponses",
+          "documentation" : "<p>Specifies whether a Lambda authorizer returns a response in a simple format. By default, a Lambda authorizer must return an IAM policy. If enabled, the Lambda authorizer can return a boolean value instead of an IAM policy. Supported only for HTTP APIs. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html\">Working with AWS Lambda authorizers for HTTP APIs</a></p>"
+        },
+        "IdentitySource" : {
+          "shape" : "IdentitySourceList",
+          "locationName" : "identitySource",
+          "documentation" : "<p>The identity source for which authorization is requested.</p> <p>For a REQUEST authorizer, this is optional. The value is a set of one or more mapping expressions of the specified request parameters. The identity source can be headers, query string parameters, stage variables, and context parameters. For example, if an Auth header and a Name query string parameter are defined as identity sources, this value is route.request.header.Auth, route.request.querystring.Name for WebSocket APIs. For HTTP APIs, use selection expressions prefixed with $, for example, $request.header.Auth, $request.querystring.Name. These parameters are used to perform runtime validation for Lambda-based authorizers by verifying all of the identity-related request parameters are present in the request, not null, and non-empty. Only when this is true does the authorizer invoke the authorizer Lambda function. Otherwise, it returns a 401 Unauthorized response without calling the Lambda function. For HTTP APIs, identity sources are also used as the cache key when caching is enabled. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html\">Working with AWS Lambda authorizers for HTTP APIs</a>.</p> <p>For JWT, a single entry that specifies where to extract the JSON Web Token (JWT) from inbound requests. Currently only header-based and query parameter-based selections are supported, for example $request.header.Authorization.</p>"
+        },
+        "IdentityValidationExpression" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "identityValidationExpression",
+          "documentation" : "<p>This parameter is not used.</p>"
+        },
+        "JwtConfiguration" : {
+          "shape" : "JWTConfiguration",
+          "locationName" : "jwtConfiguration",
+          "documentation" : "<p>Represents the configuration of a JWT authorizer. Required for the JWT authorizer type. Supported only for HTTP APIs.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the authorizer.</p>"
+        }
+      },
+      "documentation" : "<p>Represents the input parameters for a CreateAuthorizer request.</p>",
+      "required" : [ "AuthorizerType", "IdentitySource", "Name" ]
+    },
+    "CreateAuthorizerRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "AuthorizerCredentialsArn" : {
+          "shape" : "Arn",
+          "locationName" : "authorizerCredentialsArn",
+          "documentation" : "<p>Specifies the required credentials as an IAM role for API Gateway to invoke the authorizer. To specify an IAM role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To use resource-based permissions on the Lambda function, don't specify this parameter. Supported only for REQUEST authorizers.</p>"
+        },
+        "AuthorizerPayloadFormatVersion" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "authorizerPayloadFormatVersion",
+          "documentation" : "<p>Specifies the format of the payload sent to an HTTP API Lambda authorizer. Required for HTTP API Lambda authorizers. Supported values are 1.0 and 2.0. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html\">Working with AWS Lambda authorizers for HTTP APIs</a>.</p>"
+        },
+        "AuthorizerResultTtlInSeconds" : {
+          "shape" : "IntegerWithLengthBetween0And3600",
+          "locationName" : "authorizerResultTtlInSeconds",
+          "documentation" : "<p>The time to live (TTL) for cached authorizer results, in seconds. If it equals 0, authorization caching is disabled. If it is greater than 0, API Gateway caches authorizer responses. The maximum value is 3600, or 1 hour. Supported only for HTTP API Lambda authorizers.</p>"
+        },
+        "AuthorizerType" : {
+          "shape" : "AuthorizerType",
+          "locationName" : "authorizerType",
+          "documentation" : "<p>The authorizer type. Specify REQUEST for a Lambda function using incoming request parameters. Specify JWT to use JSON Web Tokens (supported only for HTTP APIs).</p>"
+        },
+        "AuthorizerUri" : {
+          "shape" : "UriWithLengthBetween1And2048",
+          "locationName" : "authorizerUri",
+          "documentation" : "<p>The authorizer's Uniform Resource Identifier (URI). For REQUEST authorizers, this must be a well-formed Lambda function URI, for example, arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:<replaceable>{account_id}</replaceable>:function:<replaceable>{lambda_function_name}</replaceable>/invocations. In general, the URI has this form: arn:aws:apigateway:<replaceable>{region}</replaceable>:lambda:path/<replaceable>{service_api}</replaceable>\n               , where <replaceable></replaceable>{region} is the same as the region hosting the Lambda function, path indicates that the remaining substring in the URI should be treated as the path to the resource, including the initial /. For Lambda functions, this is usually of the form /2015-03-31/functions/[FunctionARN]/invocations. Supported only for REQUEST authorizers.</p>"
+        },
+        "EnableSimpleResponses" : {
+          "shape" : "__boolean",
+          "locationName" : "enableSimpleResponses",
+          "documentation" : "<p>Specifies whether a Lambda authorizer returns a response in a simple format. By default, a Lambda authorizer must return an IAM policy. If enabled, the Lambda authorizer can return a boolean value instead of an IAM policy. Supported only for HTTP APIs. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html\">Working with AWS Lambda authorizers for HTTP APIs</a></p>"
+        },
+        "IdentitySource" : {
+          "shape" : "IdentitySourceList",
+          "locationName" : "identitySource",
+          "documentation" : "<p>The identity source for which authorization is requested.</p> <p>For a REQUEST authorizer, this is optional. The value is a set of one or more mapping expressions of the specified request parameters. The identity source can be headers, query string parameters, stage variables, and context parameters. For example, if an Auth header and a Name query string parameter are defined as identity sources, this value is route.request.header.Auth, route.request.querystring.Name for WebSocket APIs. For HTTP APIs, use selection expressions prefixed with $, for example, $request.header.Auth, $request.querystring.Name. These parameters are used to perform runtime validation for Lambda-based authorizers by verifying all of the identity-related request parameters are present in the request, not null, and non-empty. Only when this is true does the authorizer invoke the authorizer Lambda function. Otherwise, it returns a 401 Unauthorized response without calling the Lambda function. For HTTP APIs, identity sources are also used as the cache key when caching is enabled. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html\">Working with AWS Lambda authorizers for HTTP APIs</a>.</p> <p>For JWT, a single entry that specifies where to extract the JSON Web Token (JWT) from inbound requests. Currently only header-based and query parameter-based selections are supported, for example $request.header.Authorization.</p>"
+        },
+        "IdentityValidationExpression" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "identityValidationExpression",
+          "documentation" : "<p>This parameter is not used.</p>"
+        },
+        "JwtConfiguration" : {
+          "shape" : "JWTConfiguration",
+          "locationName" : "jwtConfiguration",
+          "documentation" : "<p>Represents the configuration of a JWT authorizer. Required for the JWT authorizer type. Supported only for HTTP APIs.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the authorizer.</p>"
+        }
+      },
+      "documentation" : "<p>Creates a new Authorizer resource to represent an authorizer.</p>",
+      "required" : [ "ApiId", "AuthorizerType", "IdentitySource", "Name" ]
+    },
+    "CreateAuthorizerResponse" : {
+      "type" : "structure",
+      "members" : {
+        "AuthorizerCredentialsArn" : {
+          "shape" : "Arn",
+          "locationName" : "authorizerCredentialsArn",
+          "documentation" : "<p>Specifies the required credentials as an IAM role for API Gateway to invoke the authorizer. To specify an IAM role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To use resource-based permissions on the Lambda function, don't specify this parameter. Supported only for REQUEST authorizers.</p>"
+        },
+        "AuthorizerId" : {
+          "shape" : "Id",
+          "locationName" : "authorizerId",
+          "documentation" : "<p>The authorizer identifier.</p>"
+        },
+        "AuthorizerPayloadFormatVersion" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "authorizerPayloadFormatVersion",
+          "documentation" : "<p>Specifies the format of the payload sent to an HTTP API Lambda authorizer. Required for HTTP API Lambda authorizers. Supported values are 1.0 and 2.0. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html\">Working with AWS Lambda authorizers for HTTP APIs</a>.</p>"
+        },
+        "AuthorizerResultTtlInSeconds" : {
+          "shape" : "IntegerWithLengthBetween0And3600",
+          "locationName" : "authorizerResultTtlInSeconds",
+          "documentation" : "<p>The time to live (TTL) for cached authorizer results, in seconds. If it equals 0, authorization caching is disabled. If it is greater than 0, API Gateway caches authorizer responses. The maximum value is 3600, or 1 hour. Supported only for HTTP API Lambda authorizers.</p>"
+        },
+        "AuthorizerType" : {
+          "shape" : "AuthorizerType",
+          "locationName" : "authorizerType",
+          "documentation" : "<p>The authorizer type. Specify REQUEST for a Lambda function using incoming request parameters. Specify JWT to use JSON Web Tokens (supported only for HTTP APIs).</p>"
+        },
+        "AuthorizerUri" : {
+          "shape" : "UriWithLengthBetween1And2048",
+          "locationName" : "authorizerUri",
+          "documentation" : "<p>The authorizer's Uniform Resource Identifier (URI). For REQUEST authorizers, this must be a well-formed Lambda function URI, for example, arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:<replaceable>{account_id}</replaceable>:function:<replaceable>{lambda_function_name}</replaceable>/invocations. In general, the URI has this form: arn:aws:apigateway:<replaceable>{region}</replaceable>:lambda:path/<replaceable>{service_api}</replaceable>\n               , where <replaceable></replaceable>{region} is the same as the region hosting the Lambda function, path indicates that the remaining substring in the URI should be treated as the path to the resource, including the initial /. For Lambda functions, this is usually of the form /2015-03-31/functions/[FunctionARN]/invocations. Supported only for REQUEST authorizers.</p>"
+        },
+        "EnableSimpleResponses" : {
+          "shape" : "__boolean",
+          "locationName" : "enableSimpleResponses",
+          "documentation" : "<p>Specifies whether a Lambda authorizer returns a response in a simple format. If enabled, the Lambda authorizer can return a boolean value instead of an IAM policy. Supported only for HTTP APIs. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html\">Working with AWS Lambda authorizers for HTTP APIs</a></p>"
+        },
+        "IdentitySource" : {
+          "shape" : "IdentitySourceList",
+          "locationName" : "identitySource",
+          "documentation" : "<p>The identity source for which authorization is requested.</p> <p>For a REQUEST authorizer, this is optional. The value is a set of one or more mapping expressions of the specified request parameters. The identity source can be headers, query string parameters, stage variables, and context parameters. For example, if an Auth header and a Name query string parameter are defined as identity sources, this value is route.request.header.Auth, route.request.querystring.Name for WebSocket APIs. For HTTP APIs, use selection expressions prefixed with $, for example, $request.header.Auth, $request.querystring.Name. These parameters are used to perform runtime validation for Lambda-based authorizers by verifying all of the identity-related request parameters are present in the request, not null, and non-empty. Only when this is true does the authorizer invoke the authorizer Lambda function. Otherwise, it returns a 401 Unauthorized response without calling the Lambda function. For HTTP APIs, identity sources are also used as the cache key when caching is enabled. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html\">Working with AWS Lambda authorizers for HTTP APIs</a>.</p> <p>For JWT, a single entry that specifies where to extract the JSON Web Token (JWT) from inbound requests. Currently only header-based and query parameter-based selections are supported, for example $request.header.Authorization.</p>"
+        },
+        "IdentityValidationExpression" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "identityValidationExpression",
+          "documentation" : "<p>The validation expression does not apply to the REQUEST authorizer.</p>"
+        },
+        "JwtConfiguration" : {
+          "shape" : "JWTConfiguration",
+          "locationName" : "jwtConfiguration",
+          "documentation" : "<p>Represents the configuration of a JWT authorizer. Required for the JWT authorizer type. Supported only for HTTP APIs.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the authorizer.</p>"
+        }
+      }
+    },
+    "CreateDeploymentInput" : {
+      "type" : "structure",
+      "members" : {
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description for the deployment resource.</p>"
+        },
+        "StageName" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "stageName",
+          "documentation" : "<p>The name of the Stage resource for the Deployment resource to create.</p>"
+        }
+      },
+      "documentation" : "<p>Represents the input parameters for a CreateDeployment request.</p>"
+    },
+    "CreateDeploymentRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description for the deployment resource.</p>"
+        },
+        "StageName" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "stageName",
+          "documentation" : "<p>The name of the Stage resource for the Deployment resource to create.</p>"
+        }
+      },
+      "documentation" : "<p>Creates a new Deployment resource to represent a deployment.</p>",
+      "required" : [ "ApiId" ]
+    },
+    "CreateDeploymentResponse" : {
+      "type" : "structure",
+      "members" : {
+        "AutoDeployed" : {
+          "shape" : "__boolean",
+          "locationName" : "autoDeployed",
+          "documentation" : "<p>Specifies whether a deployment was automatically released.</p>"
+        },
+        "CreatedDate" : {
+          "shape" : "__timestampIso8601",
+          "locationName" : "createdDate",
+          "documentation" : "<p>The date and time when the Deployment resource was created.</p>"
+        },
+        "DeploymentId" : {
+          "shape" : "Id",
+          "locationName" : "deploymentId",
+          "documentation" : "<p>The identifier for the deployment.</p>"
+        },
+        "DeploymentStatus" : {
+          "shape" : "DeploymentStatus",
+          "locationName" : "deploymentStatus",
+          "documentation" : "<p>The status of the deployment: PENDING, FAILED, or SUCCEEDED.</p>"
+        },
+        "DeploymentStatusMessage" : {
+          "shape" : "__string",
+          "locationName" : "deploymentStatusMessage",
+          "documentation" : "<p>May contain additional feedback on the status of an API deployment.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description for the deployment.</p>"
+        }
+      }
+    },
+    "CreateDomainNameInput" : {
+      "type" : "structure",
+      "members" : {
+        "DomainName" : {
+          "shape" : "StringWithLengthBetween1And512",
+          "locationName" : "domainName",
+          "documentation" : "<p>The domain name.</p>"
+        },
+        "DomainNameConfigurations" : {
+          "shape" : "DomainNameConfigurations",
+          "locationName" : "domainNameConfigurations",
+          "documentation" : "<p>The domain name configurations.</p>"
+        },
+        "MutualTlsAuthentication" : {
+          "shape" : "MutualTlsAuthenticationInput",
+          "locationName" : "mutualTlsAuthentication",
+          "documentation" : "<p>The mutual TLS authentication configuration for a custom domain name.</p>"
+        },
+        "Tags" : {
+          "shape" : "Tags",
+          "locationName" : "tags",
+          "documentation" : "<p>The collection of tags associated with a domain name.</p>"
+        }
+      },
+      "documentation" : "<p>Represents the input parameters for a CreateDomainName request.</p>",
+      "required" : [ "DomainName" ]
+    },
+    "CreateDomainNameRequest" : {
+      "type" : "structure",
+      "members" : {
+        "DomainName" : {
+          "shape" : "StringWithLengthBetween1And512",
+          "locationName" : "domainName",
+          "documentation" : "<p>The domain name.</p>"
+        },
+        "DomainNameConfigurations" : {
+          "shape" : "DomainNameConfigurations",
+          "locationName" : "domainNameConfigurations",
+          "documentation" : "<p>The domain name configurations.</p>"
+        },
+        "MutualTlsAuthentication" : {
+          "shape" : "MutualTlsAuthenticationInput",
+          "locationName" : "mutualTlsAuthentication",
+          "documentation" : "<p>The mutual TLS authentication configuration for a custom domain name.</p>"
+        },
+        "Tags" : {
+          "shape" : "Tags",
+          "locationName" : "tags",
+          "documentation" : "<p>The collection of tags associated with a domain name.</p>"
+        }
+      },
+      "documentation" : "<p>Creates a new DomainName resource to represent a domain name.</p>",
+      "required" : [ "DomainName" ]
+    },
+    "CreateDomainNameResponse" : {
+      "type" : "structure",
+      "members" : {
+        "ApiMappingSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "apiMappingSelectionExpression",
+          "documentation" : "<p>The API mapping selection expression.</p>"
+        },
+        "DomainName" : {
+          "shape" : "StringWithLengthBetween1And512",
+          "locationName" : "domainName",
+          "documentation" : "<p>The name of the DomainName resource.</p>"
+        },
+        "DomainNameConfigurations" : {
+          "shape" : "DomainNameConfigurations",
+          "locationName" : "domainNameConfigurations",
+          "documentation" : "<p>The domain name configurations.</p>"
+        },
+        "MutualTlsAuthentication" : {
+          "shape" : "MutualTlsAuthentication",
+          "locationName" : "mutualTlsAuthentication",
+          "documentation" : "<p>The mutual TLS authentication configuration for a custom domain name.</p>"
+        },
+        "Tags" : {
+          "shape" : "Tags",
+          "locationName" : "tags",
+          "documentation" : "<p>The collection of tags associated with a domain name.</p>"
+        }
+      }
+    },
+    "CreateIntegrationInput" : {
+      "type" : "structure",
+      "members" : {
+        "ConnectionId" : {
+          "shape" : "StringWithLengthBetween1And1024",
+          "locationName" : "connectionId",
+          "documentation" : "<p>The ID of the VPC link for a private integration. Supported only for HTTP APIs.</p>"
+        },
+        "ConnectionType" : {
+          "shape" : "ConnectionType",
+          "locationName" : "connectionType",
+          "documentation" : "<p>The type of the network connection to the integration endpoint. Specify INTERNET for connections through the public routable internet or VPC_LINK for private connections between API Gateway and resources in a VPC. The default value is INTERNET.</p>"
+        },
+        "ContentHandlingStrategy" : {
+          "shape" : "ContentHandlingStrategy",
+          "locationName" : "contentHandlingStrategy",
+          "documentation" : "<p>Supported only for WebSocket APIs. Specifies how to handle response payload content type conversions. Supported values are CONVERT_TO_BINARY and CONVERT_TO_TEXT, with the following behaviors:</p> <p>CONVERT_TO_BINARY: Converts a response payload from a Base64-encoded string to the corresponding binary blob.</p> <p>CONVERT_TO_TEXT: Converts a response payload from a binary blob to a Base64-encoded string.</p> <p>If this property is not defined, the response payload will be passed through from the integration response to the route response or method response without modification.</p>"
+        },
+        "CredentialsArn" : {
+          "shape" : "Arn",
+          "locationName" : "credentialsArn",
+          "documentation" : "<p>Specifies the credentials required for the integration, if any. For AWS integrations, three options are available. To specify an IAM Role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To require that the caller's identity be passed through from the request, specify the string arn:aws:iam::*:user/*. To use resource-based permissions on supported AWS services, specify null.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description of the integration.</p>"
+        },
+        "IntegrationMethod" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "integrationMethod",
+          "documentation" : "<p>Specifies the integration's HTTP method type.</p>"
+        },
+        "IntegrationSubtype" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "integrationSubtype",
+          "documentation" : "<p>Supported only for HTTP API AWS_PROXY integrations. Specifies the AWS service action to invoke. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-aws-services-reference.html\">Integration subtype reference</a>.</p>"
+        },
+        "IntegrationType" : {
+          "shape" : "IntegrationType",
+          "locationName" : "integrationType",
+          "documentation" : "<p>The integration type of an integration. One of the following:</p> <p>AWS: for integrating the route or method request with an AWS service action, including the Lambda function-invoking action. With the Lambda function-invoking action, this is referred to as the Lambda custom integration. With any other AWS service action, this is known as AWS integration. Supported only for WebSocket APIs.</p> <p>AWS_PROXY: for integrating the route or method request with a Lambda function or other AWS service action. This integration is also referred to as a Lambda proxy integration.</p> <p>HTTP: for integrating the route or method request with an HTTP endpoint. This integration is also referred to as the HTTP custom integration. Supported only for WebSocket APIs.</p> <p>HTTP_PROXY: for integrating the route or method request with an HTTP endpoint, with the client request passed through as-is. This is also referred to as HTTP proxy integration. For HTTP API private integrations, use an HTTP_PROXY integration.</p> <p>MOCK: for integrating the route or method request with API Gateway as a \"loopback\" endpoint without invoking any backend. Supported only for WebSocket APIs.</p>"
+        },
+        "IntegrationUri" : {
+          "shape" : "UriWithLengthBetween1And2048",
+          "locationName" : "integrationUri",
+          "documentation" : "<p>For a Lambda integration, specify the URI of a Lambda function.</p> <p>For an HTTP integration, specify a fully-qualified URL.</p> <p>For an HTTP API private integration, specify the ARN of an Application Load Balancer listener, Network Load Balancer listener, or AWS Cloud Map service. If you specify the ARN of an AWS Cloud Map service, API Gateway uses DiscoverInstances to identify resources. You can use query parameters to target specific resources. To learn more, see <a href=\"https://docs.aws.amazon.com/cloud-map/latest/api/API_DiscoverInstances.html\">DiscoverInstances</a>. For private integrations, all resources must be owned by the same AWS account.</p>"
+        },
+        "PassthroughBehavior" : {
+          "shape" : "PassthroughBehavior",
+          "locationName" : "passthroughBehavior",
+          "documentation" : "<p>Specifies the pass-through behavior for incoming requests based on the Content-Type header in the request, and the available mapping templates specified as the requestTemplates property on the Integration resource. There are three valid values: WHEN_NO_MATCH, WHEN_NO_TEMPLATES, and NEVER. Supported only for WebSocket APIs.</p> <p>WHEN_NO_MATCH passes the request body for unmapped content types through to the integration backend without transformation.</p> <p>NEVER rejects unmapped content types with an HTTP 415 Unsupported Media Type response.</p> <p>WHEN_NO_TEMPLATES allows pass-through when the integration has no content types mapped to templates. However, if there is at least one content type defined, unmapped content types will be rejected with the same HTTP 415 Unsupported Media Type response.</p>"
+        },
+        "PayloadFormatVersion" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "payloadFormatVersion",
+          "documentation" : "<p>Specifies the format of the payload sent to an integration. Required for HTTP APIs.</p>"
+        },
+        "RequestParameters" : {
+          "shape" : "IntegrationParameters",
+          "locationName" : "requestParameters",
+          "documentation" : "<p>For WebSocket APIs, a key-value map specifying request parameters that are passed from the method request to the backend. The key is an integration request parameter name and the associated value is a method request parameter value or static value that must be enclosed within single quotes and pre-encoded as required by the backend. The method request parameter value must match the pattern of method.request.<replaceable>{location}</replaceable>.<replaceable>{name}</replaceable>\n               , where \n                  <replaceable>{location}</replaceable>\n                is querystring, path, or header; and \n                  <replaceable>{name}</replaceable>\n                must be a valid and unique method request parameter name.</p> <p>For HTTP API integrations with a specified integrationSubtype, request parameters are a key-value map specifying parameters that are passed to AWS_PROXY integrations. You can provide static values, or map request data, stage variables, or context variables that are evaluated at runtime. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-aws-services.html\">Working with AWS service integrations for HTTP APIs</a>.</p> <p>For HTTP API integrations without a specified integrationSubtype request parameters are a key-value map specifying how to transform HTTP requests before sending them to the backend. The key should follow the pattern &lt;action&gt;:&lt;header|querystring|path&gt;.&lt;location&gt; where action can be append, overwrite or remove. For values, you can provide static values, or map request data, stage variables, or context variables that are evaluated at runtime. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-parameter-mapping.html\">Transforming API requests and responses</a>.</p>"
+        },
+        "RequestTemplates" : {
+          "shape" : "TemplateMap",
+          "locationName" : "requestTemplates",
+          "documentation" : "<p>Represents a map of Velocity templates that are applied on the request payload based on the value of the Content-Type header sent by the client. The content type value is the key in this map, and the template (as a String) is the value. Supported only for WebSocket APIs.</p>"
+        },
+        "ResponseParameters" : {
+          "shape" : "ResponseParameters",
+          "locationName" : "responseParameters",
+          "documentation" : "<p>Supported only for HTTP APIs. You use response parameters to transform the HTTP response from a backend integration before returning the response to clients. Specify a key-value map from a selection key to response parameters. The selection key must be a valid HTTP status code within the range of 200-599. Response parameters are a key-value map. The key must match pattern &lt;action&gt;:&lt;header&gt;.&lt;location&gt; or overwrite.statuscode. The action can be append, overwrite or remove. The value can be a static value, or map to response data, stage variables, or context variables that are evaluated at runtime. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-parameter-mapping.html\">Transforming API requests and responses</a>.</p>"
+        },
+        "TemplateSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "templateSelectionExpression",
+          "documentation" : "<p>The template selection expression for the integration.</p>"
+        },
+        "TimeoutInMillis" : {
+          "shape" : "IntegerWithLengthBetween50And30000",
+          "locationName" : "timeoutInMillis",
+          "documentation" : "<p>Custom timeout between 50 and 29,000 milliseconds for WebSocket APIs and between 50 and 30,000 milliseconds for HTTP APIs. The default timeout is 29 seconds for WebSocket APIs and 30 seconds for HTTP APIs.</p>"
+        },
+        "TlsConfig" : {
+          "shape" : "TlsConfigInput",
+          "locationName" : "tlsConfig",
+          "documentation" : "<p>The TLS configuration for a private integration. If you specify a TLS configuration, private integration traffic uses the HTTPS protocol. Supported only for HTTP APIs.</p>"
+        }
+      },
+      "documentation" : "<p>Represents the input parameters for a CreateIntegration request.</p>",
+      "required" : [ "IntegrationType" ]
+    },
+    "CreateIntegrationRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "ConnectionId" : {
+          "shape" : "StringWithLengthBetween1And1024",
+          "locationName" : "connectionId",
+          "documentation" : "<p>The ID of the VPC link for a private integration. Supported only for HTTP APIs.</p>"
+        },
+        "ConnectionType" : {
+          "shape" : "ConnectionType",
+          "locationName" : "connectionType",
+          "documentation" : "<p>The type of the network connection to the integration endpoint. Specify INTERNET for connections through the public routable internet or VPC_LINK for private connections between API Gateway and resources in a VPC. The default value is INTERNET.</p>"
+        },
+        "ContentHandlingStrategy" : {
+          "shape" : "ContentHandlingStrategy",
+          "locationName" : "contentHandlingStrategy",
+          "documentation" : "<p>Supported only for WebSocket APIs. Specifies how to handle response payload content type conversions. Supported values are CONVERT_TO_BINARY and CONVERT_TO_TEXT, with the following behaviors:</p> <p>CONVERT_TO_BINARY: Converts a response payload from a Base64-encoded string to the corresponding binary blob.</p> <p>CONVERT_TO_TEXT: Converts a response payload from a binary blob to a Base64-encoded string.</p> <p>If this property is not defined, the response payload will be passed through from the integration response to the route response or method response without modification.</p>"
+        },
+        "CredentialsArn" : {
+          "shape" : "Arn",
+          "locationName" : "credentialsArn",
+          "documentation" : "<p>Specifies the credentials required for the integration, if any. For AWS integrations, three options are available. To specify an IAM Role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To require that the caller's identity be passed through from the request, specify the string arn:aws:iam::*:user/*. To use resource-based permissions on supported AWS services, specify null.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description of the integration.</p>"
+        },
+        "IntegrationMethod" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "integrationMethod",
+          "documentation" : "<p>Specifies the integration's HTTP method type.</p>"
+        },
+        "IntegrationSubtype" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "integrationSubtype",
+          "documentation" : "<p>Supported only for HTTP API AWS_PROXY integrations. Specifies the AWS service action to invoke. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-aws-services-reference.html\">Integration subtype reference</a>.</p>"
+        },
+        "IntegrationType" : {
+          "shape" : "IntegrationType",
+          "locationName" : "integrationType",
+          "documentation" : "<p>The integration type of an integration. One of the following:</p> <p>AWS: for integrating the route or method request with an AWS service action, including the Lambda function-invoking action. With the Lambda function-invoking action, this is referred to as the Lambda custom integration. With any other AWS service action, this is known as AWS integration. Supported only for WebSocket APIs.</p> <p>AWS_PROXY: for integrating the route or method request with a Lambda function or other AWS service action. This integration is also referred to as a Lambda proxy integration.</p> <p>HTTP: for integrating the route or method request with an HTTP endpoint. This integration is also referred to as the HTTP custom integration. Supported only for WebSocket APIs.</p> <p>HTTP_PROXY: for integrating the route or method request with an HTTP endpoint, with the client request passed through as-is. This is also referred to as HTTP proxy integration. For HTTP API private integrations, use an HTTP_PROXY integration.</p> <p>MOCK: for integrating the route or method request with API Gateway as a \"loopback\" endpoint without invoking any backend. Supported only for WebSocket APIs.</p>"
+        },
+        "IntegrationUri" : {
+          "shape" : "UriWithLengthBetween1And2048",
+          "locationName" : "integrationUri",
+          "documentation" : "<p>For a Lambda integration, specify the URI of a Lambda function.</p> <p>For an HTTP integration, specify a fully-qualified URL.</p> <p>For an HTTP API private integration, specify the ARN of an Application Load Balancer listener, Network Load Balancer listener, or AWS Cloud Map service. If you specify the ARN of an AWS Cloud Map service, API Gateway uses DiscoverInstances to identify resources. You can use query parameters to target specific resources. To learn more, see <a href=\"https://docs.aws.amazon.com/cloud-map/latest/api/API_DiscoverInstances.html\">DiscoverInstances</a>. For private integrations, all resources must be owned by the same AWS account.</p>"
+        },
+        "PassthroughBehavior" : {
+          "shape" : "PassthroughBehavior",
+          "locationName" : "passthroughBehavior",
+          "documentation" : "<p>Specifies the pass-through behavior for incoming requests based on the Content-Type header in the request, and the available mapping templates specified as the requestTemplates property on the Integration resource. There are three valid values: WHEN_NO_MATCH, WHEN_NO_TEMPLATES, and NEVER. Supported only for WebSocket APIs.</p> <p>WHEN_NO_MATCH passes the request body for unmapped content types through to the integration backend without transformation.</p> <p>NEVER rejects unmapped content types with an HTTP 415 Unsupported Media Type response.</p> <p>WHEN_NO_TEMPLATES allows pass-through when the integration has no content types mapped to templates. However, if there is at least one content type defined, unmapped content types will be rejected with the same HTTP 415 Unsupported Media Type response.</p>"
+        },
+        "PayloadFormatVersion" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "payloadFormatVersion",
+          "documentation" : "<p>Specifies the format of the payload sent to an integration. Required for HTTP APIs.</p>"
+        },
+        "RequestParameters" : {
+          "shape" : "IntegrationParameters",
+          "locationName" : "requestParameters",
+          "documentation" : "<p>For WebSocket APIs, a key-value map specifying request parameters that are passed from the method request to the backend. The key is an integration request parameter name and the associated value is a method request parameter value or static value that must be enclosed within single quotes and pre-encoded as required by the backend. The method request parameter value must match the pattern of method.request.<replaceable>{location}</replaceable>.<replaceable>{name}</replaceable>\n               , where \n                  <replaceable>{location}</replaceable>\n                is querystring, path, or header; and \n                  <replaceable>{name}</replaceable>\n                must be a valid and unique method request parameter name.</p> <p>For HTTP API integrations with a specified integrationSubtype, request parameters are a key-value map specifying parameters that are passed to AWS_PROXY integrations. You can provide static values, or map request data, stage variables, or context variables that are evaluated at runtime. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-aws-services.html\">Working with AWS service integrations for HTTP APIs</a>.</p> <p>For HTTP API integrations without a specified integrationSubtype request parameters are a key-value map specifying how to transform HTTP requests before sending them to the backend. The key should follow the pattern &lt;action&gt;:&lt;header|querystring|path&gt;.&lt;location&gt; where action can be append, overwrite or remove. For values, you can provide static values, or map request data, stage variables, or context variables that are evaluated at runtime. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-parameter-mapping.html\">Transforming API requests and responses</a>.</p>"
+        },
+        "RequestTemplates" : {
+          "shape" : "TemplateMap",
+          "locationName" : "requestTemplates",
+          "documentation" : "<p>Represents a map of Velocity templates that are applied on the request payload based on the value of the Content-Type header sent by the client. The content type value is the key in this map, and the template (as a String) is the value. Supported only for WebSocket APIs.</p>"
+        },
+        "ResponseParameters" : {
+          "shape" : "ResponseParameters",
+          "locationName" : "responseParameters",
+          "documentation" : "<p>Supported only for HTTP APIs. You use response parameters to transform the HTTP response from a backend integration before returning the response to clients. Specify a key-value map from a selection key to response parameters. The selection key must be a valid HTTP status code within the range of 200-599. Response parameters are a key-value map. The key must match pattern &lt;action&gt;:&lt;header&gt;.&lt;location&gt; or overwrite.statuscode. The action can be append, overwrite or remove. The value can be a static value, or map to response data, stage variables, or context variables that are evaluated at runtime. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-parameter-mapping.html\">Transforming API requests and responses</a>.</p>"
+        },
+        "TemplateSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "templateSelectionExpression",
+          "documentation" : "<p>The template selection expression for the integration.</p>"
+        },
+        "TimeoutInMillis" : {
+          "shape" : "IntegerWithLengthBetween50And30000",
+          "locationName" : "timeoutInMillis",
+          "documentation" : "<p>Custom timeout between 50 and 29,000 milliseconds for WebSocket APIs and between 50 and 30,000 milliseconds for HTTP APIs. The default timeout is 29 seconds for WebSocket APIs and 30 seconds for HTTP APIs.</p>"
+        },
+        "TlsConfig" : {
+          "shape" : "TlsConfigInput",
+          "locationName" : "tlsConfig",
+          "documentation" : "<p>The TLS configuration for a private integration. If you specify a TLS configuration, private integration traffic uses the HTTPS protocol. Supported only for HTTP APIs.</p>"
+        }
+      },
+      "documentation" : "<p>Creates a new Integration resource to represent an integration.</p>",
+      "required" : [ "ApiId", "IntegrationType" ]
+    },
+    "CreateIntegrationResult" : {
+      "type" : "structure",
+      "members" : {
+        "ApiGatewayManaged" : {
+          "shape" : "__boolean",
+          "locationName" : "apiGatewayManaged",
+          "documentation" : "<p>Specifies whether an integration is managed by API Gateway. If you created an API using using quick create, the resulting integration is managed by API Gateway. You can update a managed integration, but you can't delete it.</p>"
+        },
+        "ConnectionId" : {
+          "shape" : "StringWithLengthBetween1And1024",
+          "locationName" : "connectionId",
+          "documentation" : "<p>The ID of the VPC link for a private integration. Supported only for HTTP APIs.</p>"
+        },
+        "ConnectionType" : {
+          "shape" : "ConnectionType",
+          "locationName" : "connectionType",
+          "documentation" : "<p>The type of the network connection to the integration endpoint. Specify INTERNET for connections through the public routable internet or VPC_LINK for private connections between API Gateway and resources in a VPC. The default value is INTERNET.</p>"
+        },
+        "ContentHandlingStrategy" : {
+          "shape" : "ContentHandlingStrategy",
+          "locationName" : "contentHandlingStrategy",
+          "documentation" : "<p>Supported only for WebSocket APIs. Specifies how to handle response payload content type conversions. Supported values are CONVERT_TO_BINARY and CONVERT_TO_TEXT, with the following behaviors:</p> <p>CONVERT_TO_BINARY: Converts a response payload from a Base64-encoded string to the corresponding binary blob.</p> <p>CONVERT_TO_TEXT: Converts a response payload from a binary blob to a Base64-encoded string.</p> <p>If this property is not defined, the response payload will be passed through from the integration response to the route response or method response without modification.</p>"
+        },
+        "CredentialsArn" : {
+          "shape" : "Arn",
+          "locationName" : "credentialsArn",
+          "documentation" : "<p>Specifies the credentials required for the integration, if any. For AWS integrations, three options are available. To specify an IAM Role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To require that the caller's identity be passed through from the request, specify the string arn:aws:iam::*:user/*. To use resource-based permissions on supported AWS services, specify null.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>Represents the description of an integration.</p>"
+        },
+        "IntegrationId" : {
+          "shape" : "Id",
+          "locationName" : "integrationId",
+          "documentation" : "<p>Represents the identifier of an integration.</p>"
+        },
+        "IntegrationMethod" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "integrationMethod",
+          "documentation" : "<p>Specifies the integration's HTTP method type.</p>"
+        },
+        "IntegrationResponseSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "integrationResponseSelectionExpression",
+          "documentation" : "<p>The integration response selection expression for the integration. Supported only for WebSocket APIs. See <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-integration-response-selection-expressions\">Integration Response Selection Expressions</a>.</p>"
+        },
+        "IntegrationSubtype" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "integrationSubtype",
+          "documentation" : "<p>Supported only for HTTP API AWS_PROXY integrations. Specifies the AWS service action to invoke. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-aws-services-reference.html\">Integration subtype reference</a>.</p>"
+        },
+        "IntegrationType" : {
+          "shape" : "IntegrationType",
+          "locationName" : "integrationType",
+          "documentation" : "<p>The integration type of an integration. One of the following:</p> <p>AWS: for integrating the route or method request with an AWS service action, including the Lambda function-invoking action. With the Lambda function-invoking action, this is referred to as the Lambda custom integration. With any other AWS service action, this is known as AWS integration. Supported only for WebSocket APIs.</p> <p>AWS_PROXY: for integrating the route or method request with a Lambda function or other AWS service action. This integration is also referred to as a Lambda proxy integration.</p> <p>HTTP: for integrating the route or method request with an HTTP endpoint. This integration is also referred to as the HTTP custom integration. Supported only for WebSocket APIs.</p> <p>HTTP_PROXY: for integrating the route or method request with an HTTP endpoint, with the client request passed through as-is. This is also referred to as HTTP proxy integration.</p> <p>MOCK: for integrating the route or method request with API Gateway as a \"loopback\" endpoint without invoking any backend. Supported only for WebSocket APIs.</p>"
+        },
+        "IntegrationUri" : {
+          "shape" : "UriWithLengthBetween1And2048",
+          "locationName" : "integrationUri",
+          "documentation" : "<p>For a Lambda integration, specify the URI of a Lambda function.</p> <p>For an HTTP integration, specify a fully-qualified URL.</p> <p>For an HTTP API private integration, specify the ARN of an Application Load Balancer listener, Network Load Balancer listener, or AWS Cloud Map service. If you specify the ARN of an AWS Cloud Map service, API Gateway uses DiscoverInstances to identify resources. You can use query parameters to target specific resources. To learn more, see <a href=\"https://docs.aws.amazon.com/cloud-map/latest/api/API_DiscoverInstances.html\">DiscoverInstances</a>. For private integrations, all resources must be owned by the same AWS account.</p>"
+        },
+        "PassthroughBehavior" : {
+          "shape" : "PassthroughBehavior",
+          "locationName" : "passthroughBehavior",
+          "documentation" : "<p>Specifies the pass-through behavior for incoming requests based on the Content-Type header in the request, and the available mapping templates specified as the requestTemplates property on the Integration resource. There are three valid values: WHEN_NO_MATCH, WHEN_NO_TEMPLATES, and NEVER. Supported only for WebSocket APIs.</p> <p>WHEN_NO_MATCH passes the request body for unmapped content types through to the integration backend without transformation.</p> <p>NEVER rejects unmapped content types with an HTTP 415 Unsupported Media Type response.</p> <p>WHEN_NO_TEMPLATES allows pass-through when the integration has no content types mapped to templates. However, if there is at least one content type defined, unmapped content types will be rejected with the same HTTP 415 Unsupported Media Type response.</p>"
+        },
+        "PayloadFormatVersion" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "payloadFormatVersion",
+          "documentation" : "<p>Specifies the format of the payload sent to an integration. Required for HTTP APIs.</p>"
+        },
+        "RequestParameters" : {
+          "shape" : "IntegrationParameters",
+          "locationName" : "requestParameters",
+          "documentation" : "<p>For WebSocket APIs, a key-value map specifying request parameters that are passed from the method request to the backend. The key is an integration request parameter name and the associated value is a method request parameter value or static value that must be enclosed within single quotes and pre-encoded as required by the backend. The method request parameter value must match the pattern of method.request.<replaceable>{location}</replaceable>.<replaceable>{name}</replaceable>\n          , where \n            <replaceable>{location}</replaceable>\n           is querystring, path, or header; and \n            <replaceable>{name}</replaceable>\n           must be a valid and unique method request parameter name.</p> <p>For HTTP API integrations with a specified integrationSubtype, request parameters are a key-value map specifying parameters that are passed to AWS_PROXY integrations. You can provide static values, or map request data, stage variables, or context variables that are evaluated at runtime. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-aws-services.html\">Working with AWS service integrations for HTTP APIs</a>.</p> <p>For HTTP API itegrations, without a specified integrationSubtype request parameters are a key-value map specifying how to transform HTTP requests before sending them to backend integrations. The key should follow the pattern &lt;action&gt;:&lt;header|querystring|path&gt;.&lt;location&gt;. The action can be append, overwrite or remove. For values, you can provide static values, or map request data, stage variables, or context variables that are evaluated at runtime. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-parameter-mapping.html\">Transforming API requests and responses</a>.</p>"
+        },
+        "RequestTemplates" : {
+          "shape" : "TemplateMap",
+          "locationName" : "requestTemplates",
+          "documentation" : "<p>Represents a map of Velocity templates that are applied on the request payload based on the value of the Content-Type header sent by the client. The content type value is the key in this map, and the template (as a String) is the value. Supported only for WebSocket APIs.</p>"
+        },
+        "ResponseParameters" : {
+          "shape" : "ResponseParameters",
+          "locationName" : "responseParameters",
+          "documentation" : "<p>Supported only for HTTP APIs. You use response parameters to transform the HTTP response from a backend integration before returning the response to clients. Specify a key-value map from a selection key to response parameters. The selection key must be a valid HTTP status code within the range of 200-599. Response parameters are a key-value map. The key must match pattern &lt;action&gt;:&lt;header&gt;.&lt;location&gt; or overwrite.statuscode. The action can be append, overwrite or remove. The value can be a static value, or map to response data, stage variables, or context variables that are evaluated at runtime. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-parameter-mapping.html\">Transforming API requests and responses</a>.</p>"
+        },
+        "TemplateSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "templateSelectionExpression",
+          "documentation" : "<p>The template selection expression for the integration. Supported only for WebSocket APIs.</p>"
+        },
+        "TimeoutInMillis" : {
+          "shape" : "IntegerWithLengthBetween50And30000",
+          "locationName" : "timeoutInMillis",
+          "documentation" : "<p>Custom timeout between 50 and 29,000 milliseconds for WebSocket APIs and between 50 and 30,000 milliseconds for HTTP APIs. The default timeout is 29 seconds for WebSocket APIs and 30 seconds for HTTP APIs.</p>"
+        },
+        "TlsConfig" : {
+          "shape" : "TlsConfig",
+          "locationName" : "tlsConfig",
+          "documentation" : "<p>The TLS configuration for a private integration. If you specify a TLS configuration, private integration traffic uses the HTTPS protocol. Supported only for HTTP APIs.</p>"
+        }
+      }
+    },
+    "CreateIntegrationResponseInput" : {
+      "type" : "structure",
+      "members" : {
+        "ContentHandlingStrategy" : {
+          "shape" : "ContentHandlingStrategy",
+          "locationName" : "contentHandlingStrategy",
+          "documentation" : "<p>Specifies how to handle response payload content type conversions. Supported values are CONVERT_TO_BINARY and CONVERT_TO_TEXT, with the following behaviors:</p> <p>CONVERT_TO_BINARY: Converts a response payload from a Base64-encoded string to the corresponding binary blob.</p> <p>CONVERT_TO_TEXT: Converts a response payload from a binary blob to a Base64-encoded string.</p> <p>If this property is not defined, the response payload will be passed through from the integration response to the route response or method response without modification.</p>"
+        },
+        "IntegrationResponseKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "integrationResponseKey",
+          "documentation" : "<p>The integration response key.</p>"
+        },
+        "ResponseParameters" : {
+          "shape" : "IntegrationParameters",
+          "locationName" : "responseParameters",
+          "documentation" : "<p>A key-value map specifying response parameters that are passed to the method response from the backend. The key is a method response header parameter name and the mapped value is an integration response header value, a static value enclosed within a pair of single quotes, or a JSON expression from the integration response body. The mapping key must match the pattern of method.response.header.{name}, where {name} is a valid and unique header name. The mapped non-static value must match the pattern of integration.response.header.{name} or integration.response.body.{JSON-expression}, where {name} is a valid and unique response header name and {JSON-expression} is a valid JSON expression without the $ prefix.</p>"
+        },
+        "ResponseTemplates" : {
+          "shape" : "TemplateMap",
+          "locationName" : "responseTemplates",
+          "documentation" : "<p>The collection of response templates for the integration response as a string-to-string map of key-value pairs. Response templates are represented as a key/value map, with a content-type as the key and a template as the value.</p>"
+        },
+        "TemplateSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "templateSelectionExpression",
+          "documentation" : "<p>The template selection expression for the integration response. Supported only for WebSocket APIs.</p>"
+        }
+      },
+      "documentation" : "<p>Represents the input parameters for a CreateIntegrationResponse request.</p>",
+      "required" : [ "IntegrationResponseKey" ]
+    },
+    "CreateIntegrationResponseRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "ContentHandlingStrategy" : {
+          "shape" : "ContentHandlingStrategy",
+          "locationName" : "contentHandlingStrategy",
+          "documentation" : "<p>Specifies how to handle response payload content type conversions. Supported values are CONVERT_TO_BINARY and CONVERT_TO_TEXT, with the following behaviors:</p> <p>CONVERT_TO_BINARY: Converts a response payload from a Base64-encoded string to the corresponding binary blob.</p> <p>CONVERT_TO_TEXT: Converts a response payload from a binary blob to a Base64-encoded string.</p> <p>If this property is not defined, the response payload will be passed through from the integration response to the route response or method response without modification.</p>"
+        },
+        "IntegrationId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "integrationId",
+          "documentation" : "<p>The integration ID.</p>"
+        },
+        "IntegrationResponseKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "integrationResponseKey",
+          "documentation" : "<p>The integration response key.</p>"
+        },
+        "ResponseParameters" : {
+          "shape" : "IntegrationParameters",
+          "locationName" : "responseParameters",
+          "documentation" : "<p>A key-value map specifying response parameters that are passed to the method response from the backend. The key is a method response header parameter name and the mapped value is an integration response header value, a static value enclosed within a pair of single quotes, or a JSON expression from the integration response body. The mapping key must match the pattern of method.response.header.{name}, where {name} is a valid and unique header name. The mapped non-static value must match the pattern of integration.response.header.{name} or integration.response.body.{JSON-expression}, where {name} is a valid and unique response header name and {JSON-expression} is a valid JSON expression without the $ prefix.</p>"
+        },
+        "ResponseTemplates" : {
+          "shape" : "TemplateMap",
+          "locationName" : "responseTemplates",
+          "documentation" : "<p>The collection of response templates for the integration response as a string-to-string map of key-value pairs. Response templates are represented as a key/value map, with a content-type as the key and a template as the value.</p>"
+        },
+        "TemplateSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "templateSelectionExpression",
+          "documentation" : "<p>The template selection expression for the integration response. Supported only for WebSocket APIs.</p>"
+        }
+      },
+      "documentation" : "<p>Creates a new IntegrationResponse resource to represent an integration response.</p>",
+      "required" : [ "ApiId", "IntegrationId", "IntegrationResponseKey" ]
+    },
+    "CreateIntegrationResponseResponse" : {
+      "type" : "structure",
+      "members" : {
+        "ContentHandlingStrategy" : {
+          "shape" : "ContentHandlingStrategy",
+          "locationName" : "contentHandlingStrategy",
+          "documentation" : "<p>Supported only for WebSocket APIs. Specifies how to handle response payload content type conversions. Supported values are CONVERT_TO_BINARY and CONVERT_TO_TEXT, with the following behaviors:</p> <p>CONVERT_TO_BINARY: Converts a response payload from a Base64-encoded string to the corresponding binary blob.</p> <p>CONVERT_TO_TEXT: Converts a response payload from a binary blob to a Base64-encoded string.</p> <p>If this property is not defined, the response payload will be passed through from the integration response to the route response or method response without modification.</p>"
+        },
+        "IntegrationResponseId" : {
+          "shape" : "Id",
+          "locationName" : "integrationResponseId",
+          "documentation" : "<p>The integration response ID.</p>"
+        },
+        "IntegrationResponseKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "integrationResponseKey",
+          "documentation" : "<p>The integration response key.</p>"
+        },
+        "ResponseParameters" : {
+          "shape" : "IntegrationParameters",
+          "locationName" : "responseParameters",
+          "documentation" : "<p>A key-value map specifying response parameters that are passed to the method response from the backend. The key is a method response header parameter name and the mapped value is an integration response header value, a static value enclosed within a pair of single quotes, or a JSON expression from the integration response body. The mapping key must match the pattern of method.response.header.{name}, where name is a valid and unique header name. The mapped non-static value must match the pattern of integration.response.header.{name} or integration.response.body.{JSON-expression}, where name is a valid and unique response header name and JSON-expression is a valid JSON expression without the $ prefix.</p>"
+        },
+        "ResponseTemplates" : {
+          "shape" : "TemplateMap",
+          "locationName" : "responseTemplates",
+          "documentation" : "<p>The collection of response templates for the integration response as a string-to-string map of key-value pairs. Response templates are represented as a key/value map, with a content-type as the key and a template as the value.</p>"
+        },
+        "TemplateSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "templateSelectionExpression",
+          "documentation" : "<p>The template selection expressions for the integration response.</p>"
+        }
+      }
+    },
+    "CreateModelInput" : {
+      "type" : "structure",
+      "members" : {
+        "ContentType" : {
+          "shape" : "StringWithLengthBetween1And256",
+          "locationName" : "contentType",
+          "documentation" : "<p>The content-type for the model, for example, \"application/json\".</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description of the model.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the model. Must be alphanumeric.</p>"
+        },
+        "Schema" : {
+          "shape" : "StringWithLengthBetween0And32K",
+          "locationName" : "schema",
+          "documentation" : "<p>The schema for the model. For application/json models, this should be JSON schema draft 4 model.</p>"
+        }
+      },
+      "documentation" : "<p>Represents the input parameters for a CreateModel request.</p>",
+      "required" : [ "Schema", "Name" ]
+    },
+    "CreateModelRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "ContentType" : {
+          "shape" : "StringWithLengthBetween1And256",
+          "locationName" : "contentType",
+          "documentation" : "<p>The content-type for the model, for example, \"application/json\".</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description of the model.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the model. Must be alphanumeric.</p>"
+        },
+        "Schema" : {
+          "shape" : "StringWithLengthBetween0And32K",
+          "locationName" : "schema",
+          "documentation" : "<p>The schema for the model. For application/json models, this should be JSON schema draft 4 model.</p>"
+        }
+      },
+      "documentation" : "<p>Creates a new Model.</p>",
+      "required" : [ "ApiId", "Schema", "Name" ]
+    },
+    "CreateModelResponse" : {
+      "type" : "structure",
+      "members" : {
+        "ContentType" : {
+          "shape" : "StringWithLengthBetween1And256",
+          "locationName" : "contentType",
+          "documentation" : "<p>The content-type for the model, for example, \"application/json\".</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description of the model.</p>"
+        },
+        "ModelId" : {
+          "shape" : "Id",
+          "locationName" : "modelId",
+          "documentation" : "<p>The model identifier.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the model. Must be alphanumeric.</p>"
+        },
+        "Schema" : {
+          "shape" : "StringWithLengthBetween0And32K",
+          "locationName" : "schema",
+          "documentation" : "<p>The schema for the model. For application/json models, this should be JSON schema draft 4 model.</p>"
+        }
+      }
+    },
+    "CreateRouteInput" : {
+      "type" : "structure",
+      "members" : {
+        "ApiKeyRequired" : {
+          "shape" : "__boolean",
+          "locationName" : "apiKeyRequired",
+          "documentation" : "<p>Specifies whether an API key is required for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "AuthorizationScopes" : {
+          "shape" : "AuthorizationScopes",
+          "locationName" : "authorizationScopes",
+          "documentation" : "<p>The authorization scopes supported by this route.</p>"
+        },
+        "AuthorizationType" : {
+          "shape" : "AuthorizationType",
+          "locationName" : "authorizationType",
+          "documentation" : "<p>The authorization type for the route. For WebSocket APIs, valid values are NONE for open access, AWS_IAM for using AWS IAM permissions, and CUSTOM for using a Lambda authorizer For HTTP APIs, valid values are NONE for open access, JWT for using JSON Web Tokens, AWS_IAM for using AWS IAM permissions, and CUSTOM for using a Lambda authorizer.</p>"
+        },
+        "AuthorizerId" : {
+          "shape" : "Id",
+          "locationName" : "authorizerId",
+          "documentation" : "<p>The identifier of the Authorizer resource to be associated with this route. The authorizer identifier is generated by API Gateway when you created the authorizer.</p>"
+        },
+        "ModelSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "modelSelectionExpression",
+          "documentation" : "<p>The model selection expression for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "OperationName" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "operationName",
+          "documentation" : "<p>The operation name for the route.</p>"
+        },
+        "RequestModels" : {
+          "shape" : "RouteModels",
+          "locationName" : "requestModels",
+          "documentation" : "<p>The request models for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "RequestParameters" : {
+          "shape" : "RouteParameters",
+          "locationName" : "requestParameters",
+          "documentation" : "<p>The request parameters for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "RouteKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "routeKey",
+          "documentation" : "<p>The route key for the route.</p>"
+        },
+        "RouteResponseSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "routeResponseSelectionExpression",
+          "documentation" : "<p>The route response selection expression for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "Target" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "target",
+          "documentation" : "<p>The target for the route.</p>"
+        }
+      },
+      "documentation" : "<p>Represents the input parameters for a CreateRoute request.</p>",
+      "required" : [ "RouteKey" ]
+    },
+    "CreateRouteRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "ApiKeyRequired" : {
+          "shape" : "__boolean",
+          "locationName" : "apiKeyRequired",
+          "documentation" : "<p>Specifies whether an API key is required for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "AuthorizationScopes" : {
+          "shape" : "AuthorizationScopes",
+          "locationName" : "authorizationScopes",
+          "documentation" : "<p>The authorization scopes supported by this route.</p>"
+        },
+        "AuthorizationType" : {
+          "shape" : "AuthorizationType",
+          "locationName" : "authorizationType",
+          "documentation" : "<p>The authorization type for the route. For WebSocket APIs, valid values are NONE for open access, AWS_IAM for using AWS IAM permissions, and CUSTOM for using a Lambda authorizer For HTTP APIs, valid values are NONE for open access, JWT for using JSON Web Tokens, AWS_IAM for using AWS IAM permissions, and CUSTOM for using a Lambda authorizer.</p>"
+        },
+        "AuthorizerId" : {
+          "shape" : "Id",
+          "locationName" : "authorizerId",
+          "documentation" : "<p>The identifier of the Authorizer resource to be associated with this route. The authorizer identifier is generated by API Gateway when you created the authorizer.</p>"
+        },
+        "ModelSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "modelSelectionExpression",
+          "documentation" : "<p>The model selection expression for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "OperationName" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "operationName",
+          "documentation" : "<p>The operation name for the route.</p>"
+        },
+        "RequestModels" : {
+          "shape" : "RouteModels",
+          "locationName" : "requestModels",
+          "documentation" : "<p>The request models for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "RequestParameters" : {
+          "shape" : "RouteParameters",
+          "locationName" : "requestParameters",
+          "documentation" : "<p>The request parameters for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "RouteKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "routeKey",
+          "documentation" : "<p>The route key for the route.</p>"
+        },
+        "RouteResponseSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "routeResponseSelectionExpression",
+          "documentation" : "<p>The route response selection expression for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "Target" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "target",
+          "documentation" : "<p>The target for the route.</p>"
+        }
+      },
+      "documentation" : "<p>Creates a new Route resource to represent a route.</p>",
+      "required" : [ "ApiId", "RouteKey" ]
+    },
+    "CreateRouteResult" : {
+      "type" : "structure",
+      "members" : {
+        "ApiGatewayManaged" : {
+          "shape" : "__boolean",
+          "locationName" : "apiGatewayManaged",
+          "documentation" : "<p>Specifies whether a route is managed by API Gateway. If you created an API using quick create, the $default route is managed by API Gateway. You can't modify the $default route key.</p>"
+        },
+        "ApiKeyRequired" : {
+          "shape" : "__boolean",
+          "locationName" : "apiKeyRequired",
+          "documentation" : "<p>Specifies whether an API key is required for this route. Supported only for WebSocket APIs.</p>"
+        },
+        "AuthorizationScopes" : {
+          "shape" : "AuthorizationScopes",
+          "locationName" : "authorizationScopes",
+          "documentation" : "<p>A list of authorization scopes configured on a route. The scopes are used with a JWT authorizer to authorize the method invocation. The authorization works by matching the route scopes against the scopes parsed from the access token in the incoming request. The method invocation is authorized if any route scope matches a claimed scope in the access token. Otherwise, the invocation is not authorized. When the route scope is configured, the client must provide an access token instead of an identity token for authorization purposes.</p>"
+        },
+        "AuthorizationType" : {
+          "shape" : "AuthorizationType",
+          "locationName" : "authorizationType",
+          "documentation" : "<p>The authorization type for the route. For WebSocket APIs, valid values are NONE for open access, AWS_IAM for using AWS IAM permissions, and CUSTOM for using a Lambda authorizer For HTTP APIs, valid values are NONE for open access, JWT for using JSON Web Tokens, AWS_IAM for using AWS IAM permissions, and CUSTOM for using a Lambda authorizer.</p>"
+        },
+        "AuthorizerId" : {
+          "shape" : "Id",
+          "locationName" : "authorizerId",
+          "documentation" : "<p>The identifier of the Authorizer resource to be associated with this route. The authorizer identifier is generated by API Gateway when you created the authorizer.</p>"
+        },
+        "ModelSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "modelSelectionExpression",
+          "documentation" : "<p>The model selection expression for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "OperationName" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "operationName",
+          "documentation" : "<p>The operation name for the route.</p>"
+        },
+        "RequestModels" : {
+          "shape" : "RouteModels",
+          "locationName" : "requestModels",
+          "documentation" : "<p>The request models for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "RequestParameters" : {
+          "shape" : "RouteParameters",
+          "locationName" : "requestParameters",
+          "documentation" : "<p>The request parameters for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "RouteId" : {
+          "shape" : "Id",
+          "locationName" : "routeId",
+          "documentation" : "<p>The route ID.</p>"
+        },
+        "RouteKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "routeKey",
+          "documentation" : "<p>The route key for the route.</p>"
+        },
+        "RouteResponseSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "routeResponseSelectionExpression",
+          "documentation" : "<p>The route response selection expression for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "Target" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "target",
+          "documentation" : "<p>The target for the route.</p>"
+        }
+      }
+    },
+    "CreateRouteResponseInput" : {
+      "type" : "structure",
+      "members" : {
+        "ModelSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "modelSelectionExpression",
+          "documentation" : "<p>The model selection expression for the route response. Supported only for WebSocket APIs.</p>"
+        },
+        "ResponseModels" : {
+          "shape" : "RouteModels",
+          "locationName" : "responseModels",
+          "documentation" : "<p>The response models for the route response.</p>"
+        },
+        "ResponseParameters" : {
+          "shape" : "RouteParameters",
+          "locationName" : "responseParameters",
+          "documentation" : "<p>The route response parameters.</p>"
+        },
+        "RouteResponseKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "routeResponseKey",
+          "documentation" : "<p>The route response key.</p>"
+        }
+      },
+      "documentation" : "<p>Represents the input parameters for an CreateRouteResponse request.</p>",
+      "required" : [ "RouteResponseKey" ]
+    },
+    "CreateRouteResponseRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "ModelSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "modelSelectionExpression",
+          "documentation" : "<p>The model selection expression for the route response. Supported only for WebSocket APIs.</p>"
+        },
+        "ResponseModels" : {
+          "shape" : "RouteModels",
+          "locationName" : "responseModels",
+          "documentation" : "<p>The response models for the route response.</p>"
+        },
+        "ResponseParameters" : {
+          "shape" : "RouteParameters",
+          "locationName" : "responseParameters",
+          "documentation" : "<p>The route response parameters.</p>"
+        },
+        "RouteId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "routeId",
+          "documentation" : "<p>The route ID.</p>"
+        },
+        "RouteResponseKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "routeResponseKey",
+          "documentation" : "<p>The route response key.</p>"
+        }
+      },
+      "documentation" : "<p>Creates a new RouteResponse resource to represent a route response.</p>",
+      "required" : [ "ApiId", "RouteId", "RouteResponseKey" ]
+    },
+    "CreateRouteResponseResponse" : {
+      "type" : "structure",
+      "members" : {
+        "ModelSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "modelSelectionExpression",
+          "documentation" : "<p>Represents the model selection expression of a route response. Supported only for WebSocket APIs.</p>"
+        },
+        "ResponseModels" : {
+          "shape" : "RouteModels",
+          "locationName" : "responseModels",
+          "documentation" : "<p>Represents the response models of a route response.</p>"
+        },
+        "ResponseParameters" : {
+          "shape" : "RouteParameters",
+          "locationName" : "responseParameters",
+          "documentation" : "<p>Represents the response parameters of a route response.</p>"
+        },
+        "RouteResponseId" : {
+          "shape" : "Id",
+          "locationName" : "routeResponseId",
+          "documentation" : "<p>Represents the identifier of a route response.</p>"
+        },
+        "RouteResponseKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "routeResponseKey",
+          "documentation" : "<p>Represents the route response key of a route response.</p>"
+        }
+      }
+    },
+    "CreateStageInput" : {
+      "type" : "structure",
+      "members" : {
+        "AccessLogSettings" : {
+          "shape" : "AccessLogSettings",
+          "locationName" : "accessLogSettings",
+          "documentation" : "<p>Settings for logging access in this stage.</p>"
+        },
+        "AutoDeploy" : {
+          "shape" : "__boolean",
+          "locationName" : "autoDeploy",
+          "documentation" : "<p>Specifies whether updates to an API automatically trigger a new deployment. The default value is false.</p>"
+        },
+        "ClientCertificateId" : {
+          "shape" : "Id",
+          "locationName" : "clientCertificateId",
+          "documentation" : "<p>The identifier of a client certificate for a Stage. Supported only for WebSocket APIs.</p>"
+        },
+        "DefaultRouteSettings" : {
+          "shape" : "RouteSettings",
+          "locationName" : "defaultRouteSettings",
+          "documentation" : "<p>The default route settings for the stage.</p>"
+        },
+        "DeploymentId" : {
+          "shape" : "Id",
+          "locationName" : "deploymentId",
+          "documentation" : "<p>The deployment identifier of the API stage.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description for the API stage.</p>"
+        },
+        "RouteSettings" : {
+          "shape" : "RouteSettingsMap",
+          "locationName" : "routeSettings",
+          "documentation" : "<p>Route settings for the stage, by routeKey.</p>"
+        },
+        "StageName" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "stageName",
+          "documentation" : "<p>The name of the stage.</p>"
+        },
+        "StageVariables" : {
+          "shape" : "StageVariablesMap",
+          "locationName" : "stageVariables",
+          "documentation" : "<p>A map that defines the stage variables for a Stage. Variable names can have alphanumeric and underscore characters, and the values must match [A-Za-z0-9-._~:/?#&amp;=,]+.</p>"
+        },
+        "Tags" : {
+          "shape" : "Tags",
+          "locationName" : "tags",
+          "documentation" : "<p>The collection of tags. Each tag element is associated with a given resource.</p>"
+        }
+      },
+      "documentation" : "<p>Represents the input parameters for a CreateStage request.</p>",
+      "required" : [ "StageName" ]
+    },
+    "CreateStageRequest" : {
+      "type" : "structure",
+      "members" : {
+        "AccessLogSettings" : {
+          "shape" : "AccessLogSettings",
+          "locationName" : "accessLogSettings",
+          "documentation" : "<p>Settings for logging access in this stage.</p>"
+        },
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "AutoDeploy" : {
+          "shape" : "__boolean",
+          "locationName" : "autoDeploy",
+          "documentation" : "<p>Specifies whether updates to an API automatically trigger a new deployment. The default value is false.</p>"
+        },
+        "ClientCertificateId" : {
+          "shape" : "Id",
+          "locationName" : "clientCertificateId",
+          "documentation" : "<p>The identifier of a client certificate for a Stage. Supported only for WebSocket APIs.</p>"
+        },
+        "DefaultRouteSettings" : {
+          "shape" : "RouteSettings",
+          "locationName" : "defaultRouteSettings",
+          "documentation" : "<p>The default route settings for the stage.</p>"
+        },
+        "DeploymentId" : {
+          "shape" : "Id",
+          "locationName" : "deploymentId",
+          "documentation" : "<p>The deployment identifier of the API stage.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description for the API stage.</p>"
+        },
+        "RouteSettings" : {
+          "shape" : "RouteSettingsMap",
+          "locationName" : "routeSettings",
+          "documentation" : "<p>Route settings for the stage, by routeKey.</p>"
+        },
+        "StageName" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "stageName",
+          "documentation" : "<p>The name of the stage.</p>"
+        },
+        "StageVariables" : {
+          "shape" : "StageVariablesMap",
+          "locationName" : "stageVariables",
+          "documentation" : "<p>A map that defines the stage variables for a Stage. Variable names can have alphanumeric and underscore characters, and the values must match [A-Za-z0-9-._~:/?#&amp;=,]+.</p>"
+        },
+        "Tags" : {
+          "shape" : "Tags",
+          "locationName" : "tags",
+          "documentation" : "<p>The collection of tags. Each tag element is associated with a given resource.</p>"
+        }
+      },
+      "documentation" : "<p>Creates a new Stage resource to represent a stage.</p>",
+      "required" : [ "ApiId", "StageName" ]
+    },
+    "CreateStageResponse" : {
+      "type" : "structure",
+      "members" : {
+        "AccessLogSettings" : {
+          "shape" : "AccessLogSettings",
+          "locationName" : "accessLogSettings",
+          "documentation" : "<p>Settings for logging access in this stage.</p>"
+        },
+        "ApiGatewayManaged" : {
+          "shape" : "__boolean",
+          "locationName" : "apiGatewayManaged",
+          "documentation" : "<p>Specifies whether a stage is managed by API Gateway. If you created an API using quick create, the $default stage is managed by API Gateway. You can't modify the $default stage.</p>"
+        },
+        "AutoDeploy" : {
+          "shape" : "__boolean",
+          "locationName" : "autoDeploy",
+          "documentation" : "<p>Specifies whether updates to an API automatically trigger a new deployment. The default value is false.</p>"
+        },
+        "ClientCertificateId" : {
+          "shape" : "Id",
+          "locationName" : "clientCertificateId",
+          "documentation" : "<p>The identifier of a client certificate for a Stage. Supported only for WebSocket APIs.</p>"
+        },
+        "CreatedDate" : {
+          "shape" : "__timestampIso8601",
+          "locationName" : "createdDate",
+          "documentation" : "<p>The timestamp when the stage was created.</p>"
+        },
+        "DefaultRouteSettings" : {
+          "shape" : "RouteSettings",
+          "locationName" : "defaultRouteSettings",
+          "documentation" : "<p>Default route settings for the stage.</p>"
+        },
+        "DeploymentId" : {
+          "shape" : "Id",
+          "locationName" : "deploymentId",
+          "documentation" : "<p>The identifier of the Deployment that the Stage is associated with. Can't be updated if autoDeploy is enabled.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description of the stage.</p>"
+        },
+        "LastDeploymentStatusMessage" : {
+          "shape" : "__string",
+          "locationName" : "lastDeploymentStatusMessage",
+          "documentation" : "<p>Describes the status of the last deployment of a stage. Supported only for stages with autoDeploy enabled.</p>"
+        },
+        "LastUpdatedDate" : {
+          "shape" : "__timestampIso8601",
+          "locationName" : "lastUpdatedDate",
+          "documentation" : "<p>The timestamp when the stage was last updated.</p>"
+        },
+        "RouteSettings" : {
+          "shape" : "RouteSettingsMap",
+          "locationName" : "routeSettings",
+          "documentation" : "<p>Route settings for the stage, by routeKey.</p>"
+        },
+        "StageName" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "stageName",
+          "documentation" : "<p>The name of the stage.</p>"
+        },
+        "StageVariables" : {
+          "shape" : "StageVariablesMap",
+          "locationName" : "stageVariables",
+          "documentation" : "<p>A map that defines the stage variables for a stage resource. Variable names can have alphanumeric and underscore characters, and the values must match [A-Za-z0-9-._~:/?#&amp;=,]+.</p>"
+        },
+        "Tags" : {
+          "shape" : "Tags",
+          "locationName" : "tags",
+          "documentation" : "<p>The collection of tags. Each tag element is associated with a given resource.</p>"
+        }
+      }
+    },
+    "CreateVpcLinkInput" : {
+      "type" : "structure",
+      "members" : {
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the VPC link.</p>"
+        },
+        "SecurityGroupIds" : {
+          "shape" : "SecurityGroupIdList",
+          "locationName" : "securityGroupIds",
+          "documentation" : "<p>A list of security group IDs for the VPC link.</p>"
+        },
+        "SubnetIds" : {
+          "shape" : "SubnetIdList",
+          "locationName" : "subnetIds",
+          "documentation" : "<p>A list of subnet IDs to include in the VPC link.</p>"
+        },
+        "Tags" : {
+          "shape" : "Tags",
+          "locationName" : "tags",
+          "documentation" : "<p>A list of tags.</p>"
+        }
+      },
+      "documentation" : "<p>Represents the input parameters for a CreateVpcLink request.</p>",
+      "required" : [ "SubnetIds", "Name" ]
+    },
+    "CreateVpcLinkRequest" : {
+      "type" : "structure",
+      "members" : {
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the VPC link.</p>"
+        },
+        "SecurityGroupIds" : {
+          "shape" : "SecurityGroupIdList",
+          "locationName" : "securityGroupIds",
+          "documentation" : "<p>A list of security group IDs for the VPC link.</p>"
+        },
+        "SubnetIds" : {
+          "shape" : "SubnetIdList",
+          "locationName" : "subnetIds",
+          "documentation" : "<p>A list of subnet IDs to include in the VPC link.</p>"
+        },
+        "Tags" : {
+          "shape" : "Tags",
+          "locationName" : "tags",
+          "documentation" : "<p>A list of tags.</p>"
+        }
+      },
+      "documentation" : "<p>Creates a VPC link</p>",
+      "required" : [ "SubnetIds", "Name" ]
+    },
+    "CreateVpcLinkResponse" : {
+      "type" : "structure",
+      "members" : {
+        "CreatedDate" : {
+          "shape" : "__timestampIso8601",
+          "locationName" : "createdDate",
+          "documentation" : "<p>The timestamp when the VPC link was created.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the VPC link.</p>"
+        },
+        "SecurityGroupIds" : {
+          "shape" : "SecurityGroupIdList",
+          "locationName" : "securityGroupIds",
+          "documentation" : "<p>A list of security group IDs for the VPC link.</p>"
+        },
+        "SubnetIds" : {
+          "shape" : "SubnetIdList",
+          "locationName" : "subnetIds",
+          "documentation" : "<p>A list of subnet IDs to include in the VPC link.</p>"
+        },
+        "Tags" : {
+          "shape" : "Tags",
+          "locationName" : "tags",
+          "documentation" : "<p>Tags for the VPC link.</p>"
+        },
+        "VpcLinkId" : {
+          "shape" : "Id",
+          "locationName" : "vpcLinkId",
+          "documentation" : "<p>The ID of the VPC link.</p>"
+        },
+        "VpcLinkStatus" : {
+          "shape" : "VpcLinkStatus",
+          "locationName" : "vpcLinkStatus",
+          "documentation" : "<p>The status of the VPC link.</p>"
+        },
+        "VpcLinkStatusMessage" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "vpcLinkStatusMessage",
+          "documentation" : "<p>A message summarizing the cause of the status of the VPC link.</p>"
+        },
+        "VpcLinkVersion" : {
+          "shape" : "VpcLinkVersion",
+          "locationName" : "vpcLinkVersion",
+          "documentation" : "<p>The version of the VPC link.</p>"
+        }
+      }
+    },
+    "DeleteAccessLogSettingsRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "StageName" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "stageName",
+          "documentation" : "<p>The stage name. Stage names can only contain alphanumeric characters, hyphens, and underscores. Maximum length is 128 characters.</p>"
+        }
+      },
+      "required" : [ "StageName", "ApiId" ]
+    },
+    "DeleteApiMappingRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiMappingId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiMappingId",
+          "documentation" : "<p>The API mapping identifier.</p>"
+        },
+        "DomainName" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "domainName",
+          "documentation" : "<p>The domain name.</p>"
+        }
+      },
+      "required" : [ "ApiMappingId", "DomainName" ]
+    },
+    "DeleteApiRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        }
+      },
+      "required" : [ "ApiId" ]
+    },
+    "DeleteAuthorizerRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "AuthorizerId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "authorizerId",
+          "documentation" : "<p>The authorizer identifier.</p>"
+        }
+      },
+      "required" : [ "AuthorizerId", "ApiId" ]
+    },
+    "DeleteCorsConfigurationRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        }
+      },
+      "required" : [ "ApiId" ]
+    },
+    "DeleteDeploymentRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "DeploymentId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "deploymentId",
+          "documentation" : "<p>The deployment ID.</p>"
+        }
+      },
+      "required" : [ "ApiId", "DeploymentId" ]
+    },
+    "DeleteDomainNameRequest" : {
+      "type" : "structure",
+      "members" : {
+        "DomainName" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "domainName",
+          "documentation" : "<p>The domain name.</p>"
+        }
+      },
+      "required" : [ "DomainName" ]
+    },
+    "DeleteIntegrationRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "IntegrationId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "integrationId",
+          "documentation" : "<p>The integration ID.</p>"
+        }
+      },
+      "required" : [ "ApiId", "IntegrationId" ]
+    },
+    "DeleteIntegrationResponseRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "IntegrationId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "integrationId",
+          "documentation" : "<p>The integration ID.</p>"
+        },
+        "IntegrationResponseId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "integrationResponseId",
+          "documentation" : "<p>The integration response ID.</p>"
+        }
+      },
+      "required" : [ "ApiId", "IntegrationResponseId", "IntegrationId" ]
+    },
+    "DeleteModelRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "ModelId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "modelId",
+          "documentation" : "<p>The model ID.</p>"
+        }
+      },
+      "required" : [ "ModelId", "ApiId" ]
+    },
+    "DeleteRouteRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "RouteId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "routeId",
+          "documentation" : "<p>The route ID.</p>"
+        }
+      },
+      "required" : [ "ApiId", "RouteId" ]
+    },
+    "DeleteRouteRequestParameterRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "RequestParameterKey" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "requestParameterKey",
+          "documentation" : "<p>The route request parameter key.</p>"
+        },
+        "RouteId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "routeId",
+          "documentation" : "<p>The route ID.</p>"
+        }
+      },
+      "required" : [ "RequestParameterKey", "ApiId", "RouteId" ]
+    },
+    "DeleteRouteResponseRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "RouteId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "routeId",
+          "documentation" : "<p>The route ID.</p>"
+        },
+        "RouteResponseId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "routeResponseId",
+          "documentation" : "<p>The route response ID.</p>"
+        }
+      },
+      "required" : [ "RouteResponseId", "ApiId", "RouteId" ]
+    },
+    "DeleteRouteSettingsRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "RouteKey" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "routeKey",
+          "documentation" : "<p>The route key.</p>"
+        },
+        "StageName" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "stageName",
+          "documentation" : "<p>The stage name. Stage names can only contain alphanumeric characters, hyphens, and underscores. Maximum length is 128 characters.</p>"
+        }
+      },
+      "required" : [ "StageName", "RouteKey", "ApiId" ]
+    },
+    "DeleteStageRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "StageName" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "stageName",
+          "documentation" : "<p>The stage name. Stage names can only contain alphanumeric characters, hyphens, and underscores. Maximum length is 128 characters.</p>"
+        }
+      },
+      "required" : [ "StageName", "ApiId" ]
+    },
+    "DeleteVpcLinkRequest" : {
+      "type" : "structure",
+      "members" : {
+        "VpcLinkId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "vpcLinkId",
+          "documentation" : "<p>The ID of the VPC link.</p>"
+        }
+      },
+      "required" : [ "VpcLinkId" ]
+    },
+    "DeleteVpcLinkResponse" : {
+      "type" : "structure",
+      "members" : { }
+    },
+    "Deployment" : {
+      "type" : "structure",
+      "members" : {
+        "AutoDeployed" : {
+          "shape" : "__boolean",
+          "locationName" : "autoDeployed",
+          "documentation" : "<p>Specifies whether a deployment was automatically released.</p>"
+        },
+        "CreatedDate" : {
+          "shape" : "__timestampIso8601",
+          "locationName" : "createdDate",
+          "documentation" : "<p>The date and time when the Deployment resource was created.</p>"
+        },
+        "DeploymentId" : {
+          "shape" : "Id",
+          "locationName" : "deploymentId",
+          "documentation" : "<p>The identifier for the deployment.</p>"
+        },
+        "DeploymentStatus" : {
+          "shape" : "DeploymentStatus",
+          "locationName" : "deploymentStatus",
+          "documentation" : "<p>The status of the deployment: PENDING, FAILED, or SUCCEEDED.</p>"
+        },
+        "DeploymentStatusMessage" : {
+          "shape" : "__string",
+          "locationName" : "deploymentStatusMessage",
+          "documentation" : "<p>May contain additional feedback on the status of an API deployment.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description for the deployment.</p>"
+        }
+      },
+      "documentation" : "<p>An immutable representation of an API that can be called by users. A Deployment must be associated with a Stage for it to be callable over the internet.</p>"
+    },
+    "DeploymentStatus" : {
+      "type" : "string",
+      "documentation" : "<p>Represents a deployment status.</p>",
+      "enum" : [ "PENDING", "FAILED", "DEPLOYED" ]
+    },
+    "Deployments" : {
+      "type" : "structure",
+      "members" : {
+        "Items" : {
+          "shape" : "__listOfDeployment",
+          "locationName" : "items",
+          "documentation" : "<p>The elements from this collection.</p>"
+        },
+        "NextToken" : {
+          "shape" : "NextToken",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      },
+      "documentation" : "<p>A collection resource that contains zero or more references to your existing deployments, and links that guide you on how to interact with your collection. The collection offers a paginated view of the contained deployments.</p>"
+    },
+    "DomainName" : {
+      "type" : "structure",
+      "members" : {
+        "ApiMappingSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "apiMappingSelectionExpression",
+          "documentation" : "<p>The API mapping selection expression.</p>"
+        },
+        "DomainName" : {
+          "shape" : "StringWithLengthBetween1And512",
+          "locationName" : "domainName",
+          "documentation" : "<p>The name of the DomainName resource.</p>"
+        },
+        "DomainNameConfigurations" : {
+          "shape" : "DomainNameConfigurations",
+          "locationName" : "domainNameConfigurations",
+          "documentation" : "<p>The domain name configurations.</p>"
+        },
+        "MutualTlsAuthentication" : {
+          "shape" : "MutualTlsAuthentication",
+          "locationName" : "mutualTlsAuthentication",
+          "documentation" : "<p>The mutual TLS authentication configuration for a custom domain name.</p>"
+        },
+        "Tags" : {
+          "shape" : "Tags",
+          "locationName" : "tags",
+          "documentation" : "<p>The collection of tags associated with a domain name.</p>"
+        }
+      },
+      "documentation" : "<p>Represents a domain name.</p>",
+      "required" : [ "DomainName" ]
+    },
+    "DomainNameConfiguration" : {
+      "type" : "structure",
+      "members" : {
+        "ApiGatewayDomainName" : {
+          "shape" : "__string",
+          "locationName" : "apiGatewayDomainName",
+          "documentation" : "<p>A domain name for the API.</p>"
+        },
+        "CertificateArn" : {
+          "shape" : "Arn",
+          "locationName" : "certificateArn",
+          "documentation" : "<p>An AWS-managed certificate that will be used by the edge-optimized endpoint for this domain name. AWS Certificate Manager is the only supported source.</p>"
+        },
+        "CertificateName" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "certificateName",
+          "documentation" : "<p>The user-friendly name of the certificate that will be used by the edge-optimized endpoint for this domain name.</p>"
+        },
+        "CertificateUploadDate" : {
+          "shape" : "__timestampIso8601",
+          "locationName" : "certificateUploadDate",
+          "documentation" : "<p>The timestamp when the certificate that was used by edge-optimized endpoint for this domain name was uploaded.</p>"
+        },
+        "DomainNameStatus" : {
+          "shape" : "DomainNameStatus",
+          "locationName" : "domainNameStatus",
+          "documentation" : "<p>The status of the domain name migration. The valid values are AVAILABLE and UPDATING. If the status is UPDATING, the domain cannot be modified further until the existing operation is complete. If it is AVAILABLE, the domain can be updated.</p>"
+        },
+        "DomainNameStatusMessage" : {
+          "shape" : "__string",
+          "locationName" : "domainNameStatusMessage",
+          "documentation" : "<p>An optional text message containing detailed information about status of the domain name migration.</p>"
+        },
+        "EndpointType" : {
+          "shape" : "EndpointType",
+          "locationName" : "endpointType",
+          "documentation" : "<p>The endpoint type.</p>"
+        },
+        "HostedZoneId" : {
+          "shape" : "__string",
+          "locationName" : "hostedZoneId",
+          "documentation" : "<p>The Amazon Route 53 Hosted Zone ID of the endpoint.</p>"
+        },
+        "SecurityPolicy" : {
+          "shape" : "SecurityPolicy",
+          "locationName" : "securityPolicy",
+          "documentation" : "<p>The Transport Layer Security (TLS) version of the security policy for this domain name. The valid values are TLS_1_0 and TLS_1_2.</p>"
+        }
+      },
+      "documentation" : "<p>The domain name configuration.</p>"
+    },
+    "DomainNameConfigurations" : {
+      "type" : "list",
+      "documentation" : "<p>The domain name configurations.</p>",
+      "member" : {
+        "shape" : "DomainNameConfiguration"
+      }
+    },
+    "DomainNameStatus" : {
+      "type" : "string",
+      "documentation" : "<p>The status of the domain name migration. The valid values are AVAILABLE and UPDATING. If the status is UPDATING, the domain cannot be modified further until the existing operation is complete. If it is AVAILABLE, the domain can be updated.</p>",
+      "enum" : [ "AVAILABLE", "UPDATING" ]
+    },
+    "DomainNames" : {
+      "type" : "structure",
+      "members" : {
+        "Items" : {
+          "shape" : "__listOfDomainName",
+          "locationName" : "items",
+          "documentation" : "<p>The elements from this collection.</p>"
+        },
+        "NextToken" : {
+          "shape" : "NextToken",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      },
+      "documentation" : "<p>Represents a collection of domain names.</p>"
+    },
+    "EndpointType" : {
+      "type" : "string",
+      "documentation" : "<p>Represents an endpoint type.</p>",
+      "enum" : [ "REGIONAL", "EDGE" ]
+    },
+    "ExportApiRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "ExportVersion" : {
+          "shape" : "__string",
+          "location" : "querystring",
+          "locationName" : "exportVersion",
+          "documentation" : "<p>The version of the API Gateway export algorithm. API Gateway uses the latest version by default. Currently, the only supported version is 1.0.</p>"
+        },
+        "IncludeExtensions" : {
+          "shape" : "__boolean",
+          "location" : "querystring",
+          "locationName" : "includeExtensions",
+          "documentation" : "<p>Specifies whether to include <a href=\"https://docs.aws.amazon.com//apigateway/latest/developerguide/api-gateway-swagger-extensions.html\">API Gateway extensions</a> in the exported API definition. API Gateway extensions are included by default.</p>"
+        },
+        "OutputType" : {
+          "shape" : "__string",
+          "enum" : ["YAML", "JSON"],
+          "location" : "querystring",
+          "locationName" : "outputType",
+          "documentation" : "<p>The output type of the exported definition file. Valid values are JSON and YAML.</p>"
+        },
+        "Specification" : {
+          "shape" : "__string",
+          "enum" : ["OAS30"],
+          "location" : "uri",
+          "locationName" : "specification",
+          "documentation" : "<p>The version of the API specification to use. OAS30, for OpenAPI 3.0, is the only supported value.</p>"
+        },
+        "StageName" : {
+          "shape" : "__string",
+          "location" : "querystring",
+          "locationName" : "stageName",
+          "documentation" : "<p>The name of the API stage to export. If you don't specify this property, a representation of the latest API configuration is exported.</p>"
+        }
+      },
+      "required" : [ "Specification", "OutputType", "ApiId" ]
+    },
+    "ExportApiResponse" : {
+      "type" : "structure",
+      "members" : {
+        "body":{
+          "shape":"ExportedApi"
+        }
+      },
+      "payload":"body"
+    },
+    "ExportedApi":{
+      "type":"blob",
+      "documentation" : "<p>Represents an exported definition of an API in a particular output format, for example, YAML. The API is serialized to the requested specification, for example, OpenAPI 3.0.</p>"
+    },
+    "ResetAuthorizersCacheRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "StageName" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "stageName",
+          "documentation" : "<p>The stage name. Stage names can contain only alphanumeric characters, hyphens, and underscores, or be $default. Maximum length is 128 characters.</p>"
+        }
+      },
+      "required" : [ "StageName", "ApiId" ]
+    },
+    "GetApiMappingRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiMappingId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiMappingId",
+          "documentation" : "<p>The API mapping identifier.</p>"
+        },
+        "DomainName" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "domainName",
+          "documentation" : "<p>The domain name.</p>"
+        }
+      },
+      "required" : [ "ApiMappingId", "DomainName" ]
+    },
+    "GetApiMappingResponse" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "Id",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "ApiMappingId" : {
+          "shape" : "Id",
+          "locationName" : "apiMappingId",
+          "documentation" : "<p>The API mapping identifier.</p>"
+        },
+        "ApiMappingKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "apiMappingKey",
+          "documentation" : "<p>The API mapping key.</p>"
+        },
+        "Stage" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "stage",
+          "documentation" : "<p>The API stage.</p>"
+        }
+      }
+    },
+    "GetApiMappingsRequest" : {
+      "type" : "structure",
+      "members" : {
+        "DomainName" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "domainName",
+          "documentation" : "<p>The domain name.</p>"
+        },
+        "MaxResults" : {
+          "shape" : "__string",
+          "location" : "querystring",
+          "locationName" : "maxResults",
+          "documentation" : "<p>The maximum number of elements to be returned for this resource.</p>"
+        },
+        "NextToken" : {
+          "shape" : "__string",
+          "location" : "querystring",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      },
+      "required" : [ "DomainName" ]
+    },
+    "GetApiMappingsResponse" : {
+      "type" : "structure",
+      "members" : {
+        "Items" : {
+          "shape" : "__listOfApiMapping",
+          "locationName" : "items",
+          "documentation" : "<p>The elements from this collection.</p>"
+        },
+        "NextToken" : {
+          "shape" : "NextToken",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      }
+    },
+    "GetApiRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        }
+      },
+      "required" : [ "ApiId" ]
+    },
+    "GetApiResponse" : {
+      "type" : "structure",
+      "members" : {
+        "ApiEndpoint" : {
+          "shape" : "__string",
+          "locationName" : "apiEndpoint",
+          "documentation" : "<p>The URI of the API, of the form {api-id}.execute-api.{region}.amazonaws.com. The stage name is typically appended to this URI to form a complete path to a deployed API stage.</p>"
+        },
+        "ApiGatewayManaged" : {
+          "shape" : "__boolean",
+          "locationName" : "apiGatewayManaged",
+          "documentation" : "<p>Specifies whether an API is managed by API Gateway. You can't update or delete a managed API by using API Gateway. A managed API can be deleted only through the tooling or service that created it.</p>"
+        },
+        "ApiId" : {
+          "shape" : "Id",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API ID.</p>"
+        },
+        "ApiKeySelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "apiKeySelectionExpression",
+          "documentation" : "<p>An API key selection expression. Supported only for WebSocket APIs. See <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-apikey-selection-expressions\">API Key Selection Expressions</a>.</p>"
+        },
+        "CorsConfiguration" : {
+          "shape" : "Cors",
+          "locationName" : "corsConfiguration",
+          "documentation" : "<p>A CORS configuration. Supported only for HTTP APIs.</p>"
+        },
+        "CreatedDate" : {
+          "shape" : "__timestampIso8601",
+          "locationName" : "createdDate",
+          "documentation" : "<p>The timestamp when the API was created.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description of the API.</p>"
+        },
+        "DisableSchemaValidation" : {
+          "shape" : "__boolean",
+          "locationName" : "disableSchemaValidation",
+          "documentation" : "<p>Avoid validating models when creating a deployment. Supported only for WebSocket APIs.</p>"
+        },
+        "DisableExecuteApiEndpoint" : {
+          "shape" : "__boolean",
+          "locationName" : "disableExecuteApiEndpoint",
+          "documentation" : "<p>Specifies whether clients can invoke your API by using the default execute-api endpoint. By default, clients can invoke your API with the default https://{api_id}.execute-api.{region}.amazonaws.com endpoint. To require that clients use a custom domain name to invoke your API, disable the default endpoint.</p>"
+        },
+        "ImportInfo" : {
+          "shape" : "__listOf__string",
+          "locationName" : "importInfo",
+          "documentation" : "<p>The validation information during API import. This may include particular properties of your OpenAPI definition which are ignored during import. Supported only for HTTP APIs.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the API.</p>"
+        },
+        "ProtocolType" : {
+          "shape" : "ProtocolType",
+          "locationName" : "protocolType",
+          "documentation" : "<p>The API protocol.</p>"
+        },
+        "RouteSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "routeSelectionExpression",
+          "documentation" : "<p>The route selection expression for the API. For HTTP APIs, the routeSelectionExpression must be ${request.method} ${request.path}. If not provided, this will be the default for HTTP APIs. This property is required for WebSocket APIs.</p>"
+        },
+        "Tags" : {
+          "shape" : "Tags",
+          "locationName" : "tags",
+          "documentation" : "<p>A collection of tags associated with the API.</p>"
+        },
+        "Version" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "version",
+          "documentation" : "<p>A version identifier for the API.</p>"
+        },
+        "Warnings" : {
+          "shape" : "__listOf__string",
+          "locationName" : "warnings",
+          "documentation" : "<p>The warning messages reported when failonwarnings is turned on during API import.</p>"
+        }
+      }
+    },
+    "GetApisRequest" : {
+      "type" : "structure",
+      "members" : {
+        "MaxResults" : {
+          "shape" : "__string",
+          "location" : "querystring",
+          "locationName" : "maxResults",
+          "documentation" : "<p>The maximum number of elements to be returned for this resource.</p>"
+        },
+        "NextToken" : {
+          "shape" : "__string",
+          "location" : "querystring",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      }
+    },
+    "GetApisResponse" : {
+      "type" : "structure",
+      "members" : {
+        "Items" : {
+          "shape" : "__listOfApi",
+          "locationName" : "items",
+          "documentation" : "<p>The elements from this collection.</p>"
+        },
+        "NextToken" : {
+          "shape" : "NextToken",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      }
+    },
+    "GetAuthorizerRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "AuthorizerId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "authorizerId",
+          "documentation" : "<p>The authorizer identifier.</p>"
+        }
+      },
+      "required" : [ "AuthorizerId", "ApiId" ]
+    },
+    "GetAuthorizerResponse" : {
+      "type" : "structure",
+      "members" : {
+        "AuthorizerCredentialsArn" : {
+          "shape" : "Arn",
+          "locationName" : "authorizerCredentialsArn",
+          "documentation" : "<p>Specifies the required credentials as an IAM role for API Gateway to invoke the authorizer. To specify an IAM role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To use resource-based permissions on the Lambda function, don't specify this parameter. Supported only for REQUEST authorizers.</p>"
+        },
+        "AuthorizerId" : {
+          "shape" : "Id",
+          "locationName" : "authorizerId",
+          "documentation" : "<p>The authorizer identifier.</p>"
+        },
+        "AuthorizerPayloadFormatVersion" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "authorizerPayloadFormatVersion",
+          "documentation" : "<p>Specifies the format of the payload sent to an HTTP API Lambda authorizer. Required for HTTP API Lambda authorizers. Supported values are 1.0 and 2.0. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html\">Working with AWS Lambda authorizers for HTTP APIs</a>.</p>"
+        },
+        "AuthorizerResultTtlInSeconds" : {
+          "shape" : "IntegerWithLengthBetween0And3600",
+          "locationName" : "authorizerResultTtlInSeconds",
+          "documentation" : "<p>The time to live (TTL) for cached authorizer results, in seconds. If it equals 0, authorization caching is disabled. If it is greater than 0, API Gateway caches authorizer responses. The maximum value is 3600, or 1 hour. Supported only for HTTP API Lambda authorizers.</p>"
+        },
+        "AuthorizerType" : {
+          "shape" : "AuthorizerType",
+          "locationName" : "authorizerType",
+          "documentation" : "<p>The authorizer type. Specify REQUEST for a Lambda function using incoming request parameters. Specify JWT to use JSON Web Tokens (supported only for HTTP APIs).</p>"
+        },
+        "AuthorizerUri" : {
+          "shape" : "UriWithLengthBetween1And2048",
+          "locationName" : "authorizerUri",
+          "documentation" : "<p>The authorizer's Uniform Resource Identifier (URI). For REQUEST authorizers, this must be a well-formed Lambda function URI, for example, arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:<replaceable>{account_id}</replaceable>:function:<replaceable>{lambda_function_name}</replaceable>/invocations. In general, the URI has this form: arn:aws:apigateway:<replaceable>{region}</replaceable>:lambda:path/<replaceable>{service_api}</replaceable>\n               , where <replaceable></replaceable>{region} is the same as the region hosting the Lambda function, path indicates that the remaining substring in the URI should be treated as the path to the resource, including the initial /. For Lambda functions, this is usually of the form /2015-03-31/functions/[FunctionARN]/invocations. Supported only for REQUEST authorizers.</p>"
+        },
+        "EnableSimpleResponses" : {
+          "shape" : "__boolean",
+          "locationName" : "enableSimpleResponses",
+          "documentation" : "<p>Specifies whether a Lambda authorizer returns a response in a simple format. If enabled, the Lambda authorizer can return a boolean value instead of an IAM policy. Supported only for HTTP APIs. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html\">Working with AWS Lambda authorizers for HTTP APIs</a></p>"
+        },
+        "IdentitySource" : {
+          "shape" : "IdentitySourceList",
+          "locationName" : "identitySource",
+          "documentation" : "<p>The identity source for which authorization is requested.</p> <p>For a REQUEST authorizer, this is optional. The value is a set of one or more mapping expressions of the specified request parameters. The identity source can be headers, query string parameters, stage variables, and context parameters. For example, if an Auth header and a Name query string parameter are defined as identity sources, this value is route.request.header.Auth, route.request.querystring.Name for WebSocket APIs. For HTTP APIs, use selection expressions prefixed with $, for example, $request.header.Auth, $request.querystring.Name. These parameters are used to perform runtime validation for Lambda-based authorizers by verifying all of the identity-related request parameters are present in the request, not null, and non-empty. Only when this is true does the authorizer invoke the authorizer Lambda function. Otherwise, it returns a 401 Unauthorized response without calling the Lambda function. For HTTP APIs, identity sources are also used as the cache key when caching is enabled. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html\">Working with AWS Lambda authorizers for HTTP APIs</a>.</p> <p>For JWT, a single entry that specifies where to extract the JSON Web Token (JWT) from inbound requests. Currently only header-based and query parameter-based selections are supported, for example $request.header.Authorization.</p>"
+        },
+        "IdentityValidationExpression" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "identityValidationExpression",
+          "documentation" : "<p>The validation expression does not apply to the REQUEST authorizer.</p>"
+        },
+        "JwtConfiguration" : {
+          "shape" : "JWTConfiguration",
+          "locationName" : "jwtConfiguration",
+          "documentation" : "<p>Represents the configuration of a JWT authorizer. Required for the JWT authorizer type. Supported only for HTTP APIs.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the authorizer.</p>"
+        }
+      }
+    },
+    "GetAuthorizersRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "MaxResults" : {
+          "shape" : "__string",
+          "location" : "querystring",
+          "locationName" : "maxResults",
+          "documentation" : "<p>The maximum number of elements to be returned for this resource.</p>"
+        },
+        "NextToken" : {
+          "shape" : "__string",
+          "location" : "querystring",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      },
+      "required" : [ "ApiId" ]
+    },
+    "GetAuthorizersResponse" : {
+      "type" : "structure",
+      "members" : {
+        "Items" : {
+          "shape" : "__listOfAuthorizer",
+          "locationName" : "items",
+          "documentation" : "<p>The elements from this collection.</p>"
+        },
+        "NextToken" : {
+          "shape" : "NextToken",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      }
+    },
+    "GetDeploymentRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "DeploymentId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "deploymentId",
+          "documentation" : "<p>The deployment ID.</p>"
+        }
+      },
+      "required" : [ "ApiId", "DeploymentId" ]
+    },
+    "GetDeploymentResponse" : {
+      "type" : "structure",
+      "members" : {
+        "AutoDeployed" : {
+          "shape" : "__boolean",
+          "locationName" : "autoDeployed",
+          "documentation" : "<p>Specifies whether a deployment was automatically released.</p>"
+        },
+        "CreatedDate" : {
+          "shape" : "__timestampIso8601",
+          "locationName" : "createdDate",
+          "documentation" : "<p>The date and time when the Deployment resource was created.</p>"
+        },
+        "DeploymentId" : {
+          "shape" : "Id",
+          "locationName" : "deploymentId",
+          "documentation" : "<p>The identifier for the deployment.</p>"
+        },
+        "DeploymentStatus" : {
+          "shape" : "DeploymentStatus",
+          "locationName" : "deploymentStatus",
+          "documentation" : "<p>The status of the deployment: PENDING, FAILED, or SUCCEEDED.</p>"
+        },
+        "DeploymentStatusMessage" : {
+          "shape" : "__string",
+          "locationName" : "deploymentStatusMessage",
+          "documentation" : "<p>May contain additional feedback on the status of an API deployment.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description for the deployment.</p>"
+        }
+      }
+    },
+    "GetDeploymentsRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "MaxResults" : {
+          "shape" : "__string",
+          "location" : "querystring",
+          "locationName" : "maxResults",
+          "documentation" : "<p>The maximum number of elements to be returned for this resource.</p>"
+        },
+        "NextToken" : {
+          "shape" : "__string",
+          "location" : "querystring",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      },
+      "required" : [ "ApiId" ]
+    },
+    "GetDeploymentsResponse" : {
+      "type" : "structure",
+      "members" : {
+        "Items" : {
+          "shape" : "__listOfDeployment",
+          "locationName" : "items",
+          "documentation" : "<p>The elements from this collection.</p>"
+        },
+        "NextToken" : {
+          "shape" : "NextToken",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      }
+    },
+    "GetDomainNameRequest" : {
+      "type" : "structure",
+      "members" : {
+        "DomainName" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "domainName",
+          "documentation" : "<p>The domain name.</p>"
+        }
+      },
+      "required" : [ "DomainName" ]
+    },
+    "GetDomainNameResponse" : {
+      "type" : "structure",
+      "members" : {
+        "ApiMappingSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "apiMappingSelectionExpression",
+          "documentation" : "<p>The API mapping selection expression.</p>"
+        },
+        "DomainName" : {
+          "shape" : "StringWithLengthBetween1And512",
+          "locationName" : "domainName",
+          "documentation" : "<p>The name of the DomainName resource.</p>"
+        },
+        "DomainNameConfigurations" : {
+          "shape" : "DomainNameConfigurations",
+          "locationName" : "domainNameConfigurations",
+          "documentation" : "<p>The domain name configurations.</p>"
+        },
+        "MutualTlsAuthentication" : {
+          "shape" : "MutualTlsAuthentication",
+          "locationName" : "mutualTlsAuthentication",
+          "documentation" : "<p>The mutual TLS authentication configuration for a custom domain name.</p>"
+        },
+        "Tags" : {
+          "shape" : "Tags",
+          "locationName" : "tags",
+          "documentation" : "<p>The collection of tags associated with a domain name.</p>"
+        }
+      }
+    },
+    "GetDomainNamesRequest" : {
+      "type" : "structure",
+      "members" : {
+        "MaxResults" : {
+          "shape" : "__string",
+          "location" : "querystring",
+          "locationName" : "maxResults",
+          "documentation" : "<p>The maximum number of elements to be returned for this resource.</p>"
+        },
+        "NextToken" : {
+          "shape" : "__string",
+          "location" : "querystring",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      }
+    },
+    "GetDomainNamesResponse" : {
+      "type" : "structure",
+      "members" : {
+        "Items" : {
+          "shape" : "__listOfDomainName",
+          "locationName" : "items",
+          "documentation" : "<p>The elements from this collection.</p>"
+        },
+        "NextToken" : {
+          "shape" : "NextToken",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      }
+    },
+    "GetIntegrationRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "IntegrationId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "integrationId",
+          "documentation" : "<p>The integration ID.</p>"
+        }
+      },
+      "required" : [ "ApiId", "IntegrationId" ]
+    },
+    "GetIntegrationResult" : {
+      "type" : "structure",
+      "members" : {
+        "ApiGatewayManaged" : {
+          "shape" : "__boolean",
+          "locationName" : "apiGatewayManaged",
+          "documentation" : "<p>Specifies whether an integration is managed by API Gateway. If you created an API using using quick create, the resulting integration is managed by API Gateway. You can update a managed integration, but you can't delete it.</p>"
+        },
+        "ConnectionId" : {
+          "shape" : "StringWithLengthBetween1And1024",
+          "locationName" : "connectionId",
+          "documentation" : "<p>The ID of the VPC link for a private integration. Supported only for HTTP APIs.</p>"
+        },
+        "ConnectionType" : {
+          "shape" : "ConnectionType",
+          "locationName" : "connectionType",
+          "documentation" : "<p>The type of the network connection to the integration endpoint. Specify INTERNET for connections through the public routable internet or VPC_LINK for private connections between API Gateway and resources in a VPC. The default value is INTERNET.</p>"
+        },
+        "ContentHandlingStrategy" : {
+          "shape" : "ContentHandlingStrategy",
+          "locationName" : "contentHandlingStrategy",
+          "documentation" : "<p>Supported only for WebSocket APIs. Specifies how to handle response payload content type conversions. Supported values are CONVERT_TO_BINARY and CONVERT_TO_TEXT, with the following behaviors:</p> <p>CONVERT_TO_BINARY: Converts a response payload from a Base64-encoded string to the corresponding binary blob.</p> <p>CONVERT_TO_TEXT: Converts a response payload from a binary blob to a Base64-encoded string.</p> <p>If this property is not defined, the response payload will be passed through from the integration response to the route response or method response without modification.</p>"
+        },
+        "CredentialsArn" : {
+          "shape" : "Arn",
+          "locationName" : "credentialsArn",
+          "documentation" : "<p>Specifies the credentials required for the integration, if any. For AWS integrations, three options are available. To specify an IAM Role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To require that the caller's identity be passed through from the request, specify the string arn:aws:iam::*:user/*. To use resource-based permissions on supported AWS services, specify null.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>Represents the description of an integration.</p>"
+        },
+        "IntegrationId" : {
+          "shape" : "Id",
+          "locationName" : "integrationId",
+          "documentation" : "<p>Represents the identifier of an integration.</p>"
+        },
+        "IntegrationMethod" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "integrationMethod",
+          "documentation" : "<p>Specifies the integration's HTTP method type.</p>"
+        },
+        "IntegrationResponseSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "integrationResponseSelectionExpression",
+          "documentation" : "<p>The integration response selection expression for the integration. Supported only for WebSocket APIs. See <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-integration-response-selection-expressions\">Integration Response Selection Expressions</a>.</p>"
+        },
+        "IntegrationSubtype" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "integrationSubtype",
+          "documentation" : "<p>Supported only for HTTP API AWS_PROXY integrations. Specifies the AWS service action to invoke. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-aws-services-reference.html\">Integration subtype reference</a>.</p>"
+        },
+        "IntegrationType" : {
+          "shape" : "IntegrationType",
+          "locationName" : "integrationType",
+          "documentation" : "<p>The integration type of an integration. One of the following:</p> <p>AWS: for integrating the route or method request with an AWS service action, including the Lambda function-invoking action. With the Lambda function-invoking action, this is referred to as the Lambda custom integration. With any other AWS service action, this is known as AWS integration. Supported only for WebSocket APIs.</p> <p>AWS_PROXY: for integrating the route or method request with a Lambda function or other AWS service action. This integration is also referred to as a Lambda proxy integration.</p> <p>HTTP: for integrating the route or method request with an HTTP endpoint. This integration is also referred to as the HTTP custom integration. Supported only for WebSocket APIs.</p> <p>HTTP_PROXY: for integrating the route or method request with an HTTP endpoint, with the client request passed through as-is. This is also referred to as HTTP proxy integration.</p> <p>MOCK: for integrating the route or method request with API Gateway as a \"loopback\" endpoint without invoking any backend. Supported only for WebSocket APIs.</p>"
+        },
+        "IntegrationUri" : {
+          "shape" : "UriWithLengthBetween1And2048",
+          "locationName" : "integrationUri",
+          "documentation" : "<p>For a Lambda integration, specify the URI of a Lambda function.</p> <p>For an HTTP integration, specify a fully-qualified URL.</p> <p>For an HTTP API private integration, specify the ARN of an Application Load Balancer listener, Network Load Balancer listener, or AWS Cloud Map service. If you specify the ARN of an AWS Cloud Map service, API Gateway uses DiscoverInstances to identify resources. You can use query parameters to target specific resources. To learn more, see <a href=\"https://docs.aws.amazon.com/cloud-map/latest/api/API_DiscoverInstances.html\">DiscoverInstances</a>. For private integrations, all resources must be owned by the same AWS account.</p>"
+        },
+        "PassthroughBehavior" : {
+          "shape" : "PassthroughBehavior",
+          "locationName" : "passthroughBehavior",
+          "documentation" : "<p>Specifies the pass-through behavior for incoming requests based on the Content-Type header in the request, and the available mapping templates specified as the requestTemplates property on the Integration resource. There are three valid values: WHEN_NO_MATCH, WHEN_NO_TEMPLATES, and NEVER. Supported only for WebSocket APIs.</p> <p>WHEN_NO_MATCH passes the request body for unmapped content types through to the integration backend without transformation.</p> <p>NEVER rejects unmapped content types with an HTTP 415 Unsupported Media Type response.</p> <p>WHEN_NO_TEMPLATES allows pass-through when the integration has no content types mapped to templates. However, if there is at least one content type defined, unmapped content types will be rejected with the same HTTP 415 Unsupported Media Type response.</p>"
+        },
+        "PayloadFormatVersion" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "payloadFormatVersion",
+          "documentation" : "<p>Specifies the format of the payload sent to an integration. Required for HTTP APIs.</p>"
+        },
+        "RequestParameters" : {
+          "shape" : "IntegrationParameters",
+          "locationName" : "requestParameters",
+          "documentation" : "<p>For WebSocket APIs, a key-value map specifying request parameters that are passed from the method request to the backend. The key is an integration request parameter name and the associated value is a method request parameter value or static value that must be enclosed within single quotes and pre-encoded as required by the backend. The method request parameter value must match the pattern of method.request.<replaceable>{location}</replaceable>.<replaceable>{name}</replaceable>\n          , where \n            <replaceable>{location}</replaceable>\n           is querystring, path, or header; and \n            <replaceable>{name}</replaceable>\n           must be a valid and unique method request parameter name.</p> <p>For HTTP API integrations with a specified integrationSubtype, request parameters are a key-value map specifying parameters that are passed to AWS_PROXY integrations. You can provide static values, or map request data, stage variables, or context variables that are evaluated at runtime. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-aws-services.html\">Working with AWS service integrations for HTTP APIs</a>.</p> <p>For HTTP API itegrations, without a specified integrationSubtype request parameters are a key-value map specifying how to transform HTTP requests before sending them to backend integrations. The key should follow the pattern &lt;action&gt;:&lt;header|querystring|path&gt;.&lt;location&gt;. The action can be append, overwrite or remove. For values, you can provide static values, or map request data, stage variables, or context variables that are evaluated at runtime. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-parameter-mapping.html\">Transforming API requests and responses</a>.</p>"
+        },
+        "RequestTemplates" : {
+          "shape" : "TemplateMap",
+          "locationName" : "requestTemplates",
+          "documentation" : "<p>Represents a map of Velocity templates that are applied on the request payload based on the value of the Content-Type header sent by the client. The content type value is the key in this map, and the template (as a String) is the value. Supported only for WebSocket APIs.</p>"
+        },
+        "ResponseParameters" : {
+          "shape" : "ResponseParameters",
+          "locationName" : "responseParameters",
+          "documentation" : "<p>Supported only for HTTP APIs. You use response parameters to transform the HTTP response from a backend integration before returning the response to clients. Specify a key-value map from a selection key to response parameters. The selection key must be a valid HTTP status code within the range of 200-599. Response parameters are a key-value map. The key must match pattern &lt;action&gt;:&lt;header&gt;.&lt;location&gt; or overwrite.statuscode. The action can be append, overwrite or remove. The value can be a static value, or map to response data, stage variables, or context variables that are evaluated at runtime. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-parameter-mapping.html\">Transforming API requests and responses</a>.</p>"
+        },
+        "TemplateSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "templateSelectionExpression",
+          "documentation" : "<p>The template selection expression for the integration. Supported only for WebSocket APIs.</p>"
+        },
+        "TimeoutInMillis" : {
+          "shape" : "IntegerWithLengthBetween50And30000",
+          "locationName" : "timeoutInMillis",
+          "documentation" : "<p>Custom timeout between 50 and 29,000 milliseconds for WebSocket APIs and between 50 and 30,000 milliseconds for HTTP APIs. The default timeout is 29 seconds for WebSocket APIs and 30 seconds for HTTP APIs.</p>"
+        },
+        "TlsConfig" : {
+          "shape" : "TlsConfig",
+          "locationName" : "tlsConfig",
+          "documentation" : "<p>The TLS configuration for a private integration. If you specify a TLS configuration, private integration traffic uses the HTTPS protocol. Supported only for HTTP APIs.</p>"
+        }
+      }
+    },
+    "GetIntegrationResponseRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "IntegrationId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "integrationId",
+          "documentation" : "<p>The integration ID.</p>"
+        },
+        "IntegrationResponseId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "integrationResponseId",
+          "documentation" : "<p>The integration response ID.</p>"
+        }
+      },
+      "required" : [ "ApiId", "IntegrationResponseId", "IntegrationId" ]
+    },
+    "GetIntegrationResponseResponse" : {
+      "type" : "structure",
+      "members" : {
+        "ContentHandlingStrategy" : {
+          "shape" : "ContentHandlingStrategy",
+          "locationName" : "contentHandlingStrategy",
+          "documentation" : "<p>Supported only for WebSocket APIs. Specifies how to handle response payload content type conversions. Supported values are CONVERT_TO_BINARY and CONVERT_TO_TEXT, with the following behaviors:</p> <p>CONVERT_TO_BINARY: Converts a response payload from a Base64-encoded string to the corresponding binary blob.</p> <p>CONVERT_TO_TEXT: Converts a response payload from a binary blob to a Base64-encoded string.</p> <p>If this property is not defined, the response payload will be passed through from the integration response to the route response or method response without modification.</p>"
+        },
+        "IntegrationResponseId" : {
+          "shape" : "Id",
+          "locationName" : "integrationResponseId",
+          "documentation" : "<p>The integration response ID.</p>"
+        },
+        "IntegrationResponseKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "integrationResponseKey",
+          "documentation" : "<p>The integration response key.</p>"
+        },
+        "ResponseParameters" : {
+          "shape" : "IntegrationParameters",
+          "locationName" : "responseParameters",
+          "documentation" : "<p>A key-value map specifying response parameters that are passed to the method response from the backend. The key is a method response header parameter name and the mapped value is an integration response header value, a static value enclosed within a pair of single quotes, or a JSON expression from the integration response body. The mapping key must match the pattern of method.response.header.{name}, where name is a valid and unique header name. The mapped non-static value must match the pattern of integration.response.header.{name} or integration.response.body.{JSON-expression}, where name is a valid and unique response header name and JSON-expression is a valid JSON expression without the $ prefix.</p>"
+        },
+        "ResponseTemplates" : {
+          "shape" : "TemplateMap",
+          "locationName" : "responseTemplates",
+          "documentation" : "<p>The collection of response templates for the integration response as a string-to-string map of key-value pairs. Response templates are represented as a key/value map, with a content-type as the key and a template as the value.</p>"
+        },
+        "TemplateSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "templateSelectionExpression",
+          "documentation" : "<p>The template selection expressions for the integration response.</p>"
+        }
+      }
+    },
+    "GetIntegrationResponsesRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "IntegrationId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "integrationId",
+          "documentation" : "<p>The integration ID.</p>"
+        },
+        "MaxResults" : {
+          "shape" : "__string",
+          "location" : "querystring",
+          "locationName" : "maxResults",
+          "documentation" : "<p>The maximum number of elements to be returned for this resource.</p>"
+        },
+        "NextToken" : {
+          "shape" : "__string",
+          "location" : "querystring",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      },
+      "required" : [ "IntegrationId", "ApiId" ]
+    },
+    "GetIntegrationResponsesResponse" : {
+      "type" : "structure",
+      "members" : {
+        "Items" : {
+          "shape" : "__listOfIntegrationResponse",
+          "locationName" : "items",
+          "documentation" : "<p>The elements from this collection.</p>"
+        },
+        "NextToken" : {
+          "shape" : "NextToken",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      }
+    },
+    "GetIntegrationsRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "MaxResults" : {
+          "shape" : "__string",
+          "location" : "querystring",
+          "locationName" : "maxResults",
+          "documentation" : "<p>The maximum number of elements to be returned for this resource.</p>"
+        },
+        "NextToken" : {
+          "shape" : "__string",
+          "location" : "querystring",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      },
+      "required" : [ "ApiId" ]
+    },
+    "GetIntegrationsResponse" : {
+      "type" : "structure",
+      "members" : {
+        "Items" : {
+          "shape" : "__listOfIntegration",
+          "locationName" : "items",
+          "documentation" : "<p>The elements from this collection.</p>"
+        },
+        "NextToken" : {
+          "shape" : "NextToken",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      }
+    },
+    "GetModelRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "ModelId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "modelId",
+          "documentation" : "<p>The model ID.</p>"
+        }
+      },
+      "required" : [ "ModelId", "ApiId" ]
+    },
+    "GetModelResponse" : {
+      "type" : "structure",
+      "members" : {
+        "ContentType" : {
+          "shape" : "StringWithLengthBetween1And256",
+          "locationName" : "contentType",
+          "documentation" : "<p>The content-type for the model, for example, \"application/json\".</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description of the model.</p>"
+        },
+        "ModelId" : {
+          "shape" : "Id",
+          "locationName" : "modelId",
+          "documentation" : "<p>The model identifier.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the model. Must be alphanumeric.</p>"
+        },
+        "Schema" : {
+          "shape" : "StringWithLengthBetween0And32K",
+          "locationName" : "schema",
+          "documentation" : "<p>The schema for the model. For application/json models, this should be JSON schema draft 4 model.</p>"
+        }
+      }
+    },
+    "GetModelTemplateRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "ModelId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "modelId",
+          "documentation" : "<p>The model ID.</p>"
+        }
+      },
+      "required" : [ "ModelId", "ApiId" ]
+    },
+    "GetModelTemplateResponse" : {
+      "type" : "structure",
+      "members" : {
+        "Value" : {
+          "shape" : "__string",
+          "locationName" : "value",
+          "documentation" : "<p>The template value.</p>"
+        }
+      }
+    },
+    "GetModelsRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "MaxResults" : {
+          "shape" : "__string",
+          "location" : "querystring",
+          "locationName" : "maxResults",
+          "documentation" : "<p>The maximum number of elements to be returned for this resource.</p>"
+        },
+        "NextToken" : {
+          "shape" : "__string",
+          "location" : "querystring",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      },
+      "required" : [ "ApiId" ]
+    },
+    "GetModelsResponse" : {
+      "type" : "structure",
+      "members" : {
+        "Items" : {
+          "shape" : "__listOfModel",
+          "locationName" : "items",
+          "documentation" : "<p>The elements from this collection.</p>"
+        },
+        "NextToken" : {
+          "shape" : "NextToken",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      }
+    },
+    "GetRouteRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "RouteId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "routeId",
+          "documentation" : "<p>The route ID.</p>"
+        }
+      },
+      "required" : [ "ApiId", "RouteId" ]
+    },
+    "GetRouteResult" : {
+      "type" : "structure",
+      "members" : {
+        "ApiGatewayManaged" : {
+          "shape" : "__boolean",
+          "locationName" : "apiGatewayManaged",
+          "documentation" : "<p>Specifies whether a route is managed by API Gateway. If you created an API using quick create, the $default route is managed by API Gateway. You can't modify the $default route key.</p>"
+        },
+        "ApiKeyRequired" : {
+          "shape" : "__boolean",
+          "locationName" : "apiKeyRequired",
+          "documentation" : "<p>Specifies whether an API key is required for this route. Supported only for WebSocket APIs.</p>"
+        },
+        "AuthorizationScopes" : {
+          "shape" : "AuthorizationScopes",
+          "locationName" : "authorizationScopes",
+          "documentation" : "<p>A list of authorization scopes configured on a route. The scopes are used with a JWT authorizer to authorize the method invocation. The authorization works by matching the route scopes against the scopes parsed from the access token in the incoming request. The method invocation is authorized if any route scope matches a claimed scope in the access token. Otherwise, the invocation is not authorized. When the route scope is configured, the client must provide an access token instead of an identity token for authorization purposes.</p>"
+        },
+        "AuthorizationType" : {
+          "shape" : "AuthorizationType",
+          "locationName" : "authorizationType",
+          "documentation" : "<p>The authorization type for the route. For WebSocket APIs, valid values are NONE for open access, AWS_IAM for using AWS IAM permissions, and CUSTOM for using a Lambda authorizer For HTTP APIs, valid values are NONE for open access, JWT for using JSON Web Tokens, AWS_IAM for using AWS IAM permissions, and CUSTOM for using a Lambda authorizer.</p>"
+        },
+        "AuthorizerId" : {
+          "shape" : "Id",
+          "locationName" : "authorizerId",
+          "documentation" : "<p>The identifier of the Authorizer resource to be associated with this route. The authorizer identifier is generated by API Gateway when you created the authorizer.</p>"
+        },
+        "ModelSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "modelSelectionExpression",
+          "documentation" : "<p>The model selection expression for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "OperationName" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "operationName",
+          "documentation" : "<p>The operation name for the route.</p>"
+        },
+        "RequestModels" : {
+          "shape" : "RouteModels",
+          "locationName" : "requestModels",
+          "documentation" : "<p>The request models for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "RequestParameters" : {
+          "shape" : "RouteParameters",
+          "locationName" : "requestParameters",
+          "documentation" : "<p>The request parameters for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "RouteId" : {
+          "shape" : "Id",
+          "locationName" : "routeId",
+          "documentation" : "<p>The route ID.</p>"
+        },
+        "RouteKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "routeKey",
+          "documentation" : "<p>The route key for the route.</p>"
+        },
+        "RouteResponseSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "routeResponseSelectionExpression",
+          "documentation" : "<p>The route response selection expression for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "Target" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "target",
+          "documentation" : "<p>The target for the route.</p>"
+        }
+      }
+    },
+    "GetRouteResponseRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "RouteId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "routeId",
+          "documentation" : "<p>The route ID.</p>"
+        },
+        "RouteResponseId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "routeResponseId",
+          "documentation" : "<p>The route response ID.</p>"
+        }
+      },
+      "required" : [ "RouteResponseId", "ApiId", "RouteId" ]
+    },
+    "GetRouteResponseResponse" : {
+      "type" : "structure",
+      "members" : {
+        "ModelSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "modelSelectionExpression",
+          "documentation" : "<p>Represents the model selection expression of a route response. Supported only for WebSocket APIs.</p>"
+        },
+        "ResponseModels" : {
+          "shape" : "RouteModels",
+          "locationName" : "responseModels",
+          "documentation" : "<p>Represents the response models of a route response.</p>"
+        },
+        "ResponseParameters" : {
+          "shape" : "RouteParameters",
+          "locationName" : "responseParameters",
+          "documentation" : "<p>Represents the response parameters of a route response.</p>"
+        },
+        "RouteResponseId" : {
+          "shape" : "Id",
+          "locationName" : "routeResponseId",
+          "documentation" : "<p>Represents the identifier of a route response.</p>"
+        },
+        "RouteResponseKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "routeResponseKey",
+          "documentation" : "<p>Represents the route response key of a route response.</p>"
+        }
+      }
+    },
+    "GetRouteResponsesRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "MaxResults" : {
+          "shape" : "__string",
+          "location" : "querystring",
+          "locationName" : "maxResults",
+          "documentation" : "<p>The maximum number of elements to be returned for this resource.</p>"
+        },
+        "NextToken" : {
+          "shape" : "__string",
+          "location" : "querystring",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        },
+        "RouteId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "routeId",
+          "documentation" : "<p>The route ID.</p>"
+        }
+      },
+      "required" : [ "RouteId", "ApiId" ]
+    },
+    "GetRouteResponsesResponse" : {
+      "type" : "structure",
+      "members" : {
+        "Items" : {
+          "shape" : "__listOfRouteResponse",
+          "locationName" : "items",
+          "documentation" : "<p>The elements from this collection.</p>"
+        },
+        "NextToken" : {
+          "shape" : "NextToken",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      }
+    },
+    "GetRoutesRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "MaxResults" : {
+          "shape" : "__string",
+          "location" : "querystring",
+          "locationName" : "maxResults",
+          "documentation" : "<p>The maximum number of elements to be returned for this resource.</p>"
+        },
+        "NextToken" : {
+          "shape" : "__string",
+          "location" : "querystring",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      },
+      "required" : [ "ApiId" ]
+    },
+    "GetRoutesResponse" : {
+      "type" : "structure",
+      "members" : {
+        "Items" : {
+          "shape" : "__listOfRoute",
+          "locationName" : "items",
+          "documentation" : "<p>The elements from this collection.</p>"
+        },
+        "NextToken" : {
+          "shape" : "NextToken",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      }
+    },
+    "GetStageRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "StageName" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "stageName",
+          "documentation" : "<p>The stage name. Stage names can only contain alphanumeric characters, hyphens, and underscores. Maximum length is 128 characters.</p>"
+        }
+      },
+      "required" : [ "StageName", "ApiId" ]
+    },
+    "GetStageResponse" : {
+      "type" : "structure",
+      "members" : {
+        "AccessLogSettings" : {
+          "shape" : "AccessLogSettings",
+          "locationName" : "accessLogSettings",
+          "documentation" : "<p>Settings for logging access in this stage.</p>"
+        },
+        "ApiGatewayManaged" : {
+          "shape" : "__boolean",
+          "locationName" : "apiGatewayManaged",
+          "documentation" : "<p>Specifies whether a stage is managed by API Gateway. If you created an API using quick create, the $default stage is managed by API Gateway. You can't modify the $default stage.</p>"
+        },
+        "AutoDeploy" : {
+          "shape" : "__boolean",
+          "locationName" : "autoDeploy",
+          "documentation" : "<p>Specifies whether updates to an API automatically trigger a new deployment. The default value is false.</p>"
+        },
+        "ClientCertificateId" : {
+          "shape" : "Id",
+          "locationName" : "clientCertificateId",
+          "documentation" : "<p>The identifier of a client certificate for a Stage. Supported only for WebSocket APIs.</p>"
+        },
+        "CreatedDate" : {
+          "shape" : "__timestampIso8601",
+          "locationName" : "createdDate",
+          "documentation" : "<p>The timestamp when the stage was created.</p>"
+        },
+        "DefaultRouteSettings" : {
+          "shape" : "RouteSettings",
+          "locationName" : "defaultRouteSettings",
+          "documentation" : "<p>Default route settings for the stage.</p>"
+        },
+        "DeploymentId" : {
+          "shape" : "Id",
+          "locationName" : "deploymentId",
+          "documentation" : "<p>The identifier of the Deployment that the Stage is associated with. Can't be updated if autoDeploy is enabled.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description of the stage.</p>"
+        },
+        "LastDeploymentStatusMessage" : {
+          "shape" : "__string",
+          "locationName" : "lastDeploymentStatusMessage",
+          "documentation" : "<p>Describes the status of the last deployment of a stage. Supported only for stages with autoDeploy enabled.</p>"
+        },
+        "LastUpdatedDate" : {
+          "shape" : "__timestampIso8601",
+          "locationName" : "lastUpdatedDate",
+          "documentation" : "<p>The timestamp when the stage was last updated.</p>"
+        },
+        "RouteSettings" : {
+          "shape" : "RouteSettingsMap",
+          "locationName" : "routeSettings",
+          "documentation" : "<p>Route settings for the stage, by routeKey.</p>"
+        },
+        "StageName" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "stageName",
+          "documentation" : "<p>The name of the stage.</p>"
+        },
+        "StageVariables" : {
+          "shape" : "StageVariablesMap",
+          "locationName" : "stageVariables",
+          "documentation" : "<p>A map that defines the stage variables for a stage resource. Variable names can have alphanumeric and underscore characters, and the values must match [A-Za-z0-9-._~:/?#&amp;=,]+.</p>"
+        },
+        "Tags" : {
+          "shape" : "Tags",
+          "locationName" : "tags",
+          "documentation" : "<p>The collection of tags. Each tag element is associated with a given resource.</p>"
+        }
+      }
+    },
+    "GetStagesRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "MaxResults" : {
+          "shape" : "__string",
+          "location" : "querystring",
+          "locationName" : "maxResults",
+          "documentation" : "<p>The maximum number of elements to be returned for this resource.</p>"
+        },
+        "NextToken" : {
+          "shape" : "__string",
+          "location" : "querystring",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      },
+      "required" : [ "ApiId" ]
+    },
+    "GetStagesResponse" : {
+      "type" : "structure",
+      "members" : {
+        "Items" : {
+          "shape" : "__listOfStage",
+          "locationName" : "items",
+          "documentation" : "<p>The elements from this collection.</p>"
+        },
+        "NextToken" : {
+          "shape" : "NextToken",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      }
+    },
+    "GetTagsRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ResourceArn" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "resource-arn",
+          "documentation" : "<p>The resource ARN for the tag.</p>"
+        }
+      },
+      "required" : [ "ResourceArn" ]
+    },
+    "GetTagsResponse" : {
+      "type" : "structure",
+      "members" : {
+        "Tags" : {
+          "shape" : "Tags",
+          "locationName": "tags"
+        }
+      }
+    },
+    "GetVpcLinkRequest" : {
+      "type" : "structure",
+      "members" : {
+        "VpcLinkId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "vpcLinkId",
+          "documentation" : "<p>The ID of the VPC link.</p>"
+        }
+      },
+      "required" : [ "VpcLinkId" ]
+    },
+    "GetVpcLinkResponse" : {
+      "type" : "structure",
+      "members" : {
+        "CreatedDate" : {
+          "shape" : "__timestampIso8601",
+          "locationName" : "createdDate",
+          "documentation" : "<p>The timestamp when the VPC link was created.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the VPC link.</p>"
+        },
+        "SecurityGroupIds" : {
+          "shape" : "SecurityGroupIdList",
+          "locationName" : "securityGroupIds",
+          "documentation" : "<p>A list of security group IDs for the VPC link.</p>"
+        },
+        "SubnetIds" : {
+          "shape" : "SubnetIdList",
+          "locationName" : "subnetIds",
+          "documentation" : "<p>A list of subnet IDs to include in the VPC link.</p>"
+        },
+        "Tags" : {
+          "shape" : "Tags",
+          "locationName" : "tags",
+          "documentation" : "<p>Tags for the VPC link.</p>"
+        },
+        "VpcLinkId" : {
+          "shape" : "Id",
+          "locationName" : "vpcLinkId",
+          "documentation" : "<p>The ID of the VPC link.</p>"
+        },
+        "VpcLinkStatus" : {
+          "shape" : "VpcLinkStatus",
+          "locationName" : "vpcLinkStatus",
+          "documentation" : "<p>The status of the VPC link.</p>"
+        },
+        "VpcLinkStatusMessage" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "vpcLinkStatusMessage",
+          "documentation" : "<p>A message summarizing the cause of the status of the VPC link.</p>"
+        },
+        "VpcLinkVersion" : {
+          "shape" : "VpcLinkVersion",
+          "locationName" : "vpcLinkVersion",
+          "documentation" : "<p>The version of the VPC link.</p>"
+        }
+      }
+    },
+    "GetVpcLinksRequest" : {
+      "type" : "structure",
+      "members" : {
+        "MaxResults" : {
+          "shape" : "__string",
+          "location" : "querystring",
+          "locationName" : "maxResults",
+          "documentation" : "<p>The maximum number of elements to be returned for this resource.</p>"
+        },
+        "NextToken" : {
+          "shape" : "__string",
+          "location" : "querystring",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      }
+    },
+    "GetVpcLinksResponse" : {
+      "type" : "structure",
+      "members" : {
+        "Items" : {
+          "shape" : "__listOfVpcLink",
+          "locationName" : "items",
+          "documentation" : "<p>A collection of VPC links.</p>"
+        },
+        "NextToken" : {
+          "shape" : "NextToken",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      }
+    },
+    "Id" : {
+      "type" : "string",
+      "documentation" : "<p>The identifier.</p>"
+    },
+    "IdentitySourceList" : {
+      "type" : "list",
+      "documentation" : "<p>The identity source for which authorization is requested. For the REQUEST authorizer, this is required when authorization caching is enabled. The value is a comma-separated string of one or more mapping expressions of the specified request parameters. For example, if an Auth header, a Name query string parameter are defined as identity sources, this value is $method.request.header.Auth, $method.request.querystring.Name. These parameters will be used to derive the authorization caching key and to perform runtime validation of the REQUEST authorizer by verifying all of the identity-related request parameters are present, not null and non-empty. Only when this is true does the authorizer invoke the authorizer Lambda function, otherwise, it returns a 401 Unauthorized response without calling the Lambda function. The valid value is a string of comma-separated mapping expressions of the specified request parameters. When the authorization caching is not enabled, this property is optional.</p>",
+      "member" : {
+        "shape" : "__string"
+      }
+    },
+    "ImportApiInput" : {
+      "type" : "structure",
+      "members" : {
+        "Body" : {
+          "shape" : "__string",
+          "locationName" : "body",
+          "documentation" : "<p>The OpenAPI definition. Supported only for HTTP APIs.</p>"
+        }
+      },
+      "documentation" : "<p>Represents the input to ImportAPI. Supported only for HTTP APIs.</p>",
+      "required" : [ "Body" ]
+    },
+    "ImportApiRequest" : {
+      "type" : "structure",
+      "members" : {
+        "Basepath" : {
+          "shape" : "__string",
+          "location" : "querystring",
+          "locationName" : "basepath",
+          "documentation" : "<p>Specifies how to interpret the base path of the API during import. Valid values are ignore, prepend, and split. The default value is ignore. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-import-api-basePath.html\">Set the OpenAPI basePath Property</a>. Supported only for HTTP APIs.</p>"
+        },
+        "Body" : {
+          "shape" : "__string",
+          "locationName" : "body",
+          "documentation" : "<p>The OpenAPI definition. Supported only for HTTP APIs.</p>"
+        },
+        "FailOnWarnings" : {
+          "shape" : "__boolean",
+          "location" : "querystring",
+          "locationName" : "failOnWarnings",
+          "documentation" : "<p>Specifies whether to rollback the API creation when a warning is encountered. By default, API creation continues if a warning is encountered.</p>"
+        }
+      },
+      "documentation" : "<p></p>",
+      "required" : [ "Body" ]
+    },
+    "ImportApiResponse" : {
+      "type" : "structure",
+      "members" : {
+        "ApiEndpoint" : {
+          "shape" : "__string",
+          "locationName" : "apiEndpoint",
+          "documentation" : "<p>The URI of the API, of the form {api-id}.execute-api.{region}.amazonaws.com. The stage name is typically appended to this URI to form a complete path to a deployed API stage.</p>"
+        },
+        "ApiGatewayManaged" : {
+          "shape" : "__boolean",
+          "locationName" : "apiGatewayManaged",
+          "documentation" : "<p>Specifies whether an API is managed by API Gateway. You can't update or delete a managed API by using API Gateway. A managed API can be deleted only through the tooling or service that created it.</p>"
+        },
+        "ApiId" : {
+          "shape" : "Id",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API ID.</p>"
+        },
+        "ApiKeySelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "apiKeySelectionExpression",
+          "documentation" : "<p>An API key selection expression. Supported only for WebSocket APIs. See <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-apikey-selection-expressions\">API Key Selection Expressions</a>.</p>"
+        },
+        "CorsConfiguration" : {
+          "shape" : "Cors",
+          "locationName" : "corsConfiguration",
+          "documentation" : "<p>A CORS configuration. Supported only for HTTP APIs.</p>"
+        },
+        "CreatedDate" : {
+          "shape" : "__timestampIso8601",
+          "locationName" : "createdDate",
+          "documentation" : "<p>The timestamp when the API was created.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description of the API.</p>"
+        },
+        "DisableSchemaValidation" : {
+          "shape" : "__boolean",
+          "locationName" : "disableSchemaValidation",
+          "documentation" : "<p>Avoid validating models when creating a deployment. Supported only for WebSocket APIs.</p>"
+        },
+        "DisableExecuteApiEndpoint" : {
+          "shape" : "__boolean",
+          "locationName" : "disableExecuteApiEndpoint",
+          "documentation" : "<p>Specifies whether clients can invoke your API by using the default execute-api endpoint. By default, clients can invoke your API with the default https://{api_id}.execute-api.{region}.amazonaws.com endpoint. To require that clients use a custom domain name to invoke your API, disable the default endpoint.</p>"
+        },
+        "ImportInfo" : {
+          "shape" : "__listOf__string",
+          "locationName" : "importInfo",
+          "documentation" : "<p>The validation information during API import. This may include particular properties of your OpenAPI definition which are ignored during import. Supported only for HTTP APIs.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the API.</p>"
+        },
+        "ProtocolType" : {
+          "shape" : "ProtocolType",
+          "locationName" : "protocolType",
+          "documentation" : "<p>The API protocol.</p>"
+        },
+        "RouteSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "routeSelectionExpression",
+          "documentation" : "<p>The route selection expression for the API. For HTTP APIs, the routeSelectionExpression must be ${request.method} ${request.path}. If not provided, this will be the default for HTTP APIs. This property is required for WebSocket APIs.</p>"
+        },
+        "Tags" : {
+          "shape" : "Tags",
+          "locationName" : "tags",
+          "documentation" : "<p>A collection of tags associated with the API.</p>"
+        },
+        "Version" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "version",
+          "documentation" : "<p>A version identifier for the API.</p>"
+        },
+        "Warnings" : {
+          "shape" : "__listOf__string",
+          "locationName" : "warnings",
+          "documentation" : "<p>The warning messages reported when failonwarnings is turned on during API import.</p>"
+        }
+      }
+    },
+    "IntegerWithLengthBetween0And3600" : {
+      "type" : "integer",
+      "documentation" : "<p>An integer with a value between [0-3600].</p>",
+      "min" : 0,
+      "max" : 3600
+    },
+    "IntegerWithLengthBetween50And30000" : {
+      "type" : "integer",
+      "documentation" : "<p>An integer with a value between [50-30000].</p>",
+      "min" : 50,
+      "max" : 30000
+    },
+    "IntegerWithLengthBetweenMinus1And86400" : {
+      "type" : "integer",
+      "documentation" : "<p>An integer with a value between -1 and 86400. Supported only for HTTP APIs.</p>",
+      "min" : -1,
+      "max" : 86400
+    },
+    "Integration" : {
+      "type" : "structure",
+      "members" : {
+        "ApiGatewayManaged" : {
+          "shape" : "__boolean",
+          "locationName" : "apiGatewayManaged",
+          "documentation" : "<p>Specifies whether an integration is managed by API Gateway. If you created an API using using quick create, the resulting integration is managed by API Gateway. You can update a managed integration, but you can't delete it.</p>"
+        },
+        "ConnectionId" : {
+          "shape" : "StringWithLengthBetween1And1024",
+          "locationName" : "connectionId",
+          "documentation" : "<p>The ID of the VPC link for a private integration. Supported only for HTTP APIs.</p>"
+        },
+        "ConnectionType" : {
+          "shape" : "ConnectionType",
+          "locationName" : "connectionType",
+          "documentation" : "<p>The type of the network connection to the integration endpoint. Specify INTERNET for connections through the public routable internet or VPC_LINK for private connections between API Gateway and resources in a VPC. The default value is INTERNET.</p>"
+        },
+        "ContentHandlingStrategy" : {
+          "shape" : "ContentHandlingStrategy",
+          "locationName" : "contentHandlingStrategy",
+          "documentation" : "<p>Supported only for WebSocket APIs. Specifies how to handle response payload content type conversions. Supported values are CONVERT_TO_BINARY and CONVERT_TO_TEXT, with the following behaviors:</p> <p>CONVERT_TO_BINARY: Converts a response payload from a Base64-encoded string to the corresponding binary blob.</p> <p>CONVERT_TO_TEXT: Converts a response payload from a binary blob to a Base64-encoded string.</p> <p>If this property is not defined, the response payload will be passed through from the integration response to the route response or method response without modification.</p>"
+        },
+        "CredentialsArn" : {
+          "shape" : "Arn",
+          "locationName" : "credentialsArn",
+          "documentation" : "<p>Specifies the credentials required for the integration, if any. For AWS integrations, three options are available. To specify an IAM Role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To require that the caller's identity be passed through from the request, specify the string arn:aws:iam::*:user/*. To use resource-based permissions on supported AWS services, specify null.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>Represents the description of an integration.</p>"
+        },
+        "IntegrationId" : {
+          "shape" : "Id",
+          "locationName" : "integrationId",
+          "documentation" : "<p>Represents the identifier of an integration.</p>"
+        },
+        "IntegrationMethod" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "integrationMethod",
+          "documentation" : "<p>Specifies the integration's HTTP method type.</p>"
+        },
+        "IntegrationResponseSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "integrationResponseSelectionExpression",
+          "documentation" : "<p>The integration response selection expression for the integration. Supported only for WebSocket APIs. See <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-integration-response-selection-expressions\">Integration Response Selection Expressions</a>.</p>"
+        },
+        "IntegrationSubtype" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "integrationSubtype",
+          "documentation" : "<p>Supported only for HTTP API AWS_PROXY integrations. Specifies the AWS service action to invoke. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-aws-services-reference.html\">Integration subtype reference</a>.</p>"
+        },
+        "IntegrationType" : {
+          "shape" : "IntegrationType",
+          "locationName" : "integrationType",
+          "documentation" : "<p>The integration type of an integration. One of the following:</p> <p>AWS: for integrating the route or method request with an AWS service action, including the Lambda function-invoking action. With the Lambda function-invoking action, this is referred to as the Lambda custom integration. With any other AWS service action, this is known as AWS integration. Supported only for WebSocket APIs.</p> <p>AWS_PROXY: for integrating the route or method request with a Lambda function or other AWS service action. This integration is also referred to as a Lambda proxy integration.</p> <p>HTTP: for integrating the route or method request with an HTTP endpoint. This integration is also referred to as the HTTP custom integration. Supported only for WebSocket APIs.</p> <p>HTTP_PROXY: for integrating the route or method request with an HTTP endpoint, with the client request passed through as-is. This is also referred to as HTTP proxy integration.</p> <p>MOCK: for integrating the route or method request with API Gateway as a \"loopback\" endpoint without invoking any backend. Supported only for WebSocket APIs.</p>"
+        },
+        "IntegrationUri" : {
+          "shape" : "UriWithLengthBetween1And2048",
+          "locationName" : "integrationUri",
+          "documentation" : "<p>For a Lambda integration, specify the URI of a Lambda function.</p> <p>For an HTTP integration, specify a fully-qualified URL.</p> <p>For an HTTP API private integration, specify the ARN of an Application Load Balancer listener, Network Load Balancer listener, or AWS Cloud Map service. If you specify the ARN of an AWS Cloud Map service, API Gateway uses DiscoverInstances to identify resources. You can use query parameters to target specific resources. To learn more, see <a href=\"https://docs.aws.amazon.com/cloud-map/latest/api/API_DiscoverInstances.html\">DiscoverInstances</a>. For private integrations, all resources must be owned by the same AWS account.</p>"
+        },
+        "PassthroughBehavior" : {
+          "shape" : "PassthroughBehavior",
+          "locationName" : "passthroughBehavior",
+          "documentation" : "<p>Specifies the pass-through behavior for incoming requests based on the Content-Type header in the request, and the available mapping templates specified as the requestTemplates property on the Integration resource. There are three valid values: WHEN_NO_MATCH, WHEN_NO_TEMPLATES, and NEVER. Supported only for WebSocket APIs.</p> <p>WHEN_NO_MATCH passes the request body for unmapped content types through to the integration backend without transformation.</p> <p>NEVER rejects unmapped content types with an HTTP 415 Unsupported Media Type response.</p> <p>WHEN_NO_TEMPLATES allows pass-through when the integration has no content types mapped to templates. However, if there is at least one content type defined, unmapped content types will be rejected with the same HTTP 415 Unsupported Media Type response.</p>"
+        },
+        "PayloadFormatVersion" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "payloadFormatVersion",
+          "documentation" : "<p>Specifies the format of the payload sent to an integration. Required for HTTP APIs.</p>"
+        },
+        "RequestParameters" : {
+          "shape" : "IntegrationParameters",
+          "locationName" : "requestParameters",
+          "documentation" : "<p>For WebSocket APIs, a key-value map specifying request parameters that are passed from the method request to the backend. The key is an integration request parameter name and the associated value is a method request parameter value or static value that must be enclosed within single quotes and pre-encoded as required by the backend. The method request parameter value must match the pattern of method.request.<replaceable>{location}</replaceable>.<replaceable>{name}</replaceable>\n          , where \n            <replaceable>{location}</replaceable>\n           is querystring, path, or header; and \n            <replaceable>{name}</replaceable>\n           must be a valid and unique method request parameter name.</p> <p>For HTTP API integrations with a specified integrationSubtype, request parameters are a key-value map specifying parameters that are passed to AWS_PROXY integrations. You can provide static values, or map request data, stage variables, or context variables that are evaluated at runtime. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-aws-services.html\">Working with AWS service integrations for HTTP APIs</a>.</p> <p>For HTTP API itegrations, without a specified integrationSubtype request parameters are a key-value map specifying how to transform HTTP requests before sending them to backend integrations. The key should follow the pattern &lt;action&gt;:&lt;header|querystring|path&gt;.&lt;location&gt;. The action can be append, overwrite or remove. For values, you can provide static values, or map request data, stage variables, or context variables that are evaluated at runtime. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-parameter-mapping.html\">Transforming API requests and responses</a>.</p>"
+        },
+        "RequestTemplates" : {
+          "shape" : "TemplateMap",
+          "locationName" : "requestTemplates",
+          "documentation" :  "<p>Represents a map of Velocity templates that are applied on the request payload based on the value of the Content-Type header sent by the client. The content type value is the key in this map, and the template (as a String) is the value. Supported only for WebSocket APIs.</p>"
+        },
+        "ResponseParameters" : {
+          "shape" : "ResponseParameters",
+          "locationName" : "responseParameters",
+          "documentation" : "<p>Supported only for HTTP APIs. You use response parameters to transform the HTTP response from a backend integration before returning the response to clients. Specify a key-value map from a selection key to response parameters. The selection key must be a valid HTTP status code within the range of 200-599. Response parameters are a key-value map. The key must match pattern &lt;action&gt;:&lt;header&gt;.&lt;location&gt; or overwrite.statuscode. The action can be append, overwrite or remove. The value can be a static value, or map to response data, stage variables, or context variables that are evaluated at runtime. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-parameter-mapping.html\">Transforming API requests and responses</a>.</p>"
+        },
+        "TemplateSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "templateSelectionExpression",
+          "documentation" : "<p>The template selection expression for the integration. Supported only for WebSocket APIs.</p>"
+        },
+        "TimeoutInMillis" : {
+          "shape" : "IntegerWithLengthBetween50And30000",
+          "locationName" : "timeoutInMillis",
+          "documentation" : "<p>Custom timeout between 50 and 29,000 milliseconds for WebSocket APIs and between 50 and 30,000 milliseconds for HTTP APIs. The default timeout is 29 seconds for WebSocket APIs and 30 seconds for HTTP APIs.</p>"
+        },
+        "TlsConfig" : {
+          "shape" : "TlsConfig",
+          "locationName" : "tlsConfig",
+          "documentation" : "<p>The TLS configuration for a private integration. If you specify a TLS configuration, private integration traffic uses the HTTPS protocol. Supported only for HTTP APIs.</p>"
+        }
+      },
+      "documentation" : "<p>Represents an integration.</p>"
+    },
+    "IntegrationParameters" : {
+      "type" : "map",
+      "documentation" : "<p>For WebSocket APIs, a key-value map specifying request parameters that are passed from the method request to the backend. The key is an integration request parameter name and the associated value is a method request parameter value or static value that must be enclosed within single quotes and pre-encoded as required by the backend. The method request parameter value must match the pattern of method.request.<replaceable>{location}</replaceable>.<replaceable>{name}</replaceable>\n          , where \n            <replaceable>{location}</replaceable>\n           is querystring, path, or header; and \n            <replaceable>{name}</replaceable>\n           must be a valid and unique method request parameter name.</p> <p>For HTTP API integrations with a specified integrationSubtype, request parameters are a key-value map specifying parameters that are passed to AWS_PROXY integrations. You can provide static values, or map request data, stage variables, or context variables that are evaluated at runtime. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-aws-services.html\">Working with AWS service integrations for HTTP APIs</a>.</p> <p>For HTTP API integrations without a specified integrationSubtype request parameters are a key-value map specifying how to transform HTTP requests before sending them to the backend. The key should follow the pattern &lt;action&gt;:&lt;header|querystring|path&gt;.&lt;location&gt; where action can be append, overwrite or remove. For values, you can provide static values, or map request data, stage variables, or context variables that are evaluated at runtime. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-parameter-mapping.html\">Transforming API requests and responses</a>.</p>",
+      "key" : {
+        "shape" : "__string"
+      },
+      "value" : {
+        "shape" : "StringWithLengthBetween1And512"
+      }
+    },
+    "IntegrationResponse" : {
+      "type" : "structure",
+      "members" : {
+        "ContentHandlingStrategy" : {
+          "shape" : "ContentHandlingStrategy",
+          "locationName" : "contentHandlingStrategy",
+          "documentation" : "<p>Supported only for WebSocket APIs. Specifies how to handle response payload content type conversions. Supported values are CONVERT_TO_BINARY and CONVERT_TO_TEXT, with the following behaviors:</p> <p>CONVERT_TO_BINARY: Converts a response payload from a Base64-encoded string to the corresponding binary blob.</p> <p>CONVERT_TO_TEXT: Converts a response payload from a binary blob to a Base64-encoded string.</p> <p>If this property is not defined, the response payload will be passed through from the integration response to the route response or method response without modification.</p>"
+        },
+        "IntegrationResponseId" : {
+          "shape" : "Id",
+          "locationName" : "integrationResponseId",
+          "documentation" : "<p>The integration response ID.</p>"
+        },
+        "IntegrationResponseKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "integrationResponseKey",
+          "documentation" : "<p>The integration response key.</p>"
+        },
+        "ResponseParameters" : {
+          "shape" : "IntegrationParameters",
+          "locationName" : "responseParameters",
+          "documentation" : "<p>A key-value map specifying response parameters that are passed to the method response from the backend. The key is a method response header parameter name and the mapped value is an integration response header value, a static value enclosed within a pair of single quotes, or a JSON expression from the integration response body. The mapping key must match the pattern of method.response.header.{name}, where name is a valid and unique header name. The mapped non-static value must match the pattern of integration.response.header.{name} or integration.response.body.{JSON-expression}, where name is a valid and unique response header name and JSON-expression is a valid JSON expression without the $ prefix.</p>"
+        },
+        "ResponseTemplates" : {
+          "shape" : "TemplateMap",
+          "locationName" : "responseTemplates",
+          "documentation" : "<p>The collection of response templates for the integration response as a string-to-string map of key-value pairs. Response templates are represented as a key/value map, with a content-type as the key and a template as the value.</p>"
+        },
+        "TemplateSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "templateSelectionExpression",
+          "documentation" : "<p>The template selection expressions for the integration response.</p>"
+        }
+      },
+      "documentation" : "<p>Represents an integration response.</p>",
+      "required" : [ "IntegrationResponseKey" ]
+    },
+    "IntegrationResponses" : {
+      "type" : "structure",
+      "members" : {
+        "Items" : {
+          "shape" : "__listOfIntegrationResponse",
+          "locationName" : "items",
+          "documentation" : "<p>The elements from this collection.</p>"
+        },
+        "NextToken" : {
+          "shape" : "NextToken",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      },
+      "documentation" : "<p>Represents a collection of integration responses.</p>"
+    },
+    "IntegrationType" : {
+      "type" : "string",
+      "documentation" : "<p>Represents an API method integration type.</p>",
+      "enum" : [ "AWS", "HTTP", "MOCK", "HTTP_PROXY", "AWS_PROXY" ]
+    },
+    "Integrations" : {
+      "type" : "structure",
+      "members" : {
+        "Items" : {
+          "shape" : "__listOfIntegration",
+          "locationName" : "items",
+          "documentation" : "<p>The elements from this collection.</p>"
+        },
+        "NextToken" : {
+          "shape" : "NextToken",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      },
+      "documentation" : "<p>Represents a collection of integrations.</p>"
+    },
+    "JWTConfiguration" : {
+      "type" : "structure",
+      "members" : {
+        "Audience" : {
+          "shape" : "__listOf__string",
+          "locationName" : "audience",
+          "documentation" : "<p>A list of the intended recipients of the JWT. A valid JWT must provide an aud that matches at least one entry in this list. See <a href=\"https://tools.ietf.org/html/rfc7519#section-4.1.3\">RFC 7519</a>. Supported only for HTTP APIs.</p>"
+        },
+        "Issuer" : {
+          "shape" : "UriWithLengthBetween1And2048",
+          "locationName" : "issuer",
+          "documentation" : "<p>The base domain of the identity provider that issues JSON Web Tokens. For example, an Amazon Cognito user pool has the following format: https://cognito-idp.<replaceable>{region}</replaceable>.amazonaws.com/<replaceable>{userPoolId}</replaceable>\n               . Required for the JWT authorizer type. Supported only for HTTP APIs.</p>"
+        }
+      },
+      "documentation" : "<p>Represents the configuration of a JWT authorizer. Required for the JWT authorizer type. Supported only for HTTP APIs.</p>"
+    },
+    "LimitExceededException" : {
+      "type" : "structure",
+      "members" : {
+        "LimitType" : {
+          "shape" : "__string",
+          "locationName" : "limitType",
+          "documentation" : "<p>The limit type.</p>"
+        },
+        "Message" : {
+          "shape" : "__string",
+          "locationName" : "message",
+          "documentation" : "<p>Describes the error encountered.</p>"
+        }
+      },
+      "documentation" : "<p>A limit has been exceeded. See the accompanying error message for details.</p>"
+    },
+    "LoggingLevel" : {
+      "type" : "string",
+      "documentation" : "<p>The logging level.</p>",
+      "enum" : [ "ERROR", "INFO", "OFF" ]
+    },
+    "Model" : {
+      "type" : "structure",
+      "members" : {
+        "ContentType" : {
+          "shape" : "StringWithLengthBetween1And256",
+          "locationName" : "contentType",
+          "documentation" : "<p>The content-type for the model, for example, \"application/json\".</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description of the model.</p>"
+        },
+        "ModelId" : {
+          "shape" : "Id",
+          "locationName" : "modelId",
+          "documentation" : "<p>The model identifier.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the model. Must be alphanumeric.</p>"
+        },
+        "Schema" : {
+          "shape" : "StringWithLengthBetween0And32K",
+          "locationName" : "schema",
+          "documentation" : "<p>The schema for the model. For application/json models, this should be JSON schema draft 4 model.</p>"
+        }
+      },
+      "documentation" : "<p>Represents a data model for an API. Supported only for WebSocket APIs. See <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/models-mappings.html\">Create Models and Mapping Templates for Request and Response Mappings</a>.</p>",
+      "required" : [ "Name" ]
+    },
+    "Models" : {
+      "type" : "structure",
+      "members" : {
+        "Items" : {
+          "shape" : "__listOfModel",
+          "locationName" : "items",
+          "documentation" : "<p>The elements from this collection.</p>"
+        },
+        "NextToken" : {
+          "shape" : "NextToken",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      },
+      "documentation" : "<p>Represents a collection of data models. See <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/models-mappings.html\">Create Models and Mapping Templates for Request and Response Mappings</a>.</p>"
+    },
+    "MutualTlsAuthentication" : {
+      "type" : "structure",
+      "members" : {
+        "TruststoreUri" : {
+          "shape" : "UriWithLengthBetween1And2048",
+          "locationName" : "truststoreUri",
+          "documentation" : "<p>An Amazon S3 URL that specifies the truststore for mutual TLS authentication, for example, s3://<replaceable>bucket-name</replaceable>/<replaceable>key-name</replaceable>. The truststore can contain certificates from public or private certificate authorities. To update the truststore, upload a new version to S3, and then update your custom domain name to use the new version. To update the truststore, you must have permissions to access the S3 object.</p>"
+        },
+        "TruststoreVersion" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "truststoreVersion",
+          "documentation" : "<p>The version of the S3 object that contains your truststore. To specify a version, you must have versioning enabled for the S3 bucket.</p>"
+        },
+        "TruststoreWarnings" : {
+          "shape" : "__listOf__string",
+          "locationName" : "truststoreWarnings",
+          "documentation" : "<p>A list of warnings that API Gateway returns while processing your truststore. Invalid certificates produce warnings. Mutual TLS is still enabled, but some clients might not be able to access your API. To resolve warnings, upload a new truststore to S3, and then update you domain name to use the new version.</p>"
+        }
+      }
+    },
+    "MutualTlsAuthenticationInput" : {
+      "type" : "structure",
+      "members" : {
+        "TruststoreUri" : {
+          "shape" : "UriWithLengthBetween1And2048",
+          "locationName" : "truststoreUri",
+          "documentation" : "<p>An Amazon S3 URL that specifies the truststore for mutual TLS authentication, for example, s3://<replaceable>bucket-name</replaceable>/<replaceable>key-name</replaceable>. The truststore can contain certificates from public or private certificate authorities. To update the truststore, upload a new version to S3, and then update your custom domain name to use the new version. To update the truststore, you must have permissions to access the S3 object.</p>"
+        },
+        "TruststoreVersion" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "truststoreVersion",
+          "documentation" : "<p>The version of the S3 object that contains your truststore. To specify a version, you must have versioning enabled for the S3 bucket.</p>"
+        }
+      }
+    },
+    "NextToken" : {
+      "type" : "string",
+      "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+    },
+    "NotFoundException" : {
+      "type" : "structure",
+      "members" : {
+        "Message" : {
+          "shape" : "__string",
+          "locationName" : "message",
+          "documentation" : "<p>Describes the error encountered.</p>"
+        },
+        "ResourceType" : {
+          "shape" : "__string",
+          "locationName" : "resourceType",
+          "documentation" : "<p>The resource type.</p>"
+        }
+      },
+      "documentation" : "<p>The resource specified in the request was not found. See the message field for more information.</p>",
+      "exception" : true,
+      "error" : {
+        "httpStatusCode" : 404
+      }
+    },
+    "ParameterConstraints" : {
+      "type" : "structure",
+      "members" : {
+        "Required" : {
+          "shape" : "__boolean",
+          "locationName" : "required",
+          "documentation" : "<p>Whether or not the parameter is required.</p>"
+        }
+      },
+      "documentation" : "<p>Validation constraints imposed on parameters of a request (path, query string, headers).</p>"
+    },
+    "PassthroughBehavior" : {
+      "type" : "string",
+      "documentation" : "<p>Represents passthrough behavior for an integration response. Supported only for WebSocket APIs.</p>",
+      "enum" : [ "WHEN_NO_MATCH", "NEVER", "WHEN_NO_TEMPLATES" ]
+    },
+    "ProtocolType" : {
+      "type" : "string",
+      "documentation" : "Represents a protocol type.",
+      "enum" : [ "WEBSOCKET", "HTTP" ]
+    },
+    "ReimportApiInput" : {
+      "type" : "structure",
+      "members" : {
+        "Body" : {
+          "shape" : "__string",
+          "locationName" : "body",
+          "documentation" : "<p>The OpenAPI definition. Supported only for HTTP APIs.</p>"
+        }
+      },
+      "documentation" : "<p>Overwrites the configuration of an existing API using the provided definition. Supported only for HTTP APIs.</p>",
+      "required" : [ "Body" ]
+    },
+    "ReimportApiRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "Basepath" : {
+          "shape" : "__string",
+          "location" : "querystring",
+          "locationName" : "basepath",
+          "documentation" : "<p>Specifies how to interpret the base path of the API during import. Valid values are ignore, prepend, and split. The default value is ignore. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-import-api-basePath.html\">Set the OpenAPI basePath Property</a>. Supported only for HTTP APIs.</p>"
+        },
+        "Body" : {
+          "shape" : "__string",
+          "locationName" : "body",
+          "documentation" : "<p>The OpenAPI definition. Supported only for HTTP APIs.</p>"
+        },
+        "FailOnWarnings" : {
+          "shape" : "__boolean",
+          "location" : "querystring",
+          "locationName" : "failOnWarnings",
+          "documentation" : "<p>Specifies whether to rollback the API creation when a warning is encountered. By default, API creation continues if a warning is encountered.</p>"
+        }
+      },
+      "documentation" : "<p></p>",
+      "required" : [ "ApiId", "Body" ]
+    },
+    "ReimportApiResponse" : {
+      "type" : "structure",
+      "members" : {
+        "ApiEndpoint" : {
+          "shape" : "__string",
+          "locationName" : "apiEndpoint",
+          "documentation" : "<p>The URI of the API, of the form {api-id}.execute-api.{region}.amazonaws.com. The stage name is typically appended to this URI to form a complete path to a deployed API stage.</p>"
+        },
+        "ApiGatewayManaged" : {
+          "shape" : "__boolean",
+          "locationName" : "apiGatewayManaged",
+          "documentation" : "<p>Specifies whether an API is managed by API Gateway. You can't update or delete a managed API by using API Gateway. A managed API can be deleted only through the tooling or service that created it.</p>"
+        },
+        "ApiId" : {
+          "shape" : "Id",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API ID.</p>"
+        },
+        "ApiKeySelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "apiKeySelectionExpression",
+          "documentation" : "<p>An API key selection expression. Supported only for WebSocket APIs. See <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-apikey-selection-expressions\">API Key Selection Expressions</a>.</p>"
+        },
+        "CorsConfiguration" : {
+          "shape" : "Cors",
+          "locationName" : "corsConfiguration",
+          "documentation" : "<p>A CORS configuration. Supported only for HTTP APIs.</p>"
+        },
+        "CreatedDate" : {
+          "shape" : "__timestampIso8601",
+          "locationName" : "createdDate",
+          "documentation" : "<p>The timestamp when the API was created.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description of the API.</p>"
+        },
+        "DisableSchemaValidation" : {
+          "shape" : "__boolean",
+          "locationName" : "disableSchemaValidation",
+          "documentation" : "<p>Avoid validating models when creating a deployment. Supported only for WebSocket APIs.</p>"
+        },
+        "DisableExecuteApiEndpoint" : {
+          "shape" : "__boolean",
+          "locationName" : "disableExecuteApiEndpoint",
+          "documentation" : "<p>Specifies whether clients can invoke your API by using the default execute-api endpoint. By default, clients can invoke your API with the default https://{api_id}.execute-api.{region}.amazonaws.com endpoint. To require that clients use a custom domain name to invoke your API, disable the default endpoint.</p>"
+        },
+        "ImportInfo" : {
+          "shape" : "__listOf__string",
+          "locationName" : "importInfo",
+          "documentation" : "<p>The validation information during API import. This may include particular properties of your OpenAPI definition which are ignored during import. Supported only for HTTP APIs.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the API.</p>"
+        },
+        "ProtocolType" : {
+          "shape" : "ProtocolType",
+          "locationName" : "protocolType",
+          "documentation" : "<p>The API protocol.</p>"
+        },
+        "RouteSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "routeSelectionExpression",
+          "documentation" : "<p>The route selection expression for the API. For HTTP APIs, the routeSelectionExpression must be ${request.method} ${request.path}. If not provided, this will be the default for HTTP APIs. This property is required for WebSocket APIs.</p>"
+        },
+        "Tags" : {
+          "shape" : "Tags",
+          "locationName" : "tags",
+          "documentation" : "<p>A collection of tags associated with the API.</p>"
+        },
+        "Version" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "version",
+          "documentation" : "<p>A version identifier for the API.</p>"
+        },
+        "Warnings" : {
+          "shape" : "__listOf__string",
+          "locationName" : "warnings",
+          "documentation" : "<p>The warning messages reported when failonwarnings is turned on during API import.</p>"
+        }
+      }
+    },
+    "ResponseParameters" : {
+      "type" : "map",
+      "documentation" : "<p>Supported only for HTTP APIs. You use response parameters to transform the HTTP response from a backend integration before returning the response to clients.</p>",
+      "key" : {
+        "shape" : "__string"
+      },
+      "value" : {
+        "shape" : "IntegrationParameters"
+      }
+    },
+    "Route" : {
+      "type" : "structure",
+      "members" : {
+        "ApiGatewayManaged" : {
+          "shape" : "__boolean",
+          "locationName" : "apiGatewayManaged",
+          "documentation" : "<p>Specifies whether a route is managed by API Gateway. If you created an API using quick create, the $default route is managed by API Gateway. You can't modify the $default route key.</p>"
+        },
+        "ApiKeyRequired" : {
+          "shape" : "__boolean",
+          "locationName" : "apiKeyRequired",
+          "documentation" : "<p>Specifies whether an API key is required for this route. Supported only for WebSocket APIs.</p>"
+        },
+        "AuthorizationScopes" : {
+          "shape" : "AuthorizationScopes",
+          "locationName" : "authorizationScopes",
+          "documentation" : "<p>A list of authorization scopes configured on a route. The scopes are used with a JWT authorizer to authorize the method invocation. The authorization works by matching the route scopes against the scopes parsed from the access token in the incoming request. The method invocation is authorized if any route scope matches a claimed scope in the access token. Otherwise, the invocation is not authorized. When the route scope is configured, the client must provide an access token instead of an identity token for authorization purposes.</p>"
+        },
+        "AuthorizationType" : {
+          "shape" : "AuthorizationType",
+          "locationName" : "authorizationType",
+          "documentation" : "<p>The authorization type for the route. For WebSocket APIs, valid values are NONE for open access, AWS_IAM for using AWS IAM permissions, and CUSTOM for using a Lambda authorizer For HTTP APIs, valid values are NONE for open access, JWT for using JSON Web Tokens, AWS_IAM for using AWS IAM permissions, and CUSTOM for using a Lambda authorizer.</p>"
+        },
+        "AuthorizerId" : {
+          "shape" : "Id",
+          "locationName" : "authorizerId",
+          "documentation" : "<p>The identifier of the Authorizer resource to be associated with this route. The authorizer identifier is generated by API Gateway when you created the authorizer.</p>"
+        },
+        "ModelSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "modelSelectionExpression",
+          "documentation" : "<p>The model selection expression for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "OperationName" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "operationName",
+          "documentation" : "<p>The operation name for the route.</p>"
+        },
+        "RequestModels" : {
+          "shape" : "RouteModels",
+          "locationName" : "requestModels",
+          "documentation" : "<p>The request models for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "RequestParameters" : {
+          "shape" : "RouteParameters",
+          "locationName" : "requestParameters",
+          "documentation" : "<p>The request parameters for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "RouteId" : {
+          "shape" : "Id",
+          "locationName" : "routeId",
+          "documentation" : "<p>The route ID.</p>"
+        },
+        "RouteKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "routeKey",
+          "documentation" : "<p>The route key for the route.</p>"
+        },
+        "RouteResponseSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "routeResponseSelectionExpression",
+          "documentation" : "<p>The route response selection expression for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "Target" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "target",
+          "documentation" : "<p>The target for the route.</p>"
+        }
+      },
+      "documentation" : "<p>Represents a route.</p>",
+      "required" : [ "RouteKey" ]
+    },
+    "RouteModels" : {
+      "type" : "map",
+      "documentation" : "<p>The route models.</p>",
+      "key" : {
+        "shape" : "__string"
+      },
+      "value" : {
+        "shape" : "StringWithLengthBetween1And128"
+      }
+    },
+    "RouteParameters" : {
+      "type" : "map",
+      "documentation" : "<p>The route parameters.</p>",
+      "key" : {
+        "shape" : "__string"
+      },
+      "value" : {
+        "shape" : "ParameterConstraints"
+      }
+    },
+    "RouteResponse" : {
+      "type" : "structure",
+      "members" : {
+        "ModelSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "modelSelectionExpression",
+          "documentation" : "<p>Represents the model selection expression of a route response. Supported only for WebSocket APIs.</p>"
+        },
+        "ResponseModels" : {
+          "shape" : "RouteModels",
+          "locationName" : "responseModels",
+          "documentation" : "<p>Represents the response models of a route response.</p>"
+        },
+        "ResponseParameters" : {
+          "shape" : "RouteParameters",
+          "locationName" : "responseParameters",
+          "documentation" : "<p>Represents the response parameters of a route response.</p>"
+        },
+        "RouteResponseId" : {
+          "shape" : "Id",
+          "locationName" : "routeResponseId",
+          "documentation" : "<p>Represents the identifier of a route response.</p>"
+        },
+        "RouteResponseKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "routeResponseKey",
+          "documentation" : "<p>Represents the route response key of a route response.</p>"
+        }
+      },
+      "documentation" : "<p>Represents a route response.</p>",
+      "required" : [ "RouteResponseKey" ]
+    },
+    "RouteResponses" : {
+      "type" : "structure",
+      "members" : {
+        "Items" : {
+          "shape" : "__listOfRouteResponse",
+          "locationName" : "items",
+          "documentation" : "<p>The elements from this collection.</p>"
+        },
+        "NextToken" : {
+          "shape" : "NextToken",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      },
+      "documentation" : "<p>Represents a collection of route responses.</p>"
+    },
+    "RouteSettings" : {
+      "type" : "structure",
+      "members" : {
+        "DataTraceEnabled" : {
+          "shape" : "__boolean",
+          "locationName" : "dataTraceEnabled",
+          "documentation" : "<p>Specifies whether (true) or not (false) data trace logging is enabled for this route. This property affects the log entries pushed to Amazon CloudWatch Logs. Supported only for WebSocket APIs.</p>"
+        },
+        "DetailedMetricsEnabled" : {
+          "shape" : "__boolean",
+          "locationName" : "detailedMetricsEnabled",
+          "documentation" : "<p>Specifies whether detailed metrics are enabled.</p>"
+        },
+        "LoggingLevel" : {
+          "shape" : "LoggingLevel",
+          "locationName" : "loggingLevel",
+          "documentation" : "<p>Specifies the logging level for this route: INFO, ERROR, or OFF. This property affects the log entries pushed to Amazon CloudWatch Logs. Supported only for WebSocket APIs.</p>"
+        },
+        "ThrottlingBurstLimit" : {
+          "shape" : "__integer",
+          "locationName" : "throttlingBurstLimit",
+          "documentation" : "<p>Specifies the throttling burst limit.</p>"
+        },
+        "ThrottlingRateLimit" : {
+          "shape" : "__double",
+          "locationName" : "throttlingRateLimit",
+          "documentation" : "<p>Specifies the throttling rate limit.</p>"
+        }
+      },
+      "documentation" : "<p>Represents a collection of route settings.</p>"
+    },
+    "RouteSettingsMap" : {
+      "type" : "map",
+      "documentation" : "<p>The route settings map.</p>",
+      "key" : {
+        "shape" : "__string"
+      },
+      "value" : {
+        "shape" : "RouteSettings"
+      }
+    },
+    "Routes" : {
+      "type" : "structure",
+      "members" : {
+        "Items" : {
+          "shape" : "__listOfRoute",
+          "locationName" : "items",
+          "documentation" : "<p>The elements from this collection.</p>"
+        },
+        "NextToken" : {
+          "shape" : "NextToken",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      },
+      "documentation" : "<p>Represents a collection of routes.</p>"
+    },
+    "SecurityGroupIdList" : {
+      "type" : "list",
+      "documentation" : "<p>A list of security group IDs for the VPC link.</p>",
+      "member" : {
+        "shape" : "__string"
+      }
+    },
+    "SecurityPolicy" : {
+      "type" : "string",
+      "documentation" : "<p>The Transport Layer Security (TLS) version of the security policy for this domain name. The valid values are TLS_1_0 and TLS_1_2.</p>",
+      "enum" : [ "TLS_1_0", "TLS_1_2" ]
+    },
+    "SelectionExpression" : {
+      "type" : "string",
+      "documentation" : "<p>An expression used to extract information at runtime. See <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-apikey-selection-expressions\">Selection Expressions</a> for more information.</p>"
+    },
+    "SelectionKey" : {
+      "type" : "string",
+      "documentation" : "<p>After evaluating a selection expression, the result is compared against one or more selection keys to find a matching key. See <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-apikey-selection-expressions\">Selection Expressions</a> for a list of expressions and each expression's associated selection key type.</p>"
+    },
+    "Stage" : {
+      "type" : "structure",
+      "members" : {
+        "AccessLogSettings" : {
+          "shape" : "AccessLogSettings",
+          "locationName" : "accessLogSettings",
+          "documentation" : "<p>Settings for logging access in this stage.</p>"
+        },
+        "ApiGatewayManaged" : {
+          "shape" : "__boolean",
+          "locationName" : "apiGatewayManaged",
+          "documentation" : "<p>Specifies whether a stage is managed by API Gateway. If you created an API using quick create, the $default stage is managed by API Gateway. You can't modify the $default stage.</p>"
+        },
+        "AutoDeploy" : {
+          "shape" : "__boolean",
+          "locationName" : "autoDeploy",
+          "documentation" : "<p>Specifies whether updates to an API automatically trigger a new deployment. The default value is false.</p>"
+        },
+        "ClientCertificateId" : {
+          "shape" : "Id",
+          "locationName" : "clientCertificateId",
+          "documentation" : "<p>The identifier of a client certificate for a Stage. Supported only for WebSocket APIs.</p>"
+        },
+        "CreatedDate" : {
+          "shape" : "__timestampIso8601",
+          "locationName" : "createdDate",
+          "documentation" : "<p>The timestamp when the stage was created.</p>"
+        },
+        "DefaultRouteSettings" : {
+          "shape" : "RouteSettings",
+          "locationName" : "defaultRouteSettings",
+          "documentation" : "<p>Default route settings for the stage.</p>"
+        },
+        "DeploymentId" : {
+          "shape" : "Id",
+          "locationName" : "deploymentId",
+          "documentation" : "<p>The identifier of the Deployment that the Stage is associated with. Can't be updated if autoDeploy is enabled.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description of the stage.</p>"
+        },
+        "LastDeploymentStatusMessage" : {
+          "shape" : "__string",
+          "locationName" : "lastDeploymentStatusMessage",
+          "documentation" : "<p>Describes the status of the last deployment of a stage. Supported only for stages with autoDeploy enabled.</p>"
+        },
+        "LastUpdatedDate" : {
+          "shape" : "__timestampIso8601",
+          "locationName" : "lastUpdatedDate",
+          "documentation" : "<p>The timestamp when the stage was last updated.</p>"
+        },
+        "RouteSettings" : {
+          "shape" : "RouteSettingsMap",
+          "locationName" : "routeSettings",
+          "documentation" : "<p>Route settings for the stage, by routeKey.</p>"
+        },
+        "StageName" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "stageName",
+          "documentation" : "<p>The name of the stage.</p>"
+        },
+        "StageVariables" : {
+          "shape" : "StageVariablesMap",
+          "locationName" : "stageVariables",
+          "documentation" : "<p>A map that defines the stage variables for a stage resource. Variable names can have alphanumeric and underscore characters, and the values must match [A-Za-z0-9-._~:/?#&amp;=,]+.</p>"
+        },
+        "Tags" : {
+          "shape" : "Tags",
+          "locationName" : "tags",
+          "documentation" : "<p>The collection of tags. Each tag element is associated with a given resource.</p>"
+        }
+      },
+      "documentation" : "<p>Represents an API stage.</p>",
+      "required" : [ "StageName" ]
+    },
+    "StageVariablesMap" : {
+      "type" : "map",
+      "documentation" : "<p>The stage variable map.</p>",
+      "key" : {
+        "shape" : "__string"
+      },
+      "value" : {
+        "shape" : "StringWithLengthBetween0And2048"
+      }
+    },
+    "Stages" : {
+      "type" : "structure",
+      "members" : {
+        "Items" : {
+          "shape" : "__listOfStage",
+          "locationName" : "items",
+          "documentation" : "<p>The elements from this collection.</p>"
+        },
+        "NextToken" : {
+          "shape" : "NextToken",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      },
+      "documentation" : "<p>A collection of Stage resources that are associated with the ApiKey resource.</p>"
+    },
+    "StringWithLengthBetween0And1024" : {
+      "type" : "string",
+      "documentation" : "<p>A string with a length between [0-1024].</p>"
+    },
+    "StringWithLengthBetween0And2048" : {
+      "type" : "string",
+      "documentation" : "<p>A string with a length between [0-2048].</p>"
+    },
+    "StringWithLengthBetween0And32K" : {
+      "type" : "string",
+      "documentation" : "<p>A string with a length between [0-32768].</p>"
+    },
+    "StringWithLengthBetween1And1024" : {
+      "type" : "string",
+      "documentation" : "<p>A string with a length between [1-1024].</p>"
+    },
+    "StringWithLengthBetween1And128" : {
+      "type" : "string",
+      "documentation" : "<p>A string with a length between [1-128].</p>"
+    },
+    "StringWithLengthBetween1And1600" : {
+      "type" : "string",
+      "documentation" : "<p>A string with a length between [0-1600].</p>"
+    },
+    "StringWithLengthBetween1And256" : {
+      "type" : "string",
+      "documentation" : "<p>A string with a length between [1-256].</p>"
+    },
+    "StringWithLengthBetween1And512" : {
+      "type" : "string",
+      "documentation" : "<p>A string with a length between [1-512].</p>"
+    },
+    "StringWithLengthBetween1And64" : {
+      "type" : "string",
+      "documentation" : "<p>A string with a length between [1-64].</p>"
+    },
+    "SubnetIdList" : {
+      "type" : "list",
+      "documentation" : "<p>A list of subnet IDs to include in the VPC link.</p>",
+      "member" : {
+        "shape" : "__string"
+      }
+    },
+    "TagResourceInput" : {
+      "type" : "structure",
+      "members" : {
+        "Tags" : {
+          "shape" : "Tags",
+          "locationName" : "tags",
+          "documentation" : "<p>The collection of tags. Each tag element is associated with a given resource.</p>"
+        }
+      },
+      "documentation" : "<p>Represents the input parameters for a TagResource request.</p>"
+    },
+    "TagResourceRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ResourceArn" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "resource-arn",
+          "documentation" : "<p>The resource ARN for the tag.</p>"
+        },
+        "Tags" : {
+          "shape" : "Tags",
+          "locationName" : "tags",
+          "documentation" : "<p>The collection of tags. Each tag element is associated with a given resource.</p>"
+        }
+      },
+      "documentation" : "<p>Creates a new Tag resource to represent a tag.</p>",
+      "required" : [ "ResourceArn" ]
+    },
+    "TagResourceResponse" : {
+      "type" : "structure",
+      "members" : { }
+    },
+    "Tags" : {
+      "type" : "map",
+      "documentation" : "<p>Represents a collection of tags associated with the resource.</p>",
+      "key" : {
+        "shape" : "__string"
+      },
+      "value" : {
+        "shape" : "StringWithLengthBetween1And1600"
+      }
+    },
+    "Template" : {
+      "type" : "structure",
+      "members" : {
+        "Value" : {
+          "shape" : "__string",
+          "locationName" : "value",
+          "documentation" : "<p>The template value.</p>"
+        }
+      },
+      "documentation" : "<p>Represents a template.</p>"
+    },
+    "TemplateMap" : {
+      "type" : "map",
+      "documentation" : "<p>A mapping of identifier keys to templates. The value is an actual template script. The key is typically a SelectionKey which is chosen based on evaluating a selection expression.</p>",
+      "key" : {
+        "shape" : "__string"
+      },
+      "value" : {
+        "shape" : "StringWithLengthBetween0And32K"
+      }
+    },
+    "TlsConfig" : {
+      "type" : "structure",
+      "members" : {
+        "ServerNameToVerify" : {
+          "shape" : "StringWithLengthBetween1And512",
+          "locationName" : "serverNameToVerify",
+          "documentation" : "<p>If you specify a server name, API Gateway uses it to verify the hostname on the integration's certificate. The server name is also included in the TLS handshake to support Server Name Indication (SNI) or virtual hosting.</p>"
+        }
+      },
+      "documentation" : "<p>The TLS configuration for a private integration. If you specify a TLS configuration, private integration traffic uses the HTTPS protocol. Supported only for HTTP APIs.</p>"
+    },
+    "TlsConfigInput" : {
+      "type" : "structure",
+      "members" : {
+        "ServerNameToVerify" : {
+          "shape" : "StringWithLengthBetween1And512",
+          "locationName" : "serverNameToVerify",
+          "documentation" : "<p>If you specify a server name, API Gateway uses it to verify the hostname on the integration's certificate. The server name is also included in the TLS handshake to support Server Name Indication (SNI) or virtual hosting.</p>"
+        }
+      },
+      "documentation" : "<p>The TLS configuration for a private integration. If you specify a TLS configuration, private integration traffic uses the HTTPS protocol. Supported only for HTTP APIs.</p>"
+    },
+    "TooManyRequestsException" : {
+      "type" : "structure",
+      "members" : {
+        "LimitType" : {
+          "shape" : "__string",
+          "locationName" : "limitType",
+          "documentation" : "<p>The limit type.</p>"
+        },
+        "Message" : {
+          "shape" : "__string",
+          "locationName" : "message",
+          "documentation" : "<p>Describes the error encountered.</p>"
+        }
+      },
+      "documentation" : "<p>A limit has been exceeded. See the accompanying error message for details.</p>",
+      "exception" : true,
+      "error" : {
+        "httpStatusCode" : 429
+      }
+    },
+    "UntagResourceRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ResourceArn" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "resource-arn",
+          "documentation" : "<p>The resource ARN for the tag.</p>"
+        },
+        "TagKeys" : {
+          "shape" : "__listOf__string",
+          "location" : "querystring",
+          "locationName" : "tagKeys",
+          "documentation" : "<p>The Tag keys to delete</p>"
+        }
+      },
+      "required" : [ "ResourceArn", "TagKeys" ]
+    },
+    "UpdateApiInput" : {
+      "type" : "structure",
+      "members" : {
+        "ApiKeySelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "apiKeySelectionExpression",
+          "documentation" : "<p>An API key selection expression. Supported only for WebSocket APIs. See <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-apikey-selection-expressions\">API Key Selection Expressions</a>.</p>"
+        },
+        "CorsConfiguration" : {
+          "shape" : "Cors",
+          "locationName" : "corsConfiguration",
+          "documentation" : "<p>A CORS configuration. Supported only for HTTP APIs.</p>"
+        },
+        "CredentialsArn" : {
+          "shape" : "Arn",
+          "locationName" : "credentialsArn",
+          "documentation" : "<p>This property is part of quick create. It specifies the credentials required for the integration, if any. For a Lambda integration, three options are available. To specify an IAM Role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To require that the caller's identity be passed through from the request, specify arn:aws:iam::*:user/*. To use resource-based permissions on supported AWS services, specify null. Currently, this property is not used for HTTP integrations. If provided, this value replaces the credentials associated with the quick create integration. Supported only for HTTP APIs.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description of the API.</p>"
+        },
+        "DisableExecuteApiEndpoint" : {
+          "shape" : "__boolean",
+          "locationName" : "disableExecuteApiEndpoint",
+          "documentation" : "<p>Specifies whether clients can invoke your API by using the default execute-api endpoint. By default, clients can invoke your API with the default https://{api_id}.execute-api.{region}.amazonaws.com endpoint. To require that clients use a custom domain name to invoke your API, disable the default endpoint.</p>"
+        },
+        "DisableSchemaValidation" : {
+          "shape" : "__boolean",
+          "locationName" : "disableSchemaValidation",
+          "documentation" : "<p>Avoid validating models when creating a deployment. Supported only for WebSocket APIs.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the API.</p>"
+        },
+        "RouteKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "routeKey",
+          "documentation" : "<p>This property is part of quick create. If not specified, the route created using quick create is kept. Otherwise, this value replaces the route key of the quick create route. Additional routes may still be added after the API is updated. Supported only for HTTP APIs.</p>"
+        },
+        "RouteSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "routeSelectionExpression",
+          "documentation" : "<p>The route selection expression for the API. For HTTP APIs, the routeSelectionExpression must be ${request.method} ${request.path}. If not provided, this will be the default for HTTP APIs. This property is required for WebSocket APIs.</p>"
+        },
+        "Target" : {
+          "shape" : "UriWithLengthBetween1And2048",
+          "locationName" : "target",
+          "documentation" : "<p>This property is part of quick create. For HTTP integrations, specify a fully qualified URL. For Lambda integrations, specify a function ARN. The type of the integration will be HTTP_PROXY or AWS_PROXY, respectively. The value provided updates the integration URI and integration type. You can update a quick-created target, but you can't remove it from an API. Supported only for HTTP APIs.</p>"
+        },
+        "Version" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "version",
+          "documentation" : "<p>A version identifier for the API.</p>"
+        }
+      },
+      "documentation" : "<p>Represents the input parameters for an UpdateApi request.</p>"
+    },
+    "UpdateApiMappingInput" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "Id",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "ApiMappingKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "apiMappingKey",
+          "documentation" : "<p>The API mapping key.</p>"
+        },
+        "Stage" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "stage",
+          "documentation" : "<p>The API stage.</p>"
+        }
+      },
+      "documentation" : "<p>Represents the input parameters for an UpdateApiMapping request.</p>"
+    },
+    "UpdateApiMappingRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "Id",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "ApiMappingId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiMappingId",
+          "documentation" : "<p>The API mapping identifier.</p>"
+        },
+        "ApiMappingKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "apiMappingKey",
+          "documentation" : "<p>The API mapping key.</p>"
+        },
+        "DomainName" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "domainName",
+          "documentation" : "<p>The domain name.</p>"
+        },
+        "Stage" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "stage",
+          "documentation" : "<p>The API stage.</p>"
+        }
+      },
+      "documentation" : "<p>Updates an ApiMapping.</p>",
+      "required" : [ "ApiMappingId", "ApiId", "DomainName" ]
+    },
+    "UpdateApiMappingResponse" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "Id",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "ApiMappingId" : {
+          "shape" : "Id",
+          "locationName" : "apiMappingId",
+          "documentation" : "<p>The API mapping identifier.</p>"
+        },
+        "ApiMappingKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "apiMappingKey",
+          "documentation" : "<p>The API mapping key.</p>"
+        },
+        "Stage" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "stage",
+          "documentation" : "<p>The API stage.</p>"
+        }
+      }
+    },
+    "UpdateApiRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "ApiKeySelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "apiKeySelectionExpression",
+          "documentation" : "<p>An API key selection expression. Supported only for WebSocket APIs. See <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-apikey-selection-expressions\">API Key Selection Expressions</a>.</p>"
+        },
+        "CorsConfiguration" : {
+          "shape" : "Cors",
+          "locationName" : "corsConfiguration",
+          "documentation" : "<p>A CORS configuration. Supported only for HTTP APIs.</p>"
+        },
+        "CredentialsArn" : {
+          "shape" : "Arn",
+          "locationName" : "credentialsArn",
+          "documentation" : "<p>This property is part of quick create. It specifies the credentials required for the integration, if any. For a Lambda integration, three options are available. To specify an IAM Role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To require that the caller's identity be passed through from the request, specify arn:aws:iam::*:user/*. To use resource-based permissions on supported AWS services, don't specify this parameter. Currently, this property is not used for HTTP integrations. If provided, this value replaces the credentials associated with the quick create integration. Supported only for HTTP APIs.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description of the API.</p>"
+        },
+        "DisableSchemaValidation" : {
+          "shape" : "__boolean",
+          "locationName" : "disableSchemaValidation",
+          "documentation" : "<p>Avoid validating models when creating a deployment. Supported only for WebSocket APIs.</p>"
+        },
+        "DisableExecuteApiEndpoint" : {
+          "shape" : "__boolean",
+          "locationName" : "disableExecuteApiEndpoint",
+          "documentation" : "<p>Specifies whether clients can invoke your API by using the default execute-api endpoint. By default, clients can invoke your API with the default https://{api_id}.execute-api.{region}.amazonaws.com endpoint. To require that clients use a custom domain name to invoke your API, disable the default endpoint.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the API.</p>"
+        },
+        "RouteKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "routeKey",
+          "documentation" : "<p>This property is part of quick create. If not specified, the route created using quick create is kept. Otherwise, this value replaces the route key of the quick create route. Additional routes may still be added after the API is updated. Supported only for HTTP APIs.</p>"
+        },
+        "RouteSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "routeSelectionExpression",
+          "documentation" : "<p>The route selection expression for the API. For HTTP APIs, the routeSelectionExpression must be ${request.method} ${request.path}. If not provided, this will be the default for HTTP APIs. This property is required for WebSocket APIs.</p>"
+        },
+        "Target" : {
+          "shape" : "UriWithLengthBetween1And2048",
+          "locationName" : "target",
+          "documentation" : "<p>This property is part of quick create. For HTTP integrations, specify a fully qualified URL. For Lambda integrations, specify a function ARN. The type of the integration will be HTTP_PROXY or AWS_PROXY, respectively. The value provided updates the integration URI and integration type. You can update a quick-created target, but you can't remove it from an API. Supported only for HTTP APIs.</p>"
+        },
+        "Version" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "version",
+          "documentation" : "<p>A version identifier for the API.</p>"
+        }
+      },
+      "documentation" : "<p>Updates an Api.</p>",
+      "required" : [ "ApiId" ]
+    },
+    "UpdateApiResponse" : {
+      "type" : "structure",
+      "members" : {
+        "ApiEndpoint" : {
+          "shape" : "__string",
+          "locationName" : "apiEndpoint",
+          "documentation" : "<p>The URI of the API, of the form {api-id}.execute-api.{region}.amazonaws.com. The stage name is typically appended to this URI to form a complete path to a deployed API stage.</p>"
+        },
+        "ApiGatewayManaged" : {
+          "shape" : "__boolean",
+          "locationName" : "apiGatewayManaged",
+          "documentation" : "<p>Specifies whether an API is managed by API Gateway. You can't update or delete a managed API by using API Gateway. A managed API can be deleted only through the tooling or service that created it.</p>"
+        },
+        "ApiId" : {
+          "shape" : "Id",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API ID.</p>"
+        },
+        "ApiKeySelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "apiKeySelectionExpression",
+          "documentation" : "<p>An API key selection expression. Supported only for WebSocket APIs. See <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-apikey-selection-expressions\">API Key Selection Expressions</a>.</p>"
+        },
+        "CorsConfiguration" : {
+          "shape" : "Cors",
+          "locationName" : "corsConfiguration",
+          "documentation" : "<p>A CORS configuration. Supported only for HTTP APIs.</p>"
+        },
+        "CreatedDate" : {
+          "shape" : "__timestampIso8601",
+          "locationName" : "createdDate",
+          "documentation" : "<p>The timestamp when the API was created.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description of the API.</p>"
+        },
+        "DisableSchemaValidation" : {
+          "shape" : "__boolean",
+          "locationName" : "disableSchemaValidation",
+          "documentation" : "<p>Avoid validating models when creating a deployment. Supported only for WebSocket APIs.</p>"
+        },
+        "DisableExecuteApiEndpoint" : {
+          "shape" : "__boolean",
+          "locationName" : "disableExecuteApiEndpoint",
+          "documentation" : "<p>Specifies whether clients can invoke your API by using the default execute-api endpoint. By default, clients can invoke your API with the default https://{api_id}.execute-api.{region}.amazonaws.com endpoint. To require that clients use a custom domain name to invoke your API, disable the default endpoint.</p>"
+        },
+        "ImportInfo" : {
+          "shape" : "__listOf__string",
+          "locationName" : "importInfo",
+          "documentation" : "<p>The validation information during API import. This may include particular properties of your OpenAPI definition which are ignored during import. Supported only for HTTP APIs.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the API.</p>"
+        },
+        "ProtocolType" : {
+          "shape" : "ProtocolType",
+          "locationName" : "protocolType",
+          "documentation" : "<p>The API protocol.</p>"
+        },
+        "RouteSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "routeSelectionExpression",
+          "documentation" : "<p>The route selection expression for the API. For HTTP APIs, the routeSelectionExpression must be ${request.method} ${request.path}. If not provided, this will be the default for HTTP APIs. This property is required for WebSocket APIs.</p>"
+        },
+        "Tags" : {
+          "shape" : "Tags",
+          "locationName" : "tags",
+          "documentation" : "<p>A collection of tags associated with the API.</p>"
+        },
+        "Version" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "version",
+          "documentation" : "<p>A version identifier for the API.</p>"
+        },
+        "Warnings" : {
+          "shape" : "__listOf__string",
+          "locationName" : "warnings",
+          "documentation" : "<p>The warning messages reported when failonwarnings is turned on during API import.</p>"
+        }
+      }
+    },
+    "UpdateAuthorizerInput" : {
+      "type" : "structure",
+      "members" : {
+        "AuthorizerCredentialsArn" : {
+          "shape" : "Arn",
+          "locationName" : "authorizerCredentialsArn",
+          "documentation" : "<p>Specifies the required credentials as an IAM role for API Gateway to invoke the authorizer. To specify an IAM role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To use resource-based permissions on the Lambda function, don't specify this parameter.</p>"
+        },
+        "AuthorizerPayloadFormatVersion" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "authorizerPayloadFormatVersion",
+          "documentation" : "<p>Specifies the format of the payload sent to an HTTP API Lambda authorizer. Required for HTTP API Lambda authorizers. Supported values are 1.0 and 2.0. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html\">Working with AWS Lambda authorizers for HTTP APIs</a>.</p>"
+        },
+        "AuthorizerResultTtlInSeconds" : {
+          "shape" : "IntegerWithLengthBetween0And3600",
+          "locationName" : "authorizerResultTtlInSeconds",
+          "documentation" : "<p>The time to live (TTL) for cached authorizer results, in seconds. If it equals 0, authorization caching is disabled. If it is greater than 0, API Gateway caches authorizer responses. The maximum value is 3600, or 1 hour. Supported only for HTTP API Lambda authorizers.</p>"
+        },
+        "AuthorizerType" : {
+          "shape" : "AuthorizerType",
+          "locationName" : "authorizerType",
+          "documentation" : "<p>The authorizer type. Specify REQUEST for a Lambda function using incoming request parameters. Specify JWT to use JSON Web Tokens (supported only for HTTP APIs).</p>"
+        },
+        "AuthorizerUri" : {
+          "shape" : "UriWithLengthBetween1And2048",
+          "locationName" : "authorizerUri",
+          "documentation" : "<p>The authorizer's Uniform Resource Identifier (URI). For REQUEST authorizers, this must be a well-formed Lambda function URI, for example, arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:<replaceable>{account_id}</replaceable>:function:<replaceable>{lambda_function_name}</replaceable>/invocations. In general, the URI has this form: arn:aws:apigateway:<replaceable>{region}</replaceable>:lambda:path/<replaceable>{service_api}</replaceable>\n               , where <replaceable></replaceable>{region} is the same as the region hosting the Lambda function, path indicates that the remaining substring in the URI should be treated as the path to the resource, including the initial /. For Lambda functions, this is usually of the form /2015-03-31/functions/[FunctionARN]/invocations. Supported only for REQUEST authorizers.</p>"
+        },
+        "EnableSimpleResponses" : {
+          "shape" : "__boolean",
+          "locationName" : "enableSimpleResponses",
+          "documentation" : "<p>Specifies whether a Lambda authorizer returns a response in a simple format. By default, a Lambda authorizer must return an IAM policy. If enabled, the Lambda authorizer can return a boolean value instead of an IAM policy. Supported only for HTTP APIs. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html\">Working with AWS Lambda authorizers for HTTP APIs</a></p>"
+        },
+        "IdentitySource" : {
+          "shape" : "IdentitySourceList",
+          "locationName" : "identitySource",
+          "documentation" : "<p>The identity source for which authorization is requested.</p> <p>For a REQUEST authorizer, this is optional. The value is a set of one or more mapping expressions of the specified request parameters. The identity source can be headers, query string parameters, stage variables, and context parameters. For example, if an Auth header and a Name query string parameter are defined as identity sources, this value is route.request.header.Auth, route.request.querystring.Name for WebSocket APIs. For HTTP APIs, use selection expressions prefixed with $, for example, $request.header.Auth, $request.querystring.Name. These parameters are used to perform runtime validation for Lambda-based authorizers by verifying all of the identity-related request parameters are present in the request, not null, and non-empty. Only when this is true does the authorizer invoke the authorizer Lambda function. Otherwise, it returns a 401 Unauthorized response without calling the Lambda function. For HTTP APIs, identity sources are also used as the cache key when caching is enabled. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html\">Working with AWS Lambda authorizers for HTTP APIs</a>.</p> <p>For JWT, a single entry that specifies where to extract the JSON Web Token (JWT) from inbound requests. Currently only header-based and query parameter-based selections are supported, for example $request.header.Authorization.</p>"
+        },
+        "IdentityValidationExpression" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "identityValidationExpression",
+          "documentation" : "<p>This parameter is not used.</p>"
+        },
+        "JwtConfiguration" : {
+          "shape" : "JWTConfiguration",
+          "locationName" : "jwtConfiguration",
+          "documentation" : "<p>Represents the configuration of a JWT authorizer. Required for the JWT authorizer type. Supported only for HTTP APIs.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the authorizer.</p>"
+        }
+      },
+      "documentation" : "<p>The input parameters for an UpdateAuthorizer request.</p>"
+    },
+    "UpdateAuthorizerRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "AuthorizerCredentialsArn" : {
+          "shape" : "Arn",
+          "locationName" : "authorizerCredentialsArn",
+          "documentation" : "<p>Specifies the required credentials as an IAM role for API Gateway to invoke the authorizer. To specify an IAM role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To use resource-based permissions on the Lambda function, don't specify this parameter.</p>"
+        },
+        "AuthorizerId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "authorizerId",
+          "documentation" : "<p>The authorizer identifier.</p>"
+        },
+        "AuthorizerPayloadFormatVersion" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "authorizerPayloadFormatVersion",
+          "documentation" : "<p>Specifies the format of the payload sent to an HTTP API Lambda authorizer. Required for HTTP API Lambda authorizers. Supported values are 1.0 and 2.0. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html\">Working with AWS Lambda authorizers for HTTP APIs</a>.</p>"
+        },
+        "AuthorizerResultTtlInSeconds" : {
+          "shape" : "IntegerWithLengthBetween0And3600",
+          "locationName" : "authorizerResultTtlInSeconds",
+          "documentation" : "<p>The time to live (TTL) for cached authorizer results, in seconds. If it equals 0, authorization caching is disabled. If it is greater than 0, API Gateway caches authorizer responses. The maximum value is 3600, or 1 hour. Supported only for HTTP API Lambda authorizers.</p>"
+        },
+        "AuthorizerType" : {
+          "shape" : "AuthorizerType",
+          "locationName" : "authorizerType",
+          "documentation" : "<p>The authorizer type. Specify REQUEST for a Lambda function using incoming request parameters. Specify JWT to use JSON Web Tokens (supported only for HTTP APIs).</p>"
+        },
+        "AuthorizerUri" : {
+          "shape" : "UriWithLengthBetween1And2048",
+          "locationName" : "authorizerUri",
+          "documentation" : "<p>The authorizer's Uniform Resource Identifier (URI). For REQUEST authorizers, this must be a well-formed Lambda function URI, for example, arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:<replaceable>{account_id}</replaceable>:function:<replaceable>{lambda_function_name}</replaceable>/invocations. In general, the URI has this form: arn:aws:apigateway:<replaceable>{region}</replaceable>:lambda:path/<replaceable>{service_api}</replaceable>\n               , where <replaceable></replaceable>{region} is the same as the region hosting the Lambda function, path indicates that the remaining substring in the URI should be treated as the path to the resource, including the initial /. For Lambda functions, this is usually of the form /2015-03-31/functions/[FunctionARN]/invocations. Supported only for REQUEST authorizers.</p>"
+        },
+        "EnableSimpleResponses" : {
+          "shape" : "__boolean",
+          "locationName" : "enableSimpleResponses",
+          "documentation" : "<p>Specifies whether a Lambda authorizer returns a response in a simple format. By default, a Lambda authorizer must return an IAM policy. If enabled, the Lambda authorizer can return a boolean value instead of an IAM policy. Supported only for HTTP APIs. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html\">Working with AWS Lambda authorizers for HTTP APIs</a></p>"
+        },
+        "IdentitySource" : {
+          "shape" : "IdentitySourceList",
+          "locationName" : "identitySource",
+          "documentation" : "<p>The identity source for which authorization is requested.</p> <p>For a REQUEST authorizer, this is optional. The value is a set of one or more mapping expressions of the specified request parameters. The identity source can be headers, query string parameters, stage variables, and context parameters. For example, if an Auth header and a Name query string parameter are defined as identity sources, this value is route.request.header.Auth, route.request.querystring.Name for WebSocket APIs. For HTTP APIs, use selection expressions prefixed with $, for example, $request.header.Auth, $request.querystring.Name. These parameters are used to perform runtime validation for Lambda-based authorizers by verifying all of the identity-related request parameters are present in the request, not null, and non-empty. Only when this is true does the authorizer invoke the authorizer Lambda function. Otherwise, it returns a 401 Unauthorized response without calling the Lambda function. For HTTP APIs, identity sources are also used as the cache key when caching is enabled. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html\">Working with AWS Lambda authorizers for HTTP APIs</a>.</p> <p>For JWT, a single entry that specifies where to extract the JSON Web Token (JWT) from inbound requests. Currently only header-based and query parameter-based selections are supported, for example $request.header.Authorization.</p>"
+        },
+        "IdentityValidationExpression" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "identityValidationExpression",
+          "documentation" : "<p>This parameter is not used.</p>"
+        },
+        "JwtConfiguration" : {
+          "shape" : "JWTConfiguration",
+          "locationName" : "jwtConfiguration",
+          "documentation" : "<p>Represents the configuration of a JWT authorizer. Required for the JWT authorizer type. Supported only for HTTP APIs.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the authorizer.</p>"
+        }
+      },
+      "documentation" : "<p>Updates an Authorizer.</p>",
+      "required" : [ "AuthorizerId", "ApiId" ]
+    },
+    "UpdateAuthorizerResponse" : {
+      "type" : "structure",
+      "members" : {
+        "AuthorizerCredentialsArn" : {
+          "shape" : "Arn",
+          "locationName" : "authorizerCredentialsArn",
+          "documentation" : "<p>Specifies the required credentials as an IAM role for API Gateway to invoke the authorizer. To specify an IAM role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To use resource-based permissions on the Lambda function, don't specify this parameter. Supported only for REQUEST authorizers.</p>"
+        },
+        "AuthorizerId" : {
+          "shape" : "Id",
+          "locationName" : "authorizerId",
+          "documentation" : "<p>The authorizer identifier.</p>"
+        },
+        "AuthorizerPayloadFormatVersion" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "authorizerPayloadFormatVersion",
+          "documentation" : "<p>Specifies the format of the payload sent to an HTTP API Lambda authorizer. Required for HTTP API Lambda authorizers. Supported values are 1.0 and 2.0. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html\">Working with AWS Lambda authorizers for HTTP APIs</a>.</p>"
+        },
+        "AuthorizerResultTtlInSeconds" : {
+          "shape" : "IntegerWithLengthBetween0And3600",
+          "locationName" : "authorizerResultTtlInSeconds",
+          "documentation" : "<p>The time to live (TTL) for cached authorizer results, in seconds. If it equals 0, authorization caching is disabled. If it is greater than 0, API Gateway caches authorizer responses. The maximum value is 3600, or 1 hour. Supported only for HTTP API Lambda authorizers.</p>"
+        },
+        "AuthorizerType" : {
+          "shape" : "AuthorizerType",
+          "locationName" : "authorizerType",
+          "documentation" : "<p>The authorizer type. Specify REQUEST for a Lambda function using incoming request parameters. Specify JWT to use JSON Web Tokens (supported only for HTTP APIs).</p>"
+        },
+        "AuthorizerUri" : {
+          "shape" : "UriWithLengthBetween1And2048",
+          "locationName" : "authorizerUri",
+          "documentation" : "<p>The authorizer's Uniform Resource Identifier (URI). For REQUEST authorizers, this must be a well-formed Lambda function URI, for example, arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:<replaceable>{account_id}</replaceable>:function:<replaceable>{lambda_function_name}</replaceable>/invocations. In general, the URI has this form: arn:aws:apigateway:<replaceable>{region}</replaceable>:lambda:path/<replaceable>{service_api}</replaceable>\n               , where <replaceable></replaceable>{region} is the same as the region hosting the Lambda function, path indicates that the remaining substring in the URI should be treated as the path to the resource, including the initial /. For Lambda functions, this is usually of the form /2015-03-31/functions/[FunctionARN]/invocations. Supported only for REQUEST authorizers.</p>"
+        },
+        "EnableSimpleResponses" : {
+          "shape" : "__boolean",
+          "locationName" : "enableSimpleResponses",
+          "documentation" : "<p>Specifies whether a Lambda authorizer returns a response in a simple format. If enabled, the Lambda authorizer can return a boolean value instead of an IAM policy. Supported only for HTTP APIs. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html\">Working with AWS Lambda authorizers for HTTP APIs</a></p>"
+        },
+        "IdentitySource" : {
+          "shape" : "IdentitySourceList",
+          "locationName" : "identitySource",
+          "documentation" : "<p>The identity source for which authorization is requested.</p> <p>For a REQUEST authorizer, this is optional. The value is a set of one or more mapping expressions of the specified request parameters. The identity source can be headers, query string parameters, stage variables, and context parameters. For example, if an Auth header and a Name query string parameter are defined as identity sources, this value is route.request.header.Auth, route.request.querystring.Name for WebSocket APIs. For HTTP APIs, use selection expressions prefixed with $, for example, $request.header.Auth, $request.querystring.Name. These parameters are used to perform runtime validation for Lambda-based authorizers by verifying all of the identity-related request parameters are present in the request, not null, and non-empty. Only when this is true does the authorizer invoke the authorizer Lambda function. Otherwise, it returns a 401 Unauthorized response without calling the Lambda function. For HTTP APIs, identity sources are also used as the cache key when caching is enabled. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html\">Working with AWS Lambda authorizers for HTTP APIs</a>.</p> <p>For JWT, a single entry that specifies where to extract the JSON Web Token (JWT) from inbound requests. Currently only header-based and query parameter-based selections are supported, for example $request.header.Authorization.</p>"
+        },
+        "IdentityValidationExpression" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "identityValidationExpression",
+          "documentation" : "<p>The validation expression does not apply to the REQUEST authorizer.</p>"
+        },
+        "JwtConfiguration" : {
+          "shape" : "JWTConfiguration",
+          "locationName" : "jwtConfiguration",
+          "documentation" : "<p>Represents the configuration of a JWT authorizer. Required for the JWT authorizer type. Supported only for HTTP APIs.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the authorizer.</p>"
+        }
+      }
+    },
+    "UpdateDeploymentInput" : {
+      "type" : "structure",
+      "members" : {
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description for the deployment resource.</p>"
+        }
+      },
+      "documentation" : "<p>Represents the input parameters for an UpdateDeployment request.</p>"
+    },
+    "UpdateDeploymentRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "DeploymentId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "deploymentId",
+          "documentation" : "<p>The deployment ID.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description for the deployment resource.</p>"
+        }
+      },
+      "documentation" : "<p>Updates a Deployment.</p>",
+      "required" : [ "ApiId", "DeploymentId" ]
+    },
+    "UpdateDeploymentResponse" : {
+      "type" : "structure",
+      "members" : {
+        "AutoDeployed" : {
+          "shape" : "__boolean",
+          "locationName" : "autoDeployed",
+          "documentation" : "<p>Specifies whether a deployment was automatically released.</p>"
+        },
+        "CreatedDate" : {
+          "shape" : "__timestampIso8601",
+          "locationName" : "createdDate",
+          "documentation" : "<p>The date and time when the Deployment resource was created.</p>"
+        },
+        "DeploymentId" : {
+          "shape" : "Id",
+          "locationName" : "deploymentId",
+          "documentation" : "<p>The identifier for the deployment.</p>"
+        },
+        "DeploymentStatus" : {
+          "shape" : "DeploymentStatus",
+          "locationName" : "deploymentStatus",
+          "documentation" : "<p>The status of the deployment: PENDING, FAILED, or SUCCEEDED.</p>"
+        },
+        "DeploymentStatusMessage" : {
+          "shape" : "__string",
+          "locationName" : "deploymentStatusMessage",
+          "documentation" : "<p>May contain additional feedback on the status of an API deployment.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description for the deployment.</p>"
+        }
+      }
+    },
+    "UpdateDomainNameInput" : {
+      "type" : "structure",
+      "members" : {
+        "DomainNameConfigurations" : {
+          "shape" : "DomainNameConfigurations",
+          "locationName" : "domainNameConfigurations",
+          "documentation" : "<p>The domain name configurations.</p>"
+        },
+        "MutualTlsAuthentication" : {
+          "shape" : "MutualTlsAuthenticationInput",
+          "locationName" : "mutualTlsAuthentication",
+          "documentation" : "<p>The mutual TLS authentication configuration for a custom domain name.</p>"
+        }
+      },
+      "documentation" : "<p>Represents the input parameters for an UpdateDomainName request.</p>"
+    },
+    "UpdateDomainNameRequest" : {
+      "type" : "structure",
+      "members" : {
+        "DomainName" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "domainName",
+          "documentation" : "<p>The domain name.</p>"
+        },
+        "DomainNameConfigurations" : {
+          "shape" : "DomainNameConfigurations",
+          "locationName" : "domainNameConfigurations",
+          "documentation" : "<p>The domain name configurations.</p>"
+        },
+        "MutualTlsAuthentication" : {
+          "shape" : "MutualTlsAuthenticationInput",
+          "locationName" : "mutualTlsAuthentication",
+          "documentation" : "<p>The mutual TLS authentication configuration for a custom domain name.</p>"
+        }
+      },
+      "documentation" : "<p>Updates a DomainName.</p>",
+      "required" : [ "DomainName" ]
+    },
+    "UpdateDomainNameResponse" : {
+      "type" : "structure",
+      "members" : {
+        "ApiMappingSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "apiMappingSelectionExpression",
+          "documentation" : "<p>The API mapping selection expression.</p>"
+        },
+        "DomainName" : {
+          "shape" : "StringWithLengthBetween1And512",
+          "locationName" : "domainName",
+          "documentation" : "<p>The name of the DomainName resource.</p>"
+        },
+        "DomainNameConfigurations" : {
+          "shape" : "DomainNameConfigurations",
+          "locationName" : "domainNameConfigurations",
+          "documentation" : "<p>The domain name configurations.</p>"
+        },
+        "MutualTlsAuthentication" : {
+          "shape" : "MutualTlsAuthentication",
+          "locationName" : "mutualTlsAuthentication",
+          "documentation" : "<p>The mutual TLS authentication configuration for a custom domain name.</p>"
+        },
+        "Tags" : {
+          "shape" : "Tags",
+          "locationName" : "tags",
+          "documentation" : "<p>The collection of tags associated with a domain name.</p>"
+        }
+      }
+    },
+    "UpdateIntegrationInput" : {
+      "type" : "structure",
+      "members" : {
+        "ConnectionId" : {
+          "shape" : "StringWithLengthBetween1And1024",
+          "locationName" : "connectionId",
+          "documentation" : "<p>The ID of the VPC link for a private integration. Supported only for HTTP APIs.</p>"
+        },
+        "ConnectionType" : {
+          "shape" : "ConnectionType",
+          "locationName" : "connectionType",
+          "documentation" : "<p>The type of the network connection to the integration endpoint. Specify INTERNET for connections through the public routable internet or VPC_LINK for private connections between API Gateway and resources in a VPC. The default value is INTERNET.</p>"
+        },
+        "ContentHandlingStrategy" : {
+          "shape" : "ContentHandlingStrategy",
+          "locationName" : "contentHandlingStrategy",
+          "documentation" : "<p>Supported only for WebSocket APIs. Specifies how to handle response payload content type conversions. Supported values are CONVERT_TO_BINARY and CONVERT_TO_TEXT, with the following behaviors:</p> <p>CONVERT_TO_BINARY: Converts a response payload from a Base64-encoded string to the corresponding binary blob.</p> <p>CONVERT_TO_TEXT: Converts a response payload from a binary blob to a Base64-encoded string.</p> <p>If this property is not defined, the response payload will be passed through from the integration response to the route response or method response without modification.</p>"
+        },
+        "CredentialsArn" : {
+          "shape" : "Arn",
+          "locationName" : "credentialsArn",
+          "documentation" : "<p>Specifies the credentials required for the integration, if any. For AWS integrations, three options are available. To specify an IAM Role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To require that the caller's identity be passed through from the request, specify the string arn:aws:iam::*:user/*. To use resource-based permissions on supported AWS services, specify null.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description of the integration</p>"
+        },
+        "IntegrationMethod" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "integrationMethod",
+          "documentation" : "<p>Specifies the integration's HTTP method type.</p>"
+        },
+        "IntegrationSubtype" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "integrationSubtype",
+          "documentation" : "<p>Supported only for HTTP API AWS_PROXY integrations. Specifies the AWS service action to invoke. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-aws-services-reference.html\">Integration subtype reference</a>.</p>"
+        },
+        "IntegrationType" : {
+          "shape" : "IntegrationType",
+          "locationName" : "integrationType",
+          "documentation" : "<p>The integration type of an integration. One of the following:</p> <p>AWS: for integrating the route or method request with an AWS service action, including the Lambda function-invoking action. With the Lambda function-invoking action, this is referred to as the Lambda custom integration. With any other AWS service action, this is known as AWS integration. Supported only for WebSocket APIs.</p> <p>AWS_PROXY: for integrating the route or method request with a Lambda function or other AWS service action. This integration is also referred to as a Lambda proxy integration.</p> <p>HTTP: for integrating the route or method request with an HTTP endpoint. This integration is also referred to as the HTTP custom integration. Supported only for WebSocket APIs.</p> <p>HTTP_PROXY: for integrating the route or method request with an HTTP endpoint, with the client request passed through as-is. This is also referred to as HTTP proxy integration. For HTTP API private integrations, use an HTTP_PROXY integration.</p> <p>MOCK: for integrating the route or method request with API Gateway as a \"loopback\" endpoint without invoking any backend. Supported only for WebSocket APIs.</p>"
+        },
+        "IntegrationUri" : {
+          "shape" : "UriWithLengthBetween1And2048",
+          "locationName" : "integrationUri",
+          "documentation" : "<p>For a Lambda integration, specify the URI of a Lambda function.</p> <p>For an HTTP integration, specify a fully-qualified URL.</p> <p>For an HTTP API private integration, specify the ARN of an Application Load Balancer listener, Network Load Balancer listener, or AWS Cloud Map service. If you specify the ARN of an AWS Cloud Map service, API Gateway uses DiscoverInstances to identify resources. You can use query parameters to target specific resources. To learn more, see <a href=\"https://docs.aws.amazon.com/cloud-map/latest/api/API_DiscoverInstances.html\">DiscoverInstances</a>. For private integrations, all resources must be owned by the same AWS account.</p>"
+        },
+        "PassthroughBehavior" : {
+          "shape" : "PassthroughBehavior",
+          "locationName" : "passthroughBehavior",
+          "documentation" : "<p>Specifies the pass-through behavior for incoming requests based on the Content-Type header in the request, and the available mapping templates specified as the requestTemplates property on the Integration resource. There are three valid values: WHEN_NO_MATCH, WHEN_NO_TEMPLATES, and NEVER. Supported only for WebSocket APIs.</p> <p>WHEN_NO_MATCH passes the request body for unmapped content types through to the integration backend without transformation.</p> <p>NEVER rejects unmapped content types with an HTTP 415 Unsupported Media Type response.</p> <p>WHEN_NO_TEMPLATES allows pass-through when the integration has no content types mapped to templates. However, if there is at least one content type defined, unmapped content types will be rejected with the same HTTP 415 Unsupported Media Type response.</p>"
+        },
+        "PayloadFormatVersion" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "payloadFormatVersion",
+          "documentation" : "<p>Specifies the format of the payload sent to an integration. Required for HTTP APIs.</p>"
+        },
+        "RequestParameters" : {
+          "shape" : "IntegrationParameters",
+          "locationName" : "requestParameters",
+          "documentation" : "<p>For WebSocket APIs, a key-value map specifying request parameters that are passed from the method request to the backend. The key is an integration request parameter name and the associated value is a method request parameter value or static value that must be enclosed within single quotes and pre-encoded as required by the backend. The method request parameter value must match the pattern of method.request.<replaceable>{location}</replaceable>.<replaceable>{name}</replaceable>\n          , where \n            <replaceable>{location}</replaceable>\n           is querystring, path, or header; and \n            <replaceable>{name}</replaceable>\n           must be a valid and unique method request parameter name.</p> <p>For HTTP API integrations with a specified integrationSubtype, request parameters are a key-value map specifying parameters that are passed to AWS_PROXY integrations. You can provide static values, or map request data, stage variables, or context variables that are evaluated at runtime. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-aws-services.html\">Working with AWS service integrations for HTTP APIs</a>.</p> <p>For HTTP API integrations, without a specified integrationSubtype request parameters are a key-value map specifying how to transform HTTP requests before sending them to the backend. The key should follow the pattern &lt;action&gt;:&lt;header|querystring|path&gt;.&lt;location&gt; where action can be append, overwrite or remove. For values, you can provide static values, or map request data, stage variables, or context variables that are evaluated at runtime. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-parameter-mapping.\">Transforming API requests and responses</a>.</p>"
+        },
+        "RequestTemplates" : {
+          "shape" : "TemplateMap",
+          "locationName" : "requestTemplates",
+          "documentation" : "<p>Represents a map of Velocity templates that are applied on the request payload based on the value of the Content-Type header sent by the client. The content type value is the key in this map, and the template (as a String) is the value. Supported only for WebSocket APIs.</p>"
+        },
+        "ResponseParameters" : {
+          "shape" : "ResponseParameters",
+          "locationName" : "responseParameters",
+          "documentation" : "<p>Supported only for HTTP APIs. You use response parameters to transform the HTTP response from a backend integration before returning the response to clients. Specify a key-value map from a selection key to response parameters. The selection key must be a valid HTTP status code within the range of 200-599. Response parameters are a key-value map. The key must match pattern &lt;action&gt;:&lt;header&gt;.&lt;location&gt; or overwrite.statuscode. The action can be append, overwrite or remove. The value can be a static value, or map to response data, stage variables, or context variables that are evaluated at runtime. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-parameter-mapping.html\">Transforming API requests and responses</a>.</p>"
+        },
+        "TemplateSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "templateSelectionExpression",
+          "documentation" : "<p>The template selection expression for the integration.</p>"
+        },
+        "TimeoutInMillis" : {
+          "shape" : "IntegerWithLengthBetween50And30000",
+          "locationName" : "timeoutInMillis",
+          "documentation" : "<p>Custom timeout between 50 and 29,000 milliseconds for WebSocket APIs and between 50 and 30,000 milliseconds for HTTP APIs. The default timeout is 29 seconds for WebSocket APIs and 30 seconds for HTTP APIs.</p>"
+        },
+        "TlsConfig" : {
+          "shape" : "TlsConfigInput",
+          "locationName" : "tlsConfig",
+          "documentation" : "<p>The TLS configuration for a private integration. If you specify a TLS configuration, private integration traffic uses the HTTPS protocol. Supported only for HTTP APIs.</p>"
+        }
+      },
+      "documentation" : "<p>Represents the input parameters for an UpdateIntegration request.</p>"
+    },
+    "UpdateIntegrationRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "ConnectionId" : {
+          "shape" : "StringWithLengthBetween1And1024",
+          "locationName" : "connectionId",
+          "documentation" : "<p>The ID of the VPC link for a private integration. Supported only for HTTP APIs.</p>"
+        },
+        "ConnectionType" : {
+          "shape" : "ConnectionType",
+          "locationName" : "connectionType",
+          "documentation" : "<p>The type of the network connection to the integration endpoint. Specify INTERNET for connections through the public routable internet or VPC_LINK for private connections between API Gateway and resources in a VPC. The default value is INTERNET.</p>"
+        },
+        "ContentHandlingStrategy" : {
+          "shape" : "ContentHandlingStrategy",
+          "locationName" : "contentHandlingStrategy",
+          "documentation" : "<p>Supported only for WebSocket APIs. Specifies how to handle response payload content type conversions. Supported values are CONVERT_TO_BINARY and CONVERT_TO_TEXT, with the following behaviors:</p> <p>CONVERT_TO_BINARY: Converts a response payload from a Base64-encoded string to the corresponding binary blob.</p> <p>CONVERT_TO_TEXT: Converts a response payload from a binary blob to a Base64-encoded string.</p> <p>If this property is not defined, the response payload will be passed through from the integration response to the route response or method response without modification.</p>"
+        },
+        "CredentialsArn" : {
+          "shape" : "Arn",
+          "locationName" : "credentialsArn",
+          "documentation" : "<p>Specifies the credentials required for the integration, if any. For AWS integrations, three options are available. To specify an IAM Role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To require that the caller's identity be passed through from the request, specify the string arn:aws:iam::*:user/*. To use resource-based permissions on supported AWS services, specify null.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description of the integration</p>"
+        },
+        "IntegrationId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "integrationId",
+          "documentation" : "<p>The integration ID.</p>"
+        },
+        "IntegrationMethod" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "integrationMethod",
+          "documentation" : "<p>Specifies the integration's HTTP method type.</p>"
+        },
+        "IntegrationSubtype" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "integrationSubtype",
+          "documentation" : "<p>Supported only for HTTP API AWS_PROXY integrations. Specifies the AWS service action to invoke. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-aws-services-reference.html\">Integration subtype reference</a>.</p>"
+        },
+        "IntegrationType" : {
+          "shape" : "IntegrationType",
+          "locationName" : "integrationType",
+          "documentation" : "<p>The integration type of an integration. One of the following:</p> <p>AWS: for integrating the route or method request with an AWS service action, including the Lambda function-invoking action. With the Lambda function-invoking action, this is referred to as the Lambda custom integration. With any other AWS service action, this is known as AWS integration. Supported only for WebSocket APIs.</p> <p>AWS_PROXY: for integrating the route or method request with a Lambda function or other AWS service action. This integration is also referred to as a Lambda proxy integration.</p> <p>HTTP: for integrating the route or method request with an HTTP endpoint. This integration is also referred to as the HTTP custom integration. Supported only for WebSocket APIs.</p> <p>HTTP_PROXY: for integrating the route or method request with an HTTP endpoint, with the client request passed through as-is. This is also referred to as HTTP proxy integration. For HTTP API private integrations, use an HTTP_PROXY integration.</p> <p>MOCK: for integrating the route or method request with API Gateway as a \"loopback\" endpoint without invoking any backend. Supported only for WebSocket APIs.</p>"
+        },
+        "IntegrationUri" : {
+          "shape" : "UriWithLengthBetween1And2048",
+          "locationName" : "integrationUri",
+          "documentation" : "<p>For a Lambda integration, specify the URI of a Lambda function.</p> <p>For an HTTP integration, specify a fully-qualified URL.</p> <p>For an HTTP API private integration, specify the ARN of an Application Load Balancer listener, Network Load Balancer listener, or AWS Cloud Map service. If you specify the ARN of an AWS Cloud Map service, API Gateway uses DiscoverInstances to identify resources. You can use query parameters to target specific resources. To learn more, see <a href=\"https://docs.aws.amazon.com/cloud-map/latest/api/API_DiscoverInstances.html\">DiscoverInstances</a>. For private integrations, all resources must be owned by the same AWS account.</p>"
+        },
+        "PassthroughBehavior" : {
+          "shape" : "PassthroughBehavior",
+          "locationName" : "passthroughBehavior",
+          "documentation" : "<p>Specifies the pass-through behavior for incoming requests based on the Content-Type header in the request, and the available mapping templates specified as the requestTemplates property on the Integration resource. There are three valid values: WHEN_NO_MATCH, WHEN_NO_TEMPLATES, and NEVER. Supported only for WebSocket APIs.</p> <p>WHEN_NO_MATCH passes the request body for unmapped content types through to the integration backend without transformation.</p> <p>NEVER rejects unmapped content types with an HTTP 415 Unsupported Media Type response.</p> <p>WHEN_NO_TEMPLATES allows pass-through when the integration has no content types mapped to templates. However, if there is at least one content type defined, unmapped content types will be rejected with the same HTTP 415 Unsupported Media Type response.</p>"
+        },
+        "PayloadFormatVersion" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "payloadFormatVersion",
+          "documentation" : "<p>Specifies the format of the payload sent to an integration. Required for HTTP APIs.</p>"
+        },
+        "RequestParameters" : {
+          "shape" : "IntegrationParameters",
+          "locationName" : "requestParameters",
+          "documentation" : "<p>For WebSocket APIs, a key-value map specifying request parameters that are passed from the method request to the backend. The key is an integration request parameter name and the associated value is a method request parameter value or static value that must be enclosed within single quotes and pre-encoded as required by the backend. The method request parameter value must match the pattern of method.request.<replaceable>{location}</replaceable>.<replaceable>{name}</replaceable>\n          , where \n            <replaceable>{location}</replaceable>\n           is querystring, path, or header; and \n            <replaceable>{name}</replaceable>\n           must be a valid and unique method request parameter name.</p> <p>For HTTP API integrations with a specified integrationSubtype, request parameters are a key-value map specifying parameters that are passed to AWS_PROXY integrations. You can provide static values, or map request data, stage variables, or context variables that are evaluated at runtime. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-aws-services.html\">Working with AWS service integrations for HTTP APIs</a>.</p> <p>For HTTP API integrations, without a specified integrationSubtype request parameters are a key-value map specifying how to transform HTTP requests before sending them to the backend. The key should follow the pattern &lt;action&gt;:&lt;header|querystring|path&gt;.&lt;location&gt; where action can be append, overwrite or remove. For values, you can provide static values, or map request data, stage variables, or context variables that are evaluated at runtime. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-parameter-mapping.\">Transforming API requests and responses</a>.</p>"
+        },
+        "RequestTemplates" : {
+          "shape" : "TemplateMap",
+          "locationName" : "requestTemplates",
+          "documentation" : "<p>Represents a map of Velocity templates that are applied on the request payload based on the value of the Content-Type header sent by the client. The content type value is the key in this map, and the template (as a String) is the value. Supported only for WebSocket APIs.</p>"
+        },
+        "ResponseParameters" : {
+          "shape" : "ResponseParameters",
+          "locationName" : "responseParameters",
+          "documentation" : "<p>Supported only for HTTP APIs. You use response parameters to transform the HTTP response from a backend integration before returning the response to clients. Specify a key-value map from a selection key to response parameters. The selection key must be a valid HTTP status code within the range of 200-599. Response parameters are a key-value map. The key must match pattern &lt;action&gt;:&lt;header&gt;.&lt;location&gt; or overwrite.statuscode. The action can be append, overwrite or remove. The value can be a static value, or map to response data, stage variables, or context variables that are evaluated at runtime. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-parameter-mapping.html\">Transforming API requests and responses</a>.</p>"
+        },
+        "TemplateSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "templateSelectionExpression",
+          "documentation" : "<p>The template selection expression for the integration.</p>"
+        },
+        "TimeoutInMillis" : {
+          "shape" : "IntegerWithLengthBetween50And30000",
+          "locationName" : "timeoutInMillis",
+          "documentation" : "<p>Custom timeout between 50 and 29,000 milliseconds for WebSocket APIs and between 50 and 30,000 milliseconds for HTTP APIs. The default timeout is 29 seconds for WebSocket APIs and 30 seconds for HTTP APIs.</p>"
+        },
+        "TlsConfig" : {
+          "shape" : "TlsConfigInput",
+          "locationName" : "tlsConfig",
+          "documentation" : "<p>The TLS configuration for a private integration. If you specify a TLS configuration, private integration traffic uses the HTTPS protocol. Supported only for HTTP APIs.</p>"
+        }
+      },
+      "documentation" : "<p>Updates an Integration.</p>",
+      "required" : [ "ApiId", "IntegrationId" ]
+    },
+    "UpdateIntegrationResult" : {
+      "type" : "structure",
+      "members" : {
+        "ApiGatewayManaged" : {
+          "shape" : "__boolean",
+          "locationName" : "apiGatewayManaged",
+          "documentation" : "<p>Specifies whether an integration is managed by API Gateway. If you created an API using using quick create, the resulting integration is managed by API Gateway. You can update a managed integration, but you can't delete it.</p>"
+        },
+        "ConnectionId" : {
+          "shape" : "StringWithLengthBetween1And1024",
+          "locationName" : "connectionId",
+          "documentation" : "<p>The ID of the VPC link for a private integration. Supported only for HTTP APIs.</p>"
+        },
+        "ConnectionType" : {
+          "shape" : "ConnectionType",
+          "locationName" : "connectionType",
+          "documentation" : "<p>The type of the network connection to the integration endpoint. Specify INTERNET for connections through the public routable internet or VPC_LINK for private connections between API Gateway and resources in a VPC. The default value is INTERNET.</p>"
+        },
+        "ContentHandlingStrategy" : {
+          "shape" : "ContentHandlingStrategy",
+          "locationName" : "contentHandlingStrategy",
+          "documentation" : "<p>Supported only for WebSocket APIs. Specifies how to handle response payload content type conversions. Supported values are CONVERT_TO_BINARY and CONVERT_TO_TEXT, with the following behaviors:</p> <p>CONVERT_TO_BINARY: Converts a response payload from a Base64-encoded string to the corresponding binary blob.</p> <p>CONVERT_TO_TEXT: Converts a response payload from a binary blob to a Base64-encoded string.</p> <p>If this property is not defined, the response payload will be passed through from the integration response to the route response or method response without modification.</p>"
+        },
+        "CredentialsArn" : {
+          "shape" : "Arn",
+          "locationName" : "credentialsArn",
+          "documentation" : "<p>Specifies the credentials required for the integration, if any. For AWS integrations, three options are available. To specify an IAM Role for API Gateway to assume, use the role's Amazon Resource Name (ARN). To require that the caller's identity be passed through from the request, specify the string arn:aws:iam::*:user/*. To use resource-based permissions on supported AWS services, specify null.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>Represents the description of an integration.</p>"
+        },
+        "IntegrationId" : {
+          "shape" : "Id",
+          "locationName" : "integrationId",
+          "documentation" : "<p>Represents the identifier of an integration.</p>"
+        },
+        "IntegrationMethod" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "integrationMethod",
+          "documentation" : "<p>Specifies the integration's HTTP method type.</p>"
+        },
+        "IntegrationResponseSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "integrationResponseSelectionExpression",
+          "documentation" : "<p>The integration response selection expression for the integration. Supported only for WebSocket APIs. See <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-integration-response-selection-expressions\">Integration Response Selection Expressions</a>.</p>"
+        },
+        "IntegrationSubtype" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "integrationSubtype",
+          "documentation" : "<p>Supported only for HTTP API AWS_PROXY integrations. Specifies the AWS service action to invoke. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-aws-services-reference.html\">Integration subtype reference</a>.</p>"
+        },
+        "IntegrationType" : {
+          "shape" : "IntegrationType",
+          "locationName" : "integrationType",
+          "documentation" : "<p>The integration type of an integration. One of the following:</p> <p>AWS: for integrating the route or method request with an AWS service action, including the Lambda function-invoking action. With the Lambda function-invoking action, this is referred to as the Lambda custom integration. With any other AWS service action, this is known as AWS integration. Supported only for WebSocket APIs.</p> <p>AWS_PROXY: for integrating the route or method request with a Lambda function or other AWS service action. This integration is also referred to as a Lambda proxy integration.</p> <p>HTTP: for integrating the route or method request with an HTTP endpoint. This integration is also referred to as the HTTP custom integration. Supported only for WebSocket APIs.</p> <p>HTTP_PROXY: for integrating the route or method request with an HTTP endpoint, with the client request passed through as-is. This is also referred to as HTTP proxy integration.</p> <p>MOCK: for integrating the route or method request with API Gateway as a \"loopback\" endpoint without invoking any backend. Supported only for WebSocket APIs.</p>"
+        },
+        "IntegrationUri" : {
+          "shape" : "UriWithLengthBetween1And2048",
+          "locationName" : "integrationUri",
+          "documentation" : "<p>For a Lambda integration, specify the URI of a Lambda function.</p> <p>For an HTTP integration, specify a fully-qualified URL.</p> <p>For an HTTP API private integration, specify the ARN of an Application Load Balancer listener, Network Load Balancer listener, or AWS Cloud Map service. If you specify the ARN of an AWS Cloud Map service, API Gateway uses DiscoverInstances to identify resources. You can use query parameters to target specific resources. To learn more, see <a href=\"https://docs.aws.amazon.com/cloud-map/latest/api/API_DiscoverInstances.html\">DiscoverInstances</a>. For private integrations, all resources must be owned by the same AWS account.</p>"
+        },
+        "PassthroughBehavior" : {
+          "shape" : "PassthroughBehavior",
+          "locationName" : "passthroughBehavior",
+          "documentation" : "<p>Specifies the pass-through behavior for incoming requests based on the Content-Type header in the request, and the available mapping templates specified as the requestTemplates property on the Integration resource. There are three valid values: WHEN_NO_MATCH, WHEN_NO_TEMPLATES, and NEVER. Supported only for WebSocket APIs.</p> <p>WHEN_NO_MATCH passes the request body for unmapped content types through to the integration backend without transformation.</p> <p>NEVER rejects unmapped content types with an HTTP 415 Unsupported Media Type response.</p> <p>WHEN_NO_TEMPLATES allows pass-through when the integration has no content types mapped to templates. However, if there is at least one content type defined, unmapped content types will be rejected with the same HTTP 415 Unsupported Media Type response.</p>"
+        },
+        "PayloadFormatVersion" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "payloadFormatVersion",
+          "documentation" : "<p>Specifies the format of the payload sent to an integration. Required for HTTP APIs.</p>"
+        },
+        "RequestParameters" : {
+          "shape" : "IntegrationParameters",
+          "locationName" : "requestParameters",
+          "documentation" : "<p>For WebSocket APIs, a key-value map specifying request parameters that are passed from the method request to the backend. The key is an integration request parameter name and the associated value is a method request parameter value or static value that must be enclosed within single quotes and pre-encoded as required by the backend. The method request parameter value must match the pattern of method.request.<replaceable>{location}</replaceable>.<replaceable>{name}</replaceable>\n          , where \n            <replaceable>{location}</replaceable>\n           is querystring, path, or header; and \n            <replaceable>{name}</replaceable>\n           must be a valid and unique method request parameter name.</p> <p>For HTTP API integrations with a specified integrationSubtype, request parameters are a key-value map specifying parameters that are passed to AWS_PROXY integrations. You can provide static values, or map request data, stage variables, or context variables that are evaluated at runtime. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-aws-services.html\">Working with AWS service integrations for HTTP APIs</a>.</p> <p>For HTTP API itegrations, without a specified integrationSubtype request parameters are a key-value map specifying how to transform HTTP requests before sending them to backend integrations. The key should follow the pattern &lt;action&gt;:&lt;header|querystring|path&gt;.&lt;location&gt;. The action can be append, overwrite or remove. For values, you can provide static values, or map request data, stage variables, or context variables that are evaluated at runtime. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-parameter-mapping.html\">Transforming API requests and responses</a>.</p>"
+        },
+        "RequestTemplates" : {
+          "shape" : "TemplateMap",
+          "locationName" : "requestTemplates",
+          "documentation" : "<p>Represents a map of Velocity templates that are applied on the request payload based on the value of the Content-Type header sent by the client. The content type value is the key in this map, and the template (as a String) is the value. Supported only for WebSocket APIs.</p>"
+        },
+        "ResponseParameters" : {
+          "shape" : "ResponseParameters",
+          "locationName" : "responseParameters",
+          "documentation" : "<p>Supported only for HTTP APIs. You use response parameters to transform the HTTP response from a backend integration before returning the response to clients. Specify a key-value map from a selection key to response parameters. The selection key must be a valid HTTP status code within the range of 200-599. Response parameters are a key-value map. The key must match pattern &lt;action&gt;:&lt;header&gt;.&lt;location&gt; or overwrite.statuscode. The action can be append, overwrite or remove. The value can be a static value, or map to response data, stage variables, or context variables that are evaluated at runtime. To learn more, see <a href=\"https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-parameter-mapping.html\">Transforming API requests and responses</a>.</p>"
+        },
+        "TemplateSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "templateSelectionExpression",
+          "documentation" : "<p>The template selection expression for the integration. Supported only for WebSocket APIs.</p>"
+        },
+        "TimeoutInMillis" : {
+          "shape" : "IntegerWithLengthBetween50And30000",
+          "locationName" : "timeoutInMillis",
+          "documentation" : "<p>Custom timeout between 50 and 29,000 milliseconds for WebSocket APIs and between 50 and 30,000 milliseconds for HTTP APIs. The default timeout is 29 seconds for WebSocket APIs and 30 seconds for HTTP APIs.</p>"
+        },
+        "TlsConfig" : {
+          "shape" : "TlsConfig",
+          "locationName" : "tlsConfig",
+          "documentation" : "<p>The TLS configuration for a private integration. If you specify a TLS configuration, private integration traffic uses the HTTPS protocol. Supported only for HTTP APIs.</p>"
+        }
+      }
+    },
+    "UpdateIntegrationResponseInput" : {
+      "type" : "structure",
+      "members" : {
+        "ContentHandlingStrategy" : {
+          "shape" : "ContentHandlingStrategy",
+          "locationName" : "contentHandlingStrategy",
+          "documentation" : "<p>Supported only for WebSocket APIs. Specifies how to handle response payload content type conversions. Supported values are CONVERT_TO_BINARY and CONVERT_TO_TEXT, with the following behaviors:</p> <p>CONVERT_TO_BINARY: Converts a response payload from a Base64-encoded string to the corresponding binary blob.</p> <p>CONVERT_TO_TEXT: Converts a response payload from a binary blob to a Base64-encoded string.</p> <p>If this property is not defined, the response payload will be passed through from the integration response to the route response or method response without modification.</p>"
+        },
+        "IntegrationResponseKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "integrationResponseKey",
+          "documentation" : "<p>The integration response key.</p>"
+        },
+        "ResponseParameters" : {
+          "shape" : "IntegrationParameters",
+          "locationName" : "responseParameters",
+          "documentation" : "<p>A key-value map specifying response parameters that are passed to the method response from the backend. The key is a method response header parameter name and the mapped value is an integration response header value, a static value enclosed within a pair of single quotes, or a JSON expression from the integration response body. The mapping key must match the pattern of method.response.header.<replaceable>{name}</replaceable>\n               , where name is a valid and unique header name. The mapped non-static value must match the pattern of integration.response.header.<replaceable>{name}</replaceable>\n                or integration.response.body.<replaceable>{JSON-expression}</replaceable>\n               , where \n                  <replaceable>{name}</replaceable>\n                is a valid and unique response header name and \n                  <replaceable>{JSON-expression}</replaceable>\n                is a valid JSON expression without the $ prefix.</p>"
+        },
+        "ResponseTemplates" : {
+          "shape" : "TemplateMap",
+          "locationName" : "responseTemplates",
+          "documentation" : "<p>The collection of response templates for the integration response as a string-to-string map of key-value pairs. Response templates are represented as a key/value map, with a content-type as the key and a template as the value.</p>"
+        },
+        "TemplateSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "templateSelectionExpression",
+          "documentation" : "<p>The template selection expression for the integration response. Supported only for WebSocket APIs.</p>"
+        }
+      },
+      "documentation" : "<p>Represents the input parameters for an UpdateIntegrationResponse request.</p>"
+    },
+    "UpdateIntegrationResponseRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "ContentHandlingStrategy" : {
+          "shape" : "ContentHandlingStrategy",
+          "locationName" : "contentHandlingStrategy",
+          "documentation" : "<p>Supported only for WebSocket APIs. Specifies how to handle response payload content type conversions. Supported values are CONVERT_TO_BINARY and CONVERT_TO_TEXT, with the following behaviors:</p> <p>CONVERT_TO_BINARY: Converts a response payload from a Base64-encoded string to the corresponding binary blob.</p> <p>CONVERT_TO_TEXT: Converts a response payload from a binary blob to a Base64-encoded string.</p> <p>If this property is not defined, the response payload will be passed through from the integration response to the route response or method response without modification.</p>"
+        },
+        "IntegrationId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "integrationId",
+          "documentation" : "<p>The integration ID.</p>"
+        },
+        "IntegrationResponseId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "integrationResponseId",
+          "documentation" : "<p>The integration response ID.</p>"
+        },
+        "IntegrationResponseKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "integrationResponseKey",
+          "documentation" : "<p>The integration response key.</p>"
+        },
+        "ResponseParameters" : {
+          "shape" : "IntegrationParameters",
+          "locationName" : "responseParameters",
+          "documentation" : "<p>A key-value map specifying response parameters that are passed to the method response from the backend. The key is a method response header parameter name and the mapped value is an integration response header value, a static value enclosed within a pair of single quotes, or a JSON expression from the integration response body. The mapping key must match the pattern of method.response.header.<replaceable>{name}</replaceable>\n               , where name is a valid and unique header name. The mapped non-static value must match the pattern of integration.response.header.<replaceable>{name}</replaceable>\n                or integration.response.body.<replaceable>{JSON-expression}</replaceable>\n               , where \n                  <replaceable>{name}</replaceable>\n                is a valid and unique response header name and \n                  <replaceable>{JSON-expression}</replaceable>\n                is a valid JSON expression without the $ prefix.</p>"
+        },
+        "ResponseTemplates" : {
+          "shape" : "TemplateMap",
+          "locationName" : "responseTemplates",
+          "documentation" : "<p>The collection of response templates for the integration response as a string-to-string map of key-value pairs. Response templates are represented as a key/value map, with a content-type as the key and a template as the value.</p>"
+        },
+        "TemplateSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "templateSelectionExpression",
+          "documentation" : "<p>The template selection expression for the integration response. Supported only for WebSocket APIs.</p>"
+        }
+      },
+      "documentation" : "<p>Updates an IntegrationResponses.</p>",
+      "required" : [ "ApiId", "IntegrationResponseId", "IntegrationId" ]
+    },
+    "UpdateIntegrationResponseResponse" : {
+      "type" : "structure",
+      "members" : {
+        "ContentHandlingStrategy" : {
+          "shape" : "ContentHandlingStrategy",
+          "locationName" : "contentHandlingStrategy",
+          "documentation" : "<p>Supported only for WebSocket APIs. Specifies how to handle response payload content type conversions. Supported values are CONVERT_TO_BINARY and CONVERT_TO_TEXT, with the following behaviors:</p> <p>CONVERT_TO_BINARY: Converts a response payload from a Base64-encoded string to the corresponding binary blob.</p> <p>CONVERT_TO_TEXT: Converts a response payload from a binary blob to a Base64-encoded string.</p> <p>If this property is not defined, the response payload will be passed through from the integration response to the route response or method response without modification.</p>"
+        },
+        "IntegrationResponseId" : {
+          "shape" : "Id",
+          "locationName" : "integrationResponseId",
+          "documentation" : "<p>The integration response ID.</p>"
+        },
+        "IntegrationResponseKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "integrationResponseKey",
+          "documentation" : "<p>The integration response key.</p>"
+        },
+        "ResponseParameters" : {
+          "shape" : "IntegrationParameters",
+          "locationName" : "responseParameters",
+          "documentation" : "<p>A key-value map specifying response parameters that are passed to the method response from the backend. The key is a method response header parameter name and the mapped value is an integration response header value, a static value enclosed within a pair of single quotes, or a JSON expression from the integration response body. The mapping key must match the pattern of method.response.header.{name}, where name is a valid and unique header name. The mapped non-static value must match the pattern of integration.response.header.{name} or integration.response.body.{JSON-expression}, where name is a valid and unique response header name and JSON-expression is a valid JSON expression without the $ prefix.</p>"
+        },
+        "ResponseTemplates" : {
+          "shape" : "TemplateMap",
+          "locationName" : "responseTemplates",
+          "documentation" : "<p>The collection of response templates for the integration response as a string-to-string map of key-value pairs. Response templates are represented as a key/value map, with a content-type as the key and a template as the value.</p>"
+        },
+        "TemplateSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "templateSelectionExpression",
+          "documentation" : "<p>The template selection expressions for the integration response.</p>"
+        }
+      }
+    },
+    "UpdateModelInput" : {
+      "type" : "structure",
+      "members" : {
+        "ContentType" : {
+          "shape" : "StringWithLengthBetween1And256",
+          "locationName" : "contentType",
+          "documentation" : "<p>The content-type for the model, for example, \"application/json\".</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description of the model.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the model.</p>"
+        },
+        "Schema" : {
+          "shape" : "StringWithLengthBetween0And32K",
+          "locationName" : "schema",
+          "documentation" : "<p>The schema for the model. For application/json models, this should be JSON schema draft 4 model.</p>"
+        }
+      },
+      "documentation" : "<p>Represents the input parameters for an UpdateModel request. Supported only for WebSocket APIs.</p>"
+    },
+    "UpdateModelRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "ContentType" : {
+          "shape" : "StringWithLengthBetween1And256",
+          "locationName" : "contentType",
+          "documentation" : "<p>The content-type for the model, for example, \"application/json\".</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description of the model.</p>"
+        },
+        "ModelId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "modelId",
+          "documentation" : "<p>The model ID.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the model.</p>"
+        },
+        "Schema" : {
+          "shape" : "StringWithLengthBetween0And32K",
+          "locationName" : "schema",
+          "documentation" : "<p>The schema for the model. For application/json models, this should be JSON schema draft 4 model.</p>"
+        }
+      },
+      "documentation" : "<p>Updates a Model.</p>",
+      "required" : [ "ModelId", "ApiId" ]
+    },
+    "UpdateModelResponse" : {
+      "type" : "structure",
+      "members" : {
+        "ContentType" : {
+          "shape" : "StringWithLengthBetween1And256",
+          "locationName" : "contentType",
+          "documentation" : "<p>The content-type for the model, for example, \"application/json\".</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description of the model.</p>"
+        },
+        "ModelId" : {
+          "shape" : "Id",
+          "locationName" : "modelId",
+          "documentation" : "<p>The model identifier.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the model. Must be alphanumeric.</p>"
+        },
+        "Schema" : {
+          "shape" : "StringWithLengthBetween0And32K",
+          "locationName" : "schema",
+          "documentation" : "<p>The schema for the model. For application/json models, this should be JSON schema draft 4 model.</p>"
+        }
+      }
+    },
+    "UpdateRouteInput" : {
+      "type" : "structure",
+      "members" : {
+        "ApiKeyRequired" : {
+          "shape" : "__boolean",
+          "locationName" : "apiKeyRequired",
+          "documentation" : "<p>Specifies whether an API key is required for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "AuthorizationScopes" : {
+          "shape" : "AuthorizationScopes",
+          "locationName" : "authorizationScopes",
+          "documentation" : "<p>The authorization scopes supported by this route.</p>"
+        },
+        "AuthorizationType" : {
+          "shape" : "AuthorizationType",
+          "locationName" : "authorizationType",
+          "documentation" : "<p>The authorization type for the route. For WebSocket APIs, valid values are NONE for open access, AWS_IAM for using AWS IAM permissions, and CUSTOM for using a Lambda authorizer For HTTP APIs, valid values are NONE for open access, JWT for using JSON Web Tokens, AWS_IAM for using AWS IAM permissions, and CUSTOM for using a Lambda authorizer.</p>"
+        },
+        "AuthorizerId" : {
+          "shape" : "Id",
+          "locationName" : "authorizerId",
+          "documentation" : "<p>The identifier of the Authorizer resource to be associated with this route. The authorizer identifier is generated by API Gateway when you created the authorizer.</p>"
+        },
+        "ModelSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "modelSelectionExpression",
+          "documentation" : "<p>The model selection expression for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "OperationName" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "operationName",
+          "documentation" : "<p>The operation name for the route.</p>"
+        },
+        "RequestModels" : {
+          "shape" : "RouteModels",
+          "locationName" : "requestModels",
+          "documentation" : "<p>The request models for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "RequestParameters" : {
+          "shape" : "RouteParameters",
+          "locationName" : "requestParameters",
+          "documentation" : "<p>The request parameters for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "RouteKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "routeKey",
+          "documentation" : "<p>The route key for the route.</p>"
+        },
+        "RouteResponseSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "routeResponseSelectionExpression",
+          "documentation" : "<p>The route response selection expression for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "Target" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "target",
+          "documentation" : "<p>The target for the route.</p>"
+        }
+      },
+      "documentation" : "<p>Represents the input parameters for an UpdateRoute request.</p>"
+    },
+    "UpdateRouteRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "ApiKeyRequired" : {
+          "shape" : "__boolean",
+          "locationName" : "apiKeyRequired",
+          "documentation" : "<p>Specifies whether an API key is required for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "AuthorizationScopes" : {
+          "shape" : "AuthorizationScopes",
+          "locationName" : "authorizationScopes",
+          "documentation" : "<p>The authorization scopes supported by this route.</p>"
+        },
+        "AuthorizationType" : {
+          "shape" : "AuthorizationType",
+          "locationName" : "authorizationType",
+          "documentation" : "<p>The authorization type for the route. For WebSocket APIs, valid values are NONE for open access, AWS_IAM for using AWS IAM permissions, and CUSTOM for using a Lambda authorizer For HTTP APIs, valid values are NONE for open access, JWT for using JSON Web Tokens, AWS_IAM for using AWS IAM permissions, and CUSTOM for using a Lambda authorizer.</p>"
+        },
+        "AuthorizerId" : {
+          "shape" : "Id",
+          "locationName" : "authorizerId",
+          "documentation" : "<p>The identifier of the Authorizer resource to be associated with this route. The authorizer identifier is generated by API Gateway when you created the authorizer.</p>"
+        },
+        "ModelSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "modelSelectionExpression",
+          "documentation" : "<p>The model selection expression for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "OperationName" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "operationName",
+          "documentation" : "<p>The operation name for the route.</p>"
+        },
+        "RequestModels" : {
+          "shape" : "RouteModels",
+          "locationName" : "requestModels",
+          "documentation" : "<p>The request models for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "RequestParameters" : {
+          "shape" : "RouteParameters",
+          "locationName" : "requestParameters",
+          "documentation" : "<p>The request parameters for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "RouteId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "routeId",
+          "documentation" : "<p>The route ID.</p>"
+        },
+        "RouteKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "routeKey",
+          "documentation" : "<p>The route key for the route.</p>"
+        },
+        "RouteResponseSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "routeResponseSelectionExpression",
+          "documentation" : "<p>The route response selection expression for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "Target" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "target",
+          "documentation" : "<p>The target for the route.</p>"
+        }
+      },
+      "documentation" : "<p>Updates a Route.</p>",
+      "required" : [ "ApiId", "RouteId" ]
+    },
+    "UpdateRouteResult" : {
+      "type" : "structure",
+      "members" : {
+        "ApiGatewayManaged" : {
+          "shape" : "__boolean",
+          "locationName" : "apiGatewayManaged",
+          "documentation" : "<p>Specifies whether a route is managed by API Gateway. If you created an API using quick create, the $default route is managed by API Gateway. You can't modify the $default route key.</p>"
+        },
+        "ApiKeyRequired" : {
+          "shape" : "__boolean",
+          "locationName" : "apiKeyRequired",
+          "documentation" : "<p>Specifies whether an API key is required for this route. Supported only for WebSocket APIs.</p>"
+        },
+        "AuthorizationScopes" : {
+          "shape" : "AuthorizationScopes",
+          "locationName" : "authorizationScopes",
+          "documentation" : "<p>A list of authorization scopes configured on a route. The scopes are used with a JWT authorizer to authorize the method invocation. The authorization works by matching the route scopes against the scopes parsed from the access token in the incoming request. The method invocation is authorized if any route scope matches a claimed scope in the access token. Otherwise, the invocation is not authorized. When the route scope is configured, the client must provide an access token instead of an identity token for authorization purposes.</p>"
+        },
+        "AuthorizationType" : {
+          "shape" : "AuthorizationType",
+          "locationName" : "authorizationType",
+          "documentation" : "<p>The authorization type for the route. For WebSocket APIs, valid values are NONE for open access, AWS_IAM for using AWS IAM permissions, and CUSTOM for using a Lambda authorizer For HTTP APIs, valid values are NONE for open access, JWT for using JSON Web Tokens, AWS_IAM for using AWS IAM permissions, and CUSTOM for using a Lambda authorizer.</p>"
+        },
+        "AuthorizerId" : {
+          "shape" : "Id",
+          "locationName" : "authorizerId",
+          "documentation" : "<p>The identifier of the Authorizer resource to be associated with this route. The authorizer identifier is generated by API Gateway when you created the authorizer.</p>"
+        },
+        "ModelSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "modelSelectionExpression",
+          "documentation" : "<p>The model selection expression for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "OperationName" : {
+          "shape" : "StringWithLengthBetween1And64",
+          "locationName" : "operationName",
+          "documentation" : "<p>The operation name for the route.</p>"
+        },
+        "RequestModels" : {
+          "shape" : "RouteModels",
+          "locationName" : "requestModels",
+          "documentation" : "<p>The request models for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "RequestParameters" : {
+          "shape" : "RouteParameters",
+          "locationName" : "requestParameters",
+          "documentation" : "<p>The request parameters for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "RouteId" : {
+          "shape" : "Id",
+          "locationName" : "routeId",
+          "documentation" : "<p>The route ID.</p>"
+        },
+        "RouteKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "routeKey",
+          "documentation" : "<p>The route key for the route.</p>"
+        },
+        "RouteResponseSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "routeResponseSelectionExpression",
+          "documentation" : "<p>The route response selection expression for the route. Supported only for WebSocket APIs.</p>"
+        },
+        "Target" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "target",
+          "documentation" : "<p>The target for the route.</p>"
+        }
+      }
+    },
+    "UpdateRouteResponseInput" : {
+      "type" : "structure",
+      "members" : {
+        "ModelSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "modelSelectionExpression",
+          "documentation" : "<p>The model selection expression for the route response. Supported only for WebSocket APIs.</p>"
+        },
+        "ResponseModels" : {
+          "shape" : "RouteModels",
+          "locationName" : "responseModels",
+          "documentation" : "<p>The response models for the route response.</p>"
+        },
+        "ResponseParameters" : {
+          "shape" : "RouteParameters",
+          "locationName" : "responseParameters",
+          "documentation" : "<p>The route response parameters.</p>"
+        },
+        "RouteResponseKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "routeResponseKey",
+          "documentation" : "<p>The route response key.</p>"
+        }
+      },
+      "documentation" : "<p>Represents the input parameters for an UpdateRouteResponse request.</p>"
+    },
+    "UpdateRouteResponseRequest" : {
+      "type" : "structure",
+      "members" : {
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "ModelSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "modelSelectionExpression",
+          "documentation" : "<p>The model selection expression for the route response. Supported only for WebSocket APIs.</p>"
+        },
+        "ResponseModels" : {
+          "shape" : "RouteModels",
+          "locationName" : "responseModels",
+          "documentation" : "<p>The response models for the route response.</p>"
+        },
+        "ResponseParameters" : {
+          "shape" : "RouteParameters",
+          "locationName" : "responseParameters",
+          "documentation" : "<p>The route response parameters.</p>"
+        },
+        "RouteId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "routeId",
+          "documentation" : "<p>The route ID.</p>"
+        },
+        "RouteResponseId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "routeResponseId",
+          "documentation" : "<p>The route response ID.</p>"
+        },
+        "RouteResponseKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "routeResponseKey",
+          "documentation" : "<p>The route response key.</p>"
+        }
+      },
+      "documentation" : "<p>Updates a RouteResponse.</p>",
+      "required" : [ "RouteResponseId", "ApiId", "RouteId" ]
+    },
+    "UpdateRouteResponseResponse" : {
+      "type" : "structure",
+      "members" : {
+        "ModelSelectionExpression" : {
+          "shape" : "SelectionExpression",
+          "locationName" : "modelSelectionExpression",
+          "documentation" : "<p>Represents the model selection expression of a route response. Supported only for WebSocket APIs.</p>"
+        },
+        "ResponseModels" : {
+          "shape" : "RouteModels",
+          "locationName" : "responseModels",
+          "documentation" : "<p>Represents the response models of a route response.</p>"
+        },
+        "ResponseParameters" : {
+          "shape" : "RouteParameters",
+          "locationName" : "responseParameters",
+          "documentation" : "<p>Represents the response parameters of a route response.</p>"
+        },
+        "RouteResponseId" : {
+          "shape" : "Id",
+          "locationName" : "routeResponseId",
+          "documentation" : "<p>Represents the identifier of a route response.</p>"
+        },
+        "RouteResponseKey" : {
+          "shape" : "SelectionKey",
+          "locationName" : "routeResponseKey",
+          "documentation" : "<p>Represents the route response key of a route response.</p>"
+        }
+      }
+    },
+    "UpdateStageInput" : {
+      "type" : "structure",
+      "members" : {
+        "AccessLogSettings" : {
+          "shape" : "AccessLogSettings",
+          "locationName" : "accessLogSettings",
+          "documentation" : "<p>Settings for logging access in this stage.</p>"
+        },
+        "AutoDeploy" : {
+          "shape" : "__boolean",
+          "locationName" : "autoDeploy",
+          "documentation" : "<p>Specifies whether updates to an API automatically trigger a new deployment. The default value is false.</p>"
+        },
+        "ClientCertificateId" : {
+          "shape" : "Id",
+          "locationName" : "clientCertificateId",
+          "documentation" : "<p>The identifier of a client certificate for a Stage.</p>"
+        },
+        "DefaultRouteSettings" : {
+          "shape" : "RouteSettings",
+          "locationName" : "defaultRouteSettings",
+          "documentation" : "<p>The default route settings for the stage.</p>"
+        },
+        "DeploymentId" : {
+          "shape" : "Id",
+          "locationName" : "deploymentId",
+          "documentation" : "<p>The deployment identifier for the API stage. Can't be updated if autoDeploy is enabled.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description for the API stage.</p>"
+        },
+        "RouteSettings" : {
+          "shape" : "RouteSettingsMap",
+          "locationName" : "routeSettings",
+          "documentation" : "<p>Route settings for the stage.</p>"
+        },
+        "StageVariables" : {
+          "shape" : "StageVariablesMap",
+          "locationName" : "stageVariables",
+          "documentation" : "<p>A map that defines the stage variables for a Stage. Variable names can have alphanumeric and underscore characters, and the values must match [A-Za-z0-9-._~:/?#&amp;=,]+.</p>"
+        }
+      },
+      "documentation" : "<p>Represents the input parameters for an UpdateStage request.</p>"
+    },
+    "UpdateStageRequest" : {
+      "type" : "structure",
+      "members" : {
+        "AccessLogSettings" : {
+          "shape" : "AccessLogSettings",
+          "locationName" : "accessLogSettings",
+          "documentation" : "<p>Settings for logging access in this stage.</p>"
+        },
+        "ApiId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "apiId",
+          "documentation" : "<p>The API identifier.</p>"
+        },
+        "AutoDeploy" : {
+          "shape" : "__boolean",
+          "locationName" : "autoDeploy",
+          "documentation" : "<p>Specifies whether updates to an API automatically trigger a new deployment. The default value is false.</p>"
+        },
+        "ClientCertificateId" : {
+          "shape" : "Id",
+          "locationName" : "clientCertificateId",
+          "documentation" : "<p>The identifier of a client certificate for a Stage.</p>"
+        },
+        "DefaultRouteSettings" : {
+          "shape" : "RouteSettings",
+          "locationName" : "defaultRouteSettings",
+          "documentation" : "<p>The default route settings for the stage.</p>"
+        },
+        "DeploymentId" : {
+          "shape" : "Id",
+          "locationName" : "deploymentId",
+          "documentation" : "<p>The deployment identifier for the API stage. Can't be updated if autoDeploy is enabled.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description for the API stage.</p>"
+        },
+        "RouteSettings" : {
+          "shape" : "RouteSettingsMap",
+          "locationName" : "routeSettings",
+          "documentation" : "<p>Route settings for the stage.</p>"
+        },
+        "StageName" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "stageName",
+          "documentation" : "<p>The stage name. Stage names can contain only alphanumeric characters, hyphens, and underscores, or be $default. Maximum length is 128 characters.</p>"
+        },
+        "StageVariables" : {
+          "shape" : "StageVariablesMap",
+          "locationName" : "stageVariables",
+          "documentation" : "<p>A map that defines the stage variables for a Stage. Variable names can have alphanumeric and underscore characters, and the values must match [A-Za-z0-9-._~:/?#&amp;=,]+.</p>"
+        }
+      },
+      "documentation" : "<p>Updates a Stage.</p>",
+      "required" : [ "StageName", "ApiId" ]
+    },
+    "UpdateStageResponse" : {
+      "type" : "structure",
+      "members" : {
+        "AccessLogSettings" : {
+          "shape" : "AccessLogSettings",
+          "locationName" : "accessLogSettings",
+          "documentation" : "<p>Settings for logging access in this stage.</p>"
+        },
+        "ApiGatewayManaged" : {
+          "shape" : "__boolean",
+          "locationName" : "apiGatewayManaged",
+          "documentation" : "<p>Specifies whether a stage is managed by API Gateway. If you created an API using quick create, the $default stage is managed by API Gateway. You can't modify the $default stage.</p>"
+        },
+        "AutoDeploy" : {
+          "shape" : "__boolean",
+          "locationName" : "autoDeploy",
+          "documentation" : "<p>Specifies whether updates to an API automatically trigger a new deployment. The default value is false.</p>"
+        },
+        "ClientCertificateId" : {
+          "shape" : "Id",
+          "locationName" : "clientCertificateId",
+          "documentation" : "<p>The identifier of a client certificate for a Stage. Supported only for WebSocket APIs.</p>"
+        },
+        "CreatedDate" : {
+          "shape" : "__timestampIso8601",
+          "locationName" : "createdDate",
+          "documentation" : "<p>The timestamp when the stage was created.</p>"
+        },
+        "DefaultRouteSettings" : {
+          "shape" : "RouteSettings",
+          "locationName" : "defaultRouteSettings",
+          "documentation" : "<p>Default route settings for the stage.</p>"
+        },
+        "DeploymentId" : {
+          "shape" : "Id",
+          "locationName" : "deploymentId",
+          "documentation" : "<p>The identifier of the Deployment that the Stage is associated with. Can't be updated if autoDeploy is enabled.</p>"
+        },
+        "Description" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "description",
+          "documentation" : "<p>The description of the stage.</p>"
+        },
+        "LastDeploymentStatusMessage" : {
+          "shape" : "__string",
+          "locationName" : "lastDeploymentStatusMessage",
+          "documentation" : "<p>Describes the status of the last deployment of a stage. Supported only for stages with autoDeploy enabled.</p>"
+        },
+        "LastUpdatedDate" : {
+          "shape" : "__timestampIso8601",
+          "locationName" : "lastUpdatedDate",
+          "documentation" : "<p>The timestamp when the stage was last updated.</p>"
+        },
+        "RouteSettings" : {
+          "shape" : "RouteSettingsMap",
+          "locationName" : "routeSettings",
+          "documentation" : "<p>Route settings for the stage, by routeKey.</p>"
+        },
+        "StageName" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "stageName",
+          "documentation" : "<p>The name of the stage.</p>"
+        },
+        "StageVariables" : {
+          "shape" : "StageVariablesMap",
+          "locationName" : "stageVariables",
+          "documentation" : "<p>A map that defines the stage variables for a stage resource. Variable names can have alphanumeric and underscore characters, and the values must match [A-Za-z0-9-._~:/?#&amp;=,]+.</p>"
+        },
+        "Tags" : {
+          "shape" : "Tags",
+          "locationName" : "tags",
+          "documentation" : "<p>The collection of tags. Each tag element is associated with a given resource.</p>"
+        }
+      }
+    },
+    "UpdateVpcLinkInput" : {
+      "type" : "structure",
+      "members" : {
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the VPC link.</p>"
+        }
+      },
+      "documentation" : "<p>Represents the input parameters for an UpdateVpcLink request.</p>"
+    },
+    "UpdateVpcLinkRequest" : {
+      "type" : "structure",
+      "members" : {
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the VPC link.</p>"
+        },
+        "VpcLinkId" : {
+          "shape" : "__string",
+          "location" : "uri",
+          "locationName" : "vpcLinkId",
+          "documentation" : "<p>The ID of the VPC link.</p>"
+        }
+      },
+      "documentation" : "<p>Updates a VPC link.</p>",
+      "required" : [ "VpcLinkId" ]
+    },
+    "UpdateVpcLinkResponse" : {
+      "type" : "structure",
+      "members" : {
+        "CreatedDate" : {
+          "shape" : "__timestampIso8601",
+          "locationName" : "createdDate",
+          "documentation" : "<p>The timestamp when the VPC link was created.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the VPC link.</p>"
+        },
+        "SecurityGroupIds" : {
+          "shape" : "SecurityGroupIdList",
+          "locationName" : "securityGroupIds",
+          "documentation" : "<p>A list of security group IDs for the VPC link.</p>"
+        },
+        "SubnetIds" : {
+          "shape" : "SubnetIdList",
+          "locationName" : "subnetIds",
+          "documentation" : "<p>A list of subnet IDs to include in the VPC link.</p>"
+        },
+        "Tags" : {
+          "shape" : "Tags",
+          "locationName" : "tags",
+          "documentation" : "<p>Tags for the VPC link.</p>"
+        },
+        "VpcLinkId" : {
+          "shape" : "Id",
+          "locationName" : "vpcLinkId",
+          "documentation" : "<p>The ID of the VPC link.</p>"
+        },
+        "VpcLinkStatus" : {
+          "shape" : "VpcLinkStatus",
+          "locationName" : "vpcLinkStatus",
+          "documentation" : "<p>The status of the VPC link.</p>"
+        },
+        "VpcLinkStatusMessage" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "vpcLinkStatusMessage",
+          "documentation" : "<p>A message summarizing the cause of the status of the VPC link.</p>"
+        },
+        "VpcLinkVersion" : {
+          "shape" : "VpcLinkVersion",
+          "locationName" : "vpcLinkVersion",
+          "documentation" : "<p>The version of the VPC link.</p>"
+        }
+      }
+    },
+    "UriWithLengthBetween1And2048" : {
+      "type" : "string",
+      "documentation" : "<p>A string representation of a URI with a length between [1-2048].</p>"
+    },
+    "VpcLink" : {
+      "type" : "structure",
+      "members" : {
+        "CreatedDate" : {
+          "shape" : "__timestampIso8601",
+          "locationName" : "createdDate",
+          "documentation" : "<p>The timestamp when the VPC link was created.</p>"
+        },
+        "Name" : {
+          "shape" : "StringWithLengthBetween1And128",
+          "locationName" : "name",
+          "documentation" : "<p>The name of the VPC link.</p>"
+        },
+        "SecurityGroupIds" : {
+          "shape" : "SecurityGroupIdList",
+          "locationName" : "securityGroupIds",
+          "documentation" : "<p>A list of security group IDs for the VPC link.</p>"
+        },
+        "SubnetIds" : {
+          "shape" : "SubnetIdList",
+          "locationName" : "subnetIds",
+          "documentation" : "<p>A list of subnet IDs to include in the VPC link.</p>"
+        },
+        "Tags" : {
+          "shape" : "Tags",
+          "locationName" : "tags",
+          "documentation" : "<p>Tags for the VPC link.</p>"
+        },
+        "VpcLinkId" : {
+          "shape" : "Id",
+          "locationName" : "vpcLinkId",
+          "documentation" : "<p>The ID of the VPC link.</p>"
+        },
+        "VpcLinkStatus" : {
+          "shape" : "VpcLinkStatus",
+          "locationName" : "vpcLinkStatus",
+          "documentation" : "<p>The status of the VPC link.</p>"
+        },
+        "VpcLinkStatusMessage" : {
+          "shape" : "StringWithLengthBetween0And1024",
+          "locationName" : "vpcLinkStatusMessage",
+          "documentation" : "<p>A message summarizing the cause of the status of the VPC link.</p>"
+        },
+        "VpcLinkVersion" : {
+          "shape" : "VpcLinkVersion",
+          "locationName" : "vpcLinkVersion",
+          "documentation" : "<p>The version of the VPC link.</p>"
+        }
+      },
+      "documentation" : "<p>Represents a VPC link.</p>",
+      "required" : [ "VpcLinkId", "SecurityGroupIds", "SubnetIds", "Name" ]
+    },
+    "VpcLinkStatus" : {
+      "type" : "string",
+      "documentation" : "<p>The status of the VPC link.</p>",
+      "enum" : [ "PENDING", "AVAILABLE", "DELETING", "FAILED", "INACTIVE" ]
+    },
+    "VpcLinkVersion" : {
+      "type" : "string",
+      "documentation" : "<p>The version of the VPC link.</p>",
+      "enum" : [ "V2" ]
+    },
+    "VpcLinks" : {
+      "type" : "structure",
+      "members" : {
+        "Items" : {
+          "shape" : "__listOfVpcLink",
+          "locationName" : "items",
+          "documentation" : "<p>A collection of VPC links.</p>"
+        },
+        "NextToken" : {
+          "shape" : "NextToken",
+          "locationName" : "nextToken",
+          "documentation" : "<p>The next page of elements from this collection. Not valid for the last element of the collection.</p>"
+        }
+      },
+      "documentation" : "<p>Represents a collection of VPCLinks.</p>"
+    },
+    "__boolean" : {
+      "type" : "boolean"
+    },
+    "__double" : {
+      "type" : "double"
+    },
+    "__integer" : {
+      "type" : "integer"
+    },
+    "__listOfApi" : {
+      "type" : "list",
+      "member" : {
+        "shape" : "Api"
+      }
+    },
+    "__listOfApiMapping" : {
+      "type" : "list",
+      "member" : {
+        "shape" : "ApiMapping"
+      }
+    },
+    "__listOfAuthorizer" : {
+      "type" : "list",
+      "member" : {
+        "shape" : "Authorizer"
+      }
+    },
+    "__listOfDeployment" : {
+      "type" : "list",
+      "member" : {
+        "shape" : "Deployment"
+      }
+    },
+    "__listOfDomainName" : {
+      "type" : "list",
+      "member" : {
+        "shape" : "DomainName"
+      }
+    },
+    "__listOfIntegration" : {
+      "type" : "list",
+      "member" : {
+        "shape" : "Integration"
+      }
+    },
+    "__listOfIntegrationResponse" : {
+      "type" : "list",
+      "member" : {
+        "shape" : "IntegrationResponse"
+      }
+    },
+    "__listOfModel" : {
+      "type" : "list",
+      "member" : {
+        "shape" : "Model"
+      }
+    },
+    "__listOfRoute" : {
+      "type" : "list",
+      "member" : {
+        "shape" : "Route"
+      }
+    },
+    "__listOfRouteResponse" : {
+      "type" : "list",
+      "member" : {
+        "shape" : "RouteResponse"
+      }
+    },
+    "__listOfStage" : {
+      "type" : "list",
+      "member" : {
+        "shape" : "Stage"
+      }
+    },
+    "__listOfVpcLink" : {
+      "type" : "list",
+      "member" : {
+        "shape" : "VpcLink"
+      }
+    },
+    "__listOf__string" : {
+      "type" : "list",
+      "member" : {
+        "shape" : "__string"
+      }
+    },
+    "__long" : {
+      "type" : "long"
+    },
+    "__string" : {
+      "type" : "string"
+    },
+    "__timestampIso8601" : {
+      "type" : "timestamp",
+      "timestampFormat" : "iso8601"
+    },
+    "__timestampUnix" : {
+      "type" : "timestamp",
+      "timestampFormat" : "unixTimestamp"
+    }
+  },
+  "documentation" : "<p>Amazon API Gateway V2</p>"
+}

+ 3 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appconfig/2019-10-09/paginators-1.json

@@ -0,0 +1,3 @@
+{
+  "pagination": {}
+}

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 2193 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appconfig/2019-10-09/service-2.json


+ 3 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appflow/2020-08-23/paginators-1.json

@@ -0,0 +1,3 @@
+{
+  "pagination": {}
+}

+ 3833 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appflow/2020-08-23/service-2.json

@@ -0,0 +1,3833 @@
+{
+  "version":"2.0",
+  "metadata":{
+    "apiVersion":"2020-08-23",
+    "endpointPrefix":"appflow",
+    "jsonVersion":"1.1",
+    "protocol":"rest-json",
+    "serviceFullName":"Amazon Appflow",
+    "serviceId":"Appflow",
+    "signatureVersion":"v4",
+    "signingName":"appflow",
+    "uid":"appflow-2020-08-23"
+  },
+  "operations":{
+    "CreateConnectorProfile":{
+      "name":"CreateConnectorProfile",
+      "http":{
+        "method":"POST",
+        "requestUri":"/create-connector-profile"
+      },
+      "input":{"shape":"CreateConnectorProfileRequest"},
+      "output":{"shape":"CreateConnectorProfileResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"ConflictException"},
+        {"shape":"ServiceQuotaExceededException"},
+        {"shape":"ConnectorAuthenticationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Creates a new connector profile associated with your AWS account. There is a soft quota of 100 connector profiles per AWS account. If you need more connector profiles than this quota allows, you can submit a request to the Amazon AppFlow team through the Amazon AppFlow support channel. </p>"
+    },
+    "CreateFlow":{
+      "name":"CreateFlow",
+      "http":{
+        "method":"POST",
+        "requestUri":"/create-flow"
+      },
+      "input":{"shape":"CreateFlowRequest"},
+      "output":{"shape":"CreateFlowResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ServiceQuotaExceededException"},
+        {"shape":"ConflictException"},
+        {"shape":"ConnectorAuthenticationException"},
+        {"shape":"ConnectorServerException"}
+      ],
+      "documentation":"<p> Enables your application to create a new flow using Amazon AppFlow. You must create a connector profile before calling this API. Please note that the Request Syntax below shows syntax for multiple destinations, however, you can only transfer data to one item in this list at a time. Amazon AppFlow does not currently support flows to multiple destinations at once. </p>"
+    },
+    "DeleteConnectorProfile":{
+      "name":"DeleteConnectorProfile",
+      "http":{
+        "method":"POST",
+        "requestUri":"/delete-connector-profile"
+      },
+      "input":{"shape":"DeleteConnectorProfileRequest"},
+      "output":{"shape":"DeleteConnectorProfileResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ConflictException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Enables you to delete an existing connector profile. </p>"
+    },
+    "DeleteFlow":{
+      "name":"DeleteFlow",
+      "http":{
+        "method":"POST",
+        "requestUri":"/delete-flow"
+      },
+      "input":{"shape":"DeleteFlowRequest"},
+      "output":{"shape":"DeleteFlowResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ConflictException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Enables your application to delete an existing flow. Before deleting the flow, Amazon AppFlow validates the request by checking the flow configuration and status. You can delete flows one at a time. </p>"
+    },
+    "DescribeConnectorEntity":{
+      "name":"DescribeConnectorEntity",
+      "http":{
+        "method":"POST",
+        "requestUri":"/describe-connector-entity"
+      },
+      "input":{"shape":"DescribeConnectorEntityRequest"},
+      "output":{"shape":"DescribeConnectorEntityResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ConnectorAuthenticationException"},
+        {"shape":"ConnectorServerException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Provides details regarding the entity used with the connector, with a description of the data model for each entity. </p>"
+    },
+    "DescribeConnectorProfiles":{
+      "name":"DescribeConnectorProfiles",
+      "http":{
+        "method":"POST",
+        "requestUri":"/describe-connector-profiles"
+      },
+      "input":{"shape":"DescribeConnectorProfilesRequest"},
+      "output":{"shape":"DescribeConnectorProfilesResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Returns a list of <code>connector-profile</code> details matching the provided <code>connector-profile</code> names and <code>connector-types</code>. Both input lists are optional, and you can use them to filter the result. </p> <p>If no names or <code>connector-types</code> are provided, returns all connector profiles in a paginated form. If there is no match, this operation returns an empty list.</p>"
+    },
+    "DescribeConnectors":{
+      "name":"DescribeConnectors",
+      "http":{
+        "method":"POST",
+        "requestUri":"/describe-connectors"
+      },
+      "input":{"shape":"DescribeConnectorsRequest"},
+      "output":{"shape":"DescribeConnectorsResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Describes the connectors vended by Amazon AppFlow for specified connector types. If you don't specify a connector type, this operation describes all connectors vended by Amazon AppFlow. If there are more connectors than can be returned in one page, the response contains a <code>nextToken</code> object, which can be be passed in to the next call to the <code>DescribeConnectors</code> API operation to retrieve the next page. </p>"
+    },
+    "DescribeFlow":{
+      "name":"DescribeFlow",
+      "http":{
+        "method":"POST",
+        "requestUri":"/describe-flow"
+      },
+      "input":{"shape":"DescribeFlowRequest"},
+      "output":{"shape":"DescribeFlowResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Provides a description of the specified flow. </p>"
+    },
+    "DescribeFlowExecutionRecords":{
+      "name":"DescribeFlowExecutionRecords",
+      "http":{
+        "method":"POST",
+        "requestUri":"/describe-flow-execution-records"
+      },
+      "input":{"shape":"DescribeFlowExecutionRecordsRequest"},
+      "output":{"shape":"DescribeFlowExecutionRecordsResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Fetches the execution history of the flow. </p>"
+    },
+    "ListConnectorEntities":{
+      "name":"ListConnectorEntities",
+      "http":{
+        "method":"POST",
+        "requestUri":"/list-connector-entities"
+      },
+      "input":{"shape":"ListConnectorEntitiesRequest"},
+      "output":{"shape":"ListConnectorEntitiesResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ConnectorAuthenticationException"},
+        {"shape":"ConnectorServerException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Returns the list of available connector entities supported by Amazon AppFlow. For example, you can query Salesforce for <i>Account</i> and <i>Opportunity</i> entities, or query ServiceNow for the <i>Incident</i> entity. </p>"
+    },
+    "ListFlows":{
+      "name":"ListFlows",
+      "http":{
+        "method":"POST",
+        "requestUri":"/list-flows"
+      },
+      "input":{"shape":"ListFlowsRequest"},
+      "output":{"shape":"ListFlowsResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Lists all of the flows associated with your account. </p>"
+    },
+    "ListTagsForResource":{
+      "name":"ListTagsForResource",
+      "http":{
+        "method":"GET",
+        "requestUri":"/tags/{resourceArn}"
+      },
+      "input":{"shape":"ListTagsForResourceRequest"},
+      "output":{"shape":"ListTagsForResourceResponse"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"ValidationException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p> Retrieves the tags that are associated with a specified flow. </p>"
+    },
+    "StartFlow":{
+      "name":"StartFlow",
+      "http":{
+        "method":"POST",
+        "requestUri":"/start-flow"
+      },
+      "input":{"shape":"StartFlowRequest"},
+      "output":{"shape":"StartFlowResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InternalServerException"},
+        {"shape":"ServiceQuotaExceededException"},
+        {"shape":"ConflictException"}
+      ],
+      "documentation":"<p> Activates an existing flow. For on-demand flows, this operation runs the flow immediately. For schedule and event-triggered flows, this operation activates the flow. </p>"
+    },
+    "StopFlow":{
+      "name":"StopFlow",
+      "http":{
+        "method":"POST",
+        "requestUri":"/stop-flow"
+      },
+      "input":{"shape":"StopFlowRequest"},
+      "output":{"shape":"StopFlowResponse"},
+      "errors":[
+        {"shape":"ConflictException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"UnsupportedOperationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Deactivates the existing flow. For on-demand flows, this operation returns an <code>unsupportedOperationException</code> error message. For schedule and event-triggered flows, this operation deactivates the flow. </p>"
+    },
+    "TagResource":{
+      "name":"TagResource",
+      "http":{
+        "method":"POST",
+        "requestUri":"/tags/{resourceArn}"
+      },
+      "input":{"shape":"TagResourceRequest"},
+      "output":{"shape":"TagResourceResponse"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"ValidationException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p> Applies a tag to the specified flow. </p>"
+    },
+    "UntagResource":{
+      "name":"UntagResource",
+      "http":{
+        "method":"DELETE",
+        "requestUri":"/tags/{resourceArn}"
+      },
+      "input":{"shape":"UntagResourceRequest"},
+      "output":{"shape":"UntagResourceResponse"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"ValidationException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p> Removes a tag from the specified flow. </p>"
+    },
+    "UpdateConnectorProfile":{
+      "name":"UpdateConnectorProfile",
+      "http":{
+        "method":"POST",
+        "requestUri":"/update-connector-profile"
+      },
+      "input":{"shape":"UpdateConnectorProfileRequest"},
+      "output":{"shape":"UpdateConnectorProfileResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ConflictException"},
+        {"shape":"ConnectorAuthenticationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Updates a given connector profile associated with your account. </p>"
+    },
+    "UpdateFlow":{
+      "name":"UpdateFlow",
+      "http":{
+        "method":"POST",
+        "requestUri":"/update-flow"
+      },
+      "input":{"shape":"UpdateFlowRequest"},
+      "output":{"shape":"UpdateFlowResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ServiceQuotaExceededException"},
+        {"shape":"ConflictException"},
+        {"shape":"ConnectorAuthenticationException"},
+        {"shape":"ConnectorServerException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Updates an existing flow. </p>"
+    }
+  },
+  "shapes":{
+    "ARN":{
+      "type":"string",
+      "max":512,
+      "pattern":"arn:aws:.*:.*:[0-9]+:.*"
+    },
+    "AccessKeyId":{
+      "type":"string",
+      "max":256,
+      "pattern":"\\S+",
+      "sensitive":true
+    },
+    "AccessToken":{
+      "type":"string",
+      "max":512,
+      "pattern":"\\S+",
+      "sensitive":true
+    },
+    "AccountName":{
+      "type":"string",
+      "max":512,
+      "pattern":"\\S+"
+    },
+    "AggregationConfig":{
+      "type":"structure",
+      "members":{
+        "aggregationType":{
+          "shape":"AggregationType",
+          "documentation":"<p> Specifies whether Amazon AppFlow aggregates the flow records into a single file, or leave them unaggregated. </p>"
+        }
+      },
+      "documentation":"<p> The aggregation settings that you can use to customize the output format of your flow data. </p>"
+    },
+    "AggregationType":{
+      "type":"string",
+      "enum":[
+        "None",
+        "SingleFile"
+      ]
+    },
+    "AmplitudeConnectorOperator":{
+      "type":"string",
+      "enum":["BETWEEN"]
+    },
+    "AmplitudeConnectorProfileCredentials":{
+      "type":"structure",
+      "required":[
+        "apiKey",
+        "secretKey"
+      ],
+      "members":{
+        "apiKey":{
+          "shape":"ApiKey",
+          "documentation":"<p> A unique alphanumeric identifier used to authenticate a user, developer, or calling program to your API. </p>"
+        },
+        "secretKey":{
+          "shape":"SecretKey",
+          "documentation":"<p> The Secret Access Key portion of the credentials. </p>"
+        }
+      },
+      "documentation":"<p> The connector-specific credentials required when using Amplitude. </p>"
+    },
+    "AmplitudeConnectorProfileProperties":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> The connector-specific profile properties required when using Amplitude. </p>"
+    },
+    "AmplitudeMetadata":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> The connector metadata specific to Amplitude. </p>"
+    },
+    "AmplitudeSourceProperties":{
+      "type":"structure",
+      "required":["object"],
+      "members":{
+        "object":{
+          "shape":"Object",
+          "documentation":"<p> The object specified in the Amplitude flow source. </p>"
+        }
+      },
+      "documentation":"<p> The properties that are applied when Amplitude is being used as a source. </p>"
+    },
+    "ApiKey":{
+      "type":"string",
+      "max":256,
+      "pattern":"\\S+"
+    },
+    "ApiSecretKey":{
+      "type":"string",
+      "max":256,
+      "pattern":"\\S+",
+      "sensitive":true
+    },
+    "ApiToken":{
+      "type":"string",
+      "max":256,
+      "pattern":"\\S+"
+    },
+    "ApplicationKey":{
+      "type":"string",
+      "max":512,
+      "pattern":"\\S+"
+    },
+    "AuthCode":{
+      "type":"string",
+      "max":512,
+      "pattern":"\\S+"
+    },
+    "Boolean":{"type":"boolean"},
+    "BucketName":{
+      "type":"string",
+      "max":63,
+      "min":3,
+      "pattern":"\\S+"
+    },
+    "BucketPrefix":{
+      "type":"string",
+      "max":512,
+      "pattern":".*"
+    },
+    "ClientCredentialsArn":{
+      "type":"string",
+      "max":2048,
+      "min":20,
+      "pattern":"arn:aws:secretsmanager:.*:[0-9]+:.*",
+      "sensitive":true
+    },
+    "ClientId":{
+      "type":"string",
+      "max":512,
+      "pattern":"\\S+"
+    },
+    "ClientSecret":{
+      "type":"string",
+      "max":512,
+      "pattern":"\\S+",
+      "sensitive":true
+    },
+    "ConflictException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p> There was a conflict when processing the request (for example, a flow with the given name already exists within the account. Check for conflicting resource names and try again. </p>",
+      "error":{"httpStatusCode":409},
+      "exception":true
+    },
+    "ConnectionMode":{
+      "type":"string",
+      "enum":[
+        "Public",
+        "Private"
+      ]
+    },
+    "ConnectorAuthenticationException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p> An error occurred when authenticating with the connector endpoint. </p>",
+      "error":{"httpStatusCode":401},
+      "exception":true
+    },
+    "ConnectorConfiguration":{
+      "type":"structure",
+      "members":{
+        "canUseAsSource":{
+          "shape":"Boolean",
+          "documentation":"<p> Specifies whether the connector can be used as a source. </p>"
+        },
+        "canUseAsDestination":{
+          "shape":"Boolean",
+          "documentation":"<p> Specifies whether the connector can be used as a destination. </p>"
+        },
+        "supportedDestinationConnectors":{
+          "shape":"ConnectorTypeList",
+          "documentation":"<p> Lists the connectors that are available for use as destinations. </p>"
+        },
+        "supportedSchedulingFrequencies":{
+          "shape":"SchedulingFrequencyTypeList",
+          "documentation":"<p> Specifies the supported flow frequency for that connector. </p>"
+        },
+        "isPrivateLinkEnabled":{
+          "shape":"Boolean",
+          "documentation":"<p> Specifies if PrivateLink is enabled for that connector. </p>"
+        },
+        "isPrivateLinkEndpointUrlRequired":{
+          "shape":"Boolean",
+          "documentation":"<p> Specifies if a PrivateLink endpoint URL is required. </p>"
+        },
+        "supportedTriggerTypes":{
+          "shape":"TriggerTypeList",
+          "documentation":"<p> Specifies the supported trigger types for the flow. </p>"
+        },
+        "connectorMetadata":{
+          "shape":"ConnectorMetadata",
+          "documentation":"<p> Specifies connector-specific metadata such as <code>oAuthScopes</code>, <code>supportedRegions</code>, <code>privateLinkServiceUrl</code>, and so on. </p>"
+        }
+      },
+      "documentation":"<p> The configuration settings related to a given connector. </p>"
+    },
+    "ConnectorConfigurationsMap":{
+      "type":"map",
+      "key":{"shape":"ConnectorType"},
+      "value":{"shape":"ConnectorConfiguration"}
+    },
+    "ConnectorEntity":{
+      "type":"structure",
+      "required":["name"],
+      "members":{
+        "name":{
+          "shape":"Name",
+          "documentation":"<p> The name of the connector entity. </p>"
+        },
+        "label":{
+          "shape":"Label",
+          "documentation":"<p> The label applied to the connector entity. </p>"
+        },
+        "hasNestedEntities":{
+          "shape":"Boolean",
+          "documentation":"<p> Specifies whether the connector entity is a parent or a category and has more entities nested underneath it. If another call is made with <code>entitiesPath = \"the_current_entity_name_with_hasNestedEntities_true\"</code>, then it returns the nested entities underneath it. This provides a way to retrieve all supported entities in a recursive fashion. </p>"
+        }
+      },
+      "documentation":"<p> The high-level entity that can be queried in Amazon AppFlow. For example, a Salesforce entity might be an <i>Account</i> or <i>Opportunity</i>, whereas a ServiceNow entity might be an <i>Incident</i>. </p>"
+    },
+    "ConnectorEntityField":{
+      "type":"structure",
+      "required":["identifier"],
+      "members":{
+        "identifier":{
+          "shape":"Identifier",
+          "documentation":"<p> The unique identifier of the connector field. </p>"
+        },
+        "label":{
+          "shape":"Label",
+          "documentation":"<p> The label applied to a connector entity field. </p>"
+        },
+        "supportedFieldTypeDetails":{
+          "shape":"SupportedFieldTypeDetails",
+          "documentation":"<p> Contains details regarding the supported <code>FieldType</code>, including the corresponding <code>filterOperators</code> and <code>supportedValues</code>. </p>"
+        },
+        "description":{
+          "shape":"Description",
+          "documentation":"<p> A description of the connector entity field. </p>"
+        },
+        "sourceProperties":{
+          "shape":"SourceFieldProperties",
+          "documentation":"<p> The properties that can be applied to a field when the connector is being used as a source. </p>"
+        },
+        "destinationProperties":{
+          "shape":"DestinationFieldProperties",
+          "documentation":"<p> The properties applied to a field when the connector is being used as a destination. </p>"
+        }
+      },
+      "documentation":"<p> Describes the data model of a connector field. For example, for an <i>account</i> entity, the fields would be <i>account name</i>, <i>account ID</i>, and so on. </p>"
+    },
+    "ConnectorEntityFieldList":{
+      "type":"list",
+      "member":{"shape":"ConnectorEntityField"}
+    },
+    "ConnectorEntityList":{
+      "type":"list",
+      "member":{"shape":"ConnectorEntity"}
+    },
+    "ConnectorEntityMap":{
+      "type":"map",
+      "key":{"shape":"Group"},
+      "value":{"shape":"ConnectorEntityList"}
+    },
+    "ConnectorMetadata":{
+      "type":"structure",
+      "members":{
+        "Amplitude":{
+          "shape":"AmplitudeMetadata",
+          "documentation":"<p> The connector metadata specific to Amplitude. </p>"
+        },
+        "Datadog":{
+          "shape":"DatadogMetadata",
+          "documentation":"<p> The connector metadata specific to Datadog. </p>"
+        },
+        "Dynatrace":{
+          "shape":"DynatraceMetadata",
+          "documentation":"<p> The connector metadata specific to Dynatrace. </p>"
+        },
+        "GoogleAnalytics":{
+          "shape":"GoogleAnalyticsMetadata",
+          "documentation":"<p> The connector metadata specific to Google Analytics. </p>"
+        },
+        "InforNexus":{
+          "shape":"InforNexusMetadata",
+          "documentation":"<p> The connector metadata specific to Infor Nexus. </p>"
+        },
+        "Marketo":{
+          "shape":"MarketoMetadata",
+          "documentation":"<p> The connector metadata specific to Marketo. </p>"
+        },
+        "Redshift":{
+          "shape":"RedshiftMetadata",
+          "documentation":"<p> The connector metadata specific to Amazon Redshift. </p>"
+        },
+        "S3":{
+          "shape":"S3Metadata",
+          "documentation":"<p> The connector metadata specific to Amazon S3. </p>"
+        },
+        "Salesforce":{
+          "shape":"SalesforceMetadata",
+          "documentation":"<p> The connector metadata specific to Salesforce. </p>"
+        },
+        "ServiceNow":{
+          "shape":"ServiceNowMetadata",
+          "documentation":"<p> The connector metadata specific to ServiceNow. </p>"
+        },
+        "Singular":{
+          "shape":"SingularMetadata",
+          "documentation":"<p> The connector metadata specific to Singular. </p>"
+        },
+        "Slack":{
+          "shape":"SlackMetadata",
+          "documentation":"<p> The connector metadata specific to Slack. </p>"
+        },
+        "Snowflake":{
+          "shape":"SnowflakeMetadata",
+          "documentation":"<p> The connector metadata specific to Snowflake. </p>"
+        },
+        "Trendmicro":{
+          "shape":"TrendmicroMetadata",
+          "documentation":"<p> The connector metadata specific to Trend Micro. </p>"
+        },
+        "Veeva":{
+          "shape":"VeevaMetadata",
+          "documentation":"<p> The connector metadata specific to Veeva. </p>"
+        },
+        "Zendesk":{
+          "shape":"ZendeskMetadata",
+          "documentation":"<p> The connector metadata specific to Zendesk. </p>"
+        },
+        "EventBridge":{
+          "shape":"EventBridgeMetadata",
+          "documentation":"<p> The connector metadata specific to Amazon EventBridge. </p>"
+        },
+        "Upsolver":{
+          "shape":"UpsolverMetadata",
+          "documentation":"<p> The connector metadata specific to Upsolver. </p>"
+        },
+        "CustomerProfiles":{
+          "shape":"CustomerProfilesMetadata",
+          "documentation":"<p> The connector metadata specific to Amazon Connect Customer Profiles. </p>"
+        },
+        "Honeycode":{
+          "shape":"HoneycodeMetadata",
+          "documentation":"<p> The connector metadata specific to Amazon Honeycode. </p>"
+        }
+      },
+      "documentation":"<p> A structure to specify connector-specific metadata such as <code>oAuthScopes</code>, <code>supportedRegions</code>, <code>privateLinkServiceUrl</code>, and so on. </p>"
+    },
+    "ConnectorOAuthRequest":{
+      "type":"structure",
+      "members":{
+        "authCode":{
+          "shape":"AuthCode",
+          "documentation":"<p> The code provided by the connector when it has been authenticated via the connected app. </p>"
+        },
+        "redirectUri":{
+          "shape":"RedirectUri",
+          "documentation":"<p> The URL to which the authentication server redirects the browser after authorization has been granted. </p>"
+        }
+      },
+      "documentation":"<p> Used by select connectors for which the OAuth workflow is supported, such as Salesforce, Google Analytics, Marketo, Zendesk, and Slack. </p>"
+    },
+    "ConnectorOperator":{
+      "type":"structure",
+      "members":{
+        "Amplitude":{
+          "shape":"AmplitudeConnectorOperator",
+          "documentation":"<p> The operation to be performed on the provided Amplitude source fields. </p>"
+        },
+        "Datadog":{
+          "shape":"DatadogConnectorOperator",
+          "documentation":"<p> The operation to be performed on the provided Datadog source fields. </p>"
+        },
+        "Dynatrace":{
+          "shape":"DynatraceConnectorOperator",
+          "documentation":"<p> The operation to be performed on the provided Dynatrace source fields. </p>"
+        },
+        "GoogleAnalytics":{
+          "shape":"GoogleAnalyticsConnectorOperator",
+          "documentation":"<p> The operation to be performed on the provided Google Analytics source fields. </p>"
+        },
+        "InforNexus":{
+          "shape":"InforNexusConnectorOperator",
+          "documentation":"<p> The operation to be performed on the provided Infor Nexus source fields. </p>"
+        },
+        "Marketo":{
+          "shape":"MarketoConnectorOperator",
+          "documentation":"<p> The operation to be performed on the provided Marketo source fields. </p>"
+        },
+        "S3":{
+          "shape":"S3ConnectorOperator",
+          "documentation":"<p> The operation to be performed on the provided Amazon S3 source fields. </p>"
+        },
+        "Salesforce":{
+          "shape":"SalesforceConnectorOperator",
+          "documentation":"<p> The operation to be performed on the provided Salesforce source fields. </p>"
+        },
+        "ServiceNow":{
+          "shape":"ServiceNowConnectorOperator",
+          "documentation":"<p> The operation to be performed on the provided ServiceNow source fields. </p>"
+        },
+        "Singular":{
+          "shape":"SingularConnectorOperator",
+          "documentation":"<p> The operation to be performed on the provided Singular source fields. </p>"
+        },
+        "Slack":{
+          "shape":"SlackConnectorOperator",
+          "documentation":"<p> The operation to be performed on the provided Slack source fields. </p>"
+        },
+        "Trendmicro":{
+          "shape":"TrendmicroConnectorOperator",
+          "documentation":"<p> The operation to be performed on the provided Trend Micro source fields. </p>"
+        },
+        "Veeva":{
+          "shape":"VeevaConnectorOperator",
+          "documentation":"<p> The operation to be performed on the provided Veeva source fields. </p>"
+        },
+        "Zendesk":{
+          "shape":"ZendeskConnectorOperator",
+          "documentation":"<p> The operation to be performed on the provided Zendesk source fields. </p>"
+        }
+      },
+      "documentation":"<p> The operation to be performed on the provided source fields. </p>"
+    },
+    "ConnectorProfile":{
+      "type":"structure",
+      "members":{
+        "connectorProfileArn":{
+          "shape":"ConnectorProfileArn",
+          "documentation":"<p> The Amazon Resource Name (ARN) of the connector profile. </p>"
+        },
+        "connectorProfileName":{
+          "shape":"ConnectorProfileName",
+          "documentation":"<p> The name of the connector profile. The name is unique for each <code>ConnectorProfile</code> in the AWS account. </p>"
+        },
+        "connectorType":{
+          "shape":"ConnectorType",
+          "documentation":"<p> The type of connector, such as Salesforce, Amplitude, and so on. </p>"
+        },
+        "connectionMode":{
+          "shape":"ConnectionMode",
+          "documentation":"<p> Indicates the connection mode and if it is public or private. </p>"
+        },
+        "credentialsArn":{
+          "shape":"ARN",
+          "documentation":"<p> The Amazon Resource Name (ARN) of the connector profile credentials. </p>"
+        },
+        "connectorProfileProperties":{
+          "shape":"ConnectorProfileProperties",
+          "documentation":"<p> The connector-specific properties of the profile configuration. </p>"
+        },
+        "createdAt":{
+          "shape":"Date",
+          "documentation":"<p> Specifies when the connector profile was created. </p>"
+        },
+        "lastUpdatedAt":{
+          "shape":"Date",
+          "documentation":"<p> Specifies when the connector profile was last updated. </p>"
+        }
+      },
+      "documentation":"<p> Describes an instance of a connector. This includes the provided name, credentials ARN, connection-mode, and so on. To keep the API intuitive and extensible, the fields that are common to all types of connector profiles are explicitly specified at the top level. The rest of the connector-specific properties are available via the <code>connectorProfileProperties</code> field. </p>"
+    },
+    "ConnectorProfileArn":{
+      "type":"string",
+      "max":512,
+      "pattern":"arn:aws:kms:.*:[0-9]+:.*"
+    },
+    "ConnectorProfileConfig":{
+      "type":"structure",
+      "required":[
+        "connectorProfileProperties",
+        "connectorProfileCredentials"
+      ],
+      "members":{
+        "connectorProfileProperties":{
+          "shape":"ConnectorProfileProperties",
+          "documentation":"<p> The connector-specific properties of the profile configuration. </p>"
+        },
+        "connectorProfileCredentials":{
+          "shape":"ConnectorProfileCredentials",
+          "documentation":"<p> The connector-specific credentials required by each connector. </p>"
+        }
+      },
+      "documentation":"<p> Defines the connector-specific configuration and credentials for the connector profile. </p>"
+    },
+    "ConnectorProfileCredentials":{
+      "type":"structure",
+      "members":{
+        "Amplitude":{
+          "shape":"AmplitudeConnectorProfileCredentials",
+          "documentation":"<p> The connector-specific credentials required when using Amplitude. </p>"
+        },
+        "Datadog":{
+          "shape":"DatadogConnectorProfileCredentials",
+          "documentation":"<p> The connector-specific credentials required when using Datadog. </p>"
+        },
+        "Dynatrace":{
+          "shape":"DynatraceConnectorProfileCredentials",
+          "documentation":"<p> The connector-specific credentials required when using Dynatrace. </p>"
+        },
+        "GoogleAnalytics":{
+          "shape":"GoogleAnalyticsConnectorProfileCredentials",
+          "documentation":"<p> The connector-specific credentials required when using Google Analytics. </p>"
+        },
+        "Honeycode":{
+          "shape":"HoneycodeConnectorProfileCredentials",
+          "documentation":"<p> The connector-specific credentials required when using Amazon Honeycode. </p>"
+        },
+        "InforNexus":{
+          "shape":"InforNexusConnectorProfileCredentials",
+          "documentation":"<p> The connector-specific credentials required when using Infor Nexus. </p>"
+        },
+        "Marketo":{
+          "shape":"MarketoConnectorProfileCredentials",
+          "documentation":"<p> The connector-specific credentials required when using Marketo. </p>"
+        },
+        "Redshift":{
+          "shape":"RedshiftConnectorProfileCredentials",
+          "documentation":"<p> The connector-specific credentials required when using Amazon Redshift. </p>"
+        },
+        "Salesforce":{
+          "shape":"SalesforceConnectorProfileCredentials",
+          "documentation":"<p> The connector-specific credentials required when using Salesforce. </p>"
+        },
+        "ServiceNow":{
+          "shape":"ServiceNowConnectorProfileCredentials",
+          "documentation":"<p> The connector-specific credentials required when using ServiceNow. </p>"
+        },
+        "Singular":{
+          "shape":"SingularConnectorProfileCredentials",
+          "documentation":"<p> The connector-specific credentials required when using Singular. </p>"
+        },
+        "Slack":{
+          "shape":"SlackConnectorProfileCredentials",
+          "documentation":"<p> The connector-specific credentials required when using Slack. </p>"
+        },
+        "Snowflake":{
+          "shape":"SnowflakeConnectorProfileCredentials",
+          "documentation":"<p> The connector-specific credentials required when using Snowflake. </p>"
+        },
+        "Trendmicro":{
+          "shape":"TrendmicroConnectorProfileCredentials",
+          "documentation":"<p> The connector-specific credentials required when using Trend Micro. </p>"
+        },
+        "Veeva":{
+          "shape":"VeevaConnectorProfileCredentials",
+          "documentation":"<p> The connector-specific credentials required when using Veeva. </p>"
+        },
+        "Zendesk":{
+          "shape":"ZendeskConnectorProfileCredentials",
+          "documentation":"<p> The connector-specific credentials required when using Zendesk. </p>"
+        }
+      },
+      "documentation":"<p> The connector-specific credentials required by a connector. </p>"
+    },
+    "ConnectorProfileDetailList":{
+      "type":"list",
+      "member":{"shape":"ConnectorProfile"}
+    },
+    "ConnectorProfileName":{
+      "type":"string",
+      "max":256,
+      "pattern":"[\\w/!@#+=.-]+"
+    },
+    "ConnectorProfileNameList":{
+      "type":"list",
+      "member":{"shape":"ConnectorProfileName"},
+      "max":100,
+      "min":0
+    },
+    "ConnectorProfileProperties":{
+      "type":"structure",
+      "members":{
+        "Amplitude":{
+          "shape":"AmplitudeConnectorProfileProperties",
+          "documentation":"<p> The connector-specific properties required by Amplitude. </p>"
+        },
+        "Datadog":{
+          "shape":"DatadogConnectorProfileProperties",
+          "documentation":"<p> The connector-specific properties required by Datadog. </p>"
+        },
+        "Dynatrace":{
+          "shape":"DynatraceConnectorProfileProperties",
+          "documentation":"<p> The connector-specific properties required by Dynatrace. </p>"
+        },
+        "GoogleAnalytics":{
+          "shape":"GoogleAnalyticsConnectorProfileProperties",
+          "documentation":"<p> The connector-specific properties required Google Analytics. </p>"
+        },
+        "Honeycode":{
+          "shape":"HoneycodeConnectorProfileProperties",
+          "documentation":"<p> The connector-specific properties required by Amazon Honeycode. </p>"
+        },
+        "InforNexus":{
+          "shape":"InforNexusConnectorProfileProperties",
+          "documentation":"<p> The connector-specific properties required by Infor Nexus. </p>"
+        },
+        "Marketo":{
+          "shape":"MarketoConnectorProfileProperties",
+          "documentation":"<p> The connector-specific properties required by Marketo. </p>"
+        },
+        "Redshift":{
+          "shape":"RedshiftConnectorProfileProperties",
+          "documentation":"<p> The connector-specific properties required by Amazon Redshift. </p>"
+        },
+        "Salesforce":{
+          "shape":"SalesforceConnectorProfileProperties",
+          "documentation":"<p> The connector-specific properties required by Salesforce. </p>"
+        },
+        "ServiceNow":{
+          "shape":"ServiceNowConnectorProfileProperties",
+          "documentation":"<p> The connector-specific properties required by serviceNow. </p>"
+        },
+        "Singular":{
+          "shape":"SingularConnectorProfileProperties",
+          "documentation":"<p> The connector-specific properties required by Singular. </p>"
+        },
+        "Slack":{
+          "shape":"SlackConnectorProfileProperties",
+          "documentation":"<p> The connector-specific properties required by Slack. </p>"
+        },
+        "Snowflake":{
+          "shape":"SnowflakeConnectorProfileProperties",
+          "documentation":"<p> The connector-specific properties required by Snowflake. </p>"
+        },
+        "Trendmicro":{
+          "shape":"TrendmicroConnectorProfileProperties",
+          "documentation":"<p> The connector-specific properties required by Trend Micro. </p>"
+        },
+        "Veeva":{
+          "shape":"VeevaConnectorProfileProperties",
+          "documentation":"<p> The connector-specific properties required by Veeva. </p>"
+        },
+        "Zendesk":{
+          "shape":"ZendeskConnectorProfileProperties",
+          "documentation":"<p> The connector-specific properties required by Zendesk. </p>"
+        }
+      },
+      "documentation":"<p> The connector-specific profile properties required by each connector. </p>"
+    },
+    "ConnectorServerException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p> An error occurred when retrieving data from the connector endpoint. </p>",
+      "error":{"httpStatusCode":400},
+      "exception":true
+    },
+    "ConnectorType":{
+      "type":"string",
+      "enum":[
+        "Salesforce",
+        "Singular",
+        "Slack",
+        "Redshift",
+        "S3",
+        "Marketo",
+        "Googleanalytics",
+        "Zendesk",
+        "Servicenow",
+        "Datadog",
+        "Trendmicro",
+        "Snowflake",
+        "Dynatrace",
+        "Infornexus",
+        "Amplitude",
+        "Veeva",
+        "EventBridge",
+        "LookoutMetrics",
+        "Upsolver",
+        "Honeycode",
+        "CustomerProfiles"
+      ]
+    },
+    "ConnectorTypeList":{
+      "type":"list",
+      "member":{"shape":"ConnectorType"},
+      "max":100,
+      "min":0
+    },
+    "CreateConnectorProfileRequest":{
+      "type":"structure",
+      "required":[
+        "connectorProfileName",
+        "connectorType",
+        "connectionMode",
+        "connectorProfileConfig"
+      ],
+      "members":{
+        "connectorProfileName":{
+          "shape":"ConnectorProfileName",
+          "documentation":"<p> The name of the connector profile. The name is unique for each <code>ConnectorProfile</code> in your AWS account. </p>"
+        },
+        "kmsArn":{
+          "shape":"KMSArn",
+          "documentation":"<p> The ARN (Amazon Resource Name) of the Key Management Service (KMS) key you provide for encryption. This is required if you do not want to use the Amazon AppFlow-managed KMS key. If you don't provide anything here, Amazon AppFlow uses the Amazon AppFlow-managed KMS key. </p>"
+        },
+        "connectorType":{
+          "shape":"ConnectorType",
+          "documentation":"<p> The type of connector, such as Salesforce, Amplitude, and so on. </p>"
+        },
+        "connectionMode":{
+          "shape":"ConnectionMode",
+          "documentation":"<p> Indicates the connection mode and specifies whether it is public or private. Private flows use AWS PrivateLink to route data over AWS infrastructure without exposing it to the public internet. </p>"
+        },
+        "connectorProfileConfig":{
+          "shape":"ConnectorProfileConfig",
+          "documentation":"<p> Defines the connector-specific configuration and credentials. </p>"
+        }
+      }
+    },
+    "CreateConnectorProfileResponse":{
+      "type":"structure",
+      "members":{
+        "connectorProfileArn":{
+          "shape":"ConnectorProfileArn",
+          "documentation":"<p> The Amazon Resource Name (ARN) of the connector profile. </p>"
+        }
+      }
+    },
+    "CreateFlowRequest":{
+      "type":"structure",
+      "required":[
+        "flowName",
+        "triggerConfig",
+        "sourceFlowConfig",
+        "destinationFlowConfigList",
+        "tasks"
+      ],
+      "members":{
+        "flowName":{
+          "shape":"FlowName",
+          "documentation":"<p> The specified name of the flow. Spaces are not allowed. Use underscores (_) or hyphens (-) only. </p>"
+        },
+        "description":{
+          "shape":"FlowDescription",
+          "documentation":"<p> A description of the flow you want to create. </p>"
+        },
+        "kmsArn":{
+          "shape":"KMSArn",
+          "documentation":"<p> The ARN (Amazon Resource Name) of the Key Management Service (KMS) key you provide for encryption. This is required if you do not want to use the Amazon AppFlow-managed KMS key. If you don't provide anything here, Amazon AppFlow uses the Amazon AppFlow-managed KMS key. </p>"
+        },
+        "triggerConfig":{
+          "shape":"TriggerConfig",
+          "documentation":"<p> The trigger settings that determine how and when the flow runs. </p>"
+        },
+        "sourceFlowConfig":{
+          "shape":"SourceFlowConfig",
+          "documentation":"<p> The configuration that controls how Amazon AppFlow retrieves data from the source connector. </p>"
+        },
+        "destinationFlowConfigList":{
+          "shape":"DestinationFlowConfigList",
+          "documentation":"<p> The configuration that controls how Amazon AppFlow places data in the destination connector. </p>"
+        },
+        "tasks":{
+          "shape":"Tasks",
+          "documentation":"<p> A list of tasks that Amazon AppFlow performs while transferring the data in the flow run. </p>"
+        },
+        "tags":{
+          "shape":"TagMap",
+          "documentation":"<p> The tags used to organize, track, or control access for your flow. </p>"
+        }
+      }
+    },
+    "CreateFlowResponse":{
+      "type":"structure",
+      "members":{
+        "flowArn":{
+          "shape":"FlowArn",
+          "documentation":"<p> The flow's Amazon Resource Name (ARN). </p>"
+        },
+        "flowStatus":{
+          "shape":"FlowStatus",
+          "documentation":"<p> Indicates the current status of the flow. </p>"
+        }
+      }
+    },
+    "CreatedBy":{
+      "type":"string",
+      "max":256,
+      "pattern":"\\S+"
+    },
+    "CustomerProfilesDestinationProperties":{
+      "type":"structure",
+      "required":["domainName"],
+      "members":{
+        "domainName":{
+          "shape":"DomainName",
+          "documentation":"<p> The unique name of the Amazon Connect Customer Profiles domain. </p>"
+        },
+        "objectTypeName":{
+          "shape":"ObjectTypeName",
+          "documentation":"<p> The object specified in the Amazon Connect Customer Profiles flow destination. </p>"
+        }
+      },
+      "documentation":"<p> The properties that are applied when Amazon Connect Customer Profiles is used as a destination. </p>"
+    },
+    "CustomerProfilesMetadata":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> The connector metadata specific to Amazon Connect Customer Profiles. </p>"
+    },
+    "DataPullMode":{
+      "type":"string",
+      "enum":[
+        "Incremental",
+        "Complete"
+      ]
+    },
+    "DatabaseUrl":{
+      "type":"string",
+      "max":512,
+      "pattern":"\\S+"
+    },
+    "DatadogConnectorOperator":{
+      "type":"string",
+      "enum":[
+        "PROJECTION",
+        "BETWEEN",
+        "EQUAL_TO",
+        "ADDITION",
+        "MULTIPLICATION",
+        "DIVISION",
+        "SUBTRACTION",
+        "MASK_ALL",
+        "MASK_FIRST_N",
+        "MASK_LAST_N",
+        "VALIDATE_NON_NULL",
+        "VALIDATE_NON_ZERO",
+        "VALIDATE_NON_NEGATIVE",
+        "VALIDATE_NUMERIC",
+        "NO_OP"
+      ]
+    },
+    "DatadogConnectorProfileCredentials":{
+      "type":"structure",
+      "required":[
+        "apiKey",
+        "applicationKey"
+      ],
+      "members":{
+        "apiKey":{
+          "shape":"ApiKey",
+          "documentation":"<p> A unique alphanumeric identifier used to authenticate a user, developer, or calling program to your API. </p>"
+        },
+        "applicationKey":{
+          "shape":"ApplicationKey",
+          "documentation":"<p> Application keys, in conjunction with your API key, give you full access to Datadog’s programmatic API. Application keys are associated with the user account that created them. The application key is used to log all requests made to the API. </p>"
+        }
+      },
+      "documentation":"<p> The connector-specific credentials required by Datadog. </p>"
+    },
+    "DatadogConnectorProfileProperties":{
+      "type":"structure",
+      "required":["instanceUrl"],
+      "members":{
+        "instanceUrl":{
+          "shape":"InstanceUrl",
+          "documentation":"<p> The location of the Datadog resource. </p>"
+        }
+      },
+      "documentation":"<p> The connector-specific profile properties required by Datadog. </p>"
+    },
+    "DatadogMetadata":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> The connector metadata specific to Datadog. </p>"
+    },
+    "DatadogSourceProperties":{
+      "type":"structure",
+      "required":["object"],
+      "members":{
+        "object":{
+          "shape":"Object",
+          "documentation":"<p> The object specified in the Datadog flow source. </p>"
+        }
+      },
+      "documentation":"<p> The properties that are applied when Datadog is being used as a source. </p>"
+    },
+    "Date":{"type":"timestamp"},
+    "DatetimeTypeFieldName":{
+      "type":"string",
+      "max":256,
+      "pattern":".*"
+    },
+    "DeleteConnectorProfileRequest":{
+      "type":"structure",
+      "required":["connectorProfileName"],
+      "members":{
+        "connectorProfileName":{
+          "shape":"ConnectorProfileName",
+          "documentation":"<p> The name of the connector profile. The name is unique for each <code>ConnectorProfile</code> in your account. </p>"
+        },
+        "forceDelete":{
+          "shape":"Boolean",
+          "documentation":"<p> Indicates whether Amazon AppFlow should delete the profile, even if it is currently in use in one or more flows. </p>"
+        }
+      }
+    },
+    "DeleteConnectorProfileResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeleteFlowRequest":{
+      "type":"structure",
+      "required":["flowName"],
+      "members":{
+        "flowName":{
+          "shape":"FlowName",
+          "documentation":"<p> The specified name of the flow. Spaces are not allowed. Use underscores (_) or hyphens (-) only. </p>"
+        },
+        "forceDelete":{
+          "shape":"Boolean",
+          "documentation":"<p> Indicates whether Amazon AppFlow should delete the flow, even if it is currently in use. </p>"
+        }
+      }
+    },
+    "DeleteFlowResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DescribeConnectorEntityRequest":{
+      "type":"structure",
+      "required":["connectorEntityName"],
+      "members":{
+        "connectorEntityName":{
+          "shape":"Name",
+          "documentation":"<p> The entity name for that connector. </p>"
+        },
+        "connectorType":{
+          "shape":"ConnectorType",
+          "documentation":"<p> The type of connector application, such as Salesforce, Amplitude, and so on. </p>"
+        },
+        "connectorProfileName":{
+          "shape":"ConnectorProfileName",
+          "documentation":"<p> The name of the connector profile. The name is unique for each <code>ConnectorProfile</code> in the AWS account. </p>"
+        }
+      }
+    },
+    "DescribeConnectorEntityResponse":{
+      "type":"structure",
+      "required":["connectorEntityFields"],
+      "members":{
+        "connectorEntityFields":{
+          "shape":"ConnectorEntityFieldList",
+          "documentation":"<p> Describes the fields for that connector entity. For example, for an <i>account</i> entity, the fields would be <i>account name</i>, <i>account ID</i>, and so on. </p>"
+        }
+      }
+    },
+    "DescribeConnectorProfilesRequest":{
+      "type":"structure",
+      "members":{
+        "connectorProfileNames":{
+          "shape":"ConnectorProfileNameList",
+          "documentation":"<p> The name of the connector profile. The name is unique for each <code>ConnectorProfile</code> in the AWS account. </p>"
+        },
+        "connectorType":{
+          "shape":"ConnectorType",
+          "documentation":"<p> The type of connector, such as Salesforce, Amplitude, and so on. </p>"
+        },
+        "maxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p> Specifies the maximum number of items that should be returned in the result set. The default for <code>maxResults</code> is 20 (for all paginated API operations). </p>"
+        },
+        "nextToken":{
+          "shape":"NextToken",
+          "documentation":"<p> The pagination token for the next page of data. </p>"
+        }
+      }
+    },
+    "DescribeConnectorProfilesResponse":{
+      "type":"structure",
+      "members":{
+        "connectorProfileDetails":{
+          "shape":"ConnectorProfileDetailList",
+          "documentation":"<p> Returns information about the connector profiles associated with the flow. </p>"
+        },
+        "nextToken":{
+          "shape":"NextToken",
+          "documentation":"<p> The pagination token for the next page of data. If <code>nextToken=null</code>, this means that all records have been fetched. </p>"
+        }
+      }
+    },
+    "DescribeConnectorsRequest":{
+      "type":"structure",
+      "members":{
+        "connectorTypes":{
+          "shape":"ConnectorTypeList",
+          "documentation":"<p> The type of connector, such as Salesforce, Amplitude, and so on. </p>"
+        },
+        "nextToken":{
+          "shape":"NextToken",
+          "documentation":"<p> The pagination token for the next page of data. </p>"
+        }
+      }
+    },
+    "DescribeConnectorsResponse":{
+      "type":"structure",
+      "members":{
+        "connectorConfigurations":{
+          "shape":"ConnectorConfigurationsMap",
+          "documentation":"<p> The configuration that is applied to the connectors used in the flow. </p>"
+        },
+        "nextToken":{
+          "shape":"NextToken",
+          "documentation":"<p> The pagination token for the next page of data. </p>"
+        }
+      }
+    },
+    "DescribeFlowExecutionRecordsRequest":{
+      "type":"structure",
+      "required":["flowName"],
+      "members":{
+        "flowName":{
+          "shape":"FlowName",
+          "documentation":"<p> The specified name of the flow. Spaces are not allowed. Use underscores (_) or hyphens (-) only. </p>"
+        },
+        "maxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p> Specifies the maximum number of items that should be returned in the result set. The default for <code>maxResults</code> is 20 (for all paginated API operations). </p>"
+        },
+        "nextToken":{
+          "shape":"NextToken",
+          "documentation":"<p> The pagination token for the next page of data. </p>"
+        }
+      }
+    },
+    "DescribeFlowExecutionRecordsResponse":{
+      "type":"structure",
+      "members":{
+        "flowExecutions":{
+          "shape":"FlowExecutionList",
+          "documentation":"<p> Returns a list of all instances when this flow was run. </p>"
+        },
+        "nextToken":{
+          "shape":"NextToken",
+          "documentation":"<p> The pagination token for the next page of data. </p>"
+        }
+      }
+    },
+    "DescribeFlowRequest":{
+      "type":"structure",
+      "required":["flowName"],
+      "members":{
+        "flowName":{
+          "shape":"FlowName",
+          "documentation":"<p> The specified name of the flow. Spaces are not allowed. Use underscores (_) or hyphens (-) only. </p>"
+        }
+      }
+    },
+    "DescribeFlowResponse":{
+      "type":"structure",
+      "members":{
+        "flowArn":{
+          "shape":"FlowArn",
+          "documentation":"<p> The flow's Amazon Resource Name (ARN). </p>"
+        },
+        "description":{
+          "shape":"FlowDescription",
+          "documentation":"<p> A description of the flow. </p>"
+        },
+        "flowName":{
+          "shape":"FlowName",
+          "documentation":"<p> The specified name of the flow. Spaces are not allowed. Use underscores (_) or hyphens (-) only. </p>"
+        },
+        "kmsArn":{
+          "shape":"KMSArn",
+          "documentation":"<p> The ARN (Amazon Resource Name) of the Key Management Service (KMS) key you provide for encryption. This is required if you do not want to use the Amazon AppFlow-managed KMS key. If you don't provide anything here, Amazon AppFlow uses the Amazon AppFlow-managed KMS key. </p>"
+        },
+        "flowStatus":{
+          "shape":"FlowStatus",
+          "documentation":"<p> Indicates the current status of the flow. </p>"
+        },
+        "flowStatusMessage":{
+          "shape":"FlowStatusMessage",
+          "documentation":"<p> Contains an error message if the flow status is in a suspended or error state. This applies only to scheduled or event-triggered flows. </p>"
+        },
+        "sourceFlowConfig":{
+          "shape":"SourceFlowConfig",
+          "documentation":"<p> The configuration that controls how Amazon AppFlow retrieves data from the source connector. </p>"
+        },
+        "destinationFlowConfigList":{
+          "shape":"DestinationFlowConfigList",
+          "documentation":"<p> The configuration that controls how Amazon AppFlow transfers data to the destination connector. </p>"
+        },
+        "lastRunExecutionDetails":{
+          "shape":"ExecutionDetails",
+          "documentation":"<p> Describes the details of the most recent flow run. </p>"
+        },
+        "triggerConfig":{
+          "shape":"TriggerConfig",
+          "documentation":"<p> The trigger settings that determine how and when the flow runs. </p>"
+        },
+        "tasks":{
+          "shape":"Tasks",
+          "documentation":"<p> A list of tasks that Amazon AppFlow performs while transferring the data in the flow run. </p>"
+        },
+        "createdAt":{
+          "shape":"Date",
+          "documentation":"<p> Specifies when the flow was created. </p>"
+        },
+        "lastUpdatedAt":{
+          "shape":"Date",
+          "documentation":"<p> Specifies when the flow was last updated. </p>"
+        },
+        "createdBy":{
+          "shape":"CreatedBy",
+          "documentation":"<p> The ARN of the user who created the flow. </p>"
+        },
+        "lastUpdatedBy":{
+          "shape":"UpdatedBy",
+          "documentation":"<p> Specifies the user name of the account that performed the most recent update. </p>"
+        },
+        "tags":{
+          "shape":"TagMap",
+          "documentation":"<p> The tags used to organize, track, or control access for your flow. </p>"
+        }
+      }
+    },
+    "Description":{
+      "type":"string",
+      "max":1024,
+      "pattern":"[\\s\\w/!@#+=.-]*"
+    },
+    "DestinationConnectorProperties":{
+      "type":"structure",
+      "members":{
+        "Redshift":{
+          "shape":"RedshiftDestinationProperties",
+          "documentation":"<p> The properties required to query Amazon Redshift. </p>"
+        },
+        "S3":{
+          "shape":"S3DestinationProperties",
+          "documentation":"<p> The properties required to query Amazon S3. </p>"
+        },
+        "Salesforce":{
+          "shape":"SalesforceDestinationProperties",
+          "documentation":"<p> The properties required to query Salesforce. </p>"
+        },
+        "Snowflake":{
+          "shape":"SnowflakeDestinationProperties",
+          "documentation":"<p> The properties required to query Snowflake. </p>"
+        },
+        "EventBridge":{
+          "shape":"EventBridgeDestinationProperties",
+          "documentation":"<p> The properties required to query Amazon EventBridge. </p>"
+        },
+        "LookoutMetrics":{
+          "shape":"LookoutMetricsDestinationProperties",
+          "documentation":"<p> The properties required to query Amazon Lookout for Metrics. </p>"
+        },
+        "Upsolver":{
+          "shape":"UpsolverDestinationProperties",
+          "documentation":"<p> The properties required to query Upsolver. </p>"
+        },
+        "Honeycode":{
+          "shape":"HoneycodeDestinationProperties",
+          "documentation":"<p> The properties required to query Amazon Honeycode. </p>"
+        },
+        "CustomerProfiles":{
+          "shape":"CustomerProfilesDestinationProperties",
+          "documentation":"<p> The properties required to query Amazon Connect Customer Profiles. </p>"
+        },
+        "Zendesk":{
+          "shape":"ZendeskDestinationProperties",
+          "documentation":"<p>The properties required to query Zendesk.</p>"
+        }
+      },
+      "documentation":"<p> This stores the information that is required to query a particular connector. </p>"
+    },
+    "DestinationField":{
+      "type":"string",
+      "max":256,
+      "pattern":".*"
+    },
+    "DestinationFieldProperties":{
+      "type":"structure",
+      "members":{
+        "isCreatable":{
+          "shape":"Boolean",
+          "documentation":"<p> Specifies if the destination field can be created by the current user. </p>"
+        },
+        "isNullable":{
+          "shape":"Boolean",
+          "documentation":"<p> Specifies if the destination field can have a null value. </p>"
+        },
+        "isUpsertable":{
+          "shape":"Boolean",
+          "documentation":"<p> Specifies if the flow run can either insert new rows in the destination field if they do not already exist, or update them if they do. </p>"
+        },
+        "isUpdatable":{
+          "shape":"Boolean",
+          "documentation":"<p> Specifies whether the field can be updated during an <code>UPDATE</code> or <code>UPSERT</code> write operation. </p>"
+        },
+        "supportedWriteOperations":{
+          "shape":"SupportedWriteOperationList",
+          "documentation":"<p> A list of supported write operations. For each write operation listed, this field can be used in <code>idFieldNames</code> when that write operation is present as a destination option. </p>"
+        }
+      },
+      "documentation":"<p> The properties that can be applied to a field when connector is being used as a destination. </p>"
+    },
+    "DestinationFlowConfig":{
+      "type":"structure",
+      "required":[
+        "connectorType",
+        "destinationConnectorProperties"
+      ],
+      "members":{
+        "connectorType":{
+          "shape":"ConnectorType",
+          "documentation":"<p> The type of connector, such as Salesforce, Amplitude, and so on. </p>"
+        },
+        "connectorProfileName":{
+          "shape":"ConnectorProfileName",
+          "documentation":"<p> The name of the connector profile. This name must be unique for each connector profile in the AWS account. </p>"
+        },
+        "destinationConnectorProperties":{
+          "shape":"DestinationConnectorProperties",
+          "documentation":"<p> This stores the information that is required to query a particular connector. </p>"
+        }
+      },
+      "documentation":"<p> Contains information about the configuration of destination connectors present in the flow. </p>"
+    },
+    "DestinationFlowConfigList":{
+      "type":"list",
+      "member":{"shape":"DestinationFlowConfig"}
+    },
+    "DomainName":{
+      "type":"string",
+      "max":64,
+      "pattern":"\\S+"
+    },
+    "DynatraceConnectorOperator":{
+      "type":"string",
+      "enum":[
+        "PROJECTION",
+        "BETWEEN",
+        "EQUAL_TO",
+        "ADDITION",
+        "MULTIPLICATION",
+        "DIVISION",
+        "SUBTRACTION",
+        "MASK_ALL",
+        "MASK_FIRST_N",
+        "MASK_LAST_N",
+        "VALIDATE_NON_NULL",
+        "VALIDATE_NON_ZERO",
+        "VALIDATE_NON_NEGATIVE",
+        "VALIDATE_NUMERIC",
+        "NO_OP"
+      ]
+    },
+    "DynatraceConnectorProfileCredentials":{
+      "type":"structure",
+      "required":["apiToken"],
+      "members":{
+        "apiToken":{
+          "shape":"ApiToken",
+          "documentation":"<p> The API tokens used by Dynatrace API to authenticate various API calls. </p>"
+        }
+      },
+      "documentation":"<p> The connector-specific profile credentials required by Dynatrace. </p>"
+    },
+    "DynatraceConnectorProfileProperties":{
+      "type":"structure",
+      "required":["instanceUrl"],
+      "members":{
+        "instanceUrl":{
+          "shape":"InstanceUrl",
+          "documentation":"<p> The location of the Dynatrace resource. </p>"
+        }
+      },
+      "documentation":"<p> The connector-specific profile properties required by Dynatrace. </p>"
+    },
+    "DynatraceMetadata":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> The connector metadata specific to Dynatrace. </p>"
+    },
+    "DynatraceSourceProperties":{
+      "type":"structure",
+      "required":["object"],
+      "members":{
+        "object":{
+          "shape":"Object",
+          "documentation":"<p> The object specified in the Dynatrace flow source. </p>"
+        }
+      },
+      "documentation":"<p> The properties that are applied when Dynatrace is being used as a source. </p>"
+    },
+    "EntitiesPath":{
+      "type":"string",
+      "max":256,
+      "pattern":"[\\s\\w/!@#+=.-]*"
+    },
+    "ErrorHandlingConfig":{
+      "type":"structure",
+      "members":{
+        "failOnFirstDestinationError":{
+          "shape":"Boolean",
+          "documentation":"<p> Specifies if the flow should fail after the first instance of a failure when attempting to place data in the destination. </p>"
+        },
+        "bucketPrefix":{
+          "shape":"BucketPrefix",
+          "documentation":"<p> Specifies the Amazon S3 bucket prefix. </p>"
+        },
+        "bucketName":{
+          "shape":"BucketName",
+          "documentation":"<p> Specifies the name of the Amazon S3 bucket. </p>"
+        }
+      },
+      "documentation":"<p> The settings that determine how Amazon AppFlow handles an error when placing data in the destination. For example, this setting would determine if the flow should fail after one insertion error, or continue and attempt to insert every record regardless of the initial failure. <code>ErrorHandlingConfig</code> is a part of the destination connector details. </p>"
+    },
+    "ErrorInfo":{
+      "type":"structure",
+      "members":{
+        "putFailuresCount":{
+          "shape":"Long",
+          "documentation":"<p> Specifies the failure count for the attempted flow. </p>"
+        },
+        "executionMessage":{
+          "shape":"ExecutionMessage",
+          "documentation":"<p> Specifies the error message that appears if a flow fails. </p>"
+        }
+      },
+      "documentation":"<p> Provides details in the event of a failed flow, including the failure count and the related error messages. </p>"
+    },
+    "ErrorMessage":{
+      "type":"string",
+      "max":2048,
+      "pattern":"[\\s\\w/!@#+=.-]*"
+    },
+    "EventBridgeDestinationProperties":{
+      "type":"structure",
+      "required":["object"],
+      "members":{
+        "object":{
+          "shape":"Object",
+          "documentation":"<p> The object specified in the Amazon EventBridge flow destination. </p>"
+        },
+        "errorHandlingConfig":{"shape":"ErrorHandlingConfig"}
+      },
+      "documentation":"<p> The properties that are applied when Amazon EventBridge is being used as a destination. </p>"
+    },
+    "EventBridgeMetadata":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> The connector metadata specific to Amazon EventBridge. </p>"
+    },
+    "ExecutionDetails":{
+      "type":"structure",
+      "members":{
+        "mostRecentExecutionMessage":{
+          "shape":"MostRecentExecutionMessage",
+          "documentation":"<p> Describes the details of the most recent flow run. </p>"
+        },
+        "mostRecentExecutionTime":{
+          "shape":"Date",
+          "documentation":"<p> Specifies the time of the most recent flow run. </p>"
+        },
+        "mostRecentExecutionStatus":{
+          "shape":"ExecutionStatus",
+          "documentation":"<p> Specifies the status of the most recent flow run. </p>"
+        }
+      },
+      "documentation":"<p> Describes the details of the flow run, including the timestamp, status, and message. </p>"
+    },
+    "ExecutionId":{
+      "type":"string",
+      "max":256,
+      "pattern":"\\S+"
+    },
+    "ExecutionMessage":{
+      "type":"string",
+      "max":2048,
+      "pattern":"[\\s\\w/!@#+=.-]*"
+    },
+    "ExecutionRecord":{
+      "type":"structure",
+      "members":{
+        "executionId":{
+          "shape":"ExecutionId",
+          "documentation":"<p> Specifies the identifier of the given flow run. </p>"
+        },
+        "executionStatus":{
+          "shape":"ExecutionStatus",
+          "documentation":"<p> Specifies the flow run status and whether it is in progress, has completed successfully, or has failed. </p>"
+        },
+        "executionResult":{
+          "shape":"ExecutionResult",
+          "documentation":"<p> Describes the result of the given flow run. </p>"
+        },
+        "startedAt":{
+          "shape":"Date",
+          "documentation":"<p> Specifies the start time of the flow run. </p>"
+        },
+        "lastUpdatedAt":{
+          "shape":"Date",
+          "documentation":"<p> Specifies the time of the most recent update. </p>"
+        },
+        "dataPullStartTime":{
+          "shape":"Date",
+          "documentation":"<p> The timestamp that determines the first new or updated record to be transferred in the flow run. </p>"
+        },
+        "dataPullEndTime":{
+          "shape":"Date",
+          "documentation":"<p> The timestamp that indicates the last new or updated record to be transferred in the flow run. </p>"
+        }
+      },
+      "documentation":"<p> Specifies information about the past flow run instances for a given flow. </p>"
+    },
+    "ExecutionResult":{
+      "type":"structure",
+      "members":{
+        "errorInfo":{
+          "shape":"ErrorInfo",
+          "documentation":"<p> Provides any error message information related to the flow run. </p>"
+        },
+        "bytesProcessed":{
+          "shape":"Long",
+          "documentation":"<p> The total number of bytes processed by the flow run. </p>"
+        },
+        "bytesWritten":{
+          "shape":"Long",
+          "documentation":"<p> The total number of bytes written as a result of the flow run. </p>"
+        },
+        "recordsProcessed":{
+          "shape":"Long",
+          "documentation":"<p> The number of records processed in the flow run. </p>"
+        }
+      },
+      "documentation":"<p> Specifies the end result of the flow run. </p>"
+    },
+    "ExecutionStatus":{
+      "type":"string",
+      "enum":[
+        "InProgress",
+        "Successful",
+        "Error"
+      ]
+    },
+    "FieldType":{"type":"string"},
+    "FieldTypeDetails":{
+      "type":"structure",
+      "required":[
+        "fieldType",
+        "filterOperators"
+      ],
+      "members":{
+        "fieldType":{
+          "shape":"FieldType",
+          "documentation":"<p> The type of field, such as string, integer, date, and so on. </p>"
+        },
+        "filterOperators":{
+          "shape":"FilterOperatorList",
+          "documentation":"<p> The list of operators supported by a field. </p>"
+        },
+        "supportedValues":{
+          "shape":"SupportedValueList",
+          "documentation":"<p> The list of values that a field can contain. For example, a Boolean <code>fieldType</code> can have two values: \"true\" and \"false\". </p>"
+        }
+      },
+      "documentation":"<p> Contains details regarding the supported field type and the operators that can be applied for filtering. </p>"
+    },
+    "FileType":{
+      "type":"string",
+      "enum":[
+        "CSV",
+        "JSON",
+        "PARQUET"
+      ]
+    },
+    "FilterOperatorList":{
+      "type":"list",
+      "member":{"shape":"Operator"}
+    },
+    "FlowArn":{
+      "type":"string",
+      "max":512,
+      "pattern":"arn:aws:appflow:.*:[0-9]+:.*"
+    },
+    "FlowDefinition":{
+      "type":"structure",
+      "members":{
+        "flowArn":{
+          "shape":"FlowArn",
+          "documentation":"<p> The flow's Amazon Resource Name (ARN). </p>"
+        },
+        "description":{
+          "shape":"FlowDescription",
+          "documentation":"<p> A user-entered description of the flow. </p>"
+        },
+        "flowName":{
+          "shape":"FlowName",
+          "documentation":"<p> The specified name of the flow. Spaces are not allowed. Use underscores (_) or hyphens (-) only. </p>"
+        },
+        "flowStatus":{
+          "shape":"FlowStatus",
+          "documentation":"<p> Indicates the current status of the flow. </p>"
+        },
+        "sourceConnectorType":{
+          "shape":"ConnectorType",
+          "documentation":"<p> Specifies the source connector type, such as Salesforce, Amazon S3, Amplitude, and so on. </p>"
+        },
+        "destinationConnectorType":{
+          "shape":"ConnectorType",
+          "documentation":"<p> Specifies the destination connector type, such as Salesforce, Amazon S3, Amplitude, and so on. </p>"
+        },
+        "triggerType":{
+          "shape":"TriggerType",
+          "documentation":"<p> Specifies the type of flow trigger. This can be <code>OnDemand</code>, <code>Scheduled</code>, or <code>Event</code>. </p>"
+        },
+        "createdAt":{
+          "shape":"Date",
+          "documentation":"<p> Specifies when the flow was created. </p>"
+        },
+        "lastUpdatedAt":{
+          "shape":"Date",
+          "documentation":"<p> Specifies when the flow was last updated. </p>"
+        },
+        "createdBy":{
+          "shape":"CreatedBy",
+          "documentation":"<p> The ARN of the user who created the flow. </p>"
+        },
+        "lastUpdatedBy":{
+          "shape":"UpdatedBy",
+          "documentation":"<p> Specifies the account user name that most recently updated the flow. </p>"
+        },
+        "tags":{
+          "shape":"TagMap",
+          "documentation":"<p> The tags used to organize, track, or control access for your flow. </p>"
+        },
+        "lastRunExecutionDetails":{
+          "shape":"ExecutionDetails",
+          "documentation":"<p> Describes the details of the most recent flow run. </p>"
+        }
+      },
+      "documentation":"<p> The properties of the flow, such as its source, destination, trigger type, and so on. </p>"
+    },
+    "FlowDescription":{
+      "type":"string",
+      "max":2048,
+      "pattern":"[\\w!@#\\-.?,\\s]*"
+    },
+    "FlowExecutionList":{
+      "type":"list",
+      "member":{"shape":"ExecutionRecord"}
+    },
+    "FlowList":{
+      "type":"list",
+      "member":{"shape":"FlowDefinition"}
+    },
+    "FlowName":{
+      "type":"string",
+      "max":256,
+      "pattern":"[a-zA-Z0-9][\\w!@#.-]+"
+    },
+    "FlowStatus":{
+      "type":"string",
+      "enum":[
+        "Active",
+        "Deprecated",
+        "Deleted",
+        "Draft",
+        "Errored",
+        "Suspended"
+      ]
+    },
+    "FlowStatusMessage":{
+      "type":"string",
+      "max":2048,
+      "pattern":"[\\s\\w/!@#+=.-]*"
+    },
+    "GoogleAnalyticsConnectorOperator":{
+      "type":"string",
+      "enum":[
+        "PROJECTION",
+        "BETWEEN"
+      ]
+    },
+    "GoogleAnalyticsConnectorProfileCredentials":{
+      "type":"structure",
+      "required":[
+        "clientId",
+        "clientSecret"
+      ],
+      "members":{
+        "clientId":{
+          "shape":"ClientId",
+          "documentation":"<p> The identifier for the desired client. </p>"
+        },
+        "clientSecret":{
+          "shape":"ClientSecret",
+          "documentation":"<p> The client secret used by the OAuth client to authenticate to the authorization server. </p>"
+        },
+        "accessToken":{
+          "shape":"AccessToken",
+          "documentation":"<p> The credentials used to access protected Google Analytics resources. </p>"
+        },
+        "refreshToken":{
+          "shape":"RefreshToken",
+          "documentation":"<p> The credentials used to acquire new access tokens. This is required only for OAuth2 access tokens, and is not required for OAuth1 access tokens. </p>"
+        },
+        "oAuthRequest":{
+          "shape":"ConnectorOAuthRequest",
+          "documentation":"<p> The OAuth requirement needed to request security tokens from the connector endpoint. </p>"
+        }
+      },
+      "documentation":"<p> The connector-specific profile credentials required by Google Analytics. </p>"
+    },
+    "GoogleAnalyticsConnectorProfileProperties":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> The connector-specific profile properties required by Google Analytics. </p>"
+    },
+    "GoogleAnalyticsMetadata":{
+      "type":"structure",
+      "members":{
+        "oAuthScopes":{
+          "shape":"OAuthScopeList",
+          "documentation":"<p> The desired authorization scope for the Google Analytics account. </p>"
+        }
+      },
+      "documentation":"<p> The connector metadata specific to Google Analytics. </p>"
+    },
+    "GoogleAnalyticsSourceProperties":{
+      "type":"structure",
+      "required":["object"],
+      "members":{
+        "object":{
+          "shape":"Object",
+          "documentation":"<p> The object specified in the Google Analytics flow source. </p>"
+        }
+      },
+      "documentation":"<p> The properties that are applied when Google Analytics is being used as a source. </p>"
+    },
+    "Group":{
+      "type":"string",
+      "max":128,
+      "pattern":"\\S+"
+    },
+    "HoneycodeConnectorProfileCredentials":{
+      "type":"structure",
+      "members":{
+        "accessToken":{
+          "shape":"AccessToken",
+          "documentation":"<p> The credentials used to access protected Amazon Honeycode resources. </p>"
+        },
+        "refreshToken":{
+          "shape":"RefreshToken",
+          "documentation":"<p> The credentials used to acquire new access tokens. </p>"
+        },
+        "oAuthRequest":{"shape":"ConnectorOAuthRequest"}
+      },
+      "documentation":"<p> The connector-specific credentials required when using Amazon Honeycode. </p>"
+    },
+    "HoneycodeConnectorProfileProperties":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> The connector-specific properties required when using Amazon Honeycode. </p>"
+    },
+    "HoneycodeDestinationProperties":{
+      "type":"structure",
+      "required":["object"],
+      "members":{
+        "object":{
+          "shape":"Object",
+          "documentation":"<p> The object specified in the Amazon Honeycode flow destination. </p>"
+        },
+        "errorHandlingConfig":{"shape":"ErrorHandlingConfig"}
+      },
+      "documentation":"<p> The properties that are applied when Amazon Honeycode is used as a destination. </p>"
+    },
+    "HoneycodeMetadata":{
+      "type":"structure",
+      "members":{
+        "oAuthScopes":{
+          "shape":"OAuthScopeList",
+          "documentation":"<p> The desired authorization scope for the Amazon Honeycode account. </p>"
+        }
+      },
+      "documentation":"<p> The connector metadata specific to Amazon Honeycode. </p>"
+    },
+    "IdFieldNameList":{
+      "type":"list",
+      "member":{"shape":"Name"},
+      "documentation":"<p> A list of field names that can be used as an ID field when performing a write operation. </p>",
+      "max":1,
+      "min":0
+    },
+    "Identifier":{
+      "type":"string",
+      "max":128,
+      "pattern":"\\S+"
+    },
+    "IncrementalPullConfig":{
+      "type":"structure",
+      "members":{
+        "datetimeTypeFieldName":{
+          "shape":"DatetimeTypeFieldName",
+          "documentation":"<p> A field that specifies the date time or timestamp field as the criteria to use when importing incremental records from the source. </p>"
+        }
+      },
+      "documentation":"<p> Specifies the configuration used when importing incremental records from the source. </p>"
+    },
+    "InforNexusConnectorOperator":{
+      "type":"string",
+      "enum":[
+        "PROJECTION",
+        "BETWEEN",
+        "EQUAL_TO",
+        "ADDITION",
+        "MULTIPLICATION",
+        "DIVISION",
+        "SUBTRACTION",
+        "MASK_ALL",
+        "MASK_FIRST_N",
+        "MASK_LAST_N",
+        "VALIDATE_NON_NULL",
+        "VALIDATE_NON_ZERO",
+        "VALIDATE_NON_NEGATIVE",
+        "VALIDATE_NUMERIC",
+        "NO_OP"
+      ]
+    },
+    "InforNexusConnectorProfileCredentials":{
+      "type":"structure",
+      "required":[
+        "accessKeyId",
+        "userId",
+        "secretAccessKey",
+        "datakey"
+      ],
+      "members":{
+        "accessKeyId":{
+          "shape":"AccessKeyId",
+          "documentation":"<p> The Access Key portion of the credentials. </p>"
+        },
+        "userId":{
+          "shape":"Username",
+          "documentation":"<p> The identifier for the user. </p>"
+        },
+        "secretAccessKey":{
+          "shape":"Key",
+          "documentation":"<p> The secret key used to sign requests. </p>"
+        },
+        "datakey":{
+          "shape":"Key",
+          "documentation":"<p> The encryption keys used to encrypt data. </p>"
+        }
+      },
+      "documentation":"<p> The connector-specific profile credentials required by Infor Nexus. </p>"
+    },
+    "InforNexusConnectorProfileProperties":{
+      "type":"structure",
+      "required":["instanceUrl"],
+      "members":{
+        "instanceUrl":{
+          "shape":"InstanceUrl",
+          "documentation":"<p> The location of the Infor Nexus resource. </p>"
+        }
+      },
+      "documentation":"<p> The connector-specific profile properties required by Infor Nexus. </p>"
+    },
+    "InforNexusMetadata":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> The connector metadata specific to Infor Nexus. </p>"
+    },
+    "InforNexusSourceProperties":{
+      "type":"structure",
+      "required":["object"],
+      "members":{
+        "object":{
+          "shape":"Object",
+          "documentation":"<p> The object specified in the Infor Nexus flow source. </p>"
+        }
+      },
+      "documentation":"<p> The properties that are applied when Infor Nexus is being used as a source. </p>"
+    },
+    "InstanceUrl":{
+      "type":"string",
+      "max":256,
+      "pattern":"\\S+"
+    },
+    "InternalServerException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p> An internal service error occurred during the processing of your request. Try again later. </p>",
+      "error":{"httpStatusCode":500},
+      "exception":true
+    },
+    "KMSArn":{
+      "type":"string",
+      "max":2048,
+      "min":20,
+      "pattern":"arn:aws:kms:.*:[0-9]+:.*"
+    },
+    "Key":{
+      "type":"string",
+      "max":512,
+      "pattern":"\\S+"
+    },
+    "Label":{
+      "type":"string",
+      "max":128,
+      "pattern":".*"
+    },
+    "ListConnectorEntitiesRequest":{
+      "type":"structure",
+      "members":{
+        "connectorProfileName":{
+          "shape":"ConnectorProfileName",
+          "documentation":"<p> The name of the connector profile. The name is unique for each <code>ConnectorProfile</code> in the AWS account, and is used to query the downstream connector. </p>"
+        },
+        "connectorType":{
+          "shape":"ConnectorType",
+          "documentation":"<p> The type of connector, such as Salesforce, Amplitude, and so on. </p>"
+        },
+        "entitiesPath":{
+          "shape":"EntitiesPath",
+          "documentation":"<p> This optional parameter is specific to connector implementation. Some connectors support multiple levels or categories of entities. You can find out the list of roots for such providers by sending a request without the <code>entitiesPath</code> parameter. If the connector supports entities at different roots, this initial request returns the list of roots. Otherwise, this request returns all entities supported by the provider. </p>"
+        }
+      }
+    },
+    "ListConnectorEntitiesResponse":{
+      "type":"structure",
+      "required":["connectorEntityMap"],
+      "members":{
+        "connectorEntityMap":{
+          "shape":"ConnectorEntityMap",
+          "documentation":"<p> The response of <code>ListConnectorEntities</code> lists entities grouped by category. This map's key represents the group name, and its value contains the list of entities belonging to that group. </p>"
+        }
+      }
+    },
+    "ListFlowsRequest":{
+      "type":"structure",
+      "members":{
+        "maxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p> Specifies the maximum number of items that should be returned in the result set. </p>"
+        },
+        "nextToken":{
+          "shape":"NextToken",
+          "documentation":"<p> The pagination token for next page of data. </p>"
+        }
+      }
+    },
+    "ListFlowsResponse":{
+      "type":"structure",
+      "members":{
+        "flows":{
+          "shape":"FlowList",
+          "documentation":"<p> The list of flows associated with your account. </p>"
+        },
+        "nextToken":{
+          "shape":"NextToken",
+          "documentation":"<p> The pagination token for next page of data. </p>"
+        }
+      }
+    },
+    "ListTagsForResourceRequest":{
+      "type":"structure",
+      "required":["resourceArn"],
+      "members":{
+        "resourceArn":{
+          "shape":"ARN",
+          "documentation":"<p> The Amazon Resource Name (ARN) of the specified flow. </p>",
+          "location":"uri",
+          "locationName":"resourceArn"
+        }
+      }
+    },
+    "ListTagsForResourceResponse":{
+      "type":"structure",
+      "members":{
+        "tags":{
+          "shape":"TagMap",
+          "documentation":"<p> The tags used to organize, track, or control access for your flow. </p>"
+        }
+      }
+    },
+    "Long":{"type":"long"},
+    "LookoutMetricsDestinationProperties":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> The properties that are applied when Amazon Lookout for Metrics is used as a destination. </p>"
+    },
+    "MarketoConnectorOperator":{
+      "type":"string",
+      "enum":[
+        "PROJECTION",
+        "LESS_THAN",
+        "GREATER_THAN",
+        "BETWEEN",
+        "ADDITION",
+        "MULTIPLICATION",
+        "DIVISION",
+        "SUBTRACTION",
+        "MASK_ALL",
+        "MASK_FIRST_N",
+        "MASK_LAST_N",
+        "VALIDATE_NON_NULL",
+        "VALIDATE_NON_ZERO",
+        "VALIDATE_NON_NEGATIVE",
+        "VALIDATE_NUMERIC",
+        "NO_OP"
+      ]
+    },
+    "MarketoConnectorProfileCredentials":{
+      "type":"structure",
+      "required":[
+        "clientId",
+        "clientSecret"
+      ],
+      "members":{
+        "clientId":{
+          "shape":"ClientId",
+          "documentation":"<p> The identifier for the desired client. </p>"
+        },
+        "clientSecret":{
+          "shape":"ClientSecret",
+          "documentation":"<p> The client secret used by the OAuth client to authenticate to the authorization server. </p>"
+        },
+        "accessToken":{
+          "shape":"AccessToken",
+          "documentation":"<p> The credentials used to access protected Marketo resources. </p>"
+        },
+        "oAuthRequest":{
+          "shape":"ConnectorOAuthRequest",
+          "documentation":"<p> The OAuth requirement needed to request security tokens from the connector endpoint. </p>"
+        }
+      },
+      "documentation":"<p> The connector-specific profile credentials required by Marketo. </p>"
+    },
+    "MarketoConnectorProfileProperties":{
+      "type":"structure",
+      "required":["instanceUrl"],
+      "members":{
+        "instanceUrl":{
+          "shape":"InstanceUrl",
+          "documentation":"<p> The location of the Marketo resource. </p>"
+        }
+      },
+      "documentation":"<p> The connector-specific profile properties required when using Marketo. </p>"
+    },
+    "MarketoMetadata":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> The connector metadata specific to Marketo. </p>"
+    },
+    "MarketoSourceProperties":{
+      "type":"structure",
+      "required":["object"],
+      "members":{
+        "object":{
+          "shape":"Object",
+          "documentation":"<p> The object specified in the Marketo flow source. </p>"
+        }
+      },
+      "documentation":"<p> The properties that are applied when Marketo is being used as a source. </p>"
+    },
+    "MaxResults":{
+      "type":"integer",
+      "max":100,
+      "min":1
+    },
+    "MostRecentExecutionMessage":{
+      "type":"string",
+      "max":2048,
+      "pattern":"[\\w!@#\\-.?,\\s]*"
+    },
+    "Name":{
+      "type":"string",
+      "max":128,
+      "pattern":"\\S+"
+    },
+    "NextToken":{
+      "type":"string",
+      "max":2048,
+      "pattern":"\\S+"
+    },
+    "OAuthScope":{
+      "type":"string",
+      "max":128,
+      "pattern":"[\\w]*"
+    },
+    "OAuthScopeList":{
+      "type":"list",
+      "member":{"shape":"OAuthScope"}
+    },
+    "Object":{
+      "type":"string",
+      "max":512,
+      "pattern":"\\S+"
+    },
+    "ObjectTypeName":{
+      "type":"string",
+      "max":255,
+      "pattern":"\\S+"
+    },
+    "Operator":{
+      "type":"string",
+      "enum":[
+        "PROJECTION",
+        "LESS_THAN",
+        "GREATER_THAN",
+        "CONTAINS",
+        "BETWEEN",
+        "LESS_THAN_OR_EQUAL_TO",
+        "GREATER_THAN_OR_EQUAL_TO",
+        "EQUAL_TO",
+        "NOT_EQUAL_TO",
+        "ADDITION",
+        "MULTIPLICATION",
+        "DIVISION",
+        "SUBTRACTION",
+        "MASK_ALL",
+        "MASK_FIRST_N",
+        "MASK_LAST_N",
+        "VALIDATE_NON_NULL",
+        "VALIDATE_NON_ZERO",
+        "VALIDATE_NON_NEGATIVE",
+        "VALIDATE_NUMERIC",
+        "NO_OP"
+      ]
+    },
+    "OperatorPropertiesKeys":{
+      "type":"string",
+      "enum":[
+        "VALUE",
+        "VALUES",
+        "DATA_TYPE",
+        "UPPER_BOUND",
+        "LOWER_BOUND",
+        "SOURCE_DATA_TYPE",
+        "DESTINATION_DATA_TYPE",
+        "VALIDATION_ACTION",
+        "MASK_VALUE",
+        "MASK_LENGTH",
+        "TRUNCATE_LENGTH",
+        "MATH_OPERATION_FIELDS_ORDER",
+        "CONCAT_FORMAT",
+        "SUBFIELD_CATEGORY_MAP",
+        "EXCLUDE_SOURCE_FIELDS_LIST"
+      ]
+    },
+    "Password":{
+      "type":"string",
+      "max":512,
+      "pattern":".*",
+      "sensitive":true
+    },
+    "PrefixConfig":{
+      "type":"structure",
+      "members":{
+        "prefixType":{
+          "shape":"PrefixType",
+          "documentation":"<p> Determines the format of the prefix, and whether it applies to the file name, file path, or both. </p>"
+        },
+        "prefixFormat":{
+          "shape":"PrefixFormat",
+          "documentation":"<p> Determines the level of granularity that's included in the prefix. </p>"
+        }
+      },
+      "documentation":"<p> Determines the prefix that Amazon AppFlow applies to the destination folder name. You can name your destination folders according to the flow frequency and date. </p>"
+    },
+    "PrefixFormat":{
+      "type":"string",
+      "enum":[
+        "YEAR",
+        "MONTH",
+        "DAY",
+        "HOUR",
+        "MINUTE"
+      ]
+    },
+    "PrefixType":{
+      "type":"string",
+      "enum":[
+        "FILENAME",
+        "PATH",
+        "PATH_AND_FILENAME"
+      ]
+    },
+    "PrivateLinkServiceName":{
+      "type":"string",
+      "max":512,
+      "pattern":"\\S+"
+    },
+    "Property":{
+      "type":"string",
+      "max":2048,
+      "pattern":".+"
+    },
+    "RedirectUri":{
+      "type":"string",
+      "max":512,
+      "pattern":"\\S+"
+    },
+    "RedshiftConnectorProfileCredentials":{
+      "type":"structure",
+      "required":[
+        "username",
+        "password"
+      ],
+      "members":{
+        "username":{
+          "shape":"Username",
+          "documentation":"<p> The name of the user. </p>"
+        },
+        "password":{
+          "shape":"Password",
+          "documentation":"<p> The password that corresponds to the user name. </p>"
+        }
+      },
+      "documentation":"<p> The connector-specific profile credentials required when using Amazon Redshift. </p>"
+    },
+    "RedshiftConnectorProfileProperties":{
+      "type":"structure",
+      "required":[
+        "databaseUrl",
+        "bucketName",
+        "roleArn"
+      ],
+      "members":{
+        "databaseUrl":{
+          "shape":"DatabaseUrl",
+          "documentation":"<p> The JDBC URL of the Amazon Redshift cluster. </p>"
+        },
+        "bucketName":{
+          "shape":"BucketName",
+          "documentation":"<p> A name for the associated Amazon S3 bucket. </p>"
+        },
+        "bucketPrefix":{
+          "shape":"BucketPrefix",
+          "documentation":"<p> The object key for the destination bucket in which Amazon AppFlow places the files. </p>"
+        },
+        "roleArn":{
+          "shape":"RoleArn",
+          "documentation":"<p> The Amazon Resource Name (ARN) of the IAM role. </p>"
+        }
+      },
+      "documentation":"<p> The connector-specific profile properties when using Amazon Redshift. </p>"
+    },
+    "RedshiftDestinationProperties":{
+      "type":"structure",
+      "required":[
+        "object",
+        "intermediateBucketName"
+      ],
+      "members":{
+        "object":{
+          "shape":"Object",
+          "documentation":"<p> The object specified in the Amazon Redshift flow destination. </p>"
+        },
+        "intermediateBucketName":{
+          "shape":"BucketName",
+          "documentation":"<p> The intermediate bucket that Amazon AppFlow uses when moving data into Amazon Redshift. </p>"
+        },
+        "bucketPrefix":{
+          "shape":"BucketPrefix",
+          "documentation":"<p> The object key for the bucket in which Amazon AppFlow places the destination files. </p>"
+        },
+        "errorHandlingConfig":{
+          "shape":"ErrorHandlingConfig",
+          "documentation":"<p> The settings that determine how Amazon AppFlow handles an error when placing data in the Amazon Redshift destination. For example, this setting would determine if the flow should fail after one insertion error, or continue and attempt to insert every record regardless of the initial failure. <code>ErrorHandlingConfig</code> is a part of the destination connector details. </p>"
+        }
+      },
+      "documentation":"<p> The properties that are applied when Amazon Redshift is being used as a destination. </p>"
+    },
+    "RedshiftMetadata":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> The connector metadata specific to Amazon Redshift. </p>"
+    },
+    "RefreshToken":{
+      "type":"string",
+      "max":512,
+      "pattern":"\\S+"
+    },
+    "Region":{
+      "type":"string",
+      "max":64,
+      "pattern":"\\S+"
+    },
+    "RegionList":{
+      "type":"list",
+      "member":{"shape":"Region"}
+    },
+    "ResourceNotFoundException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p> The resource specified in the request (such as the source or destination connector profile) is not found. </p>",
+      "error":{"httpStatusCode":404},
+      "exception":true
+    },
+    "RoleArn":{
+      "type":"string",
+      "max":512,
+      "pattern":"arn:aws:iam:.*:[0-9]+:.*"
+    },
+    "S3ConnectorOperator":{
+      "type":"string",
+      "enum":[
+        "PROJECTION",
+        "LESS_THAN",
+        "GREATER_THAN",
+        "BETWEEN",
+        "LESS_THAN_OR_EQUAL_TO",
+        "GREATER_THAN_OR_EQUAL_TO",
+        "EQUAL_TO",
+        "NOT_EQUAL_TO",
+        "ADDITION",
+        "MULTIPLICATION",
+        "DIVISION",
+        "SUBTRACTION",
+        "MASK_ALL",
+        "MASK_FIRST_N",
+        "MASK_LAST_N",
+        "VALIDATE_NON_NULL",
+        "VALIDATE_NON_ZERO",
+        "VALIDATE_NON_NEGATIVE",
+        "VALIDATE_NUMERIC",
+        "NO_OP"
+      ]
+    },
+    "S3DestinationProperties":{
+      "type":"structure",
+      "required":["bucketName"],
+      "members":{
+        "bucketName":{
+          "shape":"BucketName",
+          "documentation":"<p> The Amazon S3 bucket name in which Amazon AppFlow places the transferred data. </p>"
+        },
+        "bucketPrefix":{
+          "shape":"BucketPrefix",
+          "documentation":"<p> The object key for the destination bucket in which Amazon AppFlow places the files. </p>"
+        },
+        "s3OutputFormatConfig":{"shape":"S3OutputFormatConfig"}
+      },
+      "documentation":"<p> The properties that are applied when Amazon S3 is used as a destination. </p>"
+    },
+    "S3Metadata":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> The connector metadata specific to Amazon S3. </p>"
+    },
+    "S3OutputFormatConfig":{
+      "type":"structure",
+      "members":{
+        "fileType":{
+          "shape":"FileType",
+          "documentation":"<p> Indicates the file type that Amazon AppFlow places in the Amazon S3 bucket. </p>"
+        },
+        "prefixConfig":{
+          "shape":"PrefixConfig",
+          "documentation":"<p> Determines the prefix that Amazon AppFlow applies to the folder name in the Amazon S3 bucket. You can name folders according to the flow frequency and date. </p>"
+        },
+        "aggregationConfig":{"shape":"AggregationConfig"}
+      },
+      "documentation":"<p> The configuration that determines how Amazon AppFlow should format the flow output data when Amazon S3 is used as the destination. </p>"
+    },
+    "S3SourceProperties":{
+      "type":"structure",
+      "required":["bucketName"],
+      "members":{
+        "bucketName":{
+          "shape":"BucketName",
+          "documentation":"<p> The Amazon S3 bucket name where the source files are stored. </p>"
+        },
+        "bucketPrefix":{
+          "shape":"BucketPrefix",
+          "documentation":"<p> The object key for the Amazon S3 bucket in which the source files are stored. </p>"
+        }
+      },
+      "documentation":"<p> The properties that are applied when Amazon S3 is being used as the flow source. </p>"
+    },
+    "SalesforceConnectorOperator":{
+      "type":"string",
+      "enum":[
+        "PROJECTION",
+        "LESS_THAN",
+        "CONTAINS",
+        "GREATER_THAN",
+        "BETWEEN",
+        "LESS_THAN_OR_EQUAL_TO",
+        "GREATER_THAN_OR_EQUAL_TO",
+        "EQUAL_TO",
+        "NOT_EQUAL_TO",
+        "ADDITION",
+        "MULTIPLICATION",
+        "DIVISION",
+        "SUBTRACTION",
+        "MASK_ALL",
+        "MASK_FIRST_N",
+        "MASK_LAST_N",
+        "VALIDATE_NON_NULL",
+        "VALIDATE_NON_ZERO",
+        "VALIDATE_NON_NEGATIVE",
+        "VALIDATE_NUMERIC",
+        "NO_OP"
+      ]
+    },
+    "SalesforceConnectorProfileCredentials":{
+      "type":"structure",
+      "members":{
+        "accessToken":{
+          "shape":"AccessToken",
+          "documentation":"<p> The credentials used to access protected Salesforce resources. </p>"
+        },
+        "refreshToken":{
+          "shape":"RefreshToken",
+          "documentation":"<p> The credentials used to acquire new access tokens. </p>"
+        },
+        "oAuthRequest":{
+          "shape":"ConnectorOAuthRequest",
+          "documentation":"<p> The OAuth requirement needed to request security tokens from the connector endpoint. </p>"
+        },
+        "clientCredentialsArn":{
+          "shape":"ClientCredentialsArn",
+          "documentation":"<p> The secret manager ARN, which contains the client ID and client secret of the connected app. </p>"
+        }
+      },
+      "documentation":"<p> The connector-specific profile credentials required when using Salesforce. </p>"
+    },
+    "SalesforceConnectorProfileProperties":{
+      "type":"structure",
+      "members":{
+        "instanceUrl":{
+          "shape":"InstanceUrl",
+          "documentation":"<p> The location of the Salesforce resource. </p>"
+        },
+        "isSandboxEnvironment":{
+          "shape":"Boolean",
+          "documentation":"<p> Indicates whether the connector profile applies to a sandbox or production environment. </p>"
+        }
+      },
+      "documentation":"<p> The connector-specific profile properties required when using Salesforce. </p>"
+    },
+    "SalesforceDestinationProperties":{
+      "type":"structure",
+      "required":["object"],
+      "members":{
+        "object":{
+          "shape":"Object",
+          "documentation":"<p> The object specified in the Salesforce flow destination. </p>"
+        },
+        "idFieldNames":{
+          "shape":"IdFieldNameList",
+          "documentation":"<p> The name of the field that Amazon AppFlow uses as an ID when performing a write operation such as update or delete. </p>"
+        },
+        "errorHandlingConfig":{
+          "shape":"ErrorHandlingConfig",
+          "documentation":"<p> The settings that determine how Amazon AppFlow handles an error when placing data in the Salesforce destination. For example, this setting would determine if the flow should fail after one insertion error, or continue and attempt to insert every record regardless of the initial failure. <code>ErrorHandlingConfig</code> is a part of the destination connector details. </p>"
+        },
+        "writeOperationType":{
+          "shape":"WriteOperationType",
+          "documentation":"<p> This specifies the type of write operation to be performed in Salesforce. When the value is <code>UPSERT</code>, then <code>idFieldNames</code> is required. </p>"
+        }
+      },
+      "documentation":"<p> The properties that are applied when Salesforce is being used as a destination. </p>"
+    },
+    "SalesforceMetadata":{
+      "type":"structure",
+      "members":{
+        "oAuthScopes":{
+          "shape":"OAuthScopeList",
+          "documentation":"<p> The desired authorization scope for the Salesforce account. </p>"
+        }
+      },
+      "documentation":"<p> The connector metadata specific to Salesforce. </p>"
+    },
+    "SalesforceSourceProperties":{
+      "type":"structure",
+      "required":["object"],
+      "members":{
+        "object":{
+          "shape":"Object",
+          "documentation":"<p> The object specified in the Salesforce flow source. </p>"
+        },
+        "enableDynamicFieldUpdate":{
+          "shape":"Boolean",
+          "documentation":"<p> The flag that enables dynamic fetching of new (recently added) fields in the Salesforce objects while running a flow. </p>"
+        },
+        "includeDeletedRecords":{
+          "shape":"Boolean",
+          "documentation":"<p> Indicates whether Amazon AppFlow includes deleted files in the flow run. </p>"
+        }
+      },
+      "documentation":"<p> The properties that are applied when Salesforce is being used as a source. </p>"
+    },
+    "ScheduleExpression":{
+      "type":"string",
+      "max":256,
+      "pattern":".*"
+    },
+    "ScheduleFrequencyType":{
+      "type":"string",
+      "enum":[
+        "BYMINUTE",
+        "HOURLY",
+        "DAILY",
+        "WEEKLY",
+        "MONTHLY",
+        "ONCE"
+      ]
+    },
+    "ScheduleOffset":{
+      "type":"long",
+      "max":36000,
+      "min":0
+    },
+    "ScheduledTriggerProperties":{
+      "type":"structure",
+      "required":["scheduleExpression"],
+      "members":{
+        "scheduleExpression":{
+          "shape":"ScheduleExpression",
+          "documentation":"<p> The scheduling expression that determines the rate at which the schedule will run, for example <code>rate(5minutes)</code>. </p>"
+        },
+        "dataPullMode":{
+          "shape":"DataPullMode",
+          "documentation":"<p> Specifies whether a scheduled flow has an incremental data transfer or a complete data transfer for each flow run. </p>"
+        },
+        "scheduleStartTime":{
+          "shape":"Date",
+          "documentation":"<p> Specifies the scheduled start time for a schedule-triggered flow. </p>"
+        },
+        "scheduleEndTime":{
+          "shape":"Date",
+          "documentation":"<p> Specifies the scheduled end time for a schedule-triggered flow. </p>"
+        },
+        "timezone":{
+          "shape":"Timezone",
+          "documentation":"<p> Specifies the time zone used when referring to the date and time of a scheduled-triggered flow, such as <code>America/New_York</code>. </p>"
+        },
+        "scheduleOffset":{
+          "shape":"ScheduleOffset",
+          "documentation":"<p> Specifies the optional offset that is added to the time interval for a schedule-triggered flow. </p>",
+          "box":true
+        },
+        "firstExecutionFrom":{
+          "shape":"Date",
+          "documentation":"<p> Specifies the date range for the records to import from the connector in the first flow run. </p>"
+        }
+      },
+      "documentation":"<p> Specifies the configuration details of a schedule-triggered flow as defined by the user. Currently, these settings only apply to the <code>Scheduled</code> trigger type. </p>"
+    },
+    "SchedulingFrequencyTypeList":{
+      "type":"list",
+      "member":{"shape":"ScheduleFrequencyType"}
+    },
+    "SecretKey":{
+      "type":"string",
+      "max":256,
+      "pattern":"\\S+",
+      "sensitive":true
+    },
+    "ServiceNowConnectorOperator":{
+      "type":"string",
+      "enum":[
+        "PROJECTION",
+        "CONTAINS",
+        "LESS_THAN",
+        "GREATER_THAN",
+        "BETWEEN",
+        "LESS_THAN_OR_EQUAL_TO",
+        "GREATER_THAN_OR_EQUAL_TO",
+        "EQUAL_TO",
+        "NOT_EQUAL_TO",
+        "ADDITION",
+        "MULTIPLICATION",
+        "DIVISION",
+        "SUBTRACTION",
+        "MASK_ALL",
+        "MASK_FIRST_N",
+        "MASK_LAST_N",
+        "VALIDATE_NON_NULL",
+        "VALIDATE_NON_ZERO",
+        "VALIDATE_NON_NEGATIVE",
+        "VALIDATE_NUMERIC",
+        "NO_OP"
+      ]
+    },
+    "ServiceNowConnectorProfileCredentials":{
+      "type":"structure",
+      "required":[
+        "username",
+        "password"
+      ],
+      "members":{
+        "username":{
+          "shape":"Username",
+          "documentation":"<p> The name of the user. </p>"
+        },
+        "password":{
+          "shape":"Password",
+          "documentation":"<p> The password that corresponds to the user name. </p>"
+        }
+      },
+      "documentation":"<p> The connector-specific profile credentials required when using ServiceNow. </p>"
+    },
+    "ServiceNowConnectorProfileProperties":{
+      "type":"structure",
+      "required":["instanceUrl"],
+      "members":{
+        "instanceUrl":{
+          "shape":"InstanceUrl",
+          "documentation":"<p> The location of the ServiceNow resource. </p>"
+        }
+      },
+      "documentation":"<p> The connector-specific profile properties required when using ServiceNow. </p>"
+    },
+    "ServiceNowMetadata":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> The connector metadata specific to ServiceNow. </p>"
+    },
+    "ServiceNowSourceProperties":{
+      "type":"structure",
+      "required":["object"],
+      "members":{
+        "object":{
+          "shape":"Object",
+          "documentation":"<p> The object specified in the ServiceNow flow source. </p>"
+        }
+      },
+      "documentation":"<p> The properties that are applied when ServiceNow is being used as a source. </p>"
+    },
+    "ServiceQuotaExceededException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p> The request would cause a service quota (such as the number of flows) to be exceeded. </p>",
+      "error":{"httpStatusCode":402},
+      "exception":true
+    },
+    "SingularConnectorOperator":{
+      "type":"string",
+      "enum":[
+        "PROJECTION",
+        "EQUAL_TO",
+        "ADDITION",
+        "MULTIPLICATION",
+        "DIVISION",
+        "SUBTRACTION",
+        "MASK_ALL",
+        "MASK_FIRST_N",
+        "MASK_LAST_N",
+        "VALIDATE_NON_NULL",
+        "VALIDATE_NON_ZERO",
+        "VALIDATE_NON_NEGATIVE",
+        "VALIDATE_NUMERIC",
+        "NO_OP"
+      ]
+    },
+    "SingularConnectorProfileCredentials":{
+      "type":"structure",
+      "required":["apiKey"],
+      "members":{
+        "apiKey":{
+          "shape":"ApiKey",
+          "documentation":"<p> A unique alphanumeric identifier used to authenticate a user, developer, or calling program to your API. </p>"
+        }
+      },
+      "documentation":"<p> The connector-specific profile credentials required when using Singular. </p>"
+    },
+    "SingularConnectorProfileProperties":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> The connector-specific profile properties required when using Singular. </p>"
+    },
+    "SingularMetadata":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> The connector metadata specific to Singular. </p>"
+    },
+    "SingularSourceProperties":{
+      "type":"structure",
+      "required":["object"],
+      "members":{
+        "object":{
+          "shape":"Object",
+          "documentation":"<p> The object specified in the Singular flow source. </p>"
+        }
+      },
+      "documentation":"<p> The properties that are applied when Singular is being used as a source. </p>"
+    },
+    "SlackConnectorOperator":{
+      "type":"string",
+      "enum":[
+        "PROJECTION",
+        "LESS_THAN",
+        "GREATER_THAN",
+        "BETWEEN",
+        "LESS_THAN_OR_EQUAL_TO",
+        "GREATER_THAN_OR_EQUAL_TO",
+        "EQUAL_TO",
+        "ADDITION",
+        "MULTIPLICATION",
+        "DIVISION",
+        "SUBTRACTION",
+        "MASK_ALL",
+        "MASK_FIRST_N",
+        "MASK_LAST_N",
+        "VALIDATE_NON_NULL",
+        "VALIDATE_NON_ZERO",
+        "VALIDATE_NON_NEGATIVE",
+        "VALIDATE_NUMERIC",
+        "NO_OP"
+      ]
+    },
+    "SlackConnectorProfileCredentials":{
+      "type":"structure",
+      "required":[
+        "clientId",
+        "clientSecret"
+      ],
+      "members":{
+        "clientId":{
+          "shape":"ClientId",
+          "documentation":"<p> The identifier for the client. </p>"
+        },
+        "clientSecret":{
+          "shape":"ClientSecret",
+          "documentation":"<p> The client secret used by the OAuth client to authenticate to the authorization server. </p>"
+        },
+        "accessToken":{
+          "shape":"AccessToken",
+          "documentation":"<p> The credentials used to access protected Slack resources. </p>"
+        },
+        "oAuthRequest":{
+          "shape":"ConnectorOAuthRequest",
+          "documentation":"<p> The OAuth requirement needed to request security tokens from the connector endpoint. </p>"
+        }
+      },
+      "documentation":"<p> The connector-specific profile credentials required when using Slack. </p>"
+    },
+    "SlackConnectorProfileProperties":{
+      "type":"structure",
+      "required":["instanceUrl"],
+      "members":{
+        "instanceUrl":{
+          "shape":"InstanceUrl",
+          "documentation":"<p> The location of the Slack resource. </p>"
+        }
+      },
+      "documentation":"<p> The connector-specific profile properties required when using Slack. </p>"
+    },
+    "SlackMetadata":{
+      "type":"structure",
+      "members":{
+        "oAuthScopes":{
+          "shape":"OAuthScopeList",
+          "documentation":"<p> The desired authorization scope for the Slack account. </p>"
+        }
+      },
+      "documentation":"<p> The connector metadata specific to Slack. </p>"
+    },
+    "SlackSourceProperties":{
+      "type":"structure",
+      "required":["object"],
+      "members":{
+        "object":{
+          "shape":"Object",
+          "documentation":"<p> The object specified in the Slack flow source. </p>"
+        }
+      },
+      "documentation":"<p> The properties that are applied when Slack is being used as a source. </p>"
+    },
+    "SnowflakeConnectorProfileCredentials":{
+      "type":"structure",
+      "required":[
+        "username",
+        "password"
+      ],
+      "members":{
+        "username":{
+          "shape":"Username",
+          "documentation":"<p> The name of the user. </p>"
+        },
+        "password":{
+          "shape":"Password",
+          "documentation":"<p> The password that corresponds to the user name. </p>"
+        }
+      },
+      "documentation":"<p> The connector-specific profile credentials required when using Snowflake. </p>"
+    },
+    "SnowflakeConnectorProfileProperties":{
+      "type":"structure",
+      "required":[
+        "warehouse",
+        "stage",
+        "bucketName"
+      ],
+      "members":{
+        "warehouse":{
+          "shape":"Warehouse",
+          "documentation":"<p> The name of the Snowflake warehouse. </p>"
+        },
+        "stage":{
+          "shape":"Stage",
+          "documentation":"<p> The name of the Amazon S3 stage that was created while setting up an Amazon S3 stage in the Snowflake account. This is written in the following format: &lt; Database&gt;&lt; Schema&gt;&lt;Stage Name&gt;. </p>"
+        },
+        "bucketName":{
+          "shape":"BucketName",
+          "documentation":"<p> The name of the Amazon S3 bucket associated with Snowflake. </p>"
+        },
+        "bucketPrefix":{
+          "shape":"BucketPrefix",
+          "documentation":"<p> The bucket path that refers to the Amazon S3 bucket associated with Snowflake. </p>"
+        },
+        "privateLinkServiceName":{
+          "shape":"PrivateLinkServiceName",
+          "documentation":"<p> The Snowflake Private Link service name to be used for private data transfers. </p>"
+        },
+        "accountName":{
+          "shape":"AccountName",
+          "documentation":"<p> The name of the account. </p>"
+        },
+        "region":{
+          "shape":"Region",
+          "documentation":"<p> The AWS Region of the Snowflake account. </p>"
+        }
+      },
+      "documentation":"<p> The connector-specific profile properties required when using Snowflake. </p>"
+    },
+    "SnowflakeDestinationProperties":{
+      "type":"structure",
+      "required":[
+        "object",
+        "intermediateBucketName"
+      ],
+      "members":{
+        "object":{
+          "shape":"Object",
+          "documentation":"<p> The object specified in the Snowflake flow destination. </p>"
+        },
+        "intermediateBucketName":{
+          "shape":"BucketName",
+          "documentation":"<p> The intermediate bucket that Amazon AppFlow uses when moving data into Snowflake. </p>"
+        },
+        "bucketPrefix":{
+          "shape":"BucketPrefix",
+          "documentation":"<p> The object key for the destination bucket in which Amazon AppFlow places the files. </p>"
+        },
+        "errorHandlingConfig":{
+          "shape":"ErrorHandlingConfig",
+          "documentation":"<p> The settings that determine how Amazon AppFlow handles an error when placing data in the Snowflake destination. For example, this setting would determine if the flow should fail after one insertion error, or continue and attempt to insert every record regardless of the initial failure. <code>ErrorHandlingConfig</code> is a part of the destination connector details. </p>"
+        }
+      },
+      "documentation":"<p> The properties that are applied when Snowflake is being used as a destination. </p>"
+    },
+    "SnowflakeMetadata":{
+      "type":"structure",
+      "members":{
+        "supportedRegions":{
+          "shape":"RegionList",
+          "documentation":"<p> Specifies the supported AWS Regions when using Snowflake. </p>"
+        }
+      },
+      "documentation":"<p> The connector metadata specific to Snowflake. </p>"
+    },
+    "SourceConnectorProperties":{
+      "type":"structure",
+      "members":{
+        "Amplitude":{
+          "shape":"AmplitudeSourceProperties",
+          "documentation":"<p> Specifies the information that is required for querying Amplitude. </p>"
+        },
+        "Datadog":{
+          "shape":"DatadogSourceProperties",
+          "documentation":"<p> Specifies the information that is required for querying Datadog. </p>"
+        },
+        "Dynatrace":{
+          "shape":"DynatraceSourceProperties",
+          "documentation":"<p> Specifies the information that is required for querying Dynatrace. </p>"
+        },
+        "GoogleAnalytics":{
+          "shape":"GoogleAnalyticsSourceProperties",
+          "documentation":"<p> Specifies the information that is required for querying Google Analytics. </p>"
+        },
+        "InforNexus":{
+          "shape":"InforNexusSourceProperties",
+          "documentation":"<p> Specifies the information that is required for querying Infor Nexus. </p>"
+        },
+        "Marketo":{
+          "shape":"MarketoSourceProperties",
+          "documentation":"<p> Specifies the information that is required for querying Marketo. </p>"
+        },
+        "S3":{
+          "shape":"S3SourceProperties",
+          "documentation":"<p> Specifies the information that is required for querying Amazon S3. </p>"
+        },
+        "Salesforce":{
+          "shape":"SalesforceSourceProperties",
+          "documentation":"<p> Specifies the information that is required for querying Salesforce. </p>"
+        },
+        "ServiceNow":{
+          "shape":"ServiceNowSourceProperties",
+          "documentation":"<p> Specifies the information that is required for querying ServiceNow. </p>"
+        },
+        "Singular":{
+          "shape":"SingularSourceProperties",
+          "documentation":"<p> Specifies the information that is required for querying Singular. </p>"
+        },
+        "Slack":{
+          "shape":"SlackSourceProperties",
+          "documentation":"<p> Specifies the information that is required for querying Slack. </p>"
+        },
+        "Trendmicro":{
+          "shape":"TrendmicroSourceProperties",
+          "documentation":"<p> Specifies the information that is required for querying Trend Micro. </p>"
+        },
+        "Veeva":{
+          "shape":"VeevaSourceProperties",
+          "documentation":"<p> Specifies the information that is required for querying Veeva. </p>"
+        },
+        "Zendesk":{
+          "shape":"ZendeskSourceProperties",
+          "documentation":"<p> Specifies the information that is required for querying Zendesk. </p>"
+        }
+      },
+      "documentation":"<p> Specifies the information that is required to query a particular connector. </p>"
+    },
+    "SourceFieldProperties":{
+      "type":"structure",
+      "members":{
+        "isRetrievable":{
+          "shape":"Boolean",
+          "documentation":"<p> Indicates whether the field can be returned in a search result. </p>"
+        },
+        "isQueryable":{
+          "shape":"Boolean",
+          "documentation":"<p> Indicates if the field can be queried. </p>"
+        }
+      },
+      "documentation":"<p> The properties that can be applied to a field when the connector is being used as a source. </p>"
+    },
+    "SourceFields":{
+      "type":"list",
+      "member":{"shape":"String"}
+    },
+    "SourceFlowConfig":{
+      "type":"structure",
+      "required":[
+        "connectorType",
+        "sourceConnectorProperties"
+      ],
+      "members":{
+        "connectorType":{
+          "shape":"ConnectorType",
+          "documentation":"<p> The type of connector, such as Salesforce, Amplitude, and so on. </p>"
+        },
+        "connectorProfileName":{
+          "shape":"ConnectorProfileName",
+          "documentation":"<p> The name of the connector profile. This name must be unique for each connector profile in the AWS account. </p>"
+        },
+        "sourceConnectorProperties":{
+          "shape":"SourceConnectorProperties",
+          "documentation":"<p> Specifies the information that is required to query a particular source connector. </p>"
+        },
+        "incrementalPullConfig":{
+          "shape":"IncrementalPullConfig",
+          "documentation":"<p> Defines the configuration for a scheduled incremental data pull. If a valid configuration is provided, the fields specified in the configuration are used when querying for the incremental data pull. </p>"
+        }
+      },
+      "documentation":"<p> Contains information about the configuration of the source connector used in the flow. </p>"
+    },
+    "Stage":{
+      "type":"string",
+      "max":512,
+      "pattern":"\\S+"
+    },
+    "StartFlowRequest":{
+      "type":"structure",
+      "required":["flowName"],
+      "members":{
+        "flowName":{
+          "shape":"FlowName",
+          "documentation":"<p> The specified name of the flow. Spaces are not allowed. Use underscores (_) or hyphens (-) only. </p>"
+        }
+      }
+    },
+    "StartFlowResponse":{
+      "type":"structure",
+      "members":{
+        "flowArn":{
+          "shape":"FlowArn",
+          "documentation":"<p> The flow's Amazon Resource Name (ARN). </p>"
+        },
+        "flowStatus":{
+          "shape":"FlowStatus",
+          "documentation":"<p> Indicates the current status of the flow. </p>"
+        },
+        "executionId":{
+          "shape":"ExecutionId",
+          "documentation":"<p> Returns the internal execution ID of an on-demand flow when the flow is started. For scheduled or event-triggered flows, this value is null. </p>"
+        }
+      }
+    },
+    "StopFlowRequest":{
+      "type":"structure",
+      "required":["flowName"],
+      "members":{
+        "flowName":{
+          "shape":"FlowName",
+          "documentation":"<p> The specified name of the flow. Spaces are not allowed. Use underscores (_) or hyphens (-) only. </p>"
+        }
+      }
+    },
+    "StopFlowResponse":{
+      "type":"structure",
+      "members":{
+        "flowArn":{
+          "shape":"FlowArn",
+          "documentation":"<p> The flow's Amazon Resource Name (ARN). </p>"
+        },
+        "flowStatus":{
+          "shape":"FlowStatus",
+          "documentation":"<p> Indicates the current status of the flow. </p>"
+        }
+      }
+    },
+    "String":{
+      "type":"string",
+      "max":2048,
+      "pattern":".*"
+    },
+    "SupportedFieldTypeDetails":{
+      "type":"structure",
+      "required":["v1"],
+      "members":{
+        "v1":{
+          "shape":"FieldTypeDetails",
+          "documentation":"<p> The initial supported version for <code>fieldType</code>. If this is later changed to a different version, v2 will be introduced. </p>"
+        }
+      },
+      "documentation":"<p> Contains details regarding all the supported <code>FieldTypes</code> and their corresponding <code>filterOperators</code> and <code>supportedValues</code>. </p>"
+    },
+    "SupportedValueList":{
+      "type":"list",
+      "member":{"shape":"Value"}
+    },
+    "SupportedWriteOperationList":{
+      "type":"list",
+      "member":{"shape":"WriteOperationType"}
+    },
+    "TagKey":{
+      "type":"string",
+      "max":128,
+      "min":1,
+      "pattern":"^(?!aws:)[a-zA-Z+-=._:/]+$"
+    },
+    "TagKeyList":{
+      "type":"list",
+      "member":{"shape":"TagKey"},
+      "max":50,
+      "min":0
+    },
+    "TagMap":{
+      "type":"map",
+      "key":{"shape":"TagKey"},
+      "value":{"shape":"TagValue"},
+      "max":50,
+      "min":0
+    },
+    "TagResourceRequest":{
+      "type":"structure",
+      "required":[
+        "resourceArn",
+        "tags"
+      ],
+      "members":{
+        "resourceArn":{
+          "shape":"ARN",
+          "documentation":"<p> The Amazon Resource Name (ARN) of the flow that you want to tag. </p>",
+          "location":"uri",
+          "locationName":"resourceArn"
+        },
+        "tags":{
+          "shape":"TagMap",
+          "documentation":"<p> The tags used to organize, track, or control access for your flow. </p>"
+        }
+      }
+    },
+    "TagResourceResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "TagValue":{
+      "type":"string",
+      "max":256,
+      "pattern":"[\\s\\w+-=\\.:/@]*"
+    },
+    "Task":{
+      "type":"structure",
+      "required":[
+        "sourceFields",
+        "taskType"
+      ],
+      "members":{
+        "sourceFields":{
+          "shape":"SourceFields",
+          "documentation":"<p> The source fields to which a particular task is applied. </p>"
+        },
+        "connectorOperator":{
+          "shape":"ConnectorOperator",
+          "documentation":"<p> The operation to be performed on the provided source fields. </p>"
+        },
+        "destinationField":{
+          "shape":"DestinationField",
+          "documentation":"<p> A field in a destination connector, or a field value against which Amazon AppFlow validates a source field. </p>"
+        },
+        "taskType":{
+          "shape":"TaskType",
+          "documentation":"<p> Specifies the particular task implementation that Amazon AppFlow performs. </p>"
+        },
+        "taskProperties":{
+          "shape":"TaskPropertiesMap",
+          "documentation":"<p> A map used to store task-related information. The execution service looks for particular information based on the <code>TaskType</code>. </p>"
+        }
+      },
+      "documentation":"<p> A class for modeling different type of tasks. Task implementation varies based on the <code>TaskType</code>. </p>"
+    },
+    "TaskPropertiesMap":{
+      "type":"map",
+      "key":{"shape":"OperatorPropertiesKeys"},
+      "value":{"shape":"Property"}
+    },
+    "TaskType":{
+      "type":"string",
+      "enum":[
+        "Arithmetic",
+        "Filter",
+        "Map",
+        "Map_all",
+        "Mask",
+        "Merge",
+        "Truncate",
+        "Validate"
+      ]
+    },
+    "Tasks":{
+      "type":"list",
+      "member":{"shape":"Task"}
+    },
+    "Timezone":{
+      "type":"string",
+      "max":256,
+      "pattern":".*"
+    },
+    "TrendmicroConnectorOperator":{
+      "type":"string",
+      "enum":[
+        "PROJECTION",
+        "EQUAL_TO",
+        "ADDITION",
+        "MULTIPLICATION",
+        "DIVISION",
+        "SUBTRACTION",
+        "MASK_ALL",
+        "MASK_FIRST_N",
+        "MASK_LAST_N",
+        "VALIDATE_NON_NULL",
+        "VALIDATE_NON_ZERO",
+        "VALIDATE_NON_NEGATIVE",
+        "VALIDATE_NUMERIC",
+        "NO_OP"
+      ]
+    },
+    "TrendmicroConnectorProfileCredentials":{
+      "type":"structure",
+      "required":["apiSecretKey"],
+      "members":{
+        "apiSecretKey":{
+          "shape":"ApiSecretKey",
+          "documentation":"<p> The Secret Access Key portion of the credentials. </p>"
+        }
+      },
+      "documentation":"<p> The connector-specific profile credentials required when using Trend Micro. </p>"
+    },
+    "TrendmicroConnectorProfileProperties":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> The connector-specific profile properties required when using Trend Micro. </p>"
+    },
+    "TrendmicroMetadata":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> The connector metadata specific to Trend Micro. </p>"
+    },
+    "TrendmicroSourceProperties":{
+      "type":"structure",
+      "required":["object"],
+      "members":{
+        "object":{
+          "shape":"Object",
+          "documentation":"<p> The object specified in the Trend Micro flow source. </p>"
+        }
+      },
+      "documentation":"<p> The properties that are applied when using Trend Micro as a flow source. </p>"
+    },
+    "TriggerConfig":{
+      "type":"structure",
+      "required":["triggerType"],
+      "members":{
+        "triggerType":{
+          "shape":"TriggerType",
+          "documentation":"<p> Specifies the type of flow trigger. This can be <code>OnDemand</code>, <code>Scheduled</code>, or <code>Event</code>. </p>"
+        },
+        "triggerProperties":{
+          "shape":"TriggerProperties",
+          "documentation":"<p> Specifies the configuration details of a schedule-triggered flow as defined by the user. Currently, these settings only apply to the <code>Scheduled</code> trigger type. </p>"
+        }
+      },
+      "documentation":"<p> The trigger settings that determine how and when Amazon AppFlow runs the specified flow. </p>"
+    },
+    "TriggerProperties":{
+      "type":"structure",
+      "members":{
+        "Scheduled":{
+          "shape":"ScheduledTriggerProperties",
+          "documentation":"<p> Specifies the configuration details of a schedule-triggered flow as defined by the user. </p>"
+        }
+      },
+      "documentation":"<p> Specifies the configuration details that control the trigger for a flow. Currently, these settings only apply to the <code>Scheduled</code> trigger type. </p>"
+    },
+    "TriggerType":{
+      "type":"string",
+      "enum":[
+        "Scheduled",
+        "Event",
+        "OnDemand"
+      ]
+    },
+    "TriggerTypeList":{
+      "type":"list",
+      "member":{"shape":"TriggerType"}
+    },
+    "UnsupportedOperationException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p> The requested operation is not supported for the current flow. </p>",
+      "error":{"httpStatusCode":400},
+      "exception":true
+    },
+    "UntagResourceRequest":{
+      "type":"structure",
+      "required":[
+        "resourceArn",
+        "tagKeys"
+      ],
+      "members":{
+        "resourceArn":{
+          "shape":"ARN",
+          "documentation":"<p> The Amazon Resource Name (ARN) of the flow that you want to untag. </p>",
+          "location":"uri",
+          "locationName":"resourceArn"
+        },
+        "tagKeys":{
+          "shape":"TagKeyList",
+          "documentation":"<p> The tag keys associated with the tag that you want to remove from your flow. </p>",
+          "location":"querystring",
+          "locationName":"tagKeys"
+        }
+      }
+    },
+    "UntagResourceResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "UpdateConnectorProfileRequest":{
+      "type":"structure",
+      "required":[
+        "connectorProfileName",
+        "connectionMode",
+        "connectorProfileConfig"
+      ],
+      "members":{
+        "connectorProfileName":{
+          "shape":"ConnectorProfileName",
+          "documentation":"<p> The name of the connector profile and is unique for each <code>ConnectorProfile</code> in the AWS Account. </p>"
+        },
+        "connectionMode":{
+          "shape":"ConnectionMode",
+          "documentation":"<p> Indicates the connection mode and if it is public or private. </p>"
+        },
+        "connectorProfileConfig":{
+          "shape":"ConnectorProfileConfig",
+          "documentation":"<p> Defines the connector-specific profile configuration and credentials. </p>"
+        }
+      }
+    },
+    "UpdateConnectorProfileResponse":{
+      "type":"structure",
+      "members":{
+        "connectorProfileArn":{
+          "shape":"ConnectorProfileArn",
+          "documentation":"<p> The Amazon Resource Name (ARN) of the connector profile. </p>"
+        }
+      }
+    },
+    "UpdateFlowRequest":{
+      "type":"structure",
+      "required":[
+        "flowName",
+        "triggerConfig",
+        "destinationFlowConfigList",
+        "tasks"
+      ],
+      "members":{
+        "flowName":{
+          "shape":"FlowName",
+          "documentation":"<p> The specified name of the flow. Spaces are not allowed. Use underscores (_) or hyphens (-) only. </p>"
+        },
+        "description":{
+          "shape":"FlowDescription",
+          "documentation":"<p> A description of the flow. </p>"
+        },
+        "triggerConfig":{
+          "shape":"TriggerConfig",
+          "documentation":"<p> The trigger settings that determine how and when the flow runs. </p>"
+        },
+        "sourceFlowConfig":{"shape":"SourceFlowConfig"},
+        "destinationFlowConfigList":{
+          "shape":"DestinationFlowConfigList",
+          "documentation":"<p> The configuration that controls how Amazon AppFlow transfers data to the destination connector. </p>"
+        },
+        "tasks":{
+          "shape":"Tasks",
+          "documentation":"<p> A list of tasks that Amazon AppFlow performs while transferring the data in the flow run. </p>"
+        }
+      }
+    },
+    "UpdateFlowResponse":{
+      "type":"structure",
+      "members":{
+        "flowStatus":{
+          "shape":"FlowStatus",
+          "documentation":"<p>Indicates the current status of the flow. </p>"
+        }
+      }
+    },
+    "UpdatedBy":{
+      "type":"string",
+      "max":256,
+      "pattern":"\\S+"
+    },
+    "UpsolverBucketName":{
+      "type":"string",
+      "max":63,
+      "min":16,
+      "pattern":"^(upsolver-appflow)\\S*"
+    },
+    "UpsolverDestinationProperties":{
+      "type":"structure",
+      "required":[
+        "bucketName",
+        "s3OutputFormatConfig"
+      ],
+      "members":{
+        "bucketName":{
+          "shape":"UpsolverBucketName",
+          "documentation":"<p> The Upsolver Amazon S3 bucket name in which Amazon AppFlow places the transferred data. </p>"
+        },
+        "bucketPrefix":{
+          "shape":"BucketPrefix",
+          "documentation":"<p> The object key for the destination Upsolver Amazon S3 bucket in which Amazon AppFlow places the files. </p>"
+        },
+        "s3OutputFormatConfig":{
+          "shape":"UpsolverS3OutputFormatConfig",
+          "documentation":"<p> The configuration that determines how data is formatted when Upsolver is used as the flow destination. </p>"
+        }
+      },
+      "documentation":"<p> The properties that are applied when Upsolver is used as a destination. </p>"
+    },
+    "UpsolverMetadata":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> The connector metadata specific to Upsolver. </p>"
+    },
+    "UpsolverS3OutputFormatConfig":{
+      "type":"structure",
+      "required":["prefixConfig"],
+      "members":{
+        "fileType":{
+          "shape":"FileType",
+          "documentation":"<p> Indicates the file type that Amazon AppFlow places in the Upsolver Amazon S3 bucket. </p>"
+        },
+        "prefixConfig":{"shape":"PrefixConfig"},
+        "aggregationConfig":{"shape":"AggregationConfig"}
+      },
+      "documentation":"<p> The configuration that determines how Amazon AppFlow formats the flow output data when Upsolver is used as the destination. </p>"
+    },
+    "Username":{
+      "type":"string",
+      "max":512,
+      "pattern":"\\S+"
+    },
+    "ValidationException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p> The request has invalid or missing parameters. </p>",
+      "error":{"httpStatusCode":400},
+      "exception":true
+    },
+    "Value":{
+      "type":"string",
+      "max":128,
+      "pattern":"\\S+"
+    },
+    "VeevaConnectorOperator":{
+      "type":"string",
+      "enum":[
+        "PROJECTION",
+        "LESS_THAN",
+        "GREATER_THAN",
+        "CONTAINS",
+        "BETWEEN",
+        "LESS_THAN_OR_EQUAL_TO",
+        "GREATER_THAN_OR_EQUAL_TO",
+        "EQUAL_TO",
+        "NOT_EQUAL_TO",
+        "ADDITION",
+        "MULTIPLICATION",
+        "DIVISION",
+        "SUBTRACTION",
+        "MASK_ALL",
+        "MASK_FIRST_N",
+        "MASK_LAST_N",
+        "VALIDATE_NON_NULL",
+        "VALIDATE_NON_ZERO",
+        "VALIDATE_NON_NEGATIVE",
+        "VALIDATE_NUMERIC",
+        "NO_OP"
+      ]
+    },
+    "VeevaConnectorProfileCredentials":{
+      "type":"structure",
+      "required":[
+        "username",
+        "password"
+      ],
+      "members":{
+        "username":{
+          "shape":"Username",
+          "documentation":"<p> The name of the user. </p>"
+        },
+        "password":{
+          "shape":"Password",
+          "documentation":"<p> The password that corresponds to the user name. </p>"
+        }
+      },
+      "documentation":"<p> The connector-specific profile credentials required when using Veeva. </p>"
+    },
+    "VeevaConnectorProfileProperties":{
+      "type":"structure",
+      "required":["instanceUrl"],
+      "members":{
+        "instanceUrl":{
+          "shape":"InstanceUrl",
+          "documentation":"<p> The location of the Veeva resource. </p>"
+        }
+      },
+      "documentation":"<p> The connector-specific profile properties required when using Veeva. </p>"
+    },
+    "VeevaMetadata":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> The connector metadata specific to Veeva. </p>"
+    },
+    "VeevaSourceProperties":{
+      "type":"structure",
+      "required":["object"],
+      "members":{
+        "object":{
+          "shape":"Object",
+          "documentation":"<p> The object specified in the Veeva flow source. </p>"
+        }
+      },
+      "documentation":"<p> The properties that are applied when using Veeva as a flow source. </p>"
+    },
+    "Warehouse":{
+      "type":"string",
+      "max":512,
+      "pattern":"[\\s\\w/!@#+=.-]*"
+    },
+    "WriteOperationType":{
+      "type":"string",
+      "documentation":"<p> The possible write operations in the destination connector. When this value is not provided, this defaults to the <code>INSERT</code> operation. </p>",
+      "enum":[
+        "INSERT",
+        "UPSERT",
+        "UPDATE"
+      ]
+    },
+    "ZendeskConnectorOperator":{
+      "type":"string",
+      "enum":[
+        "PROJECTION",
+        "GREATER_THAN",
+        "ADDITION",
+        "MULTIPLICATION",
+        "DIVISION",
+        "SUBTRACTION",
+        "MASK_ALL",
+        "MASK_FIRST_N",
+        "MASK_LAST_N",
+        "VALIDATE_NON_NULL",
+        "VALIDATE_NON_ZERO",
+        "VALIDATE_NON_NEGATIVE",
+        "VALIDATE_NUMERIC",
+        "NO_OP"
+      ]
+    },
+    "ZendeskConnectorProfileCredentials":{
+      "type":"structure",
+      "required":[
+        "clientId",
+        "clientSecret"
+      ],
+      "members":{
+        "clientId":{
+          "shape":"ClientId",
+          "documentation":"<p> The identifier for the desired client. </p>"
+        },
+        "clientSecret":{
+          "shape":"ClientSecret",
+          "documentation":"<p> The client secret used by the OAuth client to authenticate to the authorization server. </p>"
+        },
+        "accessToken":{
+          "shape":"AccessToken",
+          "documentation":"<p> The credentials used to access protected Zendesk resources. </p>"
+        },
+        "oAuthRequest":{
+          "shape":"ConnectorOAuthRequest",
+          "documentation":"<p> The OAuth requirement needed to request security tokens from the connector endpoint. </p>"
+        }
+      },
+      "documentation":"<p> The connector-specific profile credentials required when using Zendesk. </p>"
+    },
+    "ZendeskConnectorProfileProperties":{
+      "type":"structure",
+      "required":["instanceUrl"],
+      "members":{
+        "instanceUrl":{
+          "shape":"InstanceUrl",
+          "documentation":"<p> The location of the Zendesk resource. </p>"
+        }
+      },
+      "documentation":"<p> The connector-specific profile properties required when using Zendesk. </p>"
+    },
+    "ZendeskDestinationProperties":{
+      "type":"structure",
+      "required":["object"],
+      "members":{
+        "object":{
+          "shape":"Object",
+          "documentation":"<p>The object specified in the Zendesk flow destination.</p>"
+        },
+        "idFieldNames":{"shape":"IdFieldNameList"},
+        "errorHandlingConfig":{"shape":"ErrorHandlingConfig"},
+        "writeOperationType":{"shape":"WriteOperationType"}
+      },
+      "documentation":"<p>The properties that are applied when Zendesk is used as a destination.</p>"
+    },
+    "ZendeskMetadata":{
+      "type":"structure",
+      "members":{
+        "oAuthScopes":{
+          "shape":"OAuthScopeList",
+          "documentation":"<p> The desired authorization scope for the Zendesk account. </p>"
+        }
+      },
+      "documentation":"<p> The connector metadata specific to Zendesk. </p>"
+    },
+    "ZendeskSourceProperties":{
+      "type":"structure",
+      "required":["object"],
+      "members":{
+        "object":{
+          "shape":"Object",
+          "documentation":"<p> The object specified in the Zendesk flow source. </p>"
+        }
+      },
+      "documentation":"<p> The properties that are applied when using Zendesk as a flow source. </p>"
+    }
+  },
+  "documentation":"<p>Welcome to the Amazon AppFlow API reference. This guide is for developers who need detailed information about the Amazon AppFlow API operations, data types, and errors. </p> <p>Amazon AppFlow is a fully managed integration service that enables you to securely transfer data between software as a service (SaaS) applications like Salesforce, Marketo, Slack, and ServiceNow, and AWS services like Amazon S3 and Amazon Redshift. </p> <p>Use the following links to get started on the Amazon AppFlow API:</p> <ul> <li> <p> <a href=\"https://docs.aws.amazon.com/appflow/1.0/APIReference/API_Operations.html\">Actions</a>: An alphabetical list of all Amazon AppFlow API operations.</p> </li> <li> <p> <a href=\"https://docs.aws.amazon.com/appflow/1.0/APIReference/API_Types.html\">Data types</a>: An alphabetical list of all Amazon AppFlow data types.</p> </li> <li> <p> <a href=\"https://docs.aws.amazon.com/appflow/1.0/APIReference/CommonParameters.html\">Common parameters</a>: Parameters that all Query operations can use.</p> </li> <li> <p> <a href=\"https://docs.aws.amazon.com/appflow/1.0/APIReference/CommonErrors.html\">Common errors</a>: Client and server errors that all operations can return.</p> </li> </ul> <p>If you're new to Amazon AppFlow, we recommend that you review the <a href=\"https://docs.aws.amazon.com/appflow/latest/userguide/what-is-appflow.html\">Amazon AppFlow User Guide</a>.</p> <p>Amazon AppFlow API users can use vendor-specific mechanisms for OAuth, and include applicable OAuth attributes (such as <code>auth-code</code> and <code>redirecturi</code>) with the connector-specific <code>ConnectorProfileProperties</code> when creating a new connector profile using Amazon AppFlow API operations. For example, Salesforce users can refer to the <a href=\"https://help.salesforce.com/articleView?id=remoteaccess_authenticate.htm\"> <i>Authorize Apps with OAuth</i> </a> documentation.</p>"
+}

+ 3 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appintegrations/2020-07-29/paginators-1.json

@@ -0,0 +1,3 @@
+{
+  "pagination": {}
+}

+ 675 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appintegrations/2020-07-29/service-2.json

@@ -0,0 +1,675 @@
+{
+  "version":"2.0",
+  "metadata":{
+    "apiVersion":"2020-07-29",
+    "endpointPrefix":"app-integrations",
+    "jsonVersion":"1.1",
+    "protocol":"rest-json",
+    "serviceFullName":"Amazon AppIntegrations Service",
+    "serviceId":"AppIntegrations",
+    "signatureVersion":"v4",
+    "signingName":"app-integrations",
+    "uid":"appintegrations-2020-07-29"
+  },
+  "operations":{
+    "CreateEventIntegration":{
+      "name":"CreateEventIntegration",
+      "http":{
+        "method":"POST",
+        "requestUri":"/eventIntegrations"
+      },
+      "input":{"shape":"CreateEventIntegrationRequest"},
+      "output":{"shape":"CreateEventIntegrationResponse"},
+      "errors":[
+        {"shape":"InternalServiceError"},
+        {"shape":"ResourceQuotaExceededException"},
+        {"shape":"DuplicateResourceException"},
+        {"shape":"ThrottlingException"},
+        {"shape":"InvalidRequestException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>The Amazon AppIntegrations APIs are in preview release and are subject to change.</p> <p>Creates an EventIntegration, given a specified name, description, and a reference to an Amazon Eventbridge bus in your account and a partner event source that will push events to that bus. No objects are created in the your account, only metadata that is persisted on the EventIntegration control plane.</p>"
+    },
+    "DeleteEventIntegration":{
+      "name":"DeleteEventIntegration",
+      "http":{
+        "method":"DELETE",
+        "requestUri":"/eventIntegrations/{Name}"
+      },
+      "input":{"shape":"DeleteEventIntegrationRequest"},
+      "output":{"shape":"DeleteEventIntegrationResponse"},
+      "errors":[
+        {"shape":"InternalServiceError"},
+        {"shape":"ThrottlingException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidRequestException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>The Amazon AppIntegrations APIs are in preview release and are subject to change.</p> <p>Deletes the specified existing event integration. If the event integration is associated with clients, the request is rejected.</p>"
+    },
+    "GetEventIntegration":{
+      "name":"GetEventIntegration",
+      "http":{
+        "method":"GET",
+        "requestUri":"/eventIntegrations/{Name}"
+      },
+      "input":{"shape":"GetEventIntegrationRequest"},
+      "output":{"shape":"GetEventIntegrationResponse"},
+      "errors":[
+        {"shape":"InternalServiceError"},
+        {"shape":"ThrottlingException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidRequestException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>The Amazon AppIntegrations APIs are in preview release and are subject to change.</p> <p>Return information about the event integration.</p>"
+    },
+    "ListEventIntegrationAssociations":{
+      "name":"ListEventIntegrationAssociations",
+      "http":{
+        "method":"GET",
+        "requestUri":"/eventIntegrations/{Name}/associations"
+      },
+      "input":{"shape":"ListEventIntegrationAssociationsRequest"},
+      "output":{"shape":"ListEventIntegrationAssociationsResponse"},
+      "errors":[
+        {"shape":"InternalServiceError"},
+        {"shape":"ThrottlingException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidRequestException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>The Amazon AppIntegrations APIs are in preview release and are subject to change.</p> <p>Returns a paginated list of event integration associations in the account. </p>"
+    },
+    "ListEventIntegrations":{
+      "name":"ListEventIntegrations",
+      "http":{
+        "method":"GET",
+        "requestUri":"/eventIntegrations"
+      },
+      "input":{"shape":"ListEventIntegrationsRequest"},
+      "output":{"shape":"ListEventIntegrationsResponse"},
+      "errors":[
+        {"shape":"InternalServiceError"},
+        {"shape":"ThrottlingException"},
+        {"shape":"InvalidRequestException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>The Amazon AppIntegrations APIs are in preview release and are subject to change.</p> <p>Returns a paginated list of event integrations in the account.</p>"
+    },
+    "ListTagsForResource":{
+      "name":"ListTagsForResource",
+      "http":{
+        "method":"GET",
+        "requestUri":"/tags/{resourceArn}"
+      },
+      "input":{"shape":"ListTagsForResourceRequest"},
+      "output":{"shape":"ListTagsForResourceResponse"},
+      "errors":[
+        {"shape":"InvalidRequestException"},
+        {"shape":"InternalServiceError"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ThrottlingException"}
+      ],
+      "documentation":"<p>The Amazon AppIntegrations APIs are in preview release and are subject to change.</p> <p>Lists the tags for the specified resource.</p>"
+    },
+    "TagResource":{
+      "name":"TagResource",
+      "http":{
+        "method":"POST",
+        "requestUri":"/tags/{resourceArn}"
+      },
+      "input":{"shape":"TagResourceRequest"},
+      "output":{"shape":"TagResourceResponse"},
+      "errors":[
+        {"shape":"InvalidRequestException"},
+        {"shape":"InternalServiceError"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ThrottlingException"}
+      ],
+      "documentation":"<p>The Amazon AppIntegrations APIs are in preview release and are subject to change.</p> <p>Adds the specified tags to the specified resource.</p>"
+    },
+    "UntagResource":{
+      "name":"UntagResource",
+      "http":{
+        "method":"DELETE",
+        "requestUri":"/tags/{resourceArn}"
+      },
+      "input":{"shape":"UntagResourceRequest"},
+      "output":{"shape":"UntagResourceResponse"},
+      "errors":[
+        {"shape":"InvalidRequestException"},
+        {"shape":"InternalServiceError"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ThrottlingException"}
+      ],
+      "documentation":"<p>The Amazon AppIntegrations APIs are in preview release and are subject to change.</p> <p>Removes the specified tags from the specified resource.</p>"
+    },
+    "UpdateEventIntegration":{
+      "name":"UpdateEventIntegration",
+      "http":{
+        "method":"PATCH",
+        "requestUri":"/eventIntegrations/{Name}"
+      },
+      "input":{"shape":"UpdateEventIntegrationRequest"},
+      "output":{"shape":"UpdateEventIntegrationResponse"},
+      "errors":[
+        {"shape":"InternalServiceError"},
+        {"shape":"ThrottlingException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidRequestException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>The Amazon AppIntegrations APIs are in preview release and are subject to change.</p> <p>Updates the description of an event integration.</p>"
+    }
+  },
+  "shapes":{
+    "AccessDeniedException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"Message"}
+      },
+      "documentation":"<p>You do not have sufficient access to perform this action.</p>",
+      "error":{"httpStatusCode":403},
+      "exception":true
+    },
+    "Arn":{
+      "type":"string",
+      "max":2048,
+      "min":1,
+      "pattern":"^arn:aws:[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,1023}$"
+    },
+    "ClientAssociationMetadata":{
+      "type":"map",
+      "key":{"shape":"NonBlankString"},
+      "value":{"shape":"NonBlankString"}
+    },
+    "ClientId":{
+      "type":"string",
+      "max":255,
+      "min":1,
+      "pattern":".*"
+    },
+    "CreateEventIntegrationRequest":{
+      "type":"structure",
+      "required":[
+        "Name",
+        "EventFilter",
+        "EventBridgeBus"
+      ],
+      "members":{
+        "Name":{
+          "shape":"Name",
+          "documentation":"<p>The name of the event integration.</p>"
+        },
+        "Description":{
+          "shape":"Description",
+          "documentation":"<p>The description of the event integration.</p>"
+        },
+        "EventFilter":{
+          "shape":"EventFilter",
+          "documentation":"<p>The event filter.</p>"
+        },
+        "EventBridgeBus":{
+          "shape":"EventBridgeBus",
+          "documentation":"<p>The Eventbridge bus.</p>"
+        },
+        "ClientToken":{
+          "shape":"IdempotencyToken",
+          "documentation":"<p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request.</p>",
+          "idempotencyToken":true
+        },
+        "Tags":{
+          "shape":"TagMap",
+          "documentation":"<p>One or more tags.</p>"
+        }
+      }
+    },
+    "CreateEventIntegrationResponse":{
+      "type":"structure",
+      "members":{
+        "EventIntegrationArn":{
+          "shape":"Arn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the event integration. </p>"
+        }
+      }
+    },
+    "DeleteEventIntegrationRequest":{
+      "type":"structure",
+      "required":["Name"],
+      "members":{
+        "Name":{
+          "shape":"Name",
+          "documentation":"<p>The name of the event integration.</p>",
+          "location":"uri",
+          "locationName":"Name"
+        }
+      }
+    },
+    "DeleteEventIntegrationResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "Description":{
+      "type":"string",
+      "max":1000,
+      "min":1,
+      "pattern":".*"
+    },
+    "DuplicateResourceException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"Message"}
+      },
+      "documentation":"<p>A resource with the specified name already exists.</p>",
+      "error":{"httpStatusCode":409},
+      "exception":true
+    },
+    "EventBridgeBus":{
+      "type":"string",
+      "max":255,
+      "min":1,
+      "pattern":"^[a-zA-Z0-9\\/\\._\\-]+$"
+    },
+    "EventBridgeRuleName":{
+      "type":"string",
+      "max":2048,
+      "min":1,
+      "pattern":"^[a-zA-Z0-9\\/\\._\\-]+$"
+    },
+    "EventFilter":{
+      "type":"structure",
+      "required":["Source"],
+      "members":{
+        "Source":{
+          "shape":"Source",
+          "documentation":"<p>The source of the events.</p>"
+        }
+      },
+      "documentation":"<p>The Amazon AppIntegrations APIs are in preview release and are subject to change.</p> <p>The event filter.</p>"
+    },
+    "EventIntegration":{
+      "type":"structure",
+      "members":{
+        "EventIntegrationArn":{
+          "shape":"Arn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the event integration.</p>"
+        },
+        "Name":{
+          "shape":"Name",
+          "documentation":"<p>The name of the event integration.</p>"
+        },
+        "Description":{
+          "shape":"Description",
+          "documentation":"<p>The event integration description.</p>"
+        },
+        "EventFilter":{
+          "shape":"EventFilter",
+          "documentation":"<p>The event integration filter.</p>"
+        },
+        "EventBridgeBus":{
+          "shape":"EventBridgeBus",
+          "documentation":"<p>The Amazon Eventbridge bus for the event integration.</p>"
+        },
+        "Tags":{
+          "shape":"TagMap",
+          "documentation":"<p>The tags.</p>"
+        }
+      },
+      "documentation":"<p>The Amazon AppIntegrations APIs are in preview release and are subject to change.</p> <p>The event integration.</p>"
+    },
+    "EventIntegrationAssociation":{
+      "type":"structure",
+      "members":{
+        "EventIntegrationAssociationArn":{
+          "shape":"Arn",
+          "documentation":"<p>The Amazon Resource Name (ARN) for the event integration association.</p>"
+        },
+        "EventIntegrationAssociationId":{
+          "shape":"UUID",
+          "documentation":"<p>The identifier for the event integration association.</p>"
+        },
+        "EventIntegrationName":{
+          "shape":"Name",
+          "documentation":"<p>The name of the event integration.</p>"
+        },
+        "ClientId":{
+          "shape":"ClientId",
+          "documentation":"<p>The identifier for the client that is associated with the event integration.</p>"
+        },
+        "EventBridgeRuleName":{
+          "shape":"EventBridgeRuleName",
+          "documentation":"<p>The name of the Eventbridge rule.</p>"
+        },
+        "ClientAssociationMetadata":{
+          "shape":"ClientAssociationMetadata",
+          "documentation":"<p>The metadata associated with the client.</p>"
+        }
+      },
+      "documentation":"<p>The Amazon AppIntegrations APIs are in preview release and are subject to change.</p> <p>The event integration association.</p>"
+    },
+    "EventIntegrationAssociationsList":{
+      "type":"list",
+      "member":{"shape":"EventIntegrationAssociation"},
+      "max":50,
+      "min":1
+    },
+    "EventIntegrationsList":{
+      "type":"list",
+      "member":{"shape":"EventIntegration"},
+      "max":50,
+      "min":1
+    },
+    "GetEventIntegrationRequest":{
+      "type":"structure",
+      "required":["Name"],
+      "members":{
+        "Name":{
+          "shape":"Name",
+          "documentation":"<p>The name of the event integration. </p>",
+          "location":"uri",
+          "locationName":"Name"
+        }
+      }
+    },
+    "GetEventIntegrationResponse":{
+      "type":"structure",
+      "members":{
+        "Name":{
+          "shape":"Name",
+          "documentation":"<p>The name of the event integration. </p>"
+        },
+        "Description":{
+          "shape":"Description",
+          "documentation":"<p>The description of the event integration.</p>"
+        },
+        "EventIntegrationArn":{
+          "shape":"Arn",
+          "documentation":"<p>The Amazon Resource Name (ARN) for the event integration.</p>"
+        },
+        "EventBridgeBus":{
+          "shape":"EventBridgeBus",
+          "documentation":"<p>The Eventbridge bus.</p>"
+        },
+        "EventFilter":{
+          "shape":"EventFilter",
+          "documentation":"<p>The event filter.</p>"
+        },
+        "Tags":{
+          "shape":"TagMap",
+          "documentation":"<p>One or more tags.</p>"
+        }
+      }
+    },
+    "IdempotencyToken":{
+      "type":"string",
+      "max":2048,
+      "min":1,
+      "pattern":".*"
+    },
+    "InternalServiceError":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"Message"}
+      },
+      "documentation":"<p>Request processing failed due to an error or failure with the service.</p>",
+      "error":{"httpStatusCode":500},
+      "exception":true,
+      "fault":true
+    },
+    "InvalidRequestException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"Message"}
+      },
+      "documentation":"<p>The request is not valid.</p>",
+      "error":{"httpStatusCode":400},
+      "exception":true
+    },
+    "ListEventIntegrationAssociationsRequest":{
+      "type":"structure",
+      "required":["EventIntegrationName"],
+      "members":{
+        "EventIntegrationName":{
+          "shape":"Name",
+          "documentation":"<p>The name of the event integration. </p>",
+          "location":"uri",
+          "locationName":"Name"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of results to return per page.</p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        }
+      }
+    },
+    "ListEventIntegrationAssociationsResponse":{
+      "type":"structure",
+      "members":{
+        "EventIntegrationAssociations":{
+          "shape":"EventIntegrationAssociationsList",
+          "documentation":"<p>The event integration associations.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>If there are additional results, this is the token for the next set of results.</p>"
+        }
+      }
+    },
+    "ListEventIntegrationsRequest":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results.</p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of results to return per page.</p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        }
+      }
+    },
+    "ListEventIntegrationsResponse":{
+      "type":"structure",
+      "members":{
+        "EventIntegrations":{
+          "shape":"EventIntegrationsList",
+          "documentation":"<p>The event integrations.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>If there are additional results, this is the token for the next set of results.</p>"
+        }
+      }
+    },
+    "ListTagsForResourceRequest":{
+      "type":"structure",
+      "required":["resourceArn"],
+      "members":{
+        "resourceArn":{
+          "shape":"Arn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the resource. </p>",
+          "location":"uri",
+          "locationName":"resourceArn"
+        }
+      }
+    },
+    "ListTagsForResourceResponse":{
+      "type":"structure",
+      "members":{
+        "tags":{
+          "shape":"TagMap",
+          "documentation":"<p>Information about the tags.</p>"
+        }
+      }
+    },
+    "MaxResults":{
+      "type":"integer",
+      "max":50,
+      "min":1
+    },
+    "Message":{"type":"string"},
+    "Name":{
+      "type":"string",
+      "max":255,
+      "min":1,
+      "pattern":"^[a-zA-Z0-9\\/\\._\\-]+$"
+    },
+    "NextToken":{
+      "type":"string",
+      "max":1000,
+      "min":1,
+      "pattern":".*"
+    },
+    "NonBlankString":{
+      "type":"string",
+      "max":255,
+      "min":1,
+      "pattern":".*\\S.*"
+    },
+    "ResourceNotFoundException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"Message"}
+      },
+      "documentation":"<p>The specified resource was not found.</p>",
+      "error":{"httpStatusCode":404},
+      "exception":true
+    },
+    "ResourceQuotaExceededException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"Message"}
+      },
+      "documentation":"<p>The allowed quota for the resource has been exceeded.</p>",
+      "error":{"httpStatusCode":429},
+      "exception":true
+    },
+    "Source":{
+      "type":"string",
+      "max":256,
+      "min":1,
+      "pattern":"^aws\\.partner\\/.*$"
+    },
+    "TagKey":{
+      "type":"string",
+      "max":128,
+      "min":1,
+      "pattern":"^(?!aws:)[a-zA-Z+-=._:/]+$"
+    },
+    "TagKeyList":{
+      "type":"list",
+      "member":{"shape":"TagKey"},
+      "max":200,
+      "min":1
+    },
+    "TagMap":{
+      "type":"map",
+      "key":{"shape":"TagKey"},
+      "value":{"shape":"TagValue"},
+      "max":200,
+      "min":1
+    },
+    "TagResourceRequest":{
+      "type":"structure",
+      "required":[
+        "resourceArn",
+        "tags"
+      ],
+      "members":{
+        "resourceArn":{
+          "shape":"Arn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the resource.</p>",
+          "location":"uri",
+          "locationName":"resourceArn"
+        },
+        "tags":{
+          "shape":"TagMap",
+          "documentation":"<p>One or more tags. </p>"
+        }
+      }
+    },
+    "TagResourceResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "TagValue":{
+      "type":"string",
+      "max":256
+    },
+    "ThrottlingException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"Message"}
+      },
+      "documentation":"<p>The throttling limit has been exceeded.</p>",
+      "error":{"httpStatusCode":429},
+      "exception":true
+    },
+    "UUID":{
+      "type":"string",
+      "pattern":"[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}"
+    },
+    "UntagResourceRequest":{
+      "type":"structure",
+      "required":[
+        "resourceArn",
+        "tagKeys"
+      ],
+      "members":{
+        "resourceArn":{
+          "shape":"Arn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the resource.</p>",
+          "location":"uri",
+          "locationName":"resourceArn"
+        },
+        "tagKeys":{
+          "shape":"TagKeyList",
+          "documentation":"<p>The tag keys.</p>",
+          "location":"querystring",
+          "locationName":"tagKeys"
+        }
+      }
+    },
+    "UntagResourceResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "UpdateEventIntegrationRequest":{
+      "type":"structure",
+      "required":["Name"],
+      "members":{
+        "Name":{
+          "shape":"Name",
+          "documentation":"<p>The name of the event integration.</p>",
+          "location":"uri",
+          "locationName":"Name"
+        },
+        "Description":{
+          "shape":"Description",
+          "documentation":"<p>The description of the event inegration.</p>"
+        }
+      }
+    },
+    "UpdateEventIntegrationResponse":{
+      "type":"structure",
+      "members":{
+      }
+    }
+  },
+  "documentation":"<p>The Amazon AppIntegrations APIs are in preview release and are subject to change.</p> <p>The Amazon AppIntegrations service enables you to configure and reuse connections to external applications.</p> <p>For information about how you can use external applications with Amazon Connect, see <a href=\"https://docs.aws.amazon.com/connect/latest/adminguide/crm.html\">Set up pre-built integrations</a> in the <i>Amazon Connect Administrator Guide</i>.</p>"
+}

+ 257 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/application-autoscaling/2016-02-06/examples-1.json

@@ -0,0 +1,257 @@
+{
+  "version": "1.0",
+  "examples": {
+    "DeleteScalingPolicy": [
+      {
+        "input": {
+          "PolicyName": "web-app-cpu-lt-25",
+          "ResourceId": "service/default/web-app",
+          "ScalableDimension": "ecs:service:DesiredCount",
+          "ServiceNamespace": "ecs"
+        },
+        "output": {
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example deletes a scaling policy for the Amazon ECS service called web-app, which is running in the default cluster.",
+        "id": "to-delete-a-scaling-policy-1470863892689",
+        "title": "To delete a scaling policy"
+      }
+    ],
+    "DeregisterScalableTarget": [
+      {
+        "input": {
+          "ResourceId": "service/default/web-app",
+          "ScalableDimension": "ecs:service:DesiredCount",
+          "ServiceNamespace": "ecs"
+        },
+        "output": {
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example deregisters a scalable target for an Amazon ECS service called web-app that is running in the default cluster.",
+        "id": "to-deregister-a-scalable-target-1470864164895",
+        "title": "To deregister a scalable target"
+      }
+    ],
+    "DescribeScalableTargets": [
+      {
+        "input": {
+          "ServiceNamespace": "ecs"
+        },
+        "output": {
+          "ScalableTargets": [
+            {
+              "CreationTime": "2016-05-06T11:21:46.199Z",
+              "MaxCapacity": 10,
+              "MinCapacity": 1,
+              "ResourceId": "service/default/web-app",
+              "RoleARN": "arn:aws:iam::012345678910:role/ApplicationAutoscalingECSRole",
+              "ScalableDimension": "ecs:service:DesiredCount",
+              "ServiceNamespace": "ecs"
+            }
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example describes the scalable targets for the ecs service namespace.",
+        "id": "to-describe-scalable-targets-1470864286961",
+        "title": "To describe scalable targets"
+      }
+    ],
+    "DescribeScalingActivities": [
+      {
+        "input": {
+          "ResourceId": "service/default/web-app",
+          "ScalableDimension": "ecs:service:DesiredCount",
+          "ServiceNamespace": "ecs"
+        },
+        "output": {
+          "ScalingActivities": [
+            {
+              "ActivityId": "e6c5f7d1-dbbb-4a3f-89b2-51f33e766399",
+              "Cause": "monitor alarm web-app-cpu-lt-25 in state ALARM triggered policy web-app-cpu-lt-25",
+              "Description": "Setting desired count to 1.",
+              "EndTime": "2016-05-06T16:04:32.111Z",
+              "ResourceId": "service/default/web-app",
+              "ScalableDimension": "ecs:service:DesiredCount",
+              "ServiceNamespace": "ecs",
+              "StartTime": "2016-05-06T16:03:58.171Z",
+              "StatusCode": "Successful",
+              "StatusMessage": "Successfully set desired count to 1. Change successfully fulfilled by ecs."
+            }
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example describes the scaling activities for an Amazon ECS service called web-app that is running in the default cluster.",
+        "id": "to-describe-scaling-activities-for-a-scalable-target-1470864398629",
+        "title": "To describe scaling activities for a scalable target"
+      }
+    ],
+    "DescribeScalingPolicies": [
+      {
+        "input": {
+          "ServiceNamespace": "ecs"
+        },
+        "output": {
+          "NextToken": "",
+          "ScalingPolicies": [
+            {
+              "Alarms": [
+                {
+                  "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:web-app-cpu-gt-75",
+                  "AlarmName": "web-app-cpu-gt-75"
+                }
+              ],
+              "CreationTime": "2016-05-06T12:11:39.230Z",
+              "PolicyARN": "arn:aws:autoscaling:us-west-2:012345678910:scalingPolicy:6d8972f3-efc8-437c-92d1-6270f29a66e7:resource/ecs/service/default/web-app:policyName/web-app-cpu-gt-75",
+              "PolicyName": "web-app-cpu-gt-75",
+              "PolicyType": "StepScaling",
+              "ResourceId": "service/default/web-app",
+              "ScalableDimension": "ecs:service:DesiredCount",
+              "ServiceNamespace": "ecs",
+              "StepScalingPolicyConfiguration": {
+                "AdjustmentType": "PercentChangeInCapacity",
+                "Cooldown": 60,
+                "StepAdjustments": [
+                  {
+                    "MetricIntervalLowerBound": 0,
+                    "ScalingAdjustment": 200
+                  }
+                ]
+              }
+            }
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example describes the scaling policies for the ecs service namespace.",
+        "id": "to-describe-scaling-policies-1470864609734",
+        "title": "To describe scaling policies"
+      }
+    ],
+    "PutScalingPolicy": [
+      {
+        "input": {
+          "PolicyName": "web-app-cpu-gt-75",
+          "PolicyType": "StepScaling",
+          "ResourceId": "service/default/web-app",
+          "ScalableDimension": "ecs:service:DesiredCount",
+          "ServiceNamespace": "ecs",
+          "StepScalingPolicyConfiguration": {
+            "AdjustmentType": "PercentChangeInCapacity",
+            "Cooldown": 60,
+            "StepAdjustments": [
+              {
+                "MetricIntervalLowerBound": 0,
+                "ScalingAdjustment": 200
+              }
+            ]
+          }
+        },
+        "output": {
+          "PolicyARN": "arn:aws:autoscaling:us-west-2:012345678910:scalingPolicy:6d8972f3-efc8-437c-92d1-6270f29a66e7:resource/ecs/service/default/web-app:policyName/web-app-cpu-gt-75"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example applies a scaling policy to an Amazon ECS service called web-app in the default cluster. The policy increases the desired count of the service by 200%, with a cool down period of 60 seconds.",
+        "id": "to-apply-a-scaling-policy-to-an-amazon-ecs-service-1470864779862",
+        "title": "To apply a scaling policy to an Amazon ECS service"
+      },
+      {
+        "input": {
+          "PolicyName": "fleet-cpu-gt-75",
+          "PolicyType": "StepScaling",
+          "ResourceId": "spot-fleet-request/sfr-45e69d8a-be48-4539-bbf3-3464e99c50c3",
+          "ScalableDimension": "ec2:spot-fleet-request:TargetCapacity",
+          "ServiceNamespace": "ec2",
+          "StepScalingPolicyConfiguration": {
+            "AdjustmentType": "PercentChangeInCapacity",
+            "Cooldown": 180,
+            "StepAdjustments": [
+              {
+                "MetricIntervalLowerBound": 0,
+                "ScalingAdjustment": 200
+              }
+            ]
+          }
+        },
+        "output": {
+          "PolicyARN": "arn:aws:autoscaling:us-east-1:012345678910:scalingPolicy:89406401-0cb7-4130-b770-d97cca0e446b:resource/ec2/spot-fleet-request/sfr-45e69d8a-be48-4539-bbf3-3464e99c50c3:policyName/fleet-cpu-gt-75"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example applies a scaling policy to an Amazon EC2 Spot fleet. The policy increases the target capacity of the spot fleet by 200%, with a cool down period of 180 seconds.\",\n   ",
+        "id": "to-apply-a-scaling-policy-to-an-amazon-ec2-spot-fleet-1472073278469",
+        "title": "To apply a scaling policy to an Amazon EC2 Spot fleet"
+      }
+    ],
+    "RegisterScalableTarget": [
+      {
+        "input": {
+          "MaxCapacity": 10,
+          "MinCapacity": 1,
+          "ResourceId": "service/default/web-app",
+          "RoleARN": "arn:aws:iam::012345678910:role/ApplicationAutoscalingECSRole",
+          "ScalableDimension": "ecs:service:DesiredCount",
+          "ServiceNamespace": "ecs"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example registers a scalable target from an Amazon ECS service called web-app that is running on the default cluster, with a minimum desired count of 1 task and a maximum desired count of 10 tasks.",
+        "id": "to-register-a-new-scalable-target-1470864910380",
+        "title": "To register an ECS service as a scalable target"
+      },
+      {
+        "input": {
+          "MaxCapacity": 10,
+          "MinCapacity": 1,
+          "ResourceId": "spot-fleet-request/sfr-45e69d8a-be48-4539-bbf3-3464e99c50c3",
+          "RoleARN": "arn:aws:iam::012345678910:role/ApplicationAutoscalingSpotRole",
+          "ScalableDimension": "ec2:spot-fleet-request:TargetCapacity",
+          "ServiceNamespace": "ec2"
+        },
+        "output": {
+        },
+        "comments": {
+        },
+        "description": "This example registers a scalable target from an Amazon EC2 Spot fleet with a minimum target capacity of 1 and a maximum of 10.",
+        "id": "to-register-an-ec2-spot-fleet-as-a-scalable-target-1472072899649",
+        "title": "To register an EC2 Spot fleet as a scalable target"
+      }
+    ]
+  }
+}

+ 28 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/application-autoscaling/2016-02-06/paginators-1.json

@@ -0,0 +1,28 @@
+{
+  "pagination": {
+    "DescribeScalableTargets": {
+      "input_token": "NextToken",
+      "output_token": "NextToken",
+      "limit_key": "MaxResults",
+      "result_key": "ScalableTargets"
+    },
+    "DescribeScalingActivities": {
+      "input_token": "NextToken",
+      "output_token": "NextToken",
+      "limit_key": "MaxResults",
+      "result_key": "ScalingActivities"
+    },
+    "DescribeScalingPolicies": {
+      "input_token": "NextToken",
+      "output_token": "NextToken",
+      "limit_key": "MaxResults",
+      "result_key": "ScalingPolicies"
+    },
+    "DescribeScheduledActions": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "ScheduledActions"
+    }
+  }
+}

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 144 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/application-autoscaling/2016-02-06/service-2.json


+ 3 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/application-insights/2018-11-25/paginators-1.json

@@ -0,0 +1,3 @@
+{
+  "pagination": {}
+}

+ 1975 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/application-insights/2018-11-25/service-2.json

@@ -0,0 +1,1975 @@
+{
+  "version":"2.0",
+  "metadata":{
+    "apiVersion":"2018-11-25",
+    "endpointPrefix":"applicationinsights",
+    "jsonVersion":"1.1",
+    "protocol":"json",
+    "serviceAbbreviation":"Application Insights",
+    "serviceFullName":"Amazon CloudWatch Application Insights",
+    "serviceId":"Application Insights",
+    "signatureVersion":"v4",
+    "signingName":"applicationinsights",
+    "targetPrefix":"EC2WindowsBarleyService",
+    "uid":"application-insights-2018-11-25"
+  },
+  "operations":{
+    "CreateApplication":{
+      "name":"CreateApplication",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateApplicationRequest"},
+      "output":{"shape":"CreateApplicationResponse"},
+      "errors":[
+        {"shape":"ResourceInUseException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"},
+        {"shape":"TagsAlreadyExistException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Adds an application that is created from a resource group.</p>"
+    },
+    "CreateComponent":{
+      "name":"CreateComponent",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateComponentRequest"},
+      "output":{"shape":"CreateComponentResponse"},
+      "errors":[
+        {"shape":"ResourceInUseException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p>Creates a custom component by grouping similar standalone instances to monitor.</p>"
+    },
+    "CreateLogPattern":{
+      "name":"CreateLogPattern",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateLogPatternRequest"},
+      "output":{"shape":"CreateLogPatternResponse"},
+      "errors":[
+        {"shape":"ResourceInUseException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p>Adds an log pattern to a <code>LogPatternSet</code>.</p>"
+    },
+    "DeleteApplication":{
+      "name":"DeleteApplication",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteApplicationRequest"},
+      "output":{"shape":"DeleteApplicationResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"BadRequestException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p>Removes the specified application from monitoring. Does not delete the application.</p>"
+    },
+    "DeleteComponent":{
+      "name":"DeleteComponent",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteComponentRequest"},
+      "output":{"shape":"DeleteComponentResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p>Ungroups a custom component. When you ungroup custom components, all applicable monitors that are set up for the component are removed and the instances revert to their standalone status.</p>"
+    },
+    "DeleteLogPattern":{
+      "name":"DeleteLogPattern",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteLogPatternRequest"},
+      "output":{"shape":"DeleteLogPatternResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"BadRequestException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p>Removes the specified log pattern from a <code>LogPatternSet</code>.</p>"
+    },
+    "DescribeApplication":{
+      "name":"DescribeApplication",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeApplicationRequest"},
+      "output":{"shape":"DescribeApplicationResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p>Describes the application.</p>"
+    },
+    "DescribeComponent":{
+      "name":"DescribeComponent",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeComponentRequest"},
+      "output":{"shape":"DescribeComponentResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p>Describes a component and lists the resources that are grouped together in a component.</p>"
+    },
+    "DescribeComponentConfiguration":{
+      "name":"DescribeComponentConfiguration",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeComponentConfigurationRequest"},
+      "output":{"shape":"DescribeComponentConfigurationResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p>Describes the monitoring configuration of the component.</p>"
+    },
+    "DescribeComponentConfigurationRecommendation":{
+      "name":"DescribeComponentConfigurationRecommendation",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeComponentConfigurationRecommendationRequest"},
+      "output":{"shape":"DescribeComponentConfigurationRecommendationResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p>Describes the recommended monitoring configuration of the component.</p>"
+    },
+    "DescribeLogPattern":{
+      "name":"DescribeLogPattern",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeLogPatternRequest"},
+      "output":{"shape":"DescribeLogPatternResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p>Describe a specific log pattern from a <code>LogPatternSet</code>.</p>"
+    },
+    "DescribeObservation":{
+      "name":"DescribeObservation",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeObservationRequest"},
+      "output":{"shape":"DescribeObservationResponse"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"ValidationException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Describes an anomaly or error with the application.</p>"
+    },
+    "DescribeProblem":{
+      "name":"DescribeProblem",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeProblemRequest"},
+      "output":{"shape":"DescribeProblemResponse"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"ValidationException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Describes an application problem.</p>"
+    },
+    "DescribeProblemObservations":{
+      "name":"DescribeProblemObservations",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeProblemObservationsRequest"},
+      "output":{"shape":"DescribeProblemObservationsResponse"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"ValidationException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Describes the anomalies or errors associated with the problem.</p>"
+    },
+    "ListApplications":{
+      "name":"ListApplications",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListApplicationsRequest"},
+      "output":{"shape":"ListApplicationsResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p>Lists the IDs of the applications that you are monitoring. </p>"
+    },
+    "ListComponents":{
+      "name":"ListComponents",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListComponentsRequest"},
+      "output":{"shape":"ListComponentsResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p>Lists the auto-grouped, standalone, and custom components of the application.</p>"
+    },
+    "ListConfigurationHistory":{
+      "name":"ListConfigurationHistory",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListConfigurationHistoryRequest"},
+      "output":{"shape":"ListConfigurationHistoryResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Lists the INFO, WARN, and ERROR events for periodic configuration updates performed by Application Insights. Examples of events represented are: </p> <ul> <li> <p>INFO: creating a new alarm or updating an alarm threshold.</p> </li> <li> <p>WARN: alarm not created due to insufficient data points used to predict thresholds.</p> </li> <li> <p>ERROR: alarm not created due to permission errors or exceeding quotas. </p> </li> </ul>"
+    },
+    "ListLogPatternSets":{
+      "name":"ListLogPatternSets",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListLogPatternSetsRequest"},
+      "output":{"shape":"ListLogPatternSetsResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p>Lists the log pattern sets in the specific application.</p>"
+    },
+    "ListLogPatterns":{
+      "name":"ListLogPatterns",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListLogPatternsRequest"},
+      "output":{"shape":"ListLogPatternsResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p>Lists the log patterns in the specific log <code>LogPatternSet</code>.</p>"
+    },
+    "ListProblems":{
+      "name":"ListProblems",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListProblemsRequest"},
+      "output":{"shape":"ListProblemsResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p>Lists the problems with your application.</p>"
+    },
+    "ListTagsForResource":{
+      "name":"ListTagsForResource",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListTagsForResourceRequest"},
+      "output":{"shape":"ListTagsForResourceResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"}
+      ],
+      "documentation":"<p>Retrieve a list of the tags (keys and values) that are associated with a specified application. A <i>tag</i> is a label that you optionally define and associate with an application. Each tag consists of a required <i>tag key</i> and an optional associated <i>tag value</i>. A tag key is a general label that acts as a category for more specific tag values. A tag value acts as a descriptor within a tag key.</p>"
+    },
+    "TagResource":{
+      "name":"TagResource",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"TagResourceRequest"},
+      "output":{"shape":"TagResourceResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"TooManyTagsException"},
+        {"shape":"ValidationException"}
+      ],
+      "documentation":"<p>Add one or more tags (keys and values) to a specified application. A <i>tag</i> is a label that you optionally define and associate with an application. Tags can help you categorize and manage application in different ways, such as by purpose, owner, environment, or other criteria. </p> <p>Each tag consists of a required <i>tag key</i> and an associated <i>tag value</i>, both of which you define. A tag key is a general label that acts as a category for more specific tag values. A tag value acts as a descriptor within a tag key.</p>"
+    },
+    "UntagResource":{
+      "name":"UntagResource",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UntagResourceRequest"},
+      "output":{"shape":"UntagResourceResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"}
+      ],
+      "documentation":"<p>Remove one or more tags (keys and values) from a specified application.</p>"
+    },
+    "UpdateApplication":{
+      "name":"UpdateApplication",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UpdateApplicationRequest"},
+      "output":{"shape":"UpdateApplicationResponse"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"}
+      ],
+      "documentation":"<p>Updates the application.</p>"
+    },
+    "UpdateComponent":{
+      "name":"UpdateComponent",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UpdateComponentRequest"},
+      "output":{"shape":"UpdateComponentResponse"},
+      "errors":[
+        {"shape":"ResourceInUseException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p>Updates the custom component name and/or the list of resources that make up the component.</p>"
+    },
+    "UpdateComponentConfiguration":{
+      "name":"UpdateComponentConfiguration",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UpdateComponentConfigurationRequest"},
+      "output":{"shape":"UpdateComponentConfigurationResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p>Updates the monitoring configurations for the component. The configuration input parameter is an escaped JSON of the configuration and should match the schema of what is returned by <code>DescribeComponentConfigurationRecommendation</code>. </p>"
+    },
+    "UpdateLogPattern":{
+      "name":"UpdateLogPattern",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UpdateLogPatternRequest"},
+      "output":{"shape":"UpdateLogPatternResponse"},
+      "errors":[
+        {"shape":"ResourceInUseException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p>Adds a log pattern to a <code>LogPatternSet</code>.</p>"
+    }
+  },
+  "shapes":{
+    "AccessDeniedException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMsg"}
+      },
+      "documentation":"<p> User does not have permissions to perform this action. </p>",
+      "exception":true
+    },
+    "AffectedResource":{"type":"string"},
+    "AmazonResourceName":{
+      "type":"string",
+      "max":1011,
+      "min":1,
+      "pattern":"^arn:aws(-\\w+)*:[\\w\\d-]+:([\\w\\d-]*)?:[\\w\\d_-]*([:/].+)*$"
+    },
+    "ApplicationComponent":{
+      "type":"structure",
+      "members":{
+        "ComponentName":{
+          "shape":"ComponentName",
+          "documentation":"<p>The name of the component.</p>"
+        },
+        "ComponentRemarks":{
+          "shape":"Remarks",
+          "documentation":"<p> If logging is supported for the resource type, indicates whether the component has configured logs to be monitored. </p>"
+        },
+        "ResourceType":{
+          "shape":"ResourceType",
+          "documentation":"<p>The resource type. Supported resource types include EC2 instances, Auto Scaling group, Classic ELB, Application ELB, and SQS Queue.</p>"
+        },
+        "OsType":{
+          "shape":"OsType",
+          "documentation":"<p> The operating system of the component. </p>"
+        },
+        "Tier":{
+          "shape":"Tier",
+          "documentation":"<p>The stack tier of the application component.</p>"
+        },
+        "Monitor":{
+          "shape":"Monitor",
+          "documentation":"<p>Indicates whether the application component is monitored. </p>"
+        },
+        "DetectedWorkload":{
+          "shape":"DetectedWorkload",
+          "documentation":"<p> Workloads detected in the application component. </p>"
+        }
+      },
+      "documentation":"<p>Describes a standalone resource or similarly grouped resources that the application is made up of.</p>"
+    },
+    "ApplicationComponentList":{
+      "type":"list",
+      "member":{"shape":"ApplicationComponent"}
+    },
+    "ApplicationInfo":{
+      "type":"structure",
+      "members":{
+        "ResourceGroupName":{
+          "shape":"ResourceGroupName",
+          "documentation":"<p>The name of the resource group used for the application.</p>"
+        },
+        "LifeCycle":{
+          "shape":"LifeCycle",
+          "documentation":"<p>The lifecycle of the application. </p>"
+        },
+        "OpsItemSNSTopicArn":{
+          "shape":"OpsItemSNSTopicArn",
+          "documentation":"<p> The SNS topic provided to Application Insights that is associated to the created opsItems to receive SNS notifications for opsItem updates. </p>"
+        },
+        "OpsCenterEnabled":{
+          "shape":"OpsCenterEnabled",
+          "documentation":"<p> Indicates whether Application Insights will create opsItems for any problem detected by Application Insights for an application. </p>"
+        },
+        "CWEMonitorEnabled":{
+          "shape":"CWEMonitorEnabled",
+          "documentation":"<p> Indicates whether Application Insights can listen to CloudWatch events for the application resources, such as <code>instance terminated</code>, <code>failed deployment</code>, and others. </p>"
+        },
+        "Remarks":{
+          "shape":"Remarks",
+          "documentation":"<p>The issues on the user side that block Application Insights from successfully monitoring an application. Example remarks include:</p> <ul> <li> <p>“Configuring application, detected 1 Errors, 3 Warnings”</p> </li> <li> <p>“Configuring application, detected 1 Unconfigured Components”</p> </li> </ul>"
+        }
+      },
+      "documentation":"<p>Describes the status of the application.</p>"
+    },
+    "ApplicationInfoList":{
+      "type":"list",
+      "member":{"shape":"ApplicationInfo"}
+    },
+    "BadRequestException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMsg"}
+      },
+      "documentation":"<p>The request is not understood by the server.</p>",
+      "exception":true
+    },
+    "CWEMonitorEnabled":{"type":"boolean"},
+    "CloudWatchEventDetailType":{"type":"string"},
+    "CloudWatchEventId":{"type":"string"},
+    "CloudWatchEventSource":{
+      "type":"string",
+      "enum":[
+        "EC2",
+        "CODE_DEPLOY",
+        "HEALTH",
+        "RDS"
+      ]
+    },
+    "CodeDeployApplication":{"type":"string"},
+    "CodeDeployDeploymentGroup":{"type":"string"},
+    "CodeDeployDeploymentId":{"type":"string"},
+    "CodeDeployInstanceGroupId":{"type":"string"},
+    "CodeDeployState":{"type":"string"},
+    "ComponentConfiguration":{
+      "type":"string",
+      "max":10000,
+      "min":1,
+      "pattern":"[\\S\\s]+"
+    },
+    "ComponentName":{
+      "type":"string",
+      "max":1011,
+      "min":1,
+      "pattern":"(?:^[\\d\\w\\-_\\.+]*$)|(?:^arn:aws(-\\w+)*:[\\w\\d-]+:([\\w\\d-]*)?:[\\w\\d_-]*([:/].+)*$)"
+    },
+    "ConfigurationEvent":{
+      "type":"structure",
+      "members":{
+        "MonitoredResourceARN":{
+          "shape":"ConfigurationEventMonitoredResourceARN",
+          "documentation":"<p> The resource monitored by Application Insights. </p>"
+        },
+        "EventStatus":{
+          "shape":"ConfigurationEventStatus",
+          "documentation":"<p> The status of the configuration update event. Possible values include INFO, WARN, and ERROR. </p>"
+        },
+        "EventResourceType":{
+          "shape":"ConfigurationEventResourceType",
+          "documentation":"<p> The resource type that Application Insights attempted to configure, for example, CLOUDWATCH_ALARM. </p>"
+        },
+        "EventTime":{
+          "shape":"ConfigurationEventTime",
+          "documentation":"<p> The timestamp of the event. </p>"
+        },
+        "EventDetail":{
+          "shape":"ConfigurationEventDetail",
+          "documentation":"<p> The details of the event in plain text. </p>"
+        },
+        "EventResourceName":{
+          "shape":"ConfigurationEventResourceName",
+          "documentation":"<p> The name of the resource Application Insights attempted to configure. </p>"
+        }
+      },
+      "documentation":"<p> The event information. </p>"
+    },
+    "ConfigurationEventDetail":{"type":"string"},
+    "ConfigurationEventList":{
+      "type":"list",
+      "member":{"shape":"ConfigurationEvent"}
+    },
+    "ConfigurationEventMonitoredResourceARN":{"type":"string"},
+    "ConfigurationEventResourceName":{"type":"string"},
+    "ConfigurationEventResourceType":{
+      "type":"string",
+      "enum":[
+        "CLOUDWATCH_ALARM",
+        "CLOUDWATCH_LOG",
+        "CLOUDFORMATION",
+        "SSM_ASSOCIATION"
+      ]
+    },
+    "ConfigurationEventStatus":{
+      "type":"string",
+      "enum":[
+        "INFO",
+        "WARN",
+        "ERROR"
+      ]
+    },
+    "ConfigurationEventTime":{"type":"timestamp"},
+    "CreateApplicationRequest":{
+      "type":"structure",
+      "required":["ResourceGroupName"],
+      "members":{
+        "ResourceGroupName":{
+          "shape":"ResourceGroupName",
+          "documentation":"<p>The name of the resource group.</p>"
+        },
+        "OpsCenterEnabled":{
+          "shape":"OpsCenterEnabled",
+          "documentation":"<p> When set to <code>true</code>, creates opsItems for any problems detected on an application. </p>"
+        },
+        "CWEMonitorEnabled":{
+          "shape":"CWEMonitorEnabled",
+          "documentation":"<p> Indicates whether Application Insights can listen to CloudWatch events for the application resources, such as <code>instance terminated</code>, <code>failed deployment</code>, and others. </p>"
+        },
+        "OpsItemSNSTopicArn":{
+          "shape":"OpsItemSNSTopicArn",
+          "documentation":"<p> The SNS topic provided to Application Insights that is associated to the created opsItem. Allows you to receive notifications for updates to the opsItem. </p>"
+        },
+        "Tags":{
+          "shape":"TagList",
+          "documentation":"<p>List of tags to add to the application. tag key (<code>Key</code>) and an associated tag value (<code>Value</code>). The maximum length of a tag key is 128 characters. The maximum length of a tag value is 256 characters.</p>"
+        }
+      }
+    },
+    "CreateApplicationResponse":{
+      "type":"structure",
+      "members":{
+        "ApplicationInfo":{
+          "shape":"ApplicationInfo",
+          "documentation":"<p>Information about the application.</p>"
+        }
+      }
+    },
+    "CreateComponentRequest":{
+      "type":"structure",
+      "required":[
+        "ResourceGroupName",
+        "ComponentName",
+        "ResourceList"
+      ],
+      "members":{
+        "ResourceGroupName":{
+          "shape":"ResourceGroupName",
+          "documentation":"<p>The name of the resource group.</p>"
+        },
+        "ComponentName":{
+          "shape":"CustomComponentName",
+          "documentation":"<p>The name of the component.</p>"
+        },
+        "ResourceList":{
+          "shape":"ResourceList",
+          "documentation":"<p>The list of resource ARNs that belong to the component.</p>"
+        }
+      }
+    },
+    "CreateComponentResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "CreateLogPatternRequest":{
+      "type":"structure",
+      "required":[
+        "ResourceGroupName",
+        "PatternSetName",
+        "PatternName",
+        "Pattern",
+        "Rank"
+      ],
+      "members":{
+        "ResourceGroupName":{
+          "shape":"ResourceGroupName",
+          "documentation":"<p>The name of the resource group.</p>"
+        },
+        "PatternSetName":{
+          "shape":"LogPatternSetName",
+          "documentation":"<p>The name of the log pattern set.</p>"
+        },
+        "PatternName":{
+          "shape":"LogPatternName",
+          "documentation":"<p>The name of the log pattern.</p>"
+        },
+        "Pattern":{
+          "shape":"LogPatternRegex",
+          "documentation":"<p>The log pattern. The pattern must be DFA compatible. Patterns that utilize forward lookahead or backreference constructions are not supported.</p>"
+        },
+        "Rank":{
+          "shape":"LogPatternRank",
+          "documentation":"<p>Rank of the log pattern. Must be a value between <code>1</code> and <code>1,000,000</code>. The patterns are sorted by rank, so we recommend that you set your highest priority patterns with the lowest rank. A pattern of rank <code>1</code> will be the first to get matched to a log line. A pattern of rank <code>1,000,000</code> will be last to get matched. When you configure custom log patterns from the console, a <code>Low</code> severity pattern translates to a <code>750,000</code> rank. A <code>Medium</code> severity pattern translates to a <code>500,000</code> rank. And a <code>High</code> severity pattern translates to a <code>250,000</code> rank. Rank values less than <code>1</code> or greater than <code>1,000,000</code> are reserved for AWS-provided patterns. </p>"
+        }
+      }
+    },
+    "CreateLogPatternResponse":{
+      "type":"structure",
+      "members":{
+        "LogPattern":{
+          "shape":"LogPattern",
+          "documentation":"<p>The successfully created log pattern.</p>"
+        },
+        "ResourceGroupName":{
+          "shape":"ResourceGroupName",
+          "documentation":"<p>The name of the resource group.</p>"
+        }
+      }
+    },
+    "CustomComponentName":{
+      "type":"string",
+      "max":128,
+      "min":1,
+      "pattern":"^[\\d\\w\\-_\\.+]*$"
+    },
+    "DeleteApplicationRequest":{
+      "type":"structure",
+      "required":["ResourceGroupName"],
+      "members":{
+        "ResourceGroupName":{
+          "shape":"ResourceGroupName",
+          "documentation":"<p>The name of the resource group.</p>"
+        }
+      }
+    },
+    "DeleteApplicationResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeleteComponentRequest":{
+      "type":"structure",
+      "required":[
+        "ResourceGroupName",
+        "ComponentName"
+      ],
+      "members":{
+        "ResourceGroupName":{
+          "shape":"ResourceGroupName",
+          "documentation":"<p>The name of the resource group.</p>"
+        },
+        "ComponentName":{
+          "shape":"CustomComponentName",
+          "documentation":"<p>The name of the component.</p>"
+        }
+      }
+    },
+    "DeleteComponentResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeleteLogPatternRequest":{
+      "type":"structure",
+      "required":[
+        "ResourceGroupName",
+        "PatternSetName",
+        "PatternName"
+      ],
+      "members":{
+        "ResourceGroupName":{
+          "shape":"ResourceGroupName",
+          "documentation":"<p>The name of the resource group.</p>"
+        },
+        "PatternSetName":{
+          "shape":"LogPatternSetName",
+          "documentation":"<p>The name of the log pattern set.</p>"
+        },
+        "PatternName":{
+          "shape":"LogPatternName",
+          "documentation":"<p>The name of the log pattern.</p>"
+        }
+      }
+    },
+    "DeleteLogPatternResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DescribeApplicationRequest":{
+      "type":"structure",
+      "required":["ResourceGroupName"],
+      "members":{
+        "ResourceGroupName":{
+          "shape":"ResourceGroupName",
+          "documentation":"<p>The name of the resource group.</p>"
+        }
+      }
+    },
+    "DescribeApplicationResponse":{
+      "type":"structure",
+      "members":{
+        "ApplicationInfo":{
+          "shape":"ApplicationInfo",
+          "documentation":"<p>Information about the application.</p>"
+        }
+      }
+    },
+    "DescribeComponentConfigurationRecommendationRequest":{
+      "type":"structure",
+      "required":[
+        "ResourceGroupName",
+        "ComponentName",
+        "Tier"
+      ],
+      "members":{
+        "ResourceGroupName":{
+          "shape":"ResourceGroupName",
+          "documentation":"<p>The name of the resource group.</p>"
+        },
+        "ComponentName":{
+          "shape":"ComponentName",
+          "documentation":"<p>The name of the component.</p>"
+        },
+        "Tier":{
+          "shape":"Tier",
+          "documentation":"<p>The tier of the application component. Supported tiers include <code>DOT_NET_CORE</code>, <code>DOT_NET_WORKER</code>, <code>DOT_NET_WEB</code>, <code>SQL_SERVER</code>, and <code>DEFAULT</code>.</p>"
+        }
+      }
+    },
+    "DescribeComponentConfigurationRecommendationResponse":{
+      "type":"structure",
+      "members":{
+        "ComponentConfiguration":{
+          "shape":"ComponentConfiguration",
+          "documentation":"<p>The recommended configuration settings of the component. The value is the escaped JSON of the configuration.</p>"
+        }
+      }
+    },
+    "DescribeComponentConfigurationRequest":{
+      "type":"structure",
+      "required":[
+        "ResourceGroupName",
+        "ComponentName"
+      ],
+      "members":{
+        "ResourceGroupName":{
+          "shape":"ResourceGroupName",
+          "documentation":"<p>The name of the resource group.</p>"
+        },
+        "ComponentName":{
+          "shape":"ComponentName",
+          "documentation":"<p>The name of the component.</p>"
+        }
+      }
+    },
+    "DescribeComponentConfigurationResponse":{
+      "type":"structure",
+      "members":{
+        "Monitor":{
+          "shape":"Monitor",
+          "documentation":"<p>Indicates whether the application component is monitored.</p>"
+        },
+        "Tier":{
+          "shape":"Tier",
+          "documentation":"<p>The tier of the application component. Supported tiers include <code>DOT_NET_CORE</code>, <code>DOT_NET_WORKER</code>, <code>DOT_NET_WEB</code>, <code>SQL_SERVER</code>, and <code>DEFAULT</code> </p>"
+        },
+        "ComponentConfiguration":{
+          "shape":"ComponentConfiguration",
+          "documentation":"<p>The configuration settings of the component. The value is the escaped JSON of the configuration.</p>"
+        }
+      }
+    },
+    "DescribeComponentRequest":{
+      "type":"structure",
+      "required":[
+        "ResourceGroupName",
+        "ComponentName"
+      ],
+      "members":{
+        "ResourceGroupName":{
+          "shape":"ResourceGroupName",
+          "documentation":"<p>The name of the resource group.</p>"
+        },
+        "ComponentName":{
+          "shape":"ComponentName",
+          "documentation":"<p>The name of the component.</p>"
+        }
+      }
+    },
+    "DescribeComponentResponse":{
+      "type":"structure",
+      "members":{
+        "ApplicationComponent":{"shape":"ApplicationComponent"},
+        "ResourceList":{
+          "shape":"ResourceList",
+          "documentation":"<p>The list of resource ARNs that belong to the component.</p>"
+        }
+      }
+    },
+    "DescribeLogPatternRequest":{
+      "type":"structure",
+      "required":[
+        "ResourceGroupName",
+        "PatternSetName",
+        "PatternName"
+      ],
+      "members":{
+        "ResourceGroupName":{
+          "shape":"ResourceGroupName",
+          "documentation":"<p>The name of the resource group.</p>"
+        },
+        "PatternSetName":{
+          "shape":"LogPatternSetName",
+          "documentation":"<p>The name of the log pattern set.</p>"
+        },
+        "PatternName":{
+          "shape":"LogPatternName",
+          "documentation":"<p>The name of the log pattern.</p>"
+        }
+      }
+    },
+    "DescribeLogPatternResponse":{
+      "type":"structure",
+      "members":{
+        "ResourceGroupName":{
+          "shape":"ResourceGroupName",
+          "documentation":"<p>The name of the resource group.</p>"
+        },
+        "LogPattern":{
+          "shape":"LogPattern",
+          "documentation":"<p>The successfully created log pattern.</p>"
+        }
+      }
+    },
+    "DescribeObservationRequest":{
+      "type":"structure",
+      "required":["ObservationId"],
+      "members":{
+        "ObservationId":{
+          "shape":"ObservationId",
+          "documentation":"<p>The ID of the observation.</p>"
+        }
+      }
+    },
+    "DescribeObservationResponse":{
+      "type":"structure",
+      "members":{
+        "Observation":{
+          "shape":"Observation",
+          "documentation":"<p>Information about the observation.</p>"
+        }
+      }
+    },
+    "DescribeProblemObservationsRequest":{
+      "type":"structure",
+      "required":["ProblemId"],
+      "members":{
+        "ProblemId":{
+          "shape":"ProblemId",
+          "documentation":"<p>The ID of the problem.</p>"
+        }
+      }
+    },
+    "DescribeProblemObservationsResponse":{
+      "type":"structure",
+      "members":{
+        "RelatedObservations":{
+          "shape":"RelatedObservations",
+          "documentation":"<p>Observations related to the problem.</p>"
+        }
+      }
+    },
+    "DescribeProblemRequest":{
+      "type":"structure",
+      "required":["ProblemId"],
+      "members":{
+        "ProblemId":{
+          "shape":"ProblemId",
+          "documentation":"<p>The ID of the problem.</p>"
+        }
+      }
+    },
+    "DescribeProblemResponse":{
+      "type":"structure",
+      "members":{
+        "Problem":{
+          "shape":"Problem",
+          "documentation":"<p>Information about the problem. </p>"
+        }
+      }
+    },
+    "DetectedWorkload":{
+      "type":"map",
+      "key":{"shape":"Tier"},
+      "value":{"shape":"WorkloadMetaData"}
+    },
+    "EbsCause":{"type":"string"},
+    "EbsEvent":{"type":"string"},
+    "EbsRequestId":{"type":"string"},
+    "EbsResult":{"type":"string"},
+    "Ec2State":{"type":"string"},
+    "EndTime":{"type":"timestamp"},
+    "ErrorMsg":{"type":"string"},
+    "ExceptionMessage":{"type":"string"},
+    "Feedback":{
+      "type":"map",
+      "key":{"shape":"FeedbackKey"},
+      "value":{"shape":"FeedbackValue"},
+      "max":10
+    },
+    "FeedbackKey":{
+      "type":"string",
+      "enum":["INSIGHTS_FEEDBACK"]
+    },
+    "FeedbackValue":{
+      "type":"string",
+      "enum":[
+        "NOT_SPECIFIED",
+        "USEFUL",
+        "NOT_USEFUL"
+      ]
+    },
+    "HealthEventArn":{"type":"string"},
+    "HealthEventDescription":{"type":"string"},
+    "HealthEventTypeCategory":{"type":"string"},
+    "HealthEventTypeCode":{"type":"string"},
+    "HealthService":{"type":"string"},
+    "Insights":{"type":"string"},
+    "InternalServerException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMsg"}
+      },
+      "documentation":"<p>The server encountered an internal error and is unable to complete the request.</p>",
+      "exception":true
+    },
+    "LifeCycle":{"type":"string"},
+    "LineTime":{"type":"timestamp"},
+    "ListApplicationsRequest":{
+      "type":"structure",
+      "members":{
+        "MaxResults":{
+          "shape":"MaxEntities",
+          "documentation":"<p>The maximum number of results to return in a single call. To retrieve the remaining results, make another call with the returned <code>NextToken</code> value.</p>"
+        },
+        "NextToken":{
+          "shape":"PaginationToken",
+          "documentation":"<p>The token to request the next page of results.</p>"
+        }
+      }
+    },
+    "ListApplicationsResponse":{
+      "type":"structure",
+      "members":{
+        "ApplicationInfoList":{
+          "shape":"ApplicationInfoList",
+          "documentation":"<p>The list of applications.</p>"
+        },
+        "NextToken":{
+          "shape":"PaginationToken",
+          "documentation":"<p>The token used to retrieve the next page of results. This value is <code>null</code> when there are no more results to return. </p>"
+        }
+      }
+    },
+    "ListComponentsRequest":{
+      "type":"structure",
+      "required":["ResourceGroupName"],
+      "members":{
+        "ResourceGroupName":{
+          "shape":"ResourceGroupName",
+          "documentation":"<p>The name of the resource group.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxEntities",
+          "documentation":"<p>The maximum number of results to return in a single call. To retrieve the remaining results, make another call with the returned <code>NextToken</code> value.</p>"
+        },
+        "NextToken":{
+          "shape":"PaginationToken",
+          "documentation":"<p>The token to request the next page of results.</p>"
+        }
+      }
+    },
+    "ListComponentsResponse":{
+      "type":"structure",
+      "members":{
+        "ApplicationComponentList":{
+          "shape":"ApplicationComponentList",
+          "documentation":"<p>The list of application components.</p>"
+        },
+        "NextToken":{
+          "shape":"PaginationToken",
+          "documentation":"<p>The token to request the next page of results.</p>"
+        }
+      }
+    },
+    "ListConfigurationHistoryRequest":{
+      "type":"structure",
+      "members":{
+        "ResourceGroupName":{
+          "shape":"ResourceGroupName",
+          "documentation":"<p>Resource group to which the application belongs. </p>"
+        },
+        "StartTime":{
+          "shape":"StartTime",
+          "documentation":"<p>The start time of the event. </p>"
+        },
+        "EndTime":{
+          "shape":"EndTime",
+          "documentation":"<p>The end time of the event.</p>"
+        },
+        "EventStatus":{
+          "shape":"ConfigurationEventStatus",
+          "documentation":"<p>The status of the configuration update event. Possible values include INFO, WARN, and ERROR.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxEntities",
+          "documentation":"<p> The maximum number of results returned by <code>ListConfigurationHistory</code> in paginated output. When this parameter is used, <code>ListConfigurationHistory</code> returns only <code>MaxResults</code> in a single page along with a <code>NextToken</code> response element. The remaining results of the initial request can be seen by sending another <code>ListConfigurationHistory</code> request with the returned <code>NextToken</code> value. If this parameter is not used, then <code>ListConfigurationHistory</code> returns all results. </p>"
+        },
+        "NextToken":{
+          "shape":"PaginationToken",
+          "documentation":"<p>The <code>NextToken</code> value returned from a previous paginated <code>ListConfigurationHistory</code> request where <code>MaxResults</code> was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the <code>NextToken</code> value. This value is <code>null</code> when there are no more results to return.</p>"
+        }
+      }
+    },
+    "ListConfigurationHistoryResponse":{
+      "type":"structure",
+      "members":{
+        "EventList":{
+          "shape":"ConfigurationEventList",
+          "documentation":"<p> The list of configuration events and their corresponding details. </p>"
+        },
+        "NextToken":{
+          "shape":"PaginationToken",
+          "documentation":"<p>The <code>NextToken</code> value to include in a future <code>ListConfigurationHistory</code> request. When the results of a <code>ListConfigurationHistory</code> request exceed <code>MaxResults</code>, this value can be used to retrieve the next page of results. This value is <code>null</code> when there are no more results to return.</p>"
+        }
+      }
+    },
+    "ListLogPatternSetsRequest":{
+      "type":"structure",
+      "required":["ResourceGroupName"],
+      "members":{
+        "ResourceGroupName":{
+          "shape":"ResourceGroupName",
+          "documentation":"<p>The name of the resource group.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxEntities",
+          "documentation":"<p>The maximum number of results to return in a single call. To retrieve the remaining results, make another call with the returned <code>NextToken</code> value.</p>"
+        },
+        "NextToken":{
+          "shape":"PaginationToken",
+          "documentation":"<p>The token to request the next page of results.</p>"
+        }
+      }
+    },
+    "ListLogPatternSetsResponse":{
+      "type":"structure",
+      "members":{
+        "ResourceGroupName":{
+          "shape":"ResourceGroupName",
+          "documentation":"<p>The name of the resource group.</p>"
+        },
+        "LogPatternSets":{
+          "shape":"LogPatternSetList",
+          "documentation":"<p>The list of log pattern sets.</p>"
+        },
+        "NextToken":{
+          "shape":"PaginationToken",
+          "documentation":"<p>The token used to retrieve the next page of results. This value is <code>null</code> when there are no more results to return. </p>"
+        }
+      }
+    },
+    "ListLogPatternsRequest":{
+      "type":"structure",
+      "required":["ResourceGroupName"],
+      "members":{
+        "ResourceGroupName":{
+          "shape":"ResourceGroupName",
+          "documentation":"<p>The name of the resource group.</p>"
+        },
+        "PatternSetName":{
+          "shape":"LogPatternSetName",
+          "documentation":"<p>The name of the log pattern set.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxEntities",
+          "documentation":"<p>The maximum number of results to return in a single call. To retrieve the remaining results, make another call with the returned <code>NextToken</code> value.</p>"
+        },
+        "NextToken":{
+          "shape":"PaginationToken",
+          "documentation":"<p>The token to request the next page of results.</p>"
+        }
+      }
+    },
+    "ListLogPatternsResponse":{
+      "type":"structure",
+      "members":{
+        "ResourceGroupName":{
+          "shape":"ResourceGroupName",
+          "documentation":"<p>The name of the resource group.</p>"
+        },
+        "LogPatterns":{
+          "shape":"LogPatternList",
+          "documentation":"<p>The list of log patterns.</p>"
+        },
+        "NextToken":{
+          "shape":"PaginationToken",
+          "documentation":"<p>The token used to retrieve the next page of results. This value is <code>null</code> when there are no more results to return. </p>"
+        }
+      }
+    },
+    "ListProblemsRequest":{
+      "type":"structure",
+      "members":{
+        "ResourceGroupName":{
+          "shape":"ResourceGroupName",
+          "documentation":"<p>The name of the resource group.</p>"
+        },
+        "StartTime":{
+          "shape":"StartTime",
+          "documentation":"<p>The time when the problem was detected, in epoch seconds. If you don't specify a time frame for the request, problems within the past seven days are returned.</p>"
+        },
+        "EndTime":{
+          "shape":"EndTime",
+          "documentation":"<p>The time when the problem ended, in epoch seconds. If not specified, problems within the past seven days are returned.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxEntities",
+          "documentation":"<p>The maximum number of results to return in a single call. To retrieve the remaining results, make another call with the returned <code>NextToken</code> value.</p>"
+        },
+        "NextToken":{
+          "shape":"PaginationToken",
+          "documentation":"<p>The token to request the next page of results.</p>"
+        }
+      }
+    },
+    "ListProblemsResponse":{
+      "type":"structure",
+      "members":{
+        "ProblemList":{
+          "shape":"ProblemList",
+          "documentation":"<p>The list of problems. </p>"
+        },
+        "NextToken":{
+          "shape":"PaginationToken",
+          "documentation":"<p>The token used to retrieve the next page of results. This value is <code>null</code> when there are no more results to return. </p>"
+        }
+      }
+    },
+    "ListTagsForResourceRequest":{
+      "type":"structure",
+      "required":["ResourceARN"],
+      "members":{
+        "ResourceARN":{
+          "shape":"AmazonResourceName",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the application that you want to retrieve tag information for.</p>"
+        }
+      }
+    },
+    "ListTagsForResourceResponse":{
+      "type":"structure",
+      "members":{
+        "Tags":{
+          "shape":"TagList",
+          "documentation":"<p>An array that lists all the tags that are associated with the application. Each tag consists of a required tag key (<code>Key</code>) and an associated tag value (<code>Value</code>).</p>"
+        }
+      }
+    },
+    "LogFilter":{
+      "type":"string",
+      "enum":[
+        "ERROR",
+        "WARN",
+        "INFO"
+      ]
+    },
+    "LogGroup":{"type":"string"},
+    "LogPattern":{
+      "type":"structure",
+      "members":{
+        "PatternSetName":{
+          "shape":"LogPatternSetName",
+          "documentation":"<p>The name of the log pattern. A log pattern name can contain as many as 30 characters, and it cannot be empty. The characters can be Unicode letters, digits, or one of the following symbols: period, dash, underscore.</p>"
+        },
+        "PatternName":{
+          "shape":"LogPatternName",
+          "documentation":"<p>The name of the log pattern. A log pattern name can contain as many as 50 characters, and it cannot be empty. The characters can be Unicode letters, digits, or one of the following symbols: period, dash, underscore.</p>"
+        },
+        "Pattern":{
+          "shape":"LogPatternRegex",
+          "documentation":"<p>A regular expression that defines the log pattern. A log pattern can contain as many as 50 characters, and it cannot be empty. The pattern must be DFA compatible. Patterns that utilize forward lookahead or backreference constructions are not supported.</p>"
+        },
+        "Rank":{
+          "shape":"LogPatternRank",
+          "documentation":"<p>Rank of the log pattern. Must be a value between <code>1</code> and <code>1,000,000</code>. The patterns are sorted by rank, so we recommend that you set your highest priority patterns with the lowest rank. A pattern of rank <code>1</code> will be the first to get matched to a log line. A pattern of rank <code>1,000,000</code> will be last to get matched. When you configure custom log patterns from the console, a <code>Low</code> severity pattern translates to a <code>750,000</code> rank. A <code>Medium</code> severity pattern translates to a <code>500,000</code> rank. And a <code>High</code> severity pattern translates to a <code>250,000</code> rank. Rank values less than <code>1</code> or greater than <code>1,000,000</code> are reserved for AWS-provided patterns. </p>"
+        }
+      },
+      "documentation":"<p>An object that defines the log patterns that belongs to a <code>LogPatternSet</code>.</p>"
+    },
+    "LogPatternList":{
+      "type":"list",
+      "member":{"shape":"LogPattern"}
+    },
+    "LogPatternName":{
+      "type":"string",
+      "max":50,
+      "min":1,
+      "pattern":"[a-zA-Z0-9\\.\\-_]*"
+    },
+    "LogPatternRank":{"type":"integer"},
+    "LogPatternRegex":{
+      "type":"string",
+      "max":50,
+      "min":1,
+      "pattern":"[\\S\\s]+"
+    },
+    "LogPatternSetList":{
+      "type":"list",
+      "member":{"shape":"LogPatternSetName"}
+    },
+    "LogPatternSetName":{
+      "type":"string",
+      "max":30,
+      "min":1,
+      "pattern":"[a-zA-Z0-9\\.\\-_]*"
+    },
+    "LogText":{"type":"string"},
+    "MaxEntities":{
+      "type":"integer",
+      "max":40,
+      "min":1
+    },
+    "MetaDataKey":{"type":"string"},
+    "MetaDataValue":{"type":"string"},
+    "MetricName":{"type":"string"},
+    "MetricNamespace":{"type":"string"},
+    "Monitor":{"type":"boolean"},
+    "Observation":{
+      "type":"structure",
+      "members":{
+        "Id":{
+          "shape":"ObservationId",
+          "documentation":"<p>The ID of the observation type.</p>"
+        },
+        "StartTime":{
+          "shape":"StartTime",
+          "documentation":"<p>The time when the observation was first detected, in epoch seconds.</p>"
+        },
+        "EndTime":{
+          "shape":"EndTime",
+          "documentation":"<p>The time when the observation ended, in epoch seconds.</p>"
+        },
+        "SourceType":{
+          "shape":"SourceType",
+          "documentation":"<p>The source type of the observation.</p>"
+        },
+        "SourceARN":{
+          "shape":"SourceARN",
+          "documentation":"<p>The source resource ARN of the observation.</p>"
+        },
+        "LogGroup":{
+          "shape":"LogGroup",
+          "documentation":"<p>The log group name.</p>"
+        },
+        "LineTime":{
+          "shape":"LineTime",
+          "documentation":"<p>The timestamp in the CloudWatch Logs that specifies when the matched line occurred.</p>"
+        },
+        "LogText":{
+          "shape":"LogText",
+          "documentation":"<p>The log text of the observation.</p>"
+        },
+        "LogFilter":{
+          "shape":"LogFilter",
+          "documentation":"<p>The log filter of the observation.</p>"
+        },
+        "MetricNamespace":{
+          "shape":"MetricNamespace",
+          "documentation":"<p>The namespace of the observation metric.</p>"
+        },
+        "MetricName":{
+          "shape":"MetricName",
+          "documentation":"<p>The name of the observation metric.</p>"
+        },
+        "Unit":{
+          "shape":"Unit",
+          "documentation":"<p>The unit of the source observation metric.</p>"
+        },
+        "Value":{
+          "shape":"Value",
+          "documentation":"<p>The value of the source observation metric.</p>"
+        },
+        "CloudWatchEventId":{
+          "shape":"CloudWatchEventId",
+          "documentation":"<p> The ID of the CloudWatch Event-based observation related to the detected problem. </p>"
+        },
+        "CloudWatchEventSource":{
+          "shape":"CloudWatchEventSource",
+          "documentation":"<p> The source of the CloudWatch Event. </p>"
+        },
+        "CloudWatchEventDetailType":{
+          "shape":"CloudWatchEventDetailType",
+          "documentation":"<p> The detail type of the CloudWatch Event-based observation, for example, <code>EC2 Instance State-change Notification</code>. </p>"
+        },
+        "HealthEventArn":{
+          "shape":"HealthEventArn",
+          "documentation":"<p> The Amazon Resource Name (ARN) of the AWS Health Event-based observation.</p>"
+        },
+        "HealthService":{
+          "shape":"HealthService",
+          "documentation":"<p> The service to which the AWS Health Event belongs, such as EC2. </p>"
+        },
+        "HealthEventTypeCode":{
+          "shape":"HealthEventTypeCode",
+          "documentation":"<p> The type of the AWS Health event, for example, <code>AWS_EC2_POWER_CONNECTIVITY_ISSUE</code>. </p>"
+        },
+        "HealthEventTypeCategory":{
+          "shape":"HealthEventTypeCategory",
+          "documentation":"<p> The category of the AWS Health event, such as <code>issue</code>. </p>"
+        },
+        "HealthEventDescription":{
+          "shape":"HealthEventDescription",
+          "documentation":"<p> The description of the AWS Health event provided by the service, such as Amazon EC2. </p>"
+        },
+        "CodeDeployDeploymentId":{
+          "shape":"CodeDeployDeploymentId",
+          "documentation":"<p> The deployment ID of the CodeDeploy-based observation related to the detected problem. </p>"
+        },
+        "CodeDeployDeploymentGroup":{
+          "shape":"CodeDeployDeploymentGroup",
+          "documentation":"<p> The deployment group to which the CodeDeploy deployment belongs. </p>"
+        },
+        "CodeDeployState":{
+          "shape":"CodeDeployState",
+          "documentation":"<p> The status of the CodeDeploy deployment, for example <code>SUCCESS</code> or <code> FAILURE</code>. </p>"
+        },
+        "CodeDeployApplication":{
+          "shape":"CodeDeployApplication",
+          "documentation":"<p> The CodeDeploy application to which the deployment belongs. </p>"
+        },
+        "CodeDeployInstanceGroupId":{
+          "shape":"CodeDeployInstanceGroupId",
+          "documentation":"<p> The instance group to which the CodeDeploy instance belongs. </p>"
+        },
+        "Ec2State":{
+          "shape":"Ec2State",
+          "documentation":"<p> The state of the instance, such as <code>STOPPING</code> or <code>TERMINATING</code>. </p>"
+        },
+        "RdsEventCategories":{
+          "shape":"RdsEventCategories",
+          "documentation":"<p> The category of an RDS event. </p>"
+        },
+        "RdsEventMessage":{
+          "shape":"RdsEventMessage",
+          "documentation":"<p> The message of an RDS event. </p>"
+        },
+        "S3EventName":{
+          "shape":"S3EventName",
+          "documentation":"<p> The name of the S3 CloudWatch Event-based observation. </p>"
+        },
+        "StatesExecutionArn":{
+          "shape":"StatesExecutionArn",
+          "documentation":"<p> The Amazon Resource Name (ARN) of the step function execution-based observation. </p>"
+        },
+        "StatesArn":{
+          "shape":"StatesArn",
+          "documentation":"<p> The Amazon Resource Name (ARN) of the step function-based observation. </p>"
+        },
+        "StatesStatus":{
+          "shape":"StatesStatus",
+          "documentation":"<p> The status of the step function-related observation. </p>"
+        },
+        "StatesInput":{
+          "shape":"StatesInput",
+          "documentation":"<p> The input to the step function-based observation. </p>"
+        },
+        "EbsEvent":{
+          "shape":"EbsEvent",
+          "documentation":"<p> The type of EBS CloudWatch event, such as <code>createVolume</code>, <code>deleteVolume</code> or <code>attachVolume</code>. </p>"
+        },
+        "EbsResult":{
+          "shape":"EbsResult",
+          "documentation":"<p> The result of an EBS CloudWatch event, such as <code>failed</code> or <code>succeeded</code>. </p>"
+        },
+        "EbsCause":{
+          "shape":"EbsCause",
+          "documentation":"<p> The cause of an EBS CloudWatch event. </p>"
+        },
+        "EbsRequestId":{
+          "shape":"EbsRequestId",
+          "documentation":"<p> The request ID of an EBS CloudWatch event. </p>"
+        },
+        "XRayFaultPercent":{
+          "shape":"XRayFaultPercent",
+          "documentation":"<p> The X-Ray request fault percentage for this node. </p>"
+        },
+        "XRayThrottlePercent":{
+          "shape":"XRayThrottlePercent",
+          "documentation":"<p> The X-Ray request throttle percentage for this node. </p>"
+        },
+        "XRayErrorPercent":{
+          "shape":"XRayErrorPercent",
+          "documentation":"<p> The X-Ray request error percentage for this node. </p>"
+        },
+        "XRayRequestCount":{
+          "shape":"XRayRequestCount",
+          "documentation":"<p> The X-Ray request count for this node. </p>"
+        },
+        "XRayRequestAverageLatency":{
+          "shape":"XRayRequestAverageLatency",
+          "documentation":"<p> The X-Ray node request average latency for this node. </p>"
+        },
+        "XRayNodeName":{
+          "shape":"XRayNodeName",
+          "documentation":"<p> The name of the X-Ray node. </p>"
+        },
+        "XRayNodeType":{
+          "shape":"XRayNodeType",
+          "documentation":"<p> The type of the X-Ray node. </p>"
+        }
+      },
+      "documentation":"<p>Describes an anomaly or error with the application.</p>"
+    },
+    "ObservationId":{
+      "type":"string",
+      "max":38,
+      "min":38,
+      "pattern":"o-[0-9a-fA-F]{8}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{12}"
+    },
+    "ObservationList":{
+      "type":"list",
+      "member":{"shape":"Observation"}
+    },
+    "OpsCenterEnabled":{"type":"boolean"},
+    "OpsItemSNSTopicArn":{
+      "type":"string",
+      "max":300,
+      "min":20,
+      "pattern":"^arn:aws(-\\w+)*:[\\w\\d-]+:([\\w\\d-]*)?:[\\w\\d_-]*([:/].+)*$"
+    },
+    "OsType":{
+      "type":"string",
+      "enum":[
+        "WINDOWS",
+        "LINUX"
+      ]
+    },
+    "PaginationToken":{
+      "type":"string",
+      "max":1024,
+      "min":1,
+      "pattern":".+"
+    },
+    "Problem":{
+      "type":"structure",
+      "members":{
+        "Id":{
+          "shape":"ProblemId",
+          "documentation":"<p>The ID of the problem.</p>"
+        },
+        "Title":{
+          "shape":"Title",
+          "documentation":"<p>The name of the problem.</p>"
+        },
+        "Insights":{
+          "shape":"Insights",
+          "documentation":"<p>A detailed analysis of the problem using machine learning.</p>"
+        },
+        "Status":{
+          "shape":"Status",
+          "documentation":"<p>The status of the problem.</p>"
+        },
+        "AffectedResource":{
+          "shape":"AffectedResource",
+          "documentation":"<p>The resource affected by the problem.</p>"
+        },
+        "StartTime":{
+          "shape":"StartTime",
+          "documentation":"<p>The time when the problem started, in epoch seconds.</p>"
+        },
+        "EndTime":{
+          "shape":"EndTime",
+          "documentation":"<p>The time when the problem ended, in epoch seconds.</p>"
+        },
+        "SeverityLevel":{
+          "shape":"SeverityLevel",
+          "documentation":"<p>A measure of the level of impact of the problem.</p>"
+        },
+        "ResourceGroupName":{
+          "shape":"ResourceGroupName",
+          "documentation":"<p>The name of the resource group affected by the problem.</p>"
+        },
+        "Feedback":{
+          "shape":"Feedback",
+          "documentation":"<p>Feedback provided by the user about the problem.</p>"
+        }
+      },
+      "documentation":"<p>Describes a problem that is detected by correlating observations.</p>"
+    },
+    "ProblemId":{
+      "type":"string",
+      "max":38,
+      "min":38,
+      "pattern":"p-[0-9a-fA-F]{8}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{12}"
+    },
+    "ProblemList":{
+      "type":"list",
+      "member":{"shape":"Problem"}
+    },
+    "RdsEventCategories":{"type":"string"},
+    "RdsEventMessage":{"type":"string"},
+    "RelatedObservations":{
+      "type":"structure",
+      "members":{
+        "ObservationList":{
+          "shape":"ObservationList",
+          "documentation":"<p>The list of observations related to the problem.</p>"
+        }
+      },
+      "documentation":"<p>Describes observations related to the problem.</p>"
+    },
+    "Remarks":{"type":"string"},
+    "RemoveSNSTopic":{"type":"boolean"},
+    "ResourceARN":{
+      "type":"string",
+      "max":1011,
+      "min":1,
+      "pattern":"^arn:aws(-\\w+)*:[\\w\\d-]+:([\\w\\d-]*)?:[\\w\\d_-]*([:/].+)*$"
+    },
+    "ResourceGroupName":{
+      "type":"string",
+      "max":256,
+      "min":1,
+      "pattern":"[a-zA-Z0-9\\.\\-_]*"
+    },
+    "ResourceInUseException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMsg"}
+      },
+      "documentation":"<p>The resource is already created or in use.</p>",
+      "exception":true
+    },
+    "ResourceList":{
+      "type":"list",
+      "member":{"shape":"ResourceARN"}
+    },
+    "ResourceNotFoundException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMsg"}
+      },
+      "documentation":"<p>The resource does not exist in the customer account.</p>",
+      "exception":true
+    },
+    "ResourceType":{
+      "type":"string",
+      "max":50,
+      "min":1,
+      "pattern":"[0-9a-zA-Z:_]*"
+    },
+    "S3EventName":{"type":"string"},
+    "SeverityLevel":{
+      "type":"string",
+      "enum":[
+        "Low",
+        "Medium",
+        "High"
+      ]
+    },
+    "SourceARN":{"type":"string"},
+    "SourceType":{"type":"string"},
+    "StartTime":{"type":"timestamp"},
+    "StatesArn":{"type":"string"},
+    "StatesExecutionArn":{"type":"string"},
+    "StatesInput":{"type":"string"},
+    "StatesStatus":{"type":"string"},
+    "Status":{
+      "type":"string",
+      "enum":[
+        "IGNORE",
+        "RESOLVED",
+        "PENDING"
+      ]
+    },
+    "Tag":{
+      "type":"structure",
+      "required":[
+        "Key",
+        "Value"
+      ],
+      "members":{
+        "Key":{
+          "shape":"TagKey",
+          "documentation":"<p>One part of a key-value pair that defines a tag. The maximum length of a tag key is 128 characters. The minimum length is 1 character.</p>"
+        },
+        "Value":{
+          "shape":"TagValue",
+          "documentation":"<p>The optional part of a key-value pair that defines a tag. The maximum length of a tag value is 256 characters. The minimum length is 0 characters. If you don't want an application to have a specific tag value, don't specify a value for this parameter.</p>"
+        }
+      },
+      "documentation":"<p>An object that defines the tags associated with an application. A <i>tag</i> is a label that you optionally define and associate with an application. Tags can help you categorize and manage resources in different ways, such as by purpose, owner, environment, or other criteria.</p> <p>Each tag consists of a required <i>tag key</i> and an associated <i>tag value</i>, both of which you define. A tag key is a general label that acts as a category for a more specific tag value. A tag value acts as a descriptor within a tag key. A tag key can contain as many as 128 characters. A tag value can contain as many as 256 characters. The characters can be Unicode letters, digits, white space, or one of the following symbols: _ . : / = + -. The following additional restrictions apply to tags:</p> <ul> <li> <p>Tag keys and values are case sensitive.</p> </li> <li> <p>For each associated resource, each tag key must be unique and it can have only one value.</p> </li> <li> <p>The <code>aws:</code> prefix is reserved for use by AWS; you can’t use it in any tag keys or values that you define. In addition, you can't edit or remove tag keys or values that use this prefix. </p> </li> </ul>"
+    },
+    "TagKey":{
+      "type":"string",
+      "max":128,
+      "min":1,
+      "pattern":"^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$"
+    },
+    "TagKeyList":{
+      "type":"list",
+      "member":{"shape":"TagKey"},
+      "max":200,
+      "min":0
+    },
+    "TagList":{
+      "type":"list",
+      "member":{"shape":"Tag"},
+      "max":200,
+      "min":0
+    },
+    "TagResourceRequest":{
+      "type":"structure",
+      "required":[
+        "ResourceARN",
+        "Tags"
+      ],
+      "members":{
+        "ResourceARN":{
+          "shape":"AmazonResourceName",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the application that you want to add one or more tags to.</p>"
+        },
+        "Tags":{
+          "shape":"TagList",
+          "documentation":"<p>A list of tags that to add to the application. A tag consists of a required tag key (<code>Key</code>) and an associated tag value (<code>Value</code>). The maximum length of a tag key is 128 characters. The maximum length of a tag value is 256 characters.</p>"
+        }
+      }
+    },
+    "TagResourceResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "TagValue":{
+      "type":"string",
+      "max":256,
+      "min":0,
+      "pattern":"^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$"
+    },
+    "TagsAlreadyExistException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ExceptionMessage"}
+      },
+      "documentation":"<p>Tags are already registered for the specified application ARN.</p>",
+      "exception":true
+    },
+    "Tier":{
+      "type":"string",
+      "enum":[
+        "CUSTOM",
+        "DEFAULT",
+        "DOT_NET_CORE",
+        "DOT_NET_WORKER",
+        "DOT_NET_WEB_TIER",
+        "DOT_NET_WEB",
+        "SQL_SERVER",
+        "SQL_SERVER_ALWAYSON_AVAILABILITY_GROUP",
+        "MYSQL",
+        "POSTGRESQL",
+        "JAVA_JMX",
+        "ORACLE"
+      ],
+      "max":50,
+      "min":1
+    },
+    "Title":{"type":"string"},
+    "TooManyTagsException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ExceptionMessage"},
+        "ResourceName":{
+          "shape":"AmazonResourceName",
+          "documentation":"<p>The name of the resource with too many tags.</p>"
+        }
+      },
+      "documentation":"<p>The number of the provided tags is beyond the limit, or the number of total tags you are trying to attach to the specified resource exceeds the limit.</p>",
+      "exception":true
+    },
+    "Unit":{"type":"string"},
+    "UntagResourceRequest":{
+      "type":"structure",
+      "required":[
+        "ResourceARN",
+        "TagKeys"
+      ],
+      "members":{
+        "ResourceARN":{
+          "shape":"AmazonResourceName",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the application that you want to remove one or more tags from.</p>"
+        },
+        "TagKeys":{
+          "shape":"TagKeyList",
+          "documentation":"<p>The tags (tag keys) that you want to remove from the resource. When you specify a tag key, the action removes both that key and its associated tag value.</p> <p>To remove more than one tag from the application, append the <code>TagKeys</code> parameter and argument for each additional tag to remove, separated by an ampersand. </p>"
+        }
+      }
+    },
+    "UntagResourceResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "UpdateApplicationRequest":{
+      "type":"structure",
+      "required":["ResourceGroupName"],
+      "members":{
+        "ResourceGroupName":{
+          "shape":"ResourceGroupName",
+          "documentation":"<p>The name of the resource group.</p>"
+        },
+        "OpsCenterEnabled":{
+          "shape":"OpsCenterEnabled",
+          "documentation":"<p> When set to <code>true</code>, creates opsItems for any problems detected on an application. </p>"
+        },
+        "CWEMonitorEnabled":{
+          "shape":"CWEMonitorEnabled",
+          "documentation":"<p> Indicates whether Application Insights can listen to CloudWatch events for the application resources, such as <code>instance terminated</code>, <code>failed deployment</code>, and others. </p>"
+        },
+        "OpsItemSNSTopicArn":{
+          "shape":"OpsItemSNSTopicArn",
+          "documentation":"<p> The SNS topic provided to Application Insights that is associated to the created opsItem. Allows you to receive notifications for updates to the opsItem.</p>"
+        },
+        "RemoveSNSTopic":{
+          "shape":"RemoveSNSTopic",
+          "documentation":"<p> Disassociates the SNS topic from the opsItem created for detected problems.</p>"
+        }
+      }
+    },
+    "UpdateApplicationResponse":{
+      "type":"structure",
+      "members":{
+        "ApplicationInfo":{
+          "shape":"ApplicationInfo",
+          "documentation":"<p>Information about the application. </p>"
+        }
+      }
+    },
+    "UpdateComponentConfigurationRequest":{
+      "type":"structure",
+      "required":[
+        "ResourceGroupName",
+        "ComponentName"
+      ],
+      "members":{
+        "ResourceGroupName":{
+          "shape":"ResourceGroupName",
+          "documentation":"<p>The name of the resource group.</p>"
+        },
+        "ComponentName":{
+          "shape":"ComponentName",
+          "documentation":"<p>The name of the component.</p>"
+        },
+        "Monitor":{
+          "shape":"Monitor",
+          "documentation":"<p>Indicates whether the application component is monitored.</p>"
+        },
+        "Tier":{
+          "shape":"Tier",
+          "documentation":"<p>The tier of the application component. Supported tiers include <code>DOT_NET_WORKER</code>, <code>DOT_NET_WEB</code>, <code>DOT_NET_CORE</code>, <code>SQL_SERVER</code>, and <code>DEFAULT</code>.</p>"
+        },
+        "ComponentConfiguration":{
+          "shape":"ComponentConfiguration",
+          "documentation":"<p>The configuration settings of the component. The value is the escaped JSON of the configuration. For more information about the JSON format, see <a href=\"https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/working-with-json.html\">Working with JSON</a>. You can send a request to <code>DescribeComponentConfigurationRecommendation</code> to see the recommended configuration for a component. For the complete format of the component configuration file, see <a href=\"https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/component-config.html\">Component Configuration</a>.</p>"
+        }
+      }
+    },
+    "UpdateComponentConfigurationResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "UpdateComponentRequest":{
+      "type":"structure",
+      "required":[
+        "ResourceGroupName",
+        "ComponentName"
+      ],
+      "members":{
+        "ResourceGroupName":{
+          "shape":"ResourceGroupName",
+          "documentation":"<p>The name of the resource group.</p>"
+        },
+        "ComponentName":{
+          "shape":"CustomComponentName",
+          "documentation":"<p>The name of the component.</p>"
+        },
+        "NewComponentName":{
+          "shape":"CustomComponentName",
+          "documentation":"<p>The new name of the component.</p>"
+        },
+        "ResourceList":{
+          "shape":"ResourceList",
+          "documentation":"<p>The list of resource ARNs that belong to the component.</p>"
+        }
+      }
+    },
+    "UpdateComponentResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "UpdateLogPatternRequest":{
+      "type":"structure",
+      "required":[
+        "ResourceGroupName",
+        "PatternSetName",
+        "PatternName"
+      ],
+      "members":{
+        "ResourceGroupName":{
+          "shape":"ResourceGroupName",
+          "documentation":"<p>The name of the resource group.</p>"
+        },
+        "PatternSetName":{
+          "shape":"LogPatternSetName",
+          "documentation":"<p>The name of the log pattern set.</p>"
+        },
+        "PatternName":{
+          "shape":"LogPatternName",
+          "documentation":"<p>The name of the log pattern.</p>"
+        },
+        "Pattern":{
+          "shape":"LogPatternRegex",
+          "documentation":"<p>The log pattern. The pattern must be DFA compatible. Patterns that utilize forward lookahead or backreference constructions are not supported.</p>"
+        },
+        "Rank":{
+          "shape":"LogPatternRank",
+          "documentation":"<p>Rank of the log pattern. Must be a value between <code>1</code> and <code>1,000,000</code>. The patterns are sorted by rank, so we recommend that you set your highest priority patterns with the lowest rank. A pattern of rank <code>1</code> will be the first to get matched to a log line. A pattern of rank <code>1,000,000</code> will be last to get matched. When you configure custom log patterns from the console, a <code>Low</code> severity pattern translates to a <code>750,000</code> rank. A <code>Medium</code> severity pattern translates to a <code>500,000</code> rank. And a <code>High</code> severity pattern translates to a <code>250,000</code> rank. Rank values less than <code>1</code> or greater than <code>1,000,000</code> are reserved for AWS-provided patterns. </p>"
+        }
+      }
+    },
+    "UpdateLogPatternResponse":{
+      "type":"structure",
+      "members":{
+        "ResourceGroupName":{
+          "shape":"ResourceGroupName",
+          "documentation":"<p>The name of the resource group.</p>"
+        },
+        "LogPattern":{
+          "shape":"LogPattern",
+          "documentation":"<p>The successfully created log pattern.</p>"
+        }
+      }
+    },
+    "ValidationException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMsg"}
+      },
+      "documentation":"<p>The parameter is not valid.</p>",
+      "exception":true
+    },
+    "Value":{"type":"double"},
+    "WorkloadMetaData":{
+      "type":"map",
+      "key":{"shape":"MetaDataKey"},
+      "value":{"shape":"MetaDataValue"}
+    },
+    "XRayErrorPercent":{"type":"integer"},
+    "XRayFaultPercent":{"type":"integer"},
+    "XRayNodeName":{"type":"string"},
+    "XRayNodeType":{"type":"string"},
+    "XRayRequestAverageLatency":{"type":"long"},
+    "XRayRequestCount":{"type":"integer"},
+    "XRayThrottlePercent":{"type":"integer"}
+  },
+  "documentation":"<fullname>Amazon CloudWatch Application Insights</fullname> <p> Amazon CloudWatch Application Insights is a service that helps you detect common problems with your applications. It enables you to pinpoint the source of issues in your applications (built with technologies such as Microsoft IIS, .NET, and Microsoft SQL Server), by providing key insights into detected problems.</p> <p>After you onboard your application, CloudWatch Application Insights identifies, recommends, and sets up metrics and logs. It continuously analyzes and correlates your metrics and logs for unusual behavior to surface actionable problems with your application. For example, if your application is slow and unresponsive and leading to HTTP 500 errors in your Application Load Balancer (ALB), Application Insights informs you that a memory pressure problem with your SQL Server database is occurring. It bases this analysis on impactful metrics and log errors. </p>"
+}

+ 10 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/applicationcostprofiler/2020-09-10/paginators-1.json

@@ -0,0 +1,10 @@
+{
+  "pagination": {
+    "ListReportDefinitions": {
+      "input_token": "nextToken",
+      "output_token": "nextToken",
+      "limit_key": "maxResults",
+      "result_key": "reportDefinitions"
+    }
+  }
+}

+ 522 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/applicationcostprofiler/2020-09-10/service-2.json

@@ -0,0 +1,522 @@
+{
+  "version":"2.0",
+  "metadata":{
+    "apiVersion":"2020-09-10",
+    "endpointPrefix":"application-cost-profiler",
+    "jsonVersion":"1.1",
+    "protocol":"rest-json",
+    "serviceFullName":"AWS Application Cost Profiler",
+    "serviceId":"ApplicationCostProfiler",
+    "signatureVersion":"v4",
+    "signingName":"application-cost-profiler",
+    "uid":"AWSApplicationCostProfiler-2020-09-10"
+  },
+  "operations":{
+    "DeleteReportDefinition":{
+      "name":"DeleteReportDefinition",
+      "http":{
+        "method":"DELETE",
+        "requestUri":"/reportDefinition/{reportId}"
+      },
+      "input":{"shape":"DeleteReportDefinitionRequest"},
+      "output":{"shape":"DeleteReportDefinitionResult"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"ThrottlingException"},
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Deletes the specified report definition in AWS Application Cost Profiler. This stops the report from being generated.</p>"
+    },
+    "GetReportDefinition":{
+      "name":"GetReportDefinition",
+      "http":{
+        "method":"GET",
+        "requestUri":"/reportDefinition/{reportId}"
+      },
+      "input":{"shape":"GetReportDefinitionRequest"},
+      "output":{"shape":"GetReportDefinitionResult"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"ThrottlingException"},
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Retrieves the definition of a report already configured in AWS Application Cost Profiler.</p>"
+    },
+    "ImportApplicationUsage":{
+      "name":"ImportApplicationUsage",
+      "http":{
+        "method":"POST",
+        "requestUri":"/importApplicationUsage"
+      },
+      "input":{"shape":"ImportApplicationUsageRequest"},
+      "output":{"shape":"ImportApplicationUsageResult"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"ThrottlingException"},
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Ingests application usage data from Amazon Simple Storage Service (Amazon S3).</p> <p>The data must already exist in the S3 location. As part of the action, AWS Application Cost Profiler copies the object from your S3 bucket to an S3 bucket owned by Amazon for processing asynchronously.</p>"
+    },
+    "ListReportDefinitions":{
+      "name":"ListReportDefinitions",
+      "http":{
+        "method":"GET",
+        "requestUri":"/reportDefinition"
+      },
+      "input":{"shape":"ListReportDefinitionsRequest"},
+      "output":{"shape":"ListReportDefinitionsResult"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"ThrottlingException"},
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Retrieves a list of all reports and their configurations for your AWS account.</p> <p>The maximum number of reports is one.</p>"
+    },
+    "PutReportDefinition":{
+      "name":"PutReportDefinition",
+      "http":{
+        "method":"POST",
+        "requestUri":"/reportDefinition"
+      },
+      "input":{"shape":"PutReportDefinitionRequest"},
+      "output":{"shape":"PutReportDefinitionResult"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"ThrottlingException"},
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"ServiceQuotaExceededException"}
+      ],
+      "documentation":"<p>Creates the report definition for a report in Application Cost Profiler.</p>"
+    },
+    "UpdateReportDefinition":{
+      "name":"UpdateReportDefinition",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/reportDefinition/{reportId}"
+      },
+      "input":{"shape":"UpdateReportDefinitionRequest"},
+      "output":{"shape":"UpdateReportDefinitionResult"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"ThrottlingException"},
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Updates existing report in AWS Application Cost Profiler.</p>"
+    }
+  },
+  "shapes":{
+    "AccessDeniedException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>You do not have permission to perform this action.</p>",
+      "error":{"httpStatusCode":403},
+      "exception":true
+    },
+    "DeleteReportDefinitionRequest":{
+      "type":"structure",
+      "required":["reportId"],
+      "members":{
+        "reportId":{
+          "shape":"ReportId",
+          "documentation":"<p>Required. ID of the report to delete.</p>",
+          "location":"uri",
+          "locationName":"reportId"
+        }
+      }
+    },
+    "DeleteReportDefinitionResult":{
+      "type":"structure",
+      "members":{
+        "reportId":{
+          "shape":"ReportId",
+          "documentation":"<p>ID of the report that was deleted.</p>"
+        }
+      }
+    },
+    "ErrorMessage":{"type":"string"},
+    "Format":{
+      "type":"string",
+      "enum":[
+        "CSV",
+        "PARQUET"
+      ]
+    },
+    "GetReportDefinitionRequest":{
+      "type":"structure",
+      "required":["reportId"],
+      "members":{
+        "reportId":{
+          "shape":"ReportId",
+          "documentation":"<p>ID of the report to retrieve.</p>",
+          "location":"uri",
+          "locationName":"reportId"
+        }
+      }
+    },
+    "GetReportDefinitionResult":{
+      "type":"structure",
+      "required":[
+        "reportId",
+        "reportDescription",
+        "reportFrequency",
+        "format",
+        "destinationS3Location",
+        "createdAt",
+        "lastUpdated"
+      ],
+      "members":{
+        "reportId":{
+          "shape":"ReportId",
+          "documentation":"<p>ID of the report retrieved.</p>"
+        },
+        "reportDescription":{
+          "shape":"ReportDescription",
+          "documentation":"<p>Description of the report.</p>"
+        },
+        "reportFrequency":{
+          "shape":"ReportFrequency",
+          "documentation":"<p>Cadence used to generate the report.</p>"
+        },
+        "format":{
+          "shape":"Format",
+          "documentation":"<p>Format of the generated report.</p>"
+        },
+        "destinationS3Location":{
+          "shape":"S3Location",
+          "documentation":"<p>Amazon Simple Storage Service (Amazon S3) location where the report is uploaded.</p>"
+        },
+        "createdAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>Timestamp (milliseconds) when this report definition was created.</p>"
+        },
+        "lastUpdated":{
+          "shape":"Timestamp",
+          "documentation":"<p>Timestamp (milliseconds) when this report definition was last updated.</p>"
+        }
+      }
+    },
+    "ImportApplicationUsageRequest":{
+      "type":"structure",
+      "required":["sourceS3Location"],
+      "members":{
+        "sourceS3Location":{
+          "shape":"SourceS3Location",
+          "documentation":"<p>Amazon S3 location to import application usage data from.</p>"
+        }
+      }
+    },
+    "ImportApplicationUsageResult":{
+      "type":"structure",
+      "required":["importId"],
+      "members":{
+        "importId":{
+          "shape":"ImportId",
+          "documentation":"<p>ID of the import request.</p>"
+        }
+      }
+    },
+    "ImportId":{
+      "type":"string",
+      "max":255,
+      "min":1,
+      "pattern":"[0-9A-Za-z\\.\\-_]*"
+    },
+    "Integer":{
+      "type":"integer",
+      "max":100,
+      "min":1
+    },
+    "InternalServerException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>An internal server error occurred. Retry your request.</p>",
+      "error":{"httpStatusCode":500},
+      "exception":true,
+      "fault":true
+    },
+    "ListReportDefinitionsRequest":{
+      "type":"structure",
+      "members":{
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p>The token value from a previous call to access the next page of results.</p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "maxResults":{
+          "shape":"Integer",
+          "documentation":"<p>The maximum number of results to return.</p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        }
+      }
+    },
+    "ListReportDefinitionsResult":{
+      "type":"structure",
+      "members":{
+        "reportDefinitions":{
+          "shape":"ReportDefinitionList",
+          "documentation":"<p>The retrieved reports.</p>"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p>The value of the next token, if it exists. Null if there are no more results.</p>"
+        }
+      }
+    },
+    "PutReportDefinitionRequest":{
+      "type":"structure",
+      "required":[
+        "reportId",
+        "reportDescription",
+        "reportFrequency",
+        "format",
+        "destinationS3Location"
+      ],
+      "members":{
+        "reportId":{
+          "shape":"ReportId",
+          "documentation":"<p>Required. ID of the report. You can choose any valid string matching the pattern for the ID.</p>"
+        },
+        "reportDescription":{
+          "shape":"ReportDescription",
+          "documentation":"<p>Required. Description of the report.</p>"
+        },
+        "reportFrequency":{
+          "shape":"ReportFrequency",
+          "documentation":"<p>Required. The cadence to generate the report.</p>"
+        },
+        "format":{
+          "shape":"Format",
+          "documentation":"<p>Required. The format to use for the generated report.</p>"
+        },
+        "destinationS3Location":{
+          "shape":"S3Location",
+          "documentation":"<p>Required. Amazon Simple Storage Service (Amazon S3) location where Application Cost Profiler uploads the report.</p>"
+        }
+      }
+    },
+    "PutReportDefinitionResult":{
+      "type":"structure",
+      "members":{
+        "reportId":{
+          "shape":"ReportId",
+          "documentation":"<p>ID of the report.</p>"
+        }
+      }
+    },
+    "ReportDefinition":{
+      "type":"structure",
+      "members":{
+        "reportId":{
+          "shape":"ReportId",
+          "documentation":"<p>The ID of the report.</p>"
+        },
+        "reportDescription":{
+          "shape":"ReportDescription",
+          "documentation":"<p>Description of the report</p>"
+        },
+        "reportFrequency":{
+          "shape":"ReportFrequency",
+          "documentation":"<p>The cadence at which the report is generated.</p>"
+        },
+        "format":{
+          "shape":"Format",
+          "documentation":"<p>The format used for the generated reports.</p>"
+        },
+        "destinationS3Location":{
+          "shape":"S3Location",
+          "documentation":"<p>The location in Amazon Simple Storage Service (Amazon S3) the reports should be saved to.</p>"
+        },
+        "createdAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>Timestamp (milliseconds) when this report definition was created.</p>"
+        },
+        "lastUpdatedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>Timestamp (milliseconds) when this report definition was last updated.</p>"
+        }
+      },
+      "documentation":"<p>The configuration of a report in AWS Application Cost Profiler.</p>"
+    },
+    "ReportDefinitionList":{
+      "type":"list",
+      "member":{"shape":"ReportDefinition"}
+    },
+    "ReportDescription":{
+      "type":"string",
+      "max":1024,
+      "min":1,
+      "pattern":".*\\S.*"
+    },
+    "ReportFrequency":{
+      "type":"string",
+      "enum":[
+        "MONTHLY",
+        "DAILY",
+        "ALL"
+      ]
+    },
+    "ReportId":{
+      "type":"string",
+      "max":255,
+      "min":1,
+      "pattern":"^[0-9A-Za-z\\.\\-_]+$"
+    },
+    "S3Bucket":{
+      "type":"string",
+      "max":63,
+      "min":3,
+      "pattern":"(?=^.{3,63}$)(?!^(\\d+\\.)+\\d+$)(^(([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])\\.)*([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])$)"
+    },
+    "S3BucketRegion":{
+      "type":"string",
+      "enum":[
+        "ap-east-1",
+        "me-south-1",
+        "eu-south-1",
+        "af-south-1"
+      ]
+    },
+    "S3Key":{
+      "type":"string",
+      "max":512,
+      "min":1,
+      "pattern":".*\\S.*"
+    },
+    "S3Location":{
+      "type":"structure",
+      "required":[
+        "bucket",
+        "prefix"
+      ],
+      "members":{
+        "bucket":{
+          "shape":"S3Bucket",
+          "documentation":"<p>Name of the S3 bucket.</p>"
+        },
+        "prefix":{
+          "shape":"S3Prefix",
+          "documentation":"<p>Prefix for the location to write to.</p>"
+        }
+      },
+      "documentation":"<p>Represents the Amazon Simple Storage Service (Amazon S3) location where AWS Application Cost Profiler reports are generated and then written to.</p>"
+    },
+    "S3Prefix":{
+      "type":"string",
+      "max":512,
+      "min":1,
+      "pattern":".*\\S.*"
+    },
+    "ServiceQuotaExceededException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>Your request exceeds one or more of the service quotas.</p>",
+      "error":{"httpStatusCode":402},
+      "exception":true
+    },
+    "SourceS3Location":{
+      "type":"structure",
+      "required":[
+        "bucket",
+        "key"
+      ],
+      "members":{
+        "bucket":{
+          "shape":"S3Bucket",
+          "documentation":"<p>Name of the bucket.</p>"
+        },
+        "key":{
+          "shape":"S3Key",
+          "documentation":"<p>Key of the object.</p>"
+        },
+        "region":{
+          "shape":"S3BucketRegion",
+          "documentation":"<p>Region of the bucket. Only required for Regions that are disabled by default. For more infomration about Regions that are disabled by default, see <a href=\"https://docs.aws.amazon.com/general/latest/gr/rande-manage.html#rande-manage-enable\"> Enabling a Region</a> in the <i>AWS General Reference guide</i>.</p>"
+        }
+      },
+      "documentation":"<p>Represents the Amazon Simple Storage Service (Amazon S3) location where usage data is read from.</p>"
+    },
+    "ThrottlingException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>The calls to AWS Application Cost Profiler API are throttled. The request was denied.</p>",
+      "error":{"httpStatusCode":429},
+      "exception":true
+    },
+    "Timestamp":{"type":"timestamp"},
+    "Token":{
+      "type":"string",
+      "max":102400,
+      "min":1,
+      "pattern":"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$"
+    },
+    "UpdateReportDefinitionRequest":{
+      "type":"structure",
+      "required":[
+        "reportId",
+        "reportDescription",
+        "reportFrequency",
+        "format",
+        "destinationS3Location"
+      ],
+      "members":{
+        "reportId":{
+          "shape":"ReportId",
+          "documentation":"<p>Required. ID of the report to update.</p>",
+          "location":"uri",
+          "locationName":"reportId"
+        },
+        "reportDescription":{
+          "shape":"ReportDescription",
+          "documentation":"<p>Required. Description of the report.</p>"
+        },
+        "reportFrequency":{
+          "shape":"ReportFrequency",
+          "documentation":"<p>Required. The cadence to generate the report.</p>"
+        },
+        "format":{
+          "shape":"Format",
+          "documentation":"<p>Required. The format to use for the generated report.</p>"
+        },
+        "destinationS3Location":{
+          "shape":"S3Location",
+          "documentation":"<p>Required. Amazon Simple Storage Service (Amazon S3) location where Application Cost Profiler uploads the report.</p>"
+        }
+      }
+    },
+    "UpdateReportDefinitionResult":{
+      "type":"structure",
+      "members":{
+        "reportId":{
+          "shape":"ReportId",
+          "documentation":"<p>ID of the report.</p>"
+        }
+      }
+    },
+    "ValidationException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>The input fails to satisfy the constraints for the API.</p>",
+      "error":{"httpStatusCode":400},
+      "exception":true
+    }
+  },
+  "documentation":"<p>This reference provides descriptions of the AWS Application Cost Profiler API.</p> <p>The AWS Application Cost Profiler API provides programmatic access to view, create, update, and delete application cost report definitions, as well as to import your usage data into the Application Cost Profiler service.</p> <p>For more information about using this service, see the <a href=\"https://docs.aws.amazon.com/application-cost-profiler/latest/userguide/introduction.html\">AWS Application Cost Profiler User Guide</a>.</p>"
+}

+ 28 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appmesh/2018-10-01/paginators-1.json

@@ -0,0 +1,28 @@
+{
+  "pagination": {
+    "ListMeshes": {
+      "input_token": "nextToken",
+      "limit_key": "limit",
+      "output_token": "nextToken",
+      "result_key": "meshes"
+    },
+    "ListRoutes": {
+      "input_token": "nextToken",
+      "limit_key": "limit",
+      "output_token": "nextToken",
+      "result_key": "routes"
+    },
+    "ListVirtualNodes": {
+      "input_token": "nextToken",
+      "limit_key": "limit",
+      "output_token": "nextToken",
+      "result_key": "virtualNodes"
+    },
+    "ListVirtualRouters": {
+      "input_token": "nextToken",
+      "limit_key": "limit",
+      "output_token": "nextToken",
+      "result_key": "virtualRouters"
+    }
+  }
+}

+ 2207 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appmesh/2018-10-01/service-2.json

@@ -0,0 +1,2207 @@
+{
+  "version": "2.0",
+  "metadata": {
+    "apiVersion": "2018-10-01",
+    "endpointPrefix": "appmesh",
+    "jsonVersion": "1.1",
+    "protocol": "rest-json",
+    "serviceFullName": "AWS App Mesh",
+    "serviceId": "App Mesh",
+    "signatureVersion": "v4",
+    "signingName": "appmesh",
+    "uid": "appmesh-2018-10-01"
+  },
+  "documentation": "<p>AWS App Mesh is a service mesh based on the Envoy proxy that makes it easy to monitor and\n         control containerized microservices. App Mesh standardizes how your microservices\n         communicate, giving you end-to-end visibility and helping to ensure high-availability for\n         your applications.</p>\n         <p>App Mesh gives you consistent visibility and network traffic controls for every\n         microservice in an application. You can use App Mesh with Amazon ECS\n         (using the Amazon EC2 launch type), Amazon EKS, and Kubernetes on AWS.</p>\n         <note>\n            <p>App Mesh supports containerized microservice applications that use service discovery\n            naming for their components. To use App Mesh, you must have a containerized application\n            running on Amazon EC2 instances, hosted in either Amazon ECS, Amazon EKS, or Kubernetes on AWS. For\n            more information about service discovery on Amazon ECS, see <a href=\"http://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html\">Service Discovery</a> in the\n               <i>Amazon Elastic Container Service Developer Guide</i>. Kubernetes <code>kube-dns</code> is supported.\n            For more information, see <a href=\"https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/\">DNS\n               for Services and Pods</a> in the Kubernetes documentation.</p>\n         </note>",
+  "operations": {
+    "CreateMesh": {
+      "name": "CreateMesh",
+      "http": {
+        "method": "PUT",
+        "requestUri": "/meshes",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "CreateMeshInput"
+      },
+      "output": {
+        "shape": "CreateMeshOutput"
+      },
+      "errors": [
+        {
+          "shape": "BadRequestException"
+        },
+        {
+          "shape": "ConflictException"
+        },
+        {
+          "shape": "ForbiddenException"
+        },
+        {
+          "shape": "InternalServerErrorException"
+        },
+        {
+          "shape": "LimitExceededException"
+        },
+        {
+          "shape": "NotFoundException"
+        },
+        {
+          "shape": "ServiceUnavailableException"
+        },
+        {
+          "shape": "TooManyRequestsException"
+        }
+      ],
+      "documentation": "<p>Creates a new service mesh. A service mesh is a logical boundary for network traffic\n         between the services that reside within it.</p>\n         <p>After you create your service mesh, you can create virtual nodes, virtual routers, and\n         routes to distribute traffic between the applications in your mesh.</p>",
+      "idempotent": true
+    },
+    "CreateRoute": {
+      "name": "CreateRoute",
+      "http": {
+        "method": "PUT",
+        "requestUri": "/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "CreateRouteInput"
+      },
+      "output": {
+        "shape": "CreateRouteOutput"
+      },
+      "errors": [
+        {
+          "shape": "BadRequestException"
+        },
+        {
+          "shape": "ConflictException"
+        },
+        {
+          "shape": "ForbiddenException"
+        },
+        {
+          "shape": "InternalServerErrorException"
+        },
+        {
+          "shape": "LimitExceededException"
+        },
+        {
+          "shape": "NotFoundException"
+        },
+        {
+          "shape": "ServiceUnavailableException"
+        },
+        {
+          "shape": "TooManyRequestsException"
+        }
+      ],
+      "documentation": "<p>Creates a new route that is associated with a virtual router.</p>\n         <p>You can use the <code>prefix</code> parameter in your route specification for path-based\n         routing of requests. For example, if your virtual router service name is\n            <code>my-service.local</code>, and you want the route to match requests to\n            <code>my-service.local/metrics</code>, then your prefix should be\n         <code>/metrics</code>.</p>\n         <p>If your route matches a request, you can distribute traffic to one or more target\n         virtual nodes with relative weighting.</p>",
+      "idempotent": true
+    },
+    "CreateVirtualNode": {
+      "name": "CreateVirtualNode",
+      "http": {
+        "method": "PUT",
+        "requestUri": "/meshes/{meshName}/virtualNodes",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "CreateVirtualNodeInput"
+      },
+      "output": {
+        "shape": "CreateVirtualNodeOutput"
+      },
+      "errors": [
+        {
+          "shape": "BadRequestException"
+        },
+        {
+          "shape": "ConflictException"
+        },
+        {
+          "shape": "ForbiddenException"
+        },
+        {
+          "shape": "InternalServerErrorException"
+        },
+        {
+          "shape": "LimitExceededException"
+        },
+        {
+          "shape": "NotFoundException"
+        },
+        {
+          "shape": "ServiceUnavailableException"
+        },
+        {
+          "shape": "TooManyRequestsException"
+        }
+      ],
+      "documentation": "<p>Creates a new virtual node within a service mesh.</p>\n         <p>A virtual node acts as logical pointer to a particular task group, such as an Amazon ECS\n         service or a Kubernetes deployment. When you create a virtual node, you must specify the\n         DNS service discovery name for your task group.</p>\n         <p>Any inbound traffic that your virtual node expects should be specified as a\n            <code>listener</code>. Any outbound traffic that your virtual node expects to reach\n         should be specified as a <code>backend</code>.</p>\n         <p>The response metadata for your new virtual node contains the <code>arn</code> that is\n         associated with the virtual node. Set this value (either the full ARN or the truncated\n         resource name, for example, <code>mesh/default/virtualNode/simpleapp</code>, as the\n            <code>APPMESH_VIRTUAL_NODE_NAME</code> environment variable for your task group's Envoy\n         proxy container in your task definition or pod spec. This is then mapped to the\n            <code>node.id</code> and <code>node.cluster</code> Envoy parameters.</p>\n         <note>\n            <p>If you require your Envoy stats or tracing to use a different name, you can override\n            the <code>node.cluster</code> value that is set by\n               <code>APPMESH_VIRTUAL_NODE_NAME</code> with the\n               <code>APPMESH_VIRTUAL_NODE_CLUSTER</code> environment variable.</p>\n         </note>",
+      "idempotent": true
+    },
+    "CreateVirtualRouter": {
+      "name": "CreateVirtualRouter",
+      "http": {
+        "method": "PUT",
+        "requestUri": "/meshes/{meshName}/virtualRouters",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "CreateVirtualRouterInput"
+      },
+      "output": {
+        "shape": "CreateVirtualRouterOutput"
+      },
+      "errors": [
+        {
+          "shape": "BadRequestException"
+        },
+        {
+          "shape": "ConflictException"
+        },
+        {
+          "shape": "ForbiddenException"
+        },
+        {
+          "shape": "InternalServerErrorException"
+        },
+        {
+          "shape": "LimitExceededException"
+        },
+        {
+          "shape": "NotFoundException"
+        },
+        {
+          "shape": "ServiceUnavailableException"
+        },
+        {
+          "shape": "TooManyRequestsException"
+        }
+      ],
+      "documentation": "<p>Creates a new virtual router within a service mesh.</p>\n         <p>Virtual routers handle traffic for one or more service names within your mesh. After you\n         create your virtual router, create and associate routes for your virtual router that direct\n         incoming requests to different virtual nodes.</p>",
+      "idempotent": true
+    },
+    "DeleteMesh": {
+      "name": "DeleteMesh",
+      "http": {
+        "method": "DELETE",
+        "requestUri": "/meshes/{meshName}",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "DeleteMeshInput"
+      },
+      "output": {
+        "shape": "DeleteMeshOutput"
+      },
+      "errors": [
+        {
+          "shape": "BadRequestException"
+        },
+        {
+          "shape": "ForbiddenException"
+        },
+        {
+          "shape": "InternalServerErrorException"
+        },
+        {
+          "shape": "NotFoundException"
+        },
+        {
+          "shape": "ResourceInUseException"
+        },
+        {
+          "shape": "ServiceUnavailableException"
+        },
+        {
+          "shape": "TooManyRequestsException"
+        }
+      ],
+      "documentation": "<p>Deletes an existing service mesh.</p>\n         <p>You must delete all resources (routes, virtual routers, virtual nodes) in the service\n         mesh before you can delete the mesh itself.</p>",
+      "idempotent": true
+    },
+    "DeleteRoute": {
+      "name": "DeleteRoute",
+      "http": {
+        "method": "DELETE",
+        "requestUri": "/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes/{routeName}",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "DeleteRouteInput"
+      },
+      "output": {
+        "shape": "DeleteRouteOutput"
+      },
+      "errors": [
+        {
+          "shape": "BadRequestException"
+        },
+        {
+          "shape": "ForbiddenException"
+        },
+        {
+          "shape": "InternalServerErrorException"
+        },
+        {
+          "shape": "NotFoundException"
+        },
+        {
+          "shape": "ResourceInUseException"
+        },
+        {
+          "shape": "ServiceUnavailableException"
+        },
+        {
+          "shape": "TooManyRequestsException"
+        }
+      ],
+      "documentation": "<p>Deletes an existing route.</p>",
+      "idempotent": true
+    },
+    "DeleteVirtualNode": {
+      "name": "DeleteVirtualNode",
+      "http": {
+        "method": "DELETE",
+        "requestUri": "/meshes/{meshName}/virtualNodes/{virtualNodeName}",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "DeleteVirtualNodeInput"
+      },
+      "output": {
+        "shape": "DeleteVirtualNodeOutput"
+      },
+      "errors": [
+        {
+          "shape": "BadRequestException"
+        },
+        {
+          "shape": "ForbiddenException"
+        },
+        {
+          "shape": "InternalServerErrorException"
+        },
+        {
+          "shape": "NotFoundException"
+        },
+        {
+          "shape": "ResourceInUseException"
+        },
+        {
+          "shape": "ServiceUnavailableException"
+        },
+        {
+          "shape": "TooManyRequestsException"
+        }
+      ],
+      "documentation": "<p>Deletes an existing virtual node.</p>",
+      "idempotent": true
+    },
+    "DeleteVirtualRouter": {
+      "name": "DeleteVirtualRouter",
+      "http": {
+        "method": "DELETE",
+        "requestUri": "/meshes/{meshName}/virtualRouters/{virtualRouterName}",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "DeleteVirtualRouterInput"
+      },
+      "output": {
+        "shape": "DeleteVirtualRouterOutput"
+      },
+      "errors": [
+        {
+          "shape": "BadRequestException"
+        },
+        {
+          "shape": "ForbiddenException"
+        },
+        {
+          "shape": "InternalServerErrorException"
+        },
+        {
+          "shape": "NotFoundException"
+        },
+        {
+          "shape": "ResourceInUseException"
+        },
+        {
+          "shape": "ServiceUnavailableException"
+        },
+        {
+          "shape": "TooManyRequestsException"
+        }
+      ],
+      "documentation": "<p>Deletes an existing virtual router.</p>\n         <p>You must delete any routes associated with the virtual router before you can delete the\n         router itself.</p>",
+      "idempotent": true
+    },
+    "DescribeMesh": {
+      "name": "DescribeMesh",
+      "http": {
+        "method": "GET",
+        "requestUri": "/meshes/{meshName}",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "DescribeMeshInput"
+      },
+      "output": {
+        "shape": "DescribeMeshOutput"
+      },
+      "errors": [
+        {
+          "shape": "BadRequestException"
+        },
+        {
+          "shape": "ForbiddenException"
+        },
+        {
+          "shape": "InternalServerErrorException"
+        },
+        {
+          "shape": "NotFoundException"
+        },
+        {
+          "shape": "ServiceUnavailableException"
+        },
+        {
+          "shape": "TooManyRequestsException"
+        }
+      ],
+      "documentation": "<p>Describes an existing service mesh.</p>"
+    },
+    "DescribeRoute": {
+      "name": "DescribeRoute",
+      "http": {
+        "method": "GET",
+        "requestUri": "/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes/{routeName}",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "DescribeRouteInput"
+      },
+      "output": {
+        "shape": "DescribeRouteOutput"
+      },
+      "errors": [
+        {
+          "shape": "BadRequestException"
+        },
+        {
+          "shape": "ForbiddenException"
+        },
+        {
+          "shape": "InternalServerErrorException"
+        },
+        {
+          "shape": "NotFoundException"
+        },
+        {
+          "shape": "ServiceUnavailableException"
+        },
+        {
+          "shape": "TooManyRequestsException"
+        }
+      ],
+      "documentation": "<p>Describes an existing route.</p>"
+    },
+    "DescribeVirtualNode": {
+      "name": "DescribeVirtualNode",
+      "http": {
+        "method": "GET",
+        "requestUri": "/meshes/{meshName}/virtualNodes/{virtualNodeName}",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "DescribeVirtualNodeInput"
+      },
+      "output": {
+        "shape": "DescribeVirtualNodeOutput"
+      },
+      "errors": [
+        {
+          "shape": "BadRequestException"
+        },
+        {
+          "shape": "ForbiddenException"
+        },
+        {
+          "shape": "InternalServerErrorException"
+        },
+        {
+          "shape": "NotFoundException"
+        },
+        {
+          "shape": "ServiceUnavailableException"
+        },
+        {
+          "shape": "TooManyRequestsException"
+        }
+      ],
+      "documentation": "<p>Describes an existing virtual node.</p>"
+    },
+    "DescribeVirtualRouter": {
+      "name": "DescribeVirtualRouter",
+      "http": {
+        "method": "GET",
+        "requestUri": "/meshes/{meshName}/virtualRouters/{virtualRouterName}",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "DescribeVirtualRouterInput"
+      },
+      "output": {
+        "shape": "DescribeVirtualRouterOutput"
+      },
+      "errors": [
+        {
+          "shape": "BadRequestException"
+        },
+        {
+          "shape": "ForbiddenException"
+        },
+        {
+          "shape": "InternalServerErrorException"
+        },
+        {
+          "shape": "NotFoundException"
+        },
+        {
+          "shape": "ServiceUnavailableException"
+        },
+        {
+          "shape": "TooManyRequestsException"
+        }
+      ],
+      "documentation": "<p>Describes an existing virtual router.</p>"
+    },
+    "ListMeshes": {
+      "name": "ListMeshes",
+      "http": {
+        "method": "GET",
+        "requestUri": "/meshes",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "ListMeshesInput"
+      },
+      "output": {
+        "shape": "ListMeshesOutput"
+      },
+      "errors": [
+        {
+          "shape": "BadRequestException"
+        },
+        {
+          "shape": "ForbiddenException"
+        },
+        {
+          "shape": "InternalServerErrorException"
+        },
+        {
+          "shape": "NotFoundException"
+        },
+        {
+          "shape": "ServiceUnavailableException"
+        },
+        {
+          "shape": "TooManyRequestsException"
+        }
+      ],
+      "documentation": "<p>Returns a list of existing service meshes.</p>"
+    },
+    "ListRoutes": {
+      "name": "ListRoutes",
+      "http": {
+        "method": "GET",
+        "requestUri": "/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "ListRoutesInput"
+      },
+      "output": {
+        "shape": "ListRoutesOutput"
+      },
+      "errors": [
+        {
+          "shape": "BadRequestException"
+        },
+        {
+          "shape": "ForbiddenException"
+        },
+        {
+          "shape": "InternalServerErrorException"
+        },
+        {
+          "shape": "NotFoundException"
+        },
+        {
+          "shape": "ServiceUnavailableException"
+        },
+        {
+          "shape": "TooManyRequestsException"
+        }
+      ],
+      "documentation": "<p>Returns a list of existing routes in a service mesh.</p>"
+    },
+    "ListVirtualNodes": {
+      "name": "ListVirtualNodes",
+      "http": {
+        "method": "GET",
+        "requestUri": "/meshes/{meshName}/virtualNodes",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "ListVirtualNodesInput"
+      },
+      "output": {
+        "shape": "ListVirtualNodesOutput"
+      },
+      "errors": [
+        {
+          "shape": "BadRequestException"
+        },
+        {
+          "shape": "ForbiddenException"
+        },
+        {
+          "shape": "InternalServerErrorException"
+        },
+        {
+          "shape": "NotFoundException"
+        },
+        {
+          "shape": "ServiceUnavailableException"
+        },
+        {
+          "shape": "TooManyRequestsException"
+        }
+      ],
+      "documentation": "<p>Returns a list of existing virtual nodes.</p>"
+    },
+    "ListVirtualRouters": {
+      "name": "ListVirtualRouters",
+      "http": {
+        "method": "GET",
+        "requestUri": "/meshes/{meshName}/virtualRouters",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "ListVirtualRoutersInput"
+      },
+      "output": {
+        "shape": "ListVirtualRoutersOutput"
+      },
+      "errors": [
+        {
+          "shape": "BadRequestException"
+        },
+        {
+          "shape": "ForbiddenException"
+        },
+        {
+          "shape": "InternalServerErrorException"
+        },
+        {
+          "shape": "NotFoundException"
+        },
+        {
+          "shape": "ServiceUnavailableException"
+        },
+        {
+          "shape": "TooManyRequestsException"
+        }
+      ],
+      "documentation": "<p>Returns a list of existing virtual routers in a service mesh.</p>"
+    },
+    "UpdateRoute": {
+      "name": "UpdateRoute",
+      "http": {
+        "method": "PUT",
+        "requestUri": "/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes/{routeName}",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "UpdateRouteInput"
+      },
+      "output": {
+        "shape": "UpdateRouteOutput"
+      },
+      "errors": [
+        {
+          "shape": "BadRequestException"
+        },
+        {
+          "shape": "ConflictException"
+        },
+        {
+          "shape": "ForbiddenException"
+        },
+        {
+          "shape": "InternalServerErrorException"
+        },
+        {
+          "shape": "LimitExceededException"
+        },
+        {
+          "shape": "NotFoundException"
+        },
+        {
+          "shape": "ServiceUnavailableException"
+        },
+        {
+          "shape": "TooManyRequestsException"
+        }
+      ],
+      "documentation": "<p>Updates an existing route for a specified service mesh and virtual router.</p>",
+      "idempotent": true
+    },
+    "UpdateVirtualNode": {
+      "name": "UpdateVirtualNode",
+      "http": {
+        "method": "PUT",
+        "requestUri": "/meshes/{meshName}/virtualNodes/{virtualNodeName}",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "UpdateVirtualNodeInput"
+      },
+      "output": {
+        "shape": "UpdateVirtualNodeOutput"
+      },
+      "errors": [
+        {
+          "shape": "BadRequestException"
+        },
+        {
+          "shape": "ConflictException"
+        },
+        {
+          "shape": "ForbiddenException"
+        },
+        {
+          "shape": "InternalServerErrorException"
+        },
+        {
+          "shape": "LimitExceededException"
+        },
+        {
+          "shape": "NotFoundException"
+        },
+        {
+          "shape": "ServiceUnavailableException"
+        },
+        {
+          "shape": "TooManyRequestsException"
+        }
+      ],
+      "documentation": "<p>Updates an existing virtual node in a specified service mesh.</p>",
+      "idempotent": true
+    },
+    "UpdateVirtualRouter": {
+      "name": "UpdateVirtualRouter",
+      "http": {
+        "method": "PUT",
+        "requestUri": "/meshes/{meshName}/virtualRouters/{virtualRouterName}",
+        "responseCode": 200
+      },
+      "input": {
+        "shape": "UpdateVirtualRouterInput"
+      },
+      "output": {
+        "shape": "UpdateVirtualRouterOutput"
+      },
+      "errors": [
+        {
+          "shape": "BadRequestException"
+        },
+        {
+          "shape": "ConflictException"
+        },
+        {
+          "shape": "ForbiddenException"
+        },
+        {
+          "shape": "InternalServerErrorException"
+        },
+        {
+          "shape": "LimitExceededException"
+        },
+        {
+          "shape": "NotFoundException"
+        },
+        {
+          "shape": "ServiceUnavailableException"
+        },
+        {
+          "shape": "TooManyRequestsException"
+        }
+      ],
+      "documentation": "<p>Updates an existing virtual router in a specified service mesh.</p>",
+      "idempotent": true
+    }
+  },
+  "shapes": {
+    "ServiceName": {
+      "type": "string"
+    },
+    "InternalServerErrorException": {
+      "type": "structure",
+      "members": {
+        "message": {
+          "shape": "String"
+        }
+      },
+      "documentation": "<p>The request processing has failed because of an unknown error, exception, or failure.</p>",
+      "exception": true,
+      "error": {
+        "code": "InternalServerErrorException",
+        "httpStatusCode": 500,
+        "fault": true
+      }
+    },
+    "HealthCheckThreshold": {
+      "type": "integer",
+      "min": 2,
+      "max": 10
+    },
+    "DeleteMeshOutput": {
+      "type": "structure",
+      "members": {
+        "mesh": {
+          "shape": "MeshData",
+          "documentation": "<p>The service mesh that was deleted.</p>"
+        }
+      },
+      "documentation": "",
+      "payload": "mesh"
+    },
+    "Long": {
+      "type": "long",
+      "box": true
+    },
+    "ForbiddenException": {
+      "type": "structure",
+      "members": {
+        "message": {
+          "shape": "String"
+        }
+      },
+      "documentation": "<p>You do not have permissions to perform this action.</p>",
+      "exception": true,
+      "error": {
+        "code": "ForbiddenException",
+        "httpStatusCode": 403,
+        "senderFault": true
+      }
+    },
+    "UpdateVirtualRouterOutput": {
+      "type": "structure",
+      "members": {
+        "virtualRouter": {
+          "shape": "VirtualRouterData",
+          "documentation": "<p>A full description of the virtual router that was updated.</p>"
+        }
+      },
+      "documentation": "",
+      "payload": "virtualRouter"
+    },
+    "MeshStatusCode": {
+      "type": "string",
+      "enum": [
+        "ACTIVE",
+        "DELETED",
+        "INACTIVE"
+      ]
+    },
+    "PortNumber": {
+      "type": "integer",
+      "min": 1,
+      "max": 65535
+    },
+    "WeightedTarget": {
+      "type": "structure",
+      "members": {
+        "virtualNode": {
+          "shape": "ResourceName",
+          "documentation": "<p>The virtual node to associate with the weighted target.</p>"
+        },
+        "weight": {
+          "shape": "PercentInt",
+          "documentation": "<p>The relative weight of the weighted target.</p>"
+        }
+      },
+      "documentation": "<p>An object representing a target and its relative weight. Traffic is distributed across\n         targets according to their relative weight. For example, a weighted target with a relative\n         weight of 50 receives five times as much traffic as one with a relative weight of\n         10.</p>"
+    },
+    "VirtualNodeList": {
+      "type": "list",
+      "member": {
+        "shape": "VirtualNodeRef"
+      }
+    },
+    "CreateRouteOutput": {
+      "type": "structure",
+      "members": {
+        "route": {
+          "shape": "RouteData",
+          "documentation": "<p>The full description of your mesh following the create call.</p>"
+        }
+      },
+      "documentation": "",
+      "payload": "route"
+    },
+    "RouteList": {
+      "type": "list",
+      "member": {
+        "shape": "RouteRef"
+      }
+    },
+    "DeleteVirtualNodeInput": {
+      "type": "structure",
+      "required": [
+        "meshName",
+        "virtualNodeName"
+      ],
+      "members": {
+        "meshName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the service mesh in which to delete the virtual node.</p>",
+          "location": "uri",
+          "locationName": "meshName"
+        },
+        "virtualNodeName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the virtual node to delete.</p>",
+          "location": "uri",
+          "locationName": "virtualNodeName"
+        }
+      },
+      "documentation": ""
+    },
+    "ListVirtualRoutersLimit": {
+      "type": "integer",
+      "box": true,
+      "min": 1,
+      "max": 100
+    },
+    "DnsServiceDiscovery": {
+      "type": "structure",
+      "members": {
+        "serviceName": {
+          "shape": "ServiceName",
+          "documentation": "<p>The DNS service name for your virtual node.</p>"
+        }
+      },
+      "documentation": "<p>The DNS service discovery information for your virtual node.</p>"
+    },
+    "ConflictException": {
+      "type": "structure",
+      "members": {
+        "message": {
+          "shape": "String"
+        }
+      },
+      "documentation": "<p>The request contains a client token that was used for a previous update resource call\n         with different specifications. Try the request again with a new client token.</p>",
+      "exception": true,
+      "error": {
+        "code": "ConflictException",
+        "httpStatusCode": 409,
+        "senderFault": true
+      }
+    },
+    "HealthCheckIntervalMillis": {
+      "type": "long",
+      "box": true,
+      "min": 5000,
+      "max": 300000
+    },
+    "VirtualNodeRef": {
+      "type": "structure",
+      "members": {
+        "arn": {
+          "shape": "Arn",
+          "documentation": "<p>The full Amazon Resource Name (ARN) for the virtual node.</p>"
+        },
+        "meshName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the service mesh in which the virtual node resides.</p>"
+        },
+        "virtualNodeName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the virtual node.</p>"
+        }
+      },
+      "documentation": "<p>An object representing a virtual node returned by a list operation.</p>"
+    },
+    "DescribeRouteOutput": {
+      "type": "structure",
+      "members": {
+        "route": {
+          "shape": "RouteData",
+          "documentation": "<p>The full description of your route.</p>"
+        }
+      },
+      "documentation": "",
+      "payload": "route"
+    },
+    "ServiceDiscovery": {
+      "type": "structure",
+      "members": {
+        "dns": {
+          "shape": "DnsServiceDiscovery",
+          "documentation": "<p>Specifies the DNS service name for the virtual node.</p>"
+        }
+      },
+      "documentation": "<p>An object representing the service discovery information for a virtual node.</p>"
+    },
+    "MeshStatus": {
+      "type": "structure",
+      "members": {
+        "status": {
+          "shape": "MeshStatusCode",
+          "documentation": "<p>The current mesh status.</p>"
+        }
+      },
+      "documentation": "<p>An object representing the status of a service mesh.</p>"
+    },
+    "VirtualNodeData": {
+      "type": "structure",
+      "required": [
+        "meshName",
+        "virtualNodeName"
+      ],
+      "members": {
+        "meshName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the service mesh in which the virtual node resides.</p>"
+        },
+        "metadata": {
+          "shape": "ResourceMetadata",
+          "documentation": "<p>The associated metadata for the virtual node.</p>"
+        },
+        "spec": {
+          "shape": "VirtualNodeSpec",
+          "documentation": "<p>The specifications of the virtual node.</p>"
+        },
+        "status": {
+          "shape": "VirtualNodeStatus",
+          "documentation": "<p>The current status for the virtual node.</p>"
+        },
+        "virtualNodeName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the virtual node.</p>"
+        }
+      },
+      "documentation": "<p>An object representing a virtual node returned by a describe operation.</p>"
+    },
+    "VirtualNodeSpec": {
+      "type": "structure",
+      "members": {
+        "backends": {
+          "shape": "Backends",
+          "documentation": "<p>The backends to which the virtual node is expected to send outbound traffic.</p>"
+        },
+        "listeners": {
+          "shape": "Listeners",
+          "documentation": "<p>The listeners from which the virtual node is expected to receive inbound traffic.</p>"
+        },
+        "serviceDiscovery": {
+          "shape": "ServiceDiscovery",
+          "documentation": "<p>The service discovery information for the virtual node.</p>"
+        }
+      },
+      "documentation": "<p>An object representing the specification of a virtual node.</p>"
+    },
+    "ServiceNames": {
+      "type": "list",
+      "member": {
+        "shape": "ServiceName"
+      },
+      "max": 10
+    },
+    "MeshRef": {
+      "type": "structure",
+      "members": {
+        "arn": {
+          "shape": "Arn",
+          "documentation": "<p>The full Amazon Resource Name (ARN) of the service mesh.</p>"
+        },
+        "meshName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the service mesh.</p>"
+        }
+      },
+      "documentation": "<p>An object representing a service mesh returned by a list operation.</p>"
+    },
+    "DescribeVirtualRouterInput": {
+      "type": "structure",
+      "required": [
+        "meshName",
+        "virtualRouterName"
+      ],
+      "members": {
+        "meshName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the service mesh in which the virtual router resides.</p>",
+          "location": "uri",
+          "locationName": "meshName"
+        },
+        "virtualRouterName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the virtual router to describe.</p>",
+          "location": "uri",
+          "locationName": "virtualRouterName"
+        }
+      },
+      "documentation": ""
+    },
+    "DescribeVirtualRouterOutput": {
+      "type": "structure",
+      "members": {
+        "virtualRouter": {
+          "shape": "VirtualRouterData",
+          "documentation": "<p>The full description of your virtual router.</p>"
+        }
+      },
+      "documentation": "",
+      "payload": "virtualRouter"
+    },
+    "LimitExceededException": {
+      "type": "structure",
+      "members": {
+        "message": {
+          "shape": "String"
+        }
+      },
+      "documentation": "<p>You have exceeded a service limit for your account. For more information, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/service_limits.html\">Service Limits</a> in the <i>AWS App Mesh User Guide</i>.</p>",
+      "exception": true,
+      "error": {
+        "code": "LimitExceededException",
+        "httpStatusCode": 400,
+        "senderFault": true
+      }
+    },
+    "UpdateRouteOutput": {
+      "type": "structure",
+      "members": {
+        "route": {
+          "shape": "RouteData",
+          "documentation": "<p>A full description of the route that was updated.</p>"
+        }
+      },
+      "documentation": "",
+      "payload": "route"
+    },
+    "HttpRouteAction": {
+      "type": "structure",
+      "members": {
+        "weightedTargets": {
+          "shape": "WeightedTargets",
+          "documentation": "<p>The targets that traffic is routed to when a request matches the route. You can specify\n         one or more targets and their relative weights with which to distribute traffic.</p>"
+        }
+      },
+      "documentation": "<p>An object representing the traffic distribution requirements for matched HTTP\n         requests.</p>"
+    },
+    "CreateVirtualRouterOutput": {
+      "type": "structure",
+      "members": {
+        "virtualRouter": {
+          "shape": "VirtualRouterData",
+          "documentation": "<p>The full description of your virtual router following the create call.</p>"
+        }
+      },
+      "documentation": "",
+      "payload": "virtualRouter"
+    },
+    "HealthCheckTimeoutMillis": {
+      "type": "long",
+      "box": true,
+      "min": 2000,
+      "max": 60000
+    },
+    "CreateVirtualRouterInput": {
+      "type": "structure",
+      "required": [
+        "meshName",
+        "spec",
+        "virtualRouterName"
+      ],
+      "members": {
+        "clientToken": {
+          "shape": "String",
+          "documentation": "<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the\nrequest. Up to 36 letters, numbers, hyphens, and underscores are allowed.</p>",
+          "idempotencyToken": true
+        },
+        "meshName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the service mesh in which to create the virtual router.</p>",
+          "location": "uri",
+          "locationName": "meshName"
+        },
+        "spec": {
+          "shape": "VirtualRouterSpec",
+          "documentation": "<p>The virtual router specification to apply.</p>"
+        },
+        "virtualRouterName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name to use for the virtual router.</p>"
+        }
+      },
+      "documentation": ""
+    },
+    "RouteStatus": {
+      "type": "structure",
+      "members": {
+        "status": {
+          "shape": "RouteStatusCode",
+          "documentation": "<p>The current status for the route.</p>"
+        }
+      },
+      "documentation": "<p>An object representing the current status of a route.</p>"
+    },
+    "ListMeshesInput": {
+      "type": "structure",
+      "members": {
+        "limit": {
+          "shape": "ListMeshesLimit",
+          "documentation": "<p>The maximum number of mesh results returned by <code>ListMeshes</code> in paginated\n         output. When this parameter is used, <code>ListMeshes</code> only returns\n            <code>limit</code> results in a single page along with a <code>nextToken</code> response\n         element. The remaining results of the initial request can be seen by sending another\n            <code>ListMeshes</code> request with the returned <code>nextToken</code> value. This\n         value can be between 1 and 100. If this parameter is not\n         used, then <code>ListMeshes</code> returns up to 100 results and a\n            <code>nextToken</code> value if applicable.</p>",
+          "location": "querystring",
+          "locationName": "limit"
+        },
+        "nextToken": {
+          "shape": "String",
+          "documentation": "<p>The <code>nextToken</code> value returned from a previous paginated\n         <code>ListMeshes</code> request where <code>limit</code> was used and the\n         results exceeded the value of that parameter. Pagination continues from the end of the\n         previous results that returned the <code>nextToken</code> value.</p>\n         <note>\n            <p>This token should be treated as an opaque identifier that is only used to\n                retrieve the next items in a list and not for other programmatic purposes.</p>\n        </note>",
+          "location": "querystring",
+          "locationName": "nextToken"
+        }
+      },
+      "documentation": ""
+    },
+    "VirtualRouterStatus": {
+      "type": "structure",
+      "members": {
+        "status": {
+          "shape": "VirtualRouterStatusCode",
+          "documentation": "<p>The current status of the virtual router.</p>"
+        }
+      },
+      "documentation": "<p>An object representing the status of a virtual router. </p>"
+    },
+    "TooManyRequestsException": {
+      "type": "structure",
+      "members": {
+        "message": {
+          "shape": "String"
+        }
+      },
+      "documentation": "<p>The maximum request rate permitted by the App Mesh APIs has been exceeded for your\n         account. For best results, use an increasing or variable sleep interval between requests.</p>",
+      "exception": true,
+      "error": {
+        "code": "TooManyRequestsException",
+        "httpStatusCode": 429,
+        "senderFault": true
+      }
+    },
+    "ListMeshesOutput": {
+      "type": "structure",
+      "required": [
+        "meshes"
+      ],
+      "members": {
+        "meshes": {
+          "shape": "MeshList",
+          "documentation": "<p>The list of existing service meshes.</p>"
+        },
+        "nextToken": {
+          "shape": "String",
+          "documentation": "<p>The <code>nextToken</code> value to include in a future <code>ListMeshes</code>\n         request. When the results of a <code>ListMeshes</code> request exceed\n         <code>limit</code>, this value can be used to retrieve the next page of\n         results. This value is <code>null</code> when there are no more results to\n         return.</p>"
+        }
+      },
+      "documentation": ""
+    },
+    "DescribeVirtualNodeOutput": {
+      "type": "structure",
+      "members": {
+        "virtualNode": {
+          "shape": "VirtualNodeData",
+          "documentation": "<p>The full description of your virtual node.</p>"
+        }
+      },
+      "documentation": "",
+      "payload": "virtualNode"
+    },
+    "CreateMeshOutput": {
+      "type": "structure",
+      "members": {
+        "mesh": {
+          "shape": "MeshData",
+          "documentation": "<p>The full description of your service mesh following the create call.</p>"
+        }
+      },
+      "documentation": "",
+      "payload": "mesh"
+    },
+    "ResourceName": {
+      "type": "string",
+      "min": 1,
+      "max": 255
+    },
+    "RouteData": {
+      "type": "structure",
+      "required": [
+        "meshName",
+        "routeName",
+        "virtualRouterName"
+      ],
+      "members": {
+        "meshName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the service mesh in which the route resides.</p>"
+        },
+        "metadata": {
+          "shape": "ResourceMetadata",
+          "documentation": "<p>The associated metadata for the route.</p>"
+        },
+        "routeName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the route.</p>"
+        },
+        "spec": {
+          "shape": "RouteSpec",
+          "documentation": "<p>The specifications of the route.</p>"
+        },
+        "status": {
+          "shape": "RouteStatus",
+          "documentation": "<p>The status of the route.</p>"
+        },
+        "virtualRouterName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The virtual router with which the route is associated.</p>"
+        }
+      },
+      "documentation": "<p>An object representing a route returned by a describe operation.</p>"
+    },
+    "Arn": {
+      "type": "string"
+    },
+    "NotFoundException": {
+      "type": "structure",
+      "members": {
+        "message": {
+          "shape": "String"
+        }
+      },
+      "documentation": "<p>The specified resource does not exist. Check your request syntax and try again.</p>",
+      "exception": true,
+      "error": {
+        "code": "NotFoundException",
+        "httpStatusCode": 404,
+        "senderFault": true
+      }
+    },
+    "UpdateVirtualNodeInput": {
+      "type": "structure",
+      "required": [
+        "meshName",
+        "spec",
+        "virtualNodeName"
+      ],
+      "members": {
+        "clientToken": {
+          "shape": "String",
+          "documentation": "<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the\nrequest. Up to 36 letters, numbers, hyphens, and underscores are allowed.</p>",
+          "idempotencyToken": true
+        },
+        "meshName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the service mesh in which the virtual node resides.</p>",
+          "location": "uri",
+          "locationName": "meshName"
+        },
+        "spec": {
+          "shape": "VirtualNodeSpec",
+          "documentation": "<p>The new virtual node specification to apply. This overwrites the existing data.</p>"
+        },
+        "virtualNodeName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the virtual node to update.</p>",
+          "location": "uri",
+          "locationName": "virtualNodeName"
+        }
+      },
+      "documentation": ""
+    },
+    "DeleteRouteInput": {
+      "type": "structure",
+      "required": [
+        "meshName",
+        "routeName",
+        "virtualRouterName"
+      ],
+      "members": {
+        "meshName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the service mesh in which to delete the route.</p>",
+          "location": "uri",
+          "locationName": "meshName"
+        },
+        "routeName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the route to delete.</p>",
+          "location": "uri",
+          "locationName": "routeName"
+        },
+        "virtualRouterName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the virtual router in which to delete the route.</p>",
+          "location": "uri",
+          "locationName": "virtualRouterName"
+        }
+      },
+      "documentation": ""
+    },
+    "ServiceUnavailableException": {
+      "type": "structure",
+      "members": {
+        "message": {
+          "shape": "String"
+        }
+      },
+      "documentation": "<p>The request has failed due to a temporary failure of the service.</p>",
+      "exception": true,
+      "error": {
+        "code": "ServiceUnavailableException",
+        "httpStatusCode": 503,
+        "fault": true
+      }
+    },
+    "Listeners": {
+      "type": "list",
+      "member": {
+        "shape": "Listener"
+      }
+    },
+    "ListRoutesInput": {
+      "type": "structure",
+      "required": [
+        "meshName",
+        "virtualRouterName"
+      ],
+      "members": {
+        "limit": {
+          "shape": "ListRoutesLimit",
+          "documentation": "<p>The maximum number of mesh results returned by <code>ListRoutes</code> in paginated\n         output. When this parameter is used, <code>ListRoutes</code> only returns\n            <code>limit</code> results in a single page along with a <code>nextToken</code> response\n         element. The remaining results of the initial request can be seen by sending another\n            <code>ListRoutes</code> request with the returned <code>nextToken</code> value. This\n         value can be between 1 and 100. If this parameter is not\n         used, then <code>ListRoutes</code> returns up to 100 results and a\n            <code>nextToken</code> value if applicable.</p>",
+          "location": "querystring",
+          "locationName": "limit"
+        },
+        "meshName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the service mesh in which to list routes.</p>",
+          "location": "uri",
+          "locationName": "meshName"
+        },
+        "nextToken": {
+          "shape": "String",
+          "documentation": "<p>The <code>nextToken</code> value returned from a previous paginated\n         <code>ListRoutes</code> request where <code>limit</code> was used and the\n         results exceeded the value of that parameter. Pagination continues from the end of the\n         previous results that returned the <code>nextToken</code> value.</p>",
+          "location": "querystring",
+          "locationName": "nextToken"
+        },
+        "virtualRouterName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the virtual router in which to list routes.</p>",
+          "location": "uri",
+          "locationName": "virtualRouterName"
+        }
+      },
+      "documentation": ""
+    },
+    "HttpRoute": {
+      "type": "structure",
+      "members": {
+        "action": {
+          "shape": "HttpRouteAction",
+          "documentation": "<p>The action to take if a match is determined.</p>"
+        },
+        "match": {
+          "shape": "HttpRouteMatch",
+          "documentation": "<p>The criteria for determining an HTTP request match.</p>"
+        }
+      },
+      "documentation": "<p>An object representing the HTTP routing specification for a route.</p>"
+    },
+    "Timestamp": {
+      "type": "timestamp"
+    },
+    "ListRoutesOutput": {
+      "type": "structure",
+      "required": [
+        "routes"
+      ],
+      "members": {
+        "nextToken": {
+          "shape": "String",
+          "documentation": "<p>The <code>nextToken</code> value to include in a future <code>ListRoutes</code>\n         request. When the results of a <code>ListRoutes</code> request exceed\n         <code>limit</code>, this value can be used to retrieve the next page of\n         results. This value is <code>null</code> when there are no more results to\n         return.</p>"
+        },
+        "routes": {
+          "shape": "RouteList",
+          "documentation": "<p>The list of existing routes for the specified service mesh and virtual router.</p>"
+        }
+      },
+      "documentation": ""
+    },
+    "RouteSpec": {
+      "type": "structure",
+      "members": {
+        "httpRoute": {
+          "shape": "HttpRoute",
+          "documentation": "<p>The HTTP routing information for the route.</p>"
+        }
+      },
+      "documentation": "<p>An object representing the specification of a route.</p>"
+    },
+    "DescribeVirtualNodeInput": {
+      "type": "structure",
+      "required": [
+        "meshName",
+        "virtualNodeName"
+      ],
+      "members": {
+        "meshName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the service mesh in which the virtual node resides.</p>",
+          "location": "uri",
+          "locationName": "meshName"
+        },
+        "virtualNodeName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the virtual node to describe.</p>",
+          "location": "uri",
+          "locationName": "virtualNodeName"
+        }
+      },
+      "documentation": ""
+    },
+    "VirtualRouterRef": {
+      "type": "structure",
+      "members": {
+        "arn": {
+          "shape": "Arn",
+          "documentation": "<p>The full Amazon Resource Name (ARN) for the virtual router.</p>"
+        },
+        "meshName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the service mesh in which the virtual router resides.</p>"
+        },
+        "virtualRouterName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the virtual router.</p>"
+        }
+      },
+      "documentation": "<p>An object representing a virtual router returned by a list operation.</p>"
+    },
+    "VirtualRouterStatusCode": {
+      "type": "string",
+      "enum": [
+        "ACTIVE",
+        "DELETED",
+        "INACTIVE"
+      ]
+    },
+    "ListVirtualNodesOutput": {
+      "type": "structure",
+      "required": [
+        "virtualNodes"
+      ],
+      "members": {
+        "nextToken": {
+          "shape": "String",
+          "documentation": "<p>The <code>nextToken</code> value to include in a future <code>ListVirtualNodes</code>\n         request. When the results of a <code>ListVirtualNodes</code> request exceed\n         <code>limit</code>, this value can be used to retrieve the next page of\n         results. This value is <code>null</code> when there are no more results to\n         return.</p>"
+        },
+        "virtualNodes": {
+          "shape": "VirtualNodeList",
+          "documentation": "<p>The list of existing virtual nodes for the specified service mesh.</p>"
+        }
+      },
+      "documentation": ""
+    },
+    "DeleteVirtualNodeOutput": {
+      "type": "structure",
+      "members": {
+        "virtualNode": {
+          "shape": "VirtualNodeData",
+          "documentation": "<p>The virtual node that was deleted.</p>"
+        }
+      },
+      "documentation": "",
+      "payload": "virtualNode"
+    },
+    "UpdateVirtualRouterInput": {
+      "type": "structure",
+      "required": [
+        "meshName",
+        "spec",
+        "virtualRouterName"
+      ],
+      "members": {
+        "clientToken": {
+          "shape": "String",
+          "documentation": "<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the\nrequest. Up to 36 letters, numbers, hyphens, and underscores are allowed.</p>",
+          "idempotencyToken": true
+        },
+        "meshName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the service mesh in which the virtual router resides.</p>",
+          "location": "uri",
+          "locationName": "meshName"
+        },
+        "spec": {
+          "shape": "VirtualRouterSpec",
+          "documentation": "<p>The new virtual router specification to apply. This overwrites the existing data.</p>"
+        },
+        "virtualRouterName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the virtual router to update.</p>",
+          "location": "uri",
+          "locationName": "virtualRouterName"
+        }
+      },
+      "documentation": ""
+    },
+    "ResourceInUseException": {
+      "type": "structure",
+      "members": {
+        "message": {
+          "shape": "String"
+        }
+      },
+      "documentation": "<p>You cannot delete the specified resource because it is in use or required by another resource.</p>",
+      "exception": true,
+      "error": {
+        "code": "ResourceInUseException",
+        "httpStatusCode": 409,
+        "senderFault": true
+      }
+    },
+    "DescribeRouteInput": {
+      "type": "structure",
+      "required": [
+        "meshName",
+        "routeName",
+        "virtualRouterName"
+      ],
+      "members": {
+        "meshName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the service mesh in which the route resides.</p>",
+          "location": "uri",
+          "locationName": "meshName"
+        },
+        "routeName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the route to describe.</p>",
+          "location": "uri",
+          "locationName": "routeName"
+        },
+        "virtualRouterName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the virtual router with which the route is associated.</p>",
+          "location": "uri",
+          "locationName": "virtualRouterName"
+        }
+      },
+      "documentation": ""
+    },
+    "ListVirtualRoutersOutput": {
+      "type": "structure",
+      "required": [
+        "virtualRouters"
+      ],
+      "members": {
+        "nextToken": {
+          "shape": "String",
+          "documentation": "<p>The <code>nextToken</code> value to include in a future <code>ListVirtualRouters</code>\n         request. When the results of a <code>ListVirtualRouters</code> request exceed\n         <code>limit</code>, this value can be used to retrieve the next page of\n         results. This value is <code>null</code> when there are no more results to\n         return.</p>"
+        },
+        "virtualRouters": {
+          "shape": "VirtualRouterList",
+          "documentation": "<p>The list of existing virtual routers for the specified service mesh.</p>"
+        }
+      },
+      "documentation": ""
+    },
+    "CreateVirtualNodeOutput": {
+      "type": "structure",
+      "members": {
+        "virtualNode": {
+          "shape": "VirtualNodeData",
+          "documentation": "<p>The full description of your virtual node following the create call.</p>"
+        }
+      },
+      "documentation": "",
+      "payload": "virtualNode"
+    },
+    "DeleteVirtualRouterOutput": {
+      "type": "structure",
+      "members": {
+        "virtualRouter": {
+          "shape": "VirtualRouterData",
+          "documentation": "<p>The virtual router that was deleted.</p>"
+        }
+      },
+      "documentation": "",
+      "payload": "virtualRouter"
+    },
+    "ListRoutesLimit": {
+      "type": "integer",
+      "box": true,
+      "min": 1,
+      "max": 100
+    },
+    "PortProtocol": {
+      "type": "string",
+      "enum": [
+        "http",
+        "tcp"
+      ]
+    },
+    "MeshList": {
+      "type": "list",
+      "member": {
+        "shape": "MeshRef"
+      }
+    },
+    "ResourceMetadata": {
+      "type": "structure",
+      "members": {
+        "arn": {
+          "shape": "Arn",
+          "documentation": "<p>The full Amazon Resource Name (ARN) for the resource.</p>\n         <note>\n            <p>After you create a virtual node, set this value (either the full ARN or the\n            truncated resource name, for example, <code>mesh/default/virtualNode/simpleapp</code>,\n            as the <code>APPMESH_VIRTUAL_NODE_NAME</code> environment variable for your task group's\n            Envoy proxy container in your task definition or pod spec. This is then mapped to the\n               <code>node.id</code> and <code>node.cluster</code> Envoy parameters.</p>\n            <p>If you require your Envoy stats or tracing to use a different name, you can override\n            the <code>node.cluster</code> value that is set by\n               <code>APPMESH_VIRTUAL_NODE_NAME</code> with the\n               <code>APPMESH_VIRTUAL_NODE_CLUSTER</code> environment variable.</p>\n         </note>"
+        },
+        "createdAt": {
+          "shape": "Timestamp",
+          "documentation": "<p>The Unix epoch timestamp in seconds for when the resource was created.</p>"
+        },
+        "lastUpdatedAt": {
+          "shape": "Timestamp",
+          "documentation": "<p>The Unix epoch timestamp in seconds for when the resource was last updated.</p>"
+        },
+        "uid": {
+          "shape": "String",
+          "documentation": "<p>The unique identifier for the resource.</p>"
+        },
+        "version": {
+          "shape": "Long",
+          "documentation": "<p>The version of the resource. Resources are created at version 1, and this version is\n         incremented each time they are updated.</p>"
+        }
+      },
+      "documentation": "<p>An object representing metadata for a resource.</p>"
+    },
+    "CreateMeshInput": {
+      "type": "structure",
+      "required": [
+        "meshName"
+      ],
+      "members": {
+        "clientToken": {
+          "shape": "String",
+          "documentation": "<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the\nrequest. Up to 36 letters, numbers, hyphens, and underscores are allowed.</p>",
+          "idempotencyToken": true
+        },
+        "meshName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name to use for the service mesh.</p>"
+        }
+      },
+      "documentation": ""
+    },
+    "PortMapping": {
+      "type": "structure",
+      "members": {
+        "port": {
+          "shape": "PortNumber",
+          "documentation": "<p>The port used for the port mapping.</p>"
+        },
+        "protocol": {
+          "shape": "PortProtocol",
+          "documentation": "<p>The protocol used for the port mapping.</p>"
+        }
+      },
+      "documentation": "<p>An object representing a virtual node listener port mapping.</p>"
+    },
+    "VirtualNodeStatusCode": {
+      "type": "string",
+      "enum": [
+        "ACTIVE",
+        "DELETED",
+        "INACTIVE"
+      ]
+    },
+    "DeleteVirtualRouterInput": {
+      "type": "structure",
+      "required": [
+        "meshName",
+        "virtualRouterName"
+      ],
+      "members": {
+        "meshName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the service mesh in which to delete the virtual router.</p>",
+          "location": "uri",
+          "locationName": "meshName"
+        },
+        "virtualRouterName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the virtual router to delete.</p>",
+          "location": "uri",
+          "locationName": "virtualRouterName"
+        }
+      },
+      "documentation": ""
+    },
+    "VirtualRouterSpec": {
+      "type": "structure",
+      "members": {
+        "serviceNames": {
+          "shape": "ServiceNames",
+          "documentation": "<p>The service mesh service names to associate with the virtual router.</p>"
+        }
+      },
+      "documentation": "<p>An object representing the specification of a virtual router.</p>"
+    },
+    "UpdateRouteInput": {
+      "type": "structure",
+      "required": [
+        "meshName",
+        "routeName",
+        "spec",
+        "virtualRouterName"
+      ],
+      "members": {
+        "clientToken": {
+          "shape": "String",
+          "documentation": "<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the\nrequest. Up to 36 letters, numbers, hyphens, and underscores are allowed.</p>",
+          "idempotencyToken": true
+        },
+        "meshName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the service mesh in which the route resides.</p>",
+          "location": "uri",
+          "locationName": "meshName"
+        },
+        "routeName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the route to update.</p>",
+          "location": "uri",
+          "locationName": "routeName"
+        },
+        "spec": {
+          "shape": "RouteSpec",
+          "documentation": "<p>The new route specification to apply. This overwrites the existing data.</p>"
+        },
+        "virtualRouterName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the virtual router with which the route is associated.</p>",
+          "location": "uri",
+          "locationName": "virtualRouterName"
+        }
+      },
+      "documentation": ""
+    },
+    "PercentInt": {
+      "type": "integer",
+      "min": 0,
+      "max": 100
+    },
+    "ListMeshesLimit": {
+      "type": "integer",
+      "box": true,
+      "min": 1,
+      "max": 100
+    },
+    "DescribeMeshInput": {
+      "type": "structure",
+      "required": [
+        "meshName"
+      ],
+      "members": {
+        "meshName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the service mesh to describe.</p>",
+          "location": "uri",
+          "locationName": "meshName"
+        }
+      },
+      "documentation": ""
+    },
+    "DescribeMeshOutput": {
+      "type": "structure",
+      "members": {
+        "mesh": {
+          "shape": "MeshData",
+          "documentation": "<p>The full description of your service mesh.</p>"
+        }
+      },
+      "documentation": "",
+      "payload": "mesh"
+    },
+    "VirtualRouterData": {
+      "type": "structure",
+      "required": [
+        "meshName",
+        "virtualRouterName"
+      ],
+      "members": {
+        "meshName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the service mesh in which the virtual router resides.</p>"
+        },
+        "metadata": {
+          "shape": "ResourceMetadata",
+          "documentation": "<p>The associated metadata for the virtual router.</p>"
+        },
+        "spec": {
+          "shape": "VirtualRouterSpec",
+          "documentation": "<p>The specifications of the virtual router.</p>"
+        },
+        "status": {
+          "shape": "VirtualRouterStatus",
+          "documentation": "<p>The current status of the virtual router.</p>"
+        },
+        "virtualRouterName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the virtual router.</p>"
+        }
+      },
+      "documentation": "<p>An object representing a virtual router returned by a describe operation.</p>"
+    },
+    "VirtualRouterList": {
+      "type": "list",
+      "member": {
+        "shape": "VirtualRouterRef"
+      }
+    },
+    "Listener": {
+      "type": "structure",
+      "members": {
+        "healthCheck": {
+          "shape": "HealthCheckPolicy",
+          "documentation": "<p>The health check information for the listener.</p>"
+        },
+        "portMapping": {
+          "shape": "PortMapping",
+          "documentation": "<p>The port mapping information for the listener.</p>"
+        }
+      },
+      "documentation": "<p>An object representing a listener for a virtual node.</p>"
+    },
+    "String": {
+      "type": "string"
+    },
+    "HealthCheckPolicy": {
+      "type": "structure",
+      "required": [
+        "healthyThreshold",
+        "intervalMillis",
+        "protocol",
+        "timeoutMillis",
+        "unhealthyThreshold"
+      ],
+      "members": {
+        "healthyThreshold": {
+          "shape": "HealthCheckThreshold",
+          "documentation": "<p>The number of consecutive successful health checks that must occur before declaring\n         listener healthy.</p>"
+        },
+        "intervalMillis": {
+          "shape": "HealthCheckIntervalMillis",
+          "documentation": "<p>The time period in milliseconds between each health check execution.</p>"
+        },
+        "path": {
+          "shape": "String",
+          "documentation": "<p>The destination path for the health check request. This is only required if the\n         specified protocol is HTTP; if the protocol is TCP, then this parameter is ignored.</p>"
+        },
+        "port": {
+          "shape": "PortNumber",
+          "documentation": "<p>The destination port for the health check request. This port must match the port defined\n         in the <a>PortMapping</a> for the listener.</p>"
+        },
+        "protocol": {
+          "shape": "PortProtocol",
+          "documentation": "<p>The protocol for the health check request.</p>"
+        },
+        "timeoutMillis": {
+          "shape": "HealthCheckTimeoutMillis",
+          "documentation": "<p>The amount of time to wait when receiving a response from the health check, in\n         milliseconds.</p>"
+        },
+        "unhealthyThreshold": {
+          "shape": "HealthCheckThreshold",
+          "documentation": "<p>The number of consecutive failed health checks that must occur before declaring a\n         virtual node unhealthy. </p>"
+        }
+      },
+      "documentation": "<p>An object representing the health check policy for a virtual node's listener.</p>"
+    },
+    "ListVirtualRoutersInput": {
+      "type": "structure",
+      "required": [
+        "meshName"
+      ],
+      "members": {
+        "limit": {
+          "shape": "ListVirtualRoutersLimit",
+          "documentation": "<p>The maximum number of mesh results returned by <code>ListVirtualRouters</code> in\n         paginated output. When this parameter is used, <code>ListVirtualRouters</code> only returns\n         <code>limit</code> results in a single page along with a <code>nextToken</code>\n         response element. The remaining results of the initial request can be seen by sending\n         another <code>ListVirtualRouters</code> request with the returned <code>nextToken</code>\n         value. This value can be between 1 and 100. If this\n         parameter is not used, then <code>ListVirtualRouters</code> returns up to\n         100 results and a <code>nextToken</code> value if applicable.</p>",
+          "location": "querystring",
+          "locationName": "limit"
+        },
+        "meshName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the service mesh in which to list virtual routers.</p>",
+          "location": "uri",
+          "locationName": "meshName"
+        },
+        "nextToken": {
+          "shape": "String",
+          "documentation": "<p>The <code>nextToken</code> value returned from a previous paginated\n         <code>ListVirtualRouters</code> request where <code>limit</code> was used and the\n         results exceeded the value of that parameter. Pagination continues from the end of the\n         previous results that returned the <code>nextToken</code> value.</p>",
+          "location": "querystring",
+          "locationName": "nextToken"
+        }
+      },
+      "documentation": ""
+    },
+    "CreateVirtualNodeInput": {
+      "type": "structure",
+      "required": [
+        "meshName",
+        "spec",
+        "virtualNodeName"
+      ],
+      "members": {
+        "clientToken": {
+          "shape": "String",
+          "documentation": "<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the\nrequest. Up to 36 letters, numbers, hyphens, and underscores are allowed.</p>",
+          "idempotencyToken": true
+        },
+        "meshName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the service mesh in which to create the virtual node.</p>",
+          "location": "uri",
+          "locationName": "meshName"
+        },
+        "spec": {
+          "shape": "VirtualNodeSpec",
+          "documentation": "<p>The virtual node specification to apply.</p>"
+        },
+        "virtualNodeName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name to use for the virtual node.</p>"
+        }
+      },
+      "documentation": ""
+    },
+    "BadRequestException": {
+      "type": "structure",
+      "members": {
+        "message": {
+          "shape": "String"
+        }
+      },
+      "documentation": "<p>The request syntax was malformed. Check your request syntax and try again.</p>",
+      "exception": true,
+      "error": {
+        "code": "BadRequestException",
+        "httpStatusCode": 400,
+        "senderFault": true
+      }
+    },
+    "MeshData": {
+      "type": "structure",
+      "required": [
+        "meshName",
+        "metadata"
+      ],
+      "members": {
+        "meshName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the service mesh.</p>"
+        },
+        "metadata": {
+          "shape": "ResourceMetadata",
+          "documentation": "<p>The associated metadata for the service mesh.</p>"
+        },
+        "status": {
+          "shape": "MeshStatus",
+          "documentation": "<p>The status of the service mesh.</p>"
+        }
+      },
+      "documentation": "<p>An object representing a service mesh returned by a describe operation.</p>"
+    },
+    "ListVirtualNodesLimit": {
+      "type": "integer",
+      "box": true,
+      "min": 1,
+      "max": 100
+    },
+    "WeightedTargets": {
+      "type": "list",
+      "member": {
+        "shape": "WeightedTarget"
+      }
+    },
+    "DeleteMeshInput": {
+      "type": "structure",
+      "required": [
+        "meshName"
+      ],
+      "members": {
+        "meshName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the service mesh to delete.</p>",
+          "location": "uri",
+          "locationName": "meshName"
+        }
+      },
+      "documentation": ""
+    },
+    "HttpRouteMatch": {
+      "type": "structure",
+      "members": {
+        "prefix": {
+          "shape": "String",
+          "documentation": "<p>Specifies the path with which to match requests. This parameter must always start with\n            <code>/</code>, which by itself matches all requests to the virtual router service name.\n         You can also match for path-based routing of requests. For example, if your virtual router\n         service name is <code>my-service.local</code>, and you want the route to match requests to\n            <code>my-service.local/metrics</code>, then your prefix should be\n         <code>/metrics</code>.</p>"
+        }
+      },
+      "documentation": "<p>An object representing the requirements for a route to match HTTP requests for a virtual\n         router.</p>"
+    },
+    "DeleteRouteOutput": {
+      "type": "structure",
+      "members": {
+        "route": {
+          "shape": "RouteData",
+          "documentation": "<p>The route that was deleted.</p>"
+        }
+      },
+      "documentation": "",
+      "payload": "route"
+    },
+    "Backends": {
+      "type": "list",
+      "member": {
+        "shape": "ServiceName"
+      }
+    },
+    "CreateRouteInput": {
+      "type": "structure",
+      "required": [
+        "meshName",
+        "routeName",
+        "spec",
+        "virtualRouterName"
+      ],
+      "members": {
+        "clientToken": {
+          "shape": "String",
+          "documentation": "<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the\nrequest. Up to 36 letters, numbers, hyphens, and underscores are allowed.</p>",
+          "idempotencyToken": true
+        },
+        "meshName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the service mesh in which to create the route.</p>",
+          "location": "uri",
+          "locationName": "meshName"
+        },
+        "routeName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name to use for the route.</p>"
+        },
+        "spec": {
+          "shape": "RouteSpec",
+          "documentation": "<p>The route specification to apply.</p>"
+        },
+        "virtualRouterName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the virtual router in which to create the route.</p>",
+          "location": "uri",
+          "locationName": "virtualRouterName"
+        }
+      },
+      "documentation": ""
+    },
+    "VirtualNodeStatus": {
+      "type": "structure",
+      "members": {
+        "status": {
+          "shape": "VirtualNodeStatusCode",
+          "documentation": "<p>The current status of the virtual node.</p>"
+        }
+      },
+      "documentation": "<p>An object representing the current status of the virtual node.</p>"
+    },
+    "ListVirtualNodesInput": {
+      "type": "structure",
+      "required": [
+        "meshName"
+      ],
+      "members": {
+        "limit": {
+          "shape": "ListVirtualNodesLimit",
+          "documentation": "<p>The maximum number of mesh results returned by <code>ListVirtualNodes</code> in\n         paginated output. When this parameter is used, <code>ListVirtualNodes</code> only returns\n         <code>limit</code> results in a single page along with a <code>nextToken</code>\n         response element. The remaining results of the initial request can be seen by sending\n         another <code>ListVirtualNodes</code> request with the returned <code>nextToken</code>\n         value. This value can be between 1 and 100. If this\n         parameter is not used, then <code>ListVirtualNodes</code> returns up to\n         100 results and a <code>nextToken</code> value if applicable.</p>",
+          "location": "querystring",
+          "locationName": "limit"
+        },
+        "meshName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the service mesh in which to list virtual nodes.</p>",
+          "location": "uri",
+          "locationName": "meshName"
+        },
+        "nextToken": {
+          "shape": "String",
+          "documentation": "<p>The <code>nextToken</code> value returned from a previous paginated\n         <code>ListVirtualNodes</code> request where <code>limit</code> was used and the\n         results exceeded the value of that parameter. Pagination continues from the end of the\n         previous results that returned the <code>nextToken</code> value.</p>",
+          "location": "querystring",
+          "locationName": "nextToken"
+        }
+      },
+      "documentation": ""
+    },
+    "RouteRef": {
+      "type": "structure",
+      "members": {
+        "arn": {
+          "shape": "Arn",
+          "documentation": "<p>The full Amazon Resource Name (ARN) for the route.</p>"
+        },
+        "meshName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the service mesh in which the route resides.</p>"
+        },
+        "routeName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The name of the route.</p>"
+        },
+        "virtualRouterName": {
+          "shape": "ResourceName",
+          "documentation": "<p>The virtual router with which the route is associated.</p>"
+        }
+      },
+      "documentation": "<p>An object representing a route returned by a list operation.</p>"
+    },
+    "RouteStatusCode": {
+      "type": "string",
+      "enum": [
+        "ACTIVE",
+        "DELETED",
+        "INACTIVE"
+      ]
+    },
+    "UpdateVirtualNodeOutput": {
+      "type": "structure",
+      "members": {
+        "virtualNode": {
+          "shape": "VirtualNodeData",
+          "documentation": "<p>A full description of the virtual node that was updated.</p>"
+        }
+      },
+      "documentation": "",
+      "payload": "virtualNode"
+    }
+  }
+}

+ 52 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appmesh/2019-01-25/paginators-1.json

@@ -0,0 +1,52 @@
+{
+  "pagination": {
+    "ListMeshes": {
+      "input_token": "nextToken",
+      "limit_key": "limit",
+      "output_token": "nextToken",
+      "result_key": "meshes"
+    },
+    "ListRoutes": {
+      "input_token": "nextToken",
+      "limit_key": "limit",
+      "output_token": "nextToken",
+      "result_key": "routes"
+    },
+    "ListVirtualNodes": {
+      "input_token": "nextToken",
+      "limit_key": "limit",
+      "output_token": "nextToken",
+      "result_key": "virtualNodes"
+    },
+    "ListVirtualRouters": {
+      "input_token": "nextToken",
+      "limit_key": "limit",
+      "output_token": "nextToken",
+      "result_key": "virtualRouters"
+    },
+    "ListVirtualServices": {
+      "input_token": "nextToken",
+      "limit_key": "limit",
+      "output_token": "nextToken",
+      "result_key": "virtualServices"
+    },
+    "ListTagsForResource": {
+      "input_token": "nextToken",
+      "limit_key": "limit",
+      "output_token": "nextToken",
+      "result_key": "tags"
+    },
+    "ListGatewayRoutes": {
+      "input_token": "nextToken",
+      "limit_key": "limit",
+      "output_token": "nextToken",
+      "result_key": "gatewayRoutes"
+    },
+    "ListVirtualGateways": {
+      "input_token": "nextToken",
+      "limit_key": "limit",
+      "output_token": "nextToken",
+      "result_key": "virtualGateways"
+    }
+  }
+}

+ 5708 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appmesh/2019-01-25/service-2.json

@@ -0,0 +1,5708 @@
+{
+  "version":"2.0",
+  "metadata":{
+    "apiVersion":"2019-01-25",
+    "endpointPrefix":"appmesh",
+    "jsonVersion":"1.1",
+    "protocol":"rest-json",
+    "serviceFullName":"AWS App Mesh",
+    "serviceId":"App Mesh",
+    "signatureVersion":"v4",
+    "signingName":"appmesh",
+    "uid":"appmesh-2019-01-25"
+  },
+  "operations":{
+    "CreateGatewayRoute":{
+      "name":"CreateGatewayRoute",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualGateway/{virtualGatewayName}/gatewayRoutes",
+        "responseCode":200
+      },
+      "input":{"shape":"CreateGatewayRouteInput"},
+      "output":{"shape":"CreateGatewayRouteOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"ConflictException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"},
+        {"shape":"LimitExceededException"}
+      ],
+      "documentation":"<p>Creates a gateway route.</p> <p>A gateway route is attached to a virtual gateway and routes traffic to an existing virtual service. If a route matches a request, it can distribute traffic to a target virtual service.</p> <p>For more information about gateway routes, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/gateway-routes.html\">Gateway routes</a>.</p>",
+      "idempotent":true
+    },
+    "CreateMesh":{
+      "name":"CreateMesh",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/v20190125/meshes",
+        "responseCode":200
+      },
+      "input":{"shape":"CreateMeshInput"},
+      "output":{"shape":"CreateMeshOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"ConflictException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"},
+        {"shape":"LimitExceededException"}
+      ],
+      "documentation":"<p>Creates a service mesh.</p> <p> A service mesh is a logical boundary for network traffic between services that are represented by resources within the mesh. After you create your service mesh, you can create virtual services, virtual nodes, virtual routers, and routes to distribute traffic between the applications in your mesh.</p> <p>For more information about service meshes, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/meshes.html\">Service meshes</a>.</p>",
+      "idempotent":true
+    },
+    "CreateRoute":{
+      "name":"CreateRoute",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes",
+        "responseCode":200
+      },
+      "input":{"shape":"CreateRouteInput"},
+      "output":{"shape":"CreateRouteOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"ConflictException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"},
+        {"shape":"LimitExceededException"}
+      ],
+      "documentation":"<p>Creates a route that is associated with a virtual router.</p> <p> You can route several different protocols and define a retry policy for a route. Traffic can be routed to one or more virtual nodes.</p> <p>For more information about routes, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/routes.html\">Routes</a>.</p>",
+      "idempotent":true
+    },
+    "CreateVirtualGateway":{
+      "name":"CreateVirtualGateway",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualGateways",
+        "responseCode":200
+      },
+      "input":{"shape":"CreateVirtualGatewayInput"},
+      "output":{"shape":"CreateVirtualGatewayOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"ConflictException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"},
+        {"shape":"LimitExceededException"}
+      ],
+      "documentation":"<p>Creates a virtual gateway.</p> <p>A virtual gateway allows resources outside your mesh to communicate to resources that are inside your mesh. The virtual gateway represents an Envoy proxy running in an Amazon ECS task, in a Kubernetes service, or on an Amazon EC2 instance. Unlike a virtual node, which represents an Envoy running with an application, a virtual gateway represents Envoy deployed by itself.</p> <p>For more information about virtual gateways, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_gateways.html\">Virtual gateways</a>. </p>",
+      "idempotent":true
+    },
+    "CreateVirtualNode":{
+      "name":"CreateVirtualNode",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualNodes",
+        "responseCode":200
+      },
+      "input":{"shape":"CreateVirtualNodeInput"},
+      "output":{"shape":"CreateVirtualNodeOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"ConflictException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"},
+        {"shape":"LimitExceededException"}
+      ],
+      "documentation":"<p>Creates a virtual node within a service mesh.</p> <p> A virtual node acts as a logical pointer to a particular task group, such as an Amazon ECS service or a Kubernetes deployment. When you create a virtual node, you can specify the service discovery information for your task group, and whether the proxy running in a task group will communicate with other proxies using Transport Layer Security (TLS).</p> <p>You define a <code>listener</code> for any inbound traffic that your virtual node expects. Any virtual service that your virtual node expects to communicate to is specified as a <code>backend</code>.</p> <p>The response metadata for your new virtual node contains the <code>arn</code> that is associated with the virtual node. Set this value to the full ARN; for example, <code>arn:aws:appmesh:us-west-2:123456789012:myMesh/default/virtualNode/myApp</code>) as the <code>APPMESH_RESOURCE_ARN</code> environment variable for your task group's Envoy proxy container in your task definition or pod spec. This is then mapped to the <code>node.id</code> and <code>node.cluster</code> Envoy parameters.</p> <note> <p>By default, App Mesh uses the name of the resource you specified in <code>APPMESH_RESOURCE_ARN</code> when Envoy is referring to itself in metrics and traces. You can override this behavior by setting the <code>APPMESH_RESOURCE_CLUSTER</code> environment variable with your own name.</p> </note> <p>For more information about virtual nodes, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_nodes.html\">Virtual nodes</a>. You must be using <code>1.15.0</code> or later of the Envoy image when setting these variables. For more information aboutApp Mesh Envoy variables, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/envoy.html\">Envoy image</a> in the AWS App Mesh User Guide.</p>",
+      "idempotent":true
+    },
+    "CreateVirtualRouter":{
+      "name":"CreateVirtualRouter",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualRouters",
+        "responseCode":200
+      },
+      "input":{"shape":"CreateVirtualRouterInput"},
+      "output":{"shape":"CreateVirtualRouterOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"ConflictException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"},
+        {"shape":"LimitExceededException"}
+      ],
+      "documentation":"<p>Creates a virtual router within a service mesh.</p> <p>Specify a <code>listener</code> for any inbound traffic that your virtual router receives. Create a virtual router for each protocol and port that you need to route. Virtual routers handle traffic for one or more virtual services within your mesh. After you create your virtual router, create and associate routes for your virtual router that direct incoming requests to different virtual nodes.</p> <p>For more information about virtual routers, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_routers.html\">Virtual routers</a>.</p>",
+      "idempotent":true
+    },
+    "CreateVirtualService":{
+      "name":"CreateVirtualService",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualServices",
+        "responseCode":200
+      },
+      "input":{"shape":"CreateVirtualServiceInput"},
+      "output":{"shape":"CreateVirtualServiceOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"ConflictException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"},
+        {"shape":"LimitExceededException"}
+      ],
+      "documentation":"<p>Creates a virtual service within a service mesh.</p> <p>A virtual service is an abstraction of a real service that is provided by a virtual node directly or indirectly by means of a virtual router. Dependent services call your virtual service by its <code>virtualServiceName</code>, and those requests are routed to the virtual node or virtual router that is specified as the provider for the virtual service.</p> <p>For more information about virtual services, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_services.html\">Virtual services</a>.</p>",
+      "idempotent":true
+    },
+    "DeleteGatewayRoute":{
+      "name":"DeleteGatewayRoute",
+      "http":{
+        "method":"DELETE",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualGateway/{virtualGatewayName}/gatewayRoutes/{gatewayRouteName}",
+        "responseCode":200
+      },
+      "input":{"shape":"DeleteGatewayRouteInput"},
+      "output":{"shape":"DeleteGatewayRouteOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ResourceInUseException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"}
+      ],
+      "documentation":"<p>Deletes an existing gateway route.</p>",
+      "idempotent":true
+    },
+    "DeleteMesh":{
+      "name":"DeleteMesh",
+      "http":{
+        "method":"DELETE",
+        "requestUri":"/v20190125/meshes/{meshName}",
+        "responseCode":200
+      },
+      "input":{"shape":"DeleteMeshInput"},
+      "output":{"shape":"DeleteMeshOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ResourceInUseException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"}
+      ],
+      "documentation":"<p>Deletes an existing service mesh.</p> <p>You must delete all resources (virtual services, routes, virtual routers, and virtual nodes) in the service mesh before you can delete the mesh itself.</p>",
+      "idempotent":true
+    },
+    "DeleteRoute":{
+      "name":"DeleteRoute",
+      "http":{
+        "method":"DELETE",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes/{routeName}",
+        "responseCode":200
+      },
+      "input":{"shape":"DeleteRouteInput"},
+      "output":{"shape":"DeleteRouteOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ResourceInUseException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"}
+      ],
+      "documentation":"<p>Deletes an existing route.</p>",
+      "idempotent":true
+    },
+    "DeleteVirtualGateway":{
+      "name":"DeleteVirtualGateway",
+      "http":{
+        "method":"DELETE",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualGateways/{virtualGatewayName}",
+        "responseCode":200
+      },
+      "input":{"shape":"DeleteVirtualGatewayInput"},
+      "output":{"shape":"DeleteVirtualGatewayOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ResourceInUseException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"}
+      ],
+      "documentation":"<p>Deletes an existing virtual gateway. You cannot delete a virtual gateway if any gateway routes are associated to it.</p>",
+      "idempotent":true
+    },
+    "DeleteVirtualNode":{
+      "name":"DeleteVirtualNode",
+      "http":{
+        "method":"DELETE",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualNodes/{virtualNodeName}",
+        "responseCode":200
+      },
+      "input":{"shape":"DeleteVirtualNodeInput"},
+      "output":{"shape":"DeleteVirtualNodeOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ResourceInUseException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"}
+      ],
+      "documentation":"<p>Deletes an existing virtual node.</p> <p>You must delete any virtual services that list a virtual node as a service provider before you can delete the virtual node itself.</p>",
+      "idempotent":true
+    },
+    "DeleteVirtualRouter":{
+      "name":"DeleteVirtualRouter",
+      "http":{
+        "method":"DELETE",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualRouters/{virtualRouterName}",
+        "responseCode":200
+      },
+      "input":{"shape":"DeleteVirtualRouterInput"},
+      "output":{"shape":"DeleteVirtualRouterOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ResourceInUseException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"}
+      ],
+      "documentation":"<p>Deletes an existing virtual router.</p> <p>You must delete any routes associated with the virtual router before you can delete the router itself.</p>",
+      "idempotent":true
+    },
+    "DeleteVirtualService":{
+      "name":"DeleteVirtualService",
+      "http":{
+        "method":"DELETE",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualServices/{virtualServiceName}",
+        "responseCode":200
+      },
+      "input":{"shape":"DeleteVirtualServiceInput"},
+      "output":{"shape":"DeleteVirtualServiceOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ResourceInUseException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"}
+      ],
+      "documentation":"<p>Deletes an existing virtual service.</p>",
+      "idempotent":true
+    },
+    "DescribeGatewayRoute":{
+      "name":"DescribeGatewayRoute",
+      "http":{
+        "method":"GET",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualGateway/{virtualGatewayName}/gatewayRoutes/{gatewayRouteName}",
+        "responseCode":200
+      },
+      "input":{"shape":"DescribeGatewayRouteInput"},
+      "output":{"shape":"DescribeGatewayRouteOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"}
+      ],
+      "documentation":"<p>Describes an existing gateway route.</p>"
+    },
+    "DescribeMesh":{
+      "name":"DescribeMesh",
+      "http":{
+        "method":"GET",
+        "requestUri":"/v20190125/meshes/{meshName}",
+        "responseCode":200
+      },
+      "input":{"shape":"DescribeMeshInput"},
+      "output":{"shape":"DescribeMeshOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"}
+      ],
+      "documentation":"<p>Describes an existing service mesh.</p>"
+    },
+    "DescribeRoute":{
+      "name":"DescribeRoute",
+      "http":{
+        "method":"GET",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes/{routeName}",
+        "responseCode":200
+      },
+      "input":{"shape":"DescribeRouteInput"},
+      "output":{"shape":"DescribeRouteOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"}
+      ],
+      "documentation":"<p>Describes an existing route.</p>"
+    },
+    "DescribeVirtualGateway":{
+      "name":"DescribeVirtualGateway",
+      "http":{
+        "method":"GET",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualGateways/{virtualGatewayName}",
+        "responseCode":200
+      },
+      "input":{"shape":"DescribeVirtualGatewayInput"},
+      "output":{"shape":"DescribeVirtualGatewayOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"}
+      ],
+      "documentation":"<p>Describes an existing virtual gateway.</p>"
+    },
+    "DescribeVirtualNode":{
+      "name":"DescribeVirtualNode",
+      "http":{
+        "method":"GET",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualNodes/{virtualNodeName}",
+        "responseCode":200
+      },
+      "input":{"shape":"DescribeVirtualNodeInput"},
+      "output":{"shape":"DescribeVirtualNodeOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"}
+      ],
+      "documentation":"<p>Describes an existing virtual node.</p>"
+    },
+    "DescribeVirtualRouter":{
+      "name":"DescribeVirtualRouter",
+      "http":{
+        "method":"GET",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualRouters/{virtualRouterName}",
+        "responseCode":200
+      },
+      "input":{"shape":"DescribeVirtualRouterInput"},
+      "output":{"shape":"DescribeVirtualRouterOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"}
+      ],
+      "documentation":"<p>Describes an existing virtual router.</p>"
+    },
+    "DescribeVirtualService":{
+      "name":"DescribeVirtualService",
+      "http":{
+        "method":"GET",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualServices/{virtualServiceName}",
+        "responseCode":200
+      },
+      "input":{"shape":"DescribeVirtualServiceInput"},
+      "output":{"shape":"DescribeVirtualServiceOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"}
+      ],
+      "documentation":"<p>Describes an existing virtual service.</p>"
+    },
+    "ListGatewayRoutes":{
+      "name":"ListGatewayRoutes",
+      "http":{
+        "method":"GET",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualGateway/{virtualGatewayName}/gatewayRoutes",
+        "responseCode":200
+      },
+      "input":{"shape":"ListGatewayRoutesInput"},
+      "output":{"shape":"ListGatewayRoutesOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"}
+      ],
+      "documentation":"<p>Returns a list of existing gateway routes that are associated to a virtual gateway.</p>"
+    },
+    "ListMeshes":{
+      "name":"ListMeshes",
+      "http":{
+        "method":"GET",
+        "requestUri":"/v20190125/meshes",
+        "responseCode":200
+      },
+      "input":{"shape":"ListMeshesInput"},
+      "output":{"shape":"ListMeshesOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"}
+      ],
+      "documentation":"<p>Returns a list of existing service meshes.</p>"
+    },
+    "ListRoutes":{
+      "name":"ListRoutes",
+      "http":{
+        "method":"GET",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes",
+        "responseCode":200
+      },
+      "input":{"shape":"ListRoutesInput"},
+      "output":{"shape":"ListRoutesOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"}
+      ],
+      "documentation":"<p>Returns a list of existing routes in a service mesh.</p>"
+    },
+    "ListTagsForResource":{
+      "name":"ListTagsForResource",
+      "http":{
+        "method":"GET",
+        "requestUri":"/v20190125/tags",
+        "responseCode":200
+      },
+      "input":{"shape":"ListTagsForResourceInput"},
+      "output":{"shape":"ListTagsForResourceOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"}
+      ],
+      "documentation":"<p>List the tags for an App Mesh resource.</p>"
+    },
+    "ListVirtualGateways":{
+      "name":"ListVirtualGateways",
+      "http":{
+        "method":"GET",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualGateways",
+        "responseCode":200
+      },
+      "input":{"shape":"ListVirtualGatewaysInput"},
+      "output":{"shape":"ListVirtualGatewaysOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"}
+      ],
+      "documentation":"<p>Returns a list of existing virtual gateways in a service mesh.</p>"
+    },
+    "ListVirtualNodes":{
+      "name":"ListVirtualNodes",
+      "http":{
+        "method":"GET",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualNodes",
+        "responseCode":200
+      },
+      "input":{"shape":"ListVirtualNodesInput"},
+      "output":{"shape":"ListVirtualNodesOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"}
+      ],
+      "documentation":"<p>Returns a list of existing virtual nodes.</p>"
+    },
+    "ListVirtualRouters":{
+      "name":"ListVirtualRouters",
+      "http":{
+        "method":"GET",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualRouters",
+        "responseCode":200
+      },
+      "input":{"shape":"ListVirtualRoutersInput"},
+      "output":{"shape":"ListVirtualRoutersOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"}
+      ],
+      "documentation":"<p>Returns a list of existing virtual routers in a service mesh.</p>"
+    },
+    "ListVirtualServices":{
+      "name":"ListVirtualServices",
+      "http":{
+        "method":"GET",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualServices",
+        "responseCode":200
+      },
+      "input":{"shape":"ListVirtualServicesInput"},
+      "output":{"shape":"ListVirtualServicesOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"}
+      ],
+      "documentation":"<p>Returns a list of existing virtual services in a service mesh.</p>"
+    },
+    "TagResource":{
+      "name":"TagResource",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/v20190125/tag",
+        "responseCode":200
+      },
+      "input":{"shape":"TagResourceInput"},
+      "output":{"shape":"TagResourceOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"TooManyTagsException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"}
+      ],
+      "documentation":"<p>Associates the specified tags to a resource with the specified <code>resourceArn</code>. If existing tags on a resource aren't specified in the request parameters, they aren't changed. When a resource is deleted, the tags associated with that resource are also deleted.</p>",
+      "idempotent":true
+    },
+    "UntagResource":{
+      "name":"UntagResource",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/v20190125/untag",
+        "responseCode":200
+      },
+      "input":{"shape":"UntagResourceInput"},
+      "output":{"shape":"UntagResourceOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"}
+      ],
+      "documentation":"<p>Deletes specified tags from a resource.</p>",
+      "idempotent":true
+    },
+    "UpdateGatewayRoute":{
+      "name":"UpdateGatewayRoute",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualGateway/{virtualGatewayName}/gatewayRoutes/{gatewayRouteName}",
+        "responseCode":200
+      },
+      "input":{"shape":"UpdateGatewayRouteInput"},
+      "output":{"shape":"UpdateGatewayRouteOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"ConflictException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"},
+        {"shape":"LimitExceededException"}
+      ],
+      "documentation":"<p>Updates an existing gateway route that is associated to a specified virtual gateway in a service mesh.</p>",
+      "idempotent":true
+    },
+    "UpdateMesh":{
+      "name":"UpdateMesh",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/v20190125/meshes/{meshName}",
+        "responseCode":200
+      },
+      "input":{"shape":"UpdateMeshInput"},
+      "output":{"shape":"UpdateMeshOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"ConflictException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"}
+      ],
+      "documentation":"<p>Updates an existing service mesh.</p>",
+      "idempotent":true
+    },
+    "UpdateRoute":{
+      "name":"UpdateRoute",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes/{routeName}",
+        "responseCode":200
+      },
+      "input":{"shape":"UpdateRouteInput"},
+      "output":{"shape":"UpdateRouteOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"ConflictException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"},
+        {"shape":"LimitExceededException"}
+      ],
+      "documentation":"<p>Updates an existing route for a specified service mesh and virtual router.</p>",
+      "idempotent":true
+    },
+    "UpdateVirtualGateway":{
+      "name":"UpdateVirtualGateway",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualGateways/{virtualGatewayName}",
+        "responseCode":200
+      },
+      "input":{"shape":"UpdateVirtualGatewayInput"},
+      "output":{"shape":"UpdateVirtualGatewayOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"ConflictException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"},
+        {"shape":"LimitExceededException"}
+      ],
+      "documentation":"<p>Updates an existing virtual gateway in a specified service mesh.</p>",
+      "idempotent":true
+    },
+    "UpdateVirtualNode":{
+      "name":"UpdateVirtualNode",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualNodes/{virtualNodeName}",
+        "responseCode":200
+      },
+      "input":{"shape":"UpdateVirtualNodeInput"},
+      "output":{"shape":"UpdateVirtualNodeOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"ConflictException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"},
+        {"shape":"LimitExceededException"}
+      ],
+      "documentation":"<p>Updates an existing virtual node in a specified service mesh.</p>",
+      "idempotent":true
+    },
+    "UpdateVirtualRouter":{
+      "name":"UpdateVirtualRouter",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualRouters/{virtualRouterName}",
+        "responseCode":200
+      },
+      "input":{"shape":"UpdateVirtualRouterInput"},
+      "output":{"shape":"UpdateVirtualRouterOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"ConflictException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"},
+        {"shape":"LimitExceededException"}
+      ],
+      "documentation":"<p>Updates an existing virtual router in a specified service mesh.</p>",
+      "idempotent":true
+    },
+    "UpdateVirtualService":{
+      "name":"UpdateVirtualService",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/v20190125/meshes/{meshName}/virtualServices/{virtualServiceName}",
+        "responseCode":200
+      },
+      "input":{"shape":"UpdateVirtualServiceInput"},
+      "output":{"shape":"UpdateVirtualServiceOutput"},
+      "errors":[
+        {"shape":"NotFoundException"},
+        {"shape":"BadRequestException"},
+        {"shape":"ConflictException"},
+        {"shape":"TooManyRequestsException"},
+        {"shape":"ForbiddenException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InternalServerErrorException"},
+        {"shape":"LimitExceededException"}
+      ],
+      "documentation":"<p>Updates an existing virtual service in a specified service mesh.</p>",
+      "idempotent":true
+    }
+  },
+  "shapes":{
+    "AccessLog":{
+      "type":"structure",
+      "members":{
+        "file":{
+          "shape":"FileAccessLog",
+          "documentation":"<p>The file object to send virtual node access logs to.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the access logging information for a virtual node.</p>",
+      "union":true
+    },
+    "AccountId":{
+      "type":"string",
+      "max":12,
+      "min":12
+    },
+    "Arn":{"type":"string"},
+    "AwsCloudMapInstanceAttribute":{
+      "type":"structure",
+      "required":[
+        "key",
+        "value"
+      ],
+      "members":{
+        "key":{
+          "shape":"AwsCloudMapInstanceAttributeKey",
+          "documentation":"<p>The name of an Cloud Map service instance attribute key. Any Cloud Map service instance that contains the specified key and value is returned.</p>"
+        },
+        "value":{
+          "shape":"AwsCloudMapInstanceAttributeValue",
+          "documentation":"<p>The value of an Cloud Map service instance attribute key. Any Cloud Map service instance that contains the specified key and value is returned.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the Cloud Map attribute information for your virtual node.</p> <note> <p>AWS Cloud Map is not available in the eu-south-1 Region.</p> </note>"
+    },
+    "AwsCloudMapInstanceAttributeKey":{
+      "type":"string",
+      "max":255,
+      "min":1,
+      "pattern":"^[a-zA-Z0-9!-~]+$"
+    },
+    "AwsCloudMapInstanceAttributeValue":{
+      "type":"string",
+      "max":1024,
+      "min":1,
+      "pattern":"^([a-zA-Z0-9!-~][  a-zA-Z0-9!-~]*){0,1}[a-zA-Z0-9!-~]{0,1}$"
+    },
+    "AwsCloudMapInstanceAttributes":{
+      "type":"list",
+      "member":{"shape":"AwsCloudMapInstanceAttribute"}
+    },
+    "AwsCloudMapName":{
+      "type":"string",
+      "max":1024,
+      "min":1
+    },
+    "AwsCloudMapServiceDiscovery":{
+      "type":"structure",
+      "required":[
+        "namespaceName",
+        "serviceName"
+      ],
+      "members":{
+        "attributes":{
+          "shape":"AwsCloudMapInstanceAttributes",
+          "documentation":"<p>A string map that contains attributes with values that you can use to filter instances by any custom attribute that you specified when you registered the instance. Only instances that match all of the specified key/value pairs will be returned.</p>"
+        },
+        "namespaceName":{
+          "shape":"AwsCloudMapName",
+          "documentation":"<p>The name of the Cloud Map namespace to use.</p>"
+        },
+        "serviceName":{
+          "shape":"AwsCloudMapName",
+          "documentation":"<p>The name of the Cloud Map service to use.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the Cloud Map service discovery information for your virtual node.</p> <note> <p>Cloud Map is not available in the eu-south-1 Region.</p> </note>"
+    },
+    "Backend":{
+      "type":"structure",
+      "members":{
+        "virtualService":{
+          "shape":"VirtualServiceBackend",
+          "documentation":"<p>Specifies a virtual service to use as a backend. </p>"
+        }
+      },
+      "documentation":"<p>An object that represents the backends that a virtual node is expected to send outbound traffic to.</p>",
+      "union":true
+    },
+    "BackendDefaults":{
+      "type":"structure",
+      "members":{
+        "clientPolicy":{
+          "shape":"ClientPolicy",
+          "documentation":"<p>A reference to an object that represents a client policy.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the default properties for a backend.</p>"
+    },
+    "Backends":{
+      "type":"list",
+      "member":{"shape":"Backend"}
+    },
+    "BadRequestException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"String"}
+      },
+      "documentation":"<p>The request syntax was malformed. Check your request syntax and try again.</p>",
+      "error":{
+        "httpStatusCode":400,
+        "senderFault":true
+      },
+      "exception":true
+    },
+    "Boolean":{
+      "type":"boolean",
+      "box":true
+    },
+    "CertificateAuthorityArns":{
+      "type":"list",
+      "member":{"shape":"Arn"},
+      "max":3,
+      "min":1
+    },
+    "ClientPolicy":{
+      "type":"structure",
+      "members":{
+        "tls":{
+          "shape":"ClientPolicyTls",
+          "documentation":"<p>A reference to an object that represents a Transport Layer Security (TLS) client policy.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a client policy.</p>"
+    },
+    "ClientPolicyTls":{
+      "type":"structure",
+      "required":["validation"],
+      "members":{
+        "certificate":{
+          "shape":"ClientTlsCertificate",
+          "documentation":"<p>A reference to an object that represents a client's TLS certificate.</p>"
+        },
+        "enforce":{
+          "shape":"Boolean",
+          "documentation":"<p>Whether the policy is enforced. The default is <code>True</code>, if a value isn't specified.</p>",
+          "box":true
+        },
+        "ports":{
+          "shape":"PortSet",
+          "documentation":"<p>One or more ports that the policy is enforced for.</p>"
+        },
+        "validation":{
+          "shape":"TlsValidationContext",
+          "documentation":"<p>A reference to an object that represents a TLS validation context.</p>"
+        }
+      },
+      "documentation":"<p>A reference to an object that represents a Transport Layer Security (TLS) client policy.</p>"
+    },
+    "ClientTlsCertificate":{
+      "type":"structure",
+      "members":{
+        "file":{
+          "shape":"ListenerTlsFileCertificate",
+          "documentation":"<p>An object that represents a local file certificate. The certificate must meet specific requirements and you must have proxy authorization enabled. For more information, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html\">Transport Layer Security (TLS)</a>.</p>"
+        },
+        "sds":{
+          "shape":"ListenerTlsSdsCertificate",
+          "documentation":"<p>A reference to an object that represents a client's TLS Secret Discovery Service certificate.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the client's certificate.</p>",
+      "union":true
+    },
+    "ConflictException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"String"}
+      },
+      "documentation":"<p>The request contains a client token that was used for a previous update resource call with different specifications. Try the request again with a new client token.</p>",
+      "error":{
+        "httpStatusCode":409,
+        "senderFault":true
+      },
+      "exception":true
+    },
+    "CreateGatewayRouteInput":{
+      "type":"structure",
+      "required":[
+        "gatewayRouteName",
+        "meshName",
+        "spec",
+        "virtualGatewayName"
+      ],
+      "members":{
+        "clientToken":{
+          "shape":"String",
+          "documentation":"<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Up to 36 letters, numbers, hyphens, and underscores are allowed.</p>",
+          "idempotencyToken":true
+        },
+        "gatewayRouteName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name to use for the gateway route.</p>"
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh to create the gateway route in.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then the account that you specify must share the mesh with your account before you can create the resource in the service mesh. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "spec":{
+          "shape":"GatewayRouteSpec",
+          "documentation":"<p>The gateway route specification to apply.</p>"
+        },
+        "tags":{
+          "shape":"TagList",
+          "documentation":"<p>Optional metadata that you can apply to the gateway route to assist with categorization and organization. Each tag consists of a key and an optional value, both of which you define. Tag keys can have a maximum character length of 128 characters, and tag values can have a maximum length of 256 characters.</p>"
+        },
+        "virtualGatewayName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the virtual gateway to associate the gateway route with. If the virtual gateway is in a shared mesh, then you must be the owner of the virtual gateway resource.</p>",
+          "location":"uri",
+          "locationName":"virtualGatewayName"
+        }
+      }
+    },
+    "CreateGatewayRouteOutput":{
+      "type":"structure",
+      "required":["gatewayRoute"],
+      "members":{
+        "gatewayRoute":{
+          "shape":"GatewayRouteData",
+          "documentation":"<p>The full description of your gateway route following the create call.</p>"
+        }
+      },
+      "payload":"gatewayRoute"
+    },
+    "CreateMeshInput":{
+      "type":"structure",
+      "required":["meshName"],
+      "members":{
+        "clientToken":{
+          "shape":"String",
+          "documentation":"<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Up to 36 letters, numbers, hyphens, and underscores are allowed.</p>",
+          "idempotencyToken":true
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name to use for the service mesh.</p>"
+        },
+        "spec":{
+          "shape":"MeshSpec",
+          "documentation":"<p>The service mesh specification to apply.</p>"
+        },
+        "tags":{
+          "shape":"TagList",
+          "documentation":"<p>Optional metadata that you can apply to the service mesh to assist with categorization and organization. Each tag consists of a key and an optional value, both of which you define. Tag keys can have a maximum character length of 128 characters, and tag values can have a maximum length of 256 characters.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "CreateMeshOutput":{
+      "type":"structure",
+      "required":["mesh"],
+      "members":{
+        "mesh":{
+          "shape":"MeshData",
+          "documentation":"<p>The full description of your service mesh following the create call.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>",
+      "payload":"mesh"
+    },
+    "CreateRouteInput":{
+      "type":"structure",
+      "required":[
+        "meshName",
+        "routeName",
+        "spec",
+        "virtualRouterName"
+      ],
+      "members":{
+        "clientToken":{
+          "shape":"String",
+          "documentation":"<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Up to 36 letters, numbers, hyphens, and underscores are allowed.</p>",
+          "idempotencyToken":true
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh to create the route in.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then the account that you specify must share the mesh with your account before you can create the resource in the service mesh. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "routeName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name to use for the route.</p>"
+        },
+        "spec":{
+          "shape":"RouteSpec",
+          "documentation":"<p>The route specification to apply.</p>"
+        },
+        "tags":{
+          "shape":"TagList",
+          "documentation":"<p>Optional metadata that you can apply to the route to assist with categorization and organization. Each tag consists of a key and an optional value, both of which you define. Tag keys can have a maximum character length of 128 characters, and tag values can have a maximum length of 256 characters.</p>"
+        },
+        "virtualRouterName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the virtual router in which to create the route. If the virtual router is in a shared mesh, then you must be the owner of the virtual router resource.</p>",
+          "location":"uri",
+          "locationName":"virtualRouterName"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "CreateRouteOutput":{
+      "type":"structure",
+      "required":["route"],
+      "members":{
+        "route":{
+          "shape":"RouteData",
+          "documentation":"<p>The full description of your mesh following the create call.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>",
+      "payload":"route"
+    },
+    "CreateVirtualGatewayInput":{
+      "type":"structure",
+      "required":[
+        "meshName",
+        "spec",
+        "virtualGatewayName"
+      ],
+      "members":{
+        "clientToken":{
+          "shape":"String",
+          "documentation":"<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Up to 36 letters, numbers, hyphens, and underscores are allowed.</p>",
+          "idempotencyToken":true
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh to create the virtual gateway in.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then the account that you specify must share the mesh with your account before you can create the resource in the service mesh. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "spec":{
+          "shape":"VirtualGatewaySpec",
+          "documentation":"<p>The virtual gateway specification to apply.</p>"
+        },
+        "tags":{
+          "shape":"TagList",
+          "documentation":"<p>Optional metadata that you can apply to the virtual gateway to assist with categorization and organization. Each tag consists of a key and an optional value, both of which you define. Tag keys can have a maximum character length of 128 characters, and tag values can have a maximum length of 256 characters.</p>"
+        },
+        "virtualGatewayName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name to use for the virtual gateway.</p>"
+        }
+      }
+    },
+    "CreateVirtualGatewayOutput":{
+      "type":"structure",
+      "required":["virtualGateway"],
+      "members":{
+        "virtualGateway":{
+          "shape":"VirtualGatewayData",
+          "documentation":"<p>The full description of your virtual gateway following the create call.</p>"
+        }
+      },
+      "payload":"virtualGateway"
+    },
+    "CreateVirtualNodeInput":{
+      "type":"structure",
+      "required":[
+        "meshName",
+        "spec",
+        "virtualNodeName"
+      ],
+      "members":{
+        "clientToken":{
+          "shape":"String",
+          "documentation":"<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Up to 36 letters, numbers, hyphens, and underscores are allowed.</p>",
+          "idempotencyToken":true
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh to create the virtual node in.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then the account that you specify must share the mesh with your account before you can create the resource in the service mesh. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "spec":{
+          "shape":"VirtualNodeSpec",
+          "documentation":"<p>The virtual node specification to apply.</p>"
+        },
+        "tags":{
+          "shape":"TagList",
+          "documentation":"<p>Optional metadata that you can apply to the virtual node to assist with categorization and organization. Each tag consists of a key and an optional value, both of which you define. Tag keys can have a maximum character length of 128 characters, and tag values can have a maximum length of 256 characters.</p>"
+        },
+        "virtualNodeName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name to use for the virtual node.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "CreateVirtualNodeOutput":{
+      "type":"structure",
+      "required":["virtualNode"],
+      "members":{
+        "virtualNode":{
+          "shape":"VirtualNodeData",
+          "documentation":"<p>The full description of your virtual node following the create call.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>",
+      "payload":"virtualNode"
+    },
+    "CreateVirtualRouterInput":{
+      "type":"structure",
+      "required":[
+        "meshName",
+        "spec",
+        "virtualRouterName"
+      ],
+      "members":{
+        "clientToken":{
+          "shape":"String",
+          "documentation":"<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Up to 36 letters, numbers, hyphens, and underscores are allowed.</p>",
+          "idempotencyToken":true
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh to create the virtual router in.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then the account that you specify must share the mesh with your account before you can create the resource in the service mesh. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "spec":{
+          "shape":"VirtualRouterSpec",
+          "documentation":"<p>The virtual router specification to apply.</p>"
+        },
+        "tags":{
+          "shape":"TagList",
+          "documentation":"<p>Optional metadata that you can apply to the virtual router to assist with categorization and organization. Each tag consists of a key and an optional value, both of which you define. Tag keys can have a maximum character length of 128 characters, and tag values can have a maximum length of 256 characters.</p>"
+        },
+        "virtualRouterName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name to use for the virtual router.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "CreateVirtualRouterOutput":{
+      "type":"structure",
+      "required":["virtualRouter"],
+      "members":{
+        "virtualRouter":{
+          "shape":"VirtualRouterData",
+          "documentation":"<p>The full description of your virtual router following the create call.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>",
+      "payload":"virtualRouter"
+    },
+    "CreateVirtualServiceInput":{
+      "type":"structure",
+      "required":[
+        "meshName",
+        "spec",
+        "virtualServiceName"
+      ],
+      "members":{
+        "clientToken":{
+          "shape":"String",
+          "documentation":"<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Up to 36 letters, numbers, hyphens, and underscores are allowed.</p>",
+          "idempotencyToken":true
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh to create the virtual service in.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then the account that you specify must share the mesh with your account before you can create the resource in the service mesh. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "spec":{
+          "shape":"VirtualServiceSpec",
+          "documentation":"<p>The virtual service specification to apply.</p>"
+        },
+        "tags":{
+          "shape":"TagList",
+          "documentation":"<p>Optional metadata that you can apply to the virtual service to assist with categorization and organization. Each tag consists of a key and an optional value, both of which you define. Tag keys can have a maximum character length of 128 characters, and tag values can have a maximum length of 256 characters.</p>"
+        },
+        "virtualServiceName":{
+          "shape":"ServiceName",
+          "documentation":"<p>The name to use for the virtual service.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "CreateVirtualServiceOutput":{
+      "type":"structure",
+      "required":["virtualService"],
+      "members":{
+        "virtualService":{
+          "shape":"VirtualServiceData",
+          "documentation":"<p>The full description of your virtual service following the create call.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>",
+      "payload":"virtualService"
+    },
+    "DefaultGatewayRouteRewrite":{
+      "type":"string",
+      "enum":[
+        "ENABLED",
+        "DISABLED"
+      ]
+    },
+    "DeleteGatewayRouteInput":{
+      "type":"structure",
+      "required":[
+        "gatewayRouteName",
+        "meshName",
+        "virtualGatewayName"
+      ],
+      "members":{
+        "gatewayRouteName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the gateway route to delete.</p>",
+          "location":"uri",
+          "locationName":"gatewayRouteName"
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh to delete the gateway route from.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "virtualGatewayName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the virtual gateway to delete the route from.</p>",
+          "location":"uri",
+          "locationName":"virtualGatewayName"
+        }
+      }
+    },
+    "DeleteGatewayRouteOutput":{
+      "type":"structure",
+      "required":["gatewayRoute"],
+      "members":{
+        "gatewayRoute":{
+          "shape":"GatewayRouteData",
+          "documentation":"<p>The gateway route that was deleted.</p>"
+        }
+      },
+      "payload":"gatewayRoute"
+    },
+    "DeleteMeshInput":{
+      "type":"structure",
+      "required":["meshName"],
+      "members":{
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh to delete.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "DeleteMeshOutput":{
+      "type":"structure",
+      "required":["mesh"],
+      "members":{
+        "mesh":{
+          "shape":"MeshData",
+          "documentation":"<p>The service mesh that was deleted.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>",
+      "payload":"mesh"
+    },
+    "DeleteRouteInput":{
+      "type":"structure",
+      "required":[
+        "meshName",
+        "routeName",
+        "virtualRouterName"
+      ],
+      "members":{
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh to delete the route in.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "routeName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the route to delete.</p>",
+          "location":"uri",
+          "locationName":"routeName"
+        },
+        "virtualRouterName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the virtual router to delete the route in.</p>",
+          "location":"uri",
+          "locationName":"virtualRouterName"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "DeleteRouteOutput":{
+      "type":"structure",
+      "required":["route"],
+      "members":{
+        "route":{
+          "shape":"RouteData",
+          "documentation":"<p>The route that was deleted.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>",
+      "payload":"route"
+    },
+    "DeleteVirtualGatewayInput":{
+      "type":"structure",
+      "required":[
+        "meshName",
+        "virtualGatewayName"
+      ],
+      "members":{
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh to delete the virtual gateway from.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "virtualGatewayName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the virtual gateway to delete.</p>",
+          "location":"uri",
+          "locationName":"virtualGatewayName"
+        }
+      }
+    },
+    "DeleteVirtualGatewayOutput":{
+      "type":"structure",
+      "required":["virtualGateway"],
+      "members":{
+        "virtualGateway":{
+          "shape":"VirtualGatewayData",
+          "documentation":"<p>The virtual gateway that was deleted.</p>"
+        }
+      },
+      "payload":"virtualGateway"
+    },
+    "DeleteVirtualNodeInput":{
+      "type":"structure",
+      "required":[
+        "meshName",
+        "virtualNodeName"
+      ],
+      "members":{
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh to delete the virtual node in.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "virtualNodeName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the virtual node to delete.</p>",
+          "location":"uri",
+          "locationName":"virtualNodeName"
+        }
+      },
+      "documentation":"<p>Deletes a virtual node input.</p>"
+    },
+    "DeleteVirtualNodeOutput":{
+      "type":"structure",
+      "required":["virtualNode"],
+      "members":{
+        "virtualNode":{
+          "shape":"VirtualNodeData",
+          "documentation":"<p>The virtual node that was deleted.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>",
+      "payload":"virtualNode"
+    },
+    "DeleteVirtualRouterInput":{
+      "type":"structure",
+      "required":[
+        "meshName",
+        "virtualRouterName"
+      ],
+      "members":{
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh to delete the virtual router in.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "virtualRouterName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the virtual router to delete.</p>",
+          "location":"uri",
+          "locationName":"virtualRouterName"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "DeleteVirtualRouterOutput":{
+      "type":"structure",
+      "required":["virtualRouter"],
+      "members":{
+        "virtualRouter":{
+          "shape":"VirtualRouterData",
+          "documentation":"<p>The virtual router that was deleted.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>",
+      "payload":"virtualRouter"
+    },
+    "DeleteVirtualServiceInput":{
+      "type":"structure",
+      "required":[
+        "meshName",
+        "virtualServiceName"
+      ],
+      "members":{
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh to delete the virtual service in.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "virtualServiceName":{
+          "shape":"ServiceName",
+          "documentation":"<p>The name of the virtual service to delete.</p>",
+          "location":"uri",
+          "locationName":"virtualServiceName"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "DeleteVirtualServiceOutput":{
+      "type":"structure",
+      "required":["virtualService"],
+      "members":{
+        "virtualService":{
+          "shape":"VirtualServiceData",
+          "documentation":"<p>The virtual service that was deleted.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>",
+      "payload":"virtualService"
+    },
+    "DescribeGatewayRouteInput":{
+      "type":"structure",
+      "required":[
+        "gatewayRouteName",
+        "meshName",
+        "virtualGatewayName"
+      ],
+      "members":{
+        "gatewayRouteName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the gateway route to describe.</p>",
+          "location":"uri",
+          "locationName":"gatewayRouteName"
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh that the gateway route resides in.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "virtualGatewayName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the virtual gateway that the gateway route is associated with.</p>",
+          "location":"uri",
+          "locationName":"virtualGatewayName"
+        }
+      }
+    },
+    "DescribeGatewayRouteOutput":{
+      "type":"structure",
+      "required":["gatewayRoute"],
+      "members":{
+        "gatewayRoute":{
+          "shape":"GatewayRouteData",
+          "documentation":"<p>The full description of your gateway route.</p>"
+        }
+      },
+      "payload":"gatewayRoute"
+    },
+    "DescribeMeshInput":{
+      "type":"structure",
+      "required":["meshName"],
+      "members":{
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh to describe.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "DescribeMeshOutput":{
+      "type":"structure",
+      "required":["mesh"],
+      "members":{
+        "mesh":{
+          "shape":"MeshData",
+          "documentation":"<p>The full description of your service mesh.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>",
+      "payload":"mesh"
+    },
+    "DescribeRouteInput":{
+      "type":"structure",
+      "required":[
+        "meshName",
+        "routeName",
+        "virtualRouterName"
+      ],
+      "members":{
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh that the route resides in.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "routeName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the route to describe.</p>",
+          "location":"uri",
+          "locationName":"routeName"
+        },
+        "virtualRouterName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the virtual router that the route is associated with.</p>",
+          "location":"uri",
+          "locationName":"virtualRouterName"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "DescribeRouteOutput":{
+      "type":"structure",
+      "required":["route"],
+      "members":{
+        "route":{
+          "shape":"RouteData",
+          "documentation":"<p>The full description of your route.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>",
+      "payload":"route"
+    },
+    "DescribeVirtualGatewayInput":{
+      "type":"structure",
+      "required":[
+        "meshName",
+        "virtualGatewayName"
+      ],
+      "members":{
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh that the gateway route resides in.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "virtualGatewayName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the virtual gateway to describe.</p>",
+          "location":"uri",
+          "locationName":"virtualGatewayName"
+        }
+      }
+    },
+    "DescribeVirtualGatewayOutput":{
+      "type":"structure",
+      "required":["virtualGateway"],
+      "members":{
+        "virtualGateway":{
+          "shape":"VirtualGatewayData",
+          "documentation":"<p>The full description of your virtual gateway.</p>"
+        }
+      },
+      "payload":"virtualGateway"
+    },
+    "DescribeVirtualNodeInput":{
+      "type":"structure",
+      "required":[
+        "meshName",
+        "virtualNodeName"
+      ],
+      "members":{
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh that the virtual node resides in.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "virtualNodeName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the virtual node to describe.</p>",
+          "location":"uri",
+          "locationName":"virtualNodeName"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "DescribeVirtualNodeOutput":{
+      "type":"structure",
+      "required":["virtualNode"],
+      "members":{
+        "virtualNode":{
+          "shape":"VirtualNodeData",
+          "documentation":"<p>The full description of your virtual node.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>",
+      "payload":"virtualNode"
+    },
+    "DescribeVirtualRouterInput":{
+      "type":"structure",
+      "required":[
+        "meshName",
+        "virtualRouterName"
+      ],
+      "members":{
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh that the virtual router resides in.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "virtualRouterName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the virtual router to describe.</p>",
+          "location":"uri",
+          "locationName":"virtualRouterName"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "DescribeVirtualRouterOutput":{
+      "type":"structure",
+      "required":["virtualRouter"],
+      "members":{
+        "virtualRouter":{
+          "shape":"VirtualRouterData",
+          "documentation":"<p>The full description of your virtual router.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>",
+      "payload":"virtualRouter"
+    },
+    "DescribeVirtualServiceInput":{
+      "type":"structure",
+      "required":[
+        "meshName",
+        "virtualServiceName"
+      ],
+      "members":{
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh that the virtual service resides in.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "virtualServiceName":{
+          "shape":"ServiceName",
+          "documentation":"<p>The name of the virtual service to describe.</p>",
+          "location":"uri",
+          "locationName":"virtualServiceName"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "DescribeVirtualServiceOutput":{
+      "type":"structure",
+      "required":["virtualService"],
+      "members":{
+        "virtualService":{
+          "shape":"VirtualServiceData",
+          "documentation":"<p>The full description of your virtual service.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>",
+      "payload":"virtualService"
+    },
+    "DnsResponseType":{
+      "type":"string",
+      "enum":[
+        "LOADBALANCER",
+        "ENDPOINTS"
+      ]
+    },
+    "DnsServiceDiscovery":{
+      "type":"structure",
+      "required":["hostname"],
+      "members":{
+        "hostname":{
+          "shape":"Hostname",
+          "documentation":"<p>Specifies the DNS service discovery hostname for the virtual node. </p>"
+        },
+        "responseType":{
+          "shape":"DnsResponseType",
+          "documentation":"<p>Specifies the DNS response type for the virtual node.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the DNS service discovery information for your virtual node.</p>"
+    },
+    "Duration":{
+      "type":"structure",
+      "members":{
+        "unit":{
+          "shape":"DurationUnit",
+          "documentation":"<p>A unit of time.</p>"
+        },
+        "value":{
+          "shape":"DurationValue",
+          "documentation":"<p>A number of time units.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a duration of time.</p>"
+    },
+    "DurationUnit":{
+      "type":"string",
+      "enum":[
+        "s",
+        "ms"
+      ]
+    },
+    "DurationValue":{
+      "type":"long",
+      "box":true,
+      "min":0
+    },
+    "EgressFilter":{
+      "type":"structure",
+      "required":["type"],
+      "members":{
+        "type":{
+          "shape":"EgressFilterType",
+          "documentation":"<p>The egress filter type. By default, the type is <code>DROP_ALL</code>, which allows egress only from virtual nodes to other defined resources in the service mesh (and any traffic to <code>*.amazonaws.com</code> for Amazon Web Services API calls). You can set the egress filter type to <code>ALLOW_ALL</code> to allow egress to any endpoint inside or outside of the service mesh.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the egress filter rules for a service mesh.</p>"
+    },
+    "EgressFilterType":{
+      "type":"string",
+      "enum":[
+        "ALLOW_ALL",
+        "DROP_ALL"
+      ]
+    },
+    "ExactHostName":{
+      "type":"string",
+      "max":253,
+      "min":1
+    },
+    "FileAccessLog":{
+      "type":"structure",
+      "required":["path"],
+      "members":{
+        "path":{
+          "shape":"FilePath",
+          "documentation":"<p>The file path to write access logs to. You can use <code>/dev/stdout</code> to send access logs to standard out and configure your Envoy container to use a log driver, such as <code>awslogs</code>, to export the access logs to a log storage service such as Amazon CloudWatch Logs. You can also specify a path in the Envoy container's file system to write the files to disk.</p> <note> <p>The Envoy process must have write permissions to the path that you specify here. Otherwise, Envoy fails to bootstrap properly.</p> </note>"
+        }
+      },
+      "documentation":"<p>An object that represents an access log file.</p>"
+    },
+    "FilePath":{
+      "type":"string",
+      "max":255,
+      "min":1
+    },
+    "ForbiddenException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"String"}
+      },
+      "documentation":"<p>You don't have permissions to perform this action.</p>",
+      "error":{
+        "httpStatusCode":403,
+        "senderFault":true
+      },
+      "exception":true
+    },
+    "GatewayRouteData":{
+      "type":"structure",
+      "required":[
+        "gatewayRouteName",
+        "meshName",
+        "metadata",
+        "spec",
+        "status",
+        "virtualGatewayName"
+      ],
+      "members":{
+        "gatewayRouteName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the gateway route.</p>"
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh that the resource resides in. </p>"
+        },
+        "metadata":{"shape":"ResourceMetadata"},
+        "spec":{
+          "shape":"GatewayRouteSpec",
+          "documentation":"<p>The specifications of the gateway route.</p>"
+        },
+        "status":{
+          "shape":"GatewayRouteStatus",
+          "documentation":"<p>The status of the gateway route.</p>"
+        },
+        "virtualGatewayName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The virtual gateway that the gateway route is associated with.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a gateway route returned by a describe operation.</p>"
+    },
+    "GatewayRouteHostnameMatch":{
+      "type":"structure",
+      "members":{
+        "exact":{
+          "shape":"ExactHostName",
+          "documentation":"<p>The exact host name to match on.</p>"
+        },
+        "suffix":{
+          "shape":"SuffixHostname",
+          "documentation":"<p>The specified ending characters of the host name to match on.</p>"
+        }
+      },
+      "documentation":"<p>An object representing the gateway route host name to match.</p>"
+    },
+    "GatewayRouteHostnameRewrite":{
+      "type":"structure",
+      "members":{
+        "defaultTargetHostname":{
+          "shape":"DefaultGatewayRouteRewrite",
+          "documentation":"<p>The default target host name to write to.</p>"
+        }
+      },
+      "documentation":"<p>An object representing the gateway route host name to rewrite.</p>"
+    },
+    "GatewayRouteList":{
+      "type":"list",
+      "member":{"shape":"GatewayRouteRef"}
+    },
+    "GatewayRoutePriority":{
+      "type":"integer",
+      "box":true,
+      "max":1000,
+      "min":0
+    },
+    "GatewayRouteRef":{
+      "type":"structure",
+      "required":[
+        "arn",
+        "createdAt",
+        "gatewayRouteName",
+        "lastUpdatedAt",
+        "meshName",
+        "meshOwner",
+        "resourceOwner",
+        "version",
+        "virtualGatewayName"
+      ],
+      "members":{
+        "arn":{
+          "shape":"Arn",
+          "documentation":"<p>The full Amazon Resource Name (ARN) for the gateway route.</p>"
+        },
+        "createdAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The Unix epoch timestamp in seconds for when the resource was created.</p>"
+        },
+        "gatewayRouteName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the gateway route.</p>"
+        },
+        "lastUpdatedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The Unix epoch timestamp in seconds for when the resource was last updated.</p>"
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh that the resource resides in. </p>"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>"
+        },
+        "resourceOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the resource owner. If the account ID is not your own, then it's the ID of the mesh owner or of another account that the mesh is shared with. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>"
+        },
+        "version":{
+          "shape":"Long",
+          "documentation":"<p>The version of the resource. Resources are created at version 1, and this version is incremented each time that they're updated.</p>"
+        },
+        "virtualGatewayName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The virtual gateway that the gateway route is associated with.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a gateway route returned by a list operation.</p>"
+    },
+    "GatewayRouteSpec":{
+      "type":"structure",
+      "members":{
+        "grpcRoute":{
+          "shape":"GrpcGatewayRoute",
+          "documentation":"<p>An object that represents the specification of a gRPC gateway route.</p>"
+        },
+        "http2Route":{
+          "shape":"HttpGatewayRoute",
+          "documentation":"<p>An object that represents the specification of an HTTP/2 gateway route.</p>"
+        },
+        "httpRoute":{
+          "shape":"HttpGatewayRoute",
+          "documentation":"<p>An object that represents the specification of an HTTP gateway route.</p>"
+        },
+        "priority":{
+          "shape":"GatewayRoutePriority",
+          "documentation":"<p>The ordering of the gateway routes spec.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a gateway route specification. Specify one gateway route type.</p>"
+    },
+    "GatewayRouteStatus":{
+      "type":"structure",
+      "required":["status"],
+      "members":{
+        "status":{
+          "shape":"GatewayRouteStatusCode",
+          "documentation":"<p>The current status for the gateway route.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the current status of a gateway route.</p>"
+    },
+    "GatewayRouteStatusCode":{
+      "type":"string",
+      "enum":[
+        "ACTIVE",
+        "INACTIVE",
+        "DELETED"
+      ]
+    },
+    "GatewayRouteTarget":{
+      "type":"structure",
+      "required":["virtualService"],
+      "members":{
+        "virtualService":{
+          "shape":"GatewayRouteVirtualService",
+          "documentation":"<p>An object that represents a virtual service gateway route target.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a gateway route target.</p>"
+    },
+    "GatewayRouteVirtualService":{
+      "type":"structure",
+      "required":["virtualServiceName"],
+      "members":{
+        "virtualServiceName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the virtual service that traffic is routed to.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the virtual service that traffic is routed to.</p>"
+    },
+    "GrpcGatewayRoute":{
+      "type":"structure",
+      "required":[
+        "action",
+        "match"
+      ],
+      "members":{
+        "action":{
+          "shape":"GrpcGatewayRouteAction",
+          "documentation":"<p>An object that represents the action to take if a match is determined.</p>"
+        },
+        "match":{
+          "shape":"GrpcGatewayRouteMatch",
+          "documentation":"<p>An object that represents the criteria for determining a request match.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a gRPC gateway route.</p>"
+    },
+    "GrpcGatewayRouteAction":{
+      "type":"structure",
+      "required":["target"],
+      "members":{
+        "rewrite":{
+          "shape":"GrpcGatewayRouteRewrite",
+          "documentation":"<p>The gateway route action to rewrite.</p>"
+        },
+        "target":{
+          "shape":"GatewayRouteTarget",
+          "documentation":"<p>An object that represents the target that traffic is routed to when a request matches the gateway route.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the action to take if a match is determined.</p>"
+    },
+    "GrpcGatewayRouteMatch":{
+      "type":"structure",
+      "members":{
+        "hostname":{
+          "shape":"GatewayRouteHostnameMatch",
+          "documentation":"<p>The gateway route host name to be matched on.</p>"
+        },
+        "metadata":{
+          "shape":"GrpcGatewayRouteMetadataList",
+          "documentation":"<p>The gateway route metadata to be matched on.</p>"
+        },
+        "serviceName":{
+          "shape":"ServiceName",
+          "documentation":"<p>The fully qualified domain name for the service to match from the request.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the criteria for determining a request match.</p>"
+    },
+    "GrpcGatewayRouteMetadata":{
+      "type":"structure",
+      "required":["name"],
+      "members":{
+        "invert":{
+          "shape":"Boolean",
+          "documentation":"<p>Specify <code>True</code> to match anything except the match criteria. The default value is <code>False</code>.</p>"
+        },
+        "match":{
+          "shape":"GrpcMetadataMatchMethod",
+          "documentation":"<p>The criteria for determining a metadata match.</p>"
+        },
+        "name":{
+          "shape":"HeaderName",
+          "documentation":"<p>A name for the gateway route metadata.</p>"
+        }
+      },
+      "documentation":"<p>An object representing the metadata of the gateway route.</p>"
+    },
+    "GrpcGatewayRouteMetadataList":{
+      "type":"list",
+      "member":{"shape":"GrpcGatewayRouteMetadata"},
+      "max":10,
+      "min":1
+    },
+    "GrpcGatewayRouteRewrite":{
+      "type":"structure",
+      "members":{
+        "hostname":{
+          "shape":"GatewayRouteHostnameRewrite",
+          "documentation":"<p>The host name of the gateway route to rewrite.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the gateway route to rewrite.</p>"
+    },
+    "GrpcMetadataMatchMethod":{
+      "type":"structure",
+      "members":{
+        "exact":{
+          "shape":"HeaderMatch",
+          "documentation":"<p>The exact method header to be matched on.</p>"
+        },
+        "prefix":{
+          "shape":"HeaderMatch",
+          "documentation":"<p>The specified beginning characters of the method header to be matched on.</p>"
+        },
+        "range":{"shape":"MatchRange"},
+        "regex":{
+          "shape":"HeaderMatch",
+          "documentation":"<p>The regex used to match the method header.</p>"
+        },
+        "suffix":{
+          "shape":"HeaderMatch",
+          "documentation":"<p>The specified ending characters of the method header to match on.</p>"
+        }
+      },
+      "documentation":"<p>An object representing the method header to be matched.</p>",
+      "union":true
+    },
+    "GrpcRetryPolicy":{
+      "type":"structure",
+      "required":[
+        "maxRetries",
+        "perRetryTimeout"
+      ],
+      "members":{
+        "grpcRetryEvents":{
+          "shape":"GrpcRetryPolicyEvents",
+          "documentation":"<p>Specify at least one of the valid values.</p>"
+        },
+        "httpRetryEvents":{
+          "shape":"HttpRetryPolicyEvents",
+          "documentation":"<p>Specify at least one of the following values.</p> <ul> <li> <p> <b>server-error</b> – HTTP status codes 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, and 511</p> </li> <li> <p> <b>gateway-error</b> – HTTP status codes 502, 503, and 504</p> </li> <li> <p> <b>client-error</b> – HTTP status code 409</p> </li> <li> <p> <b>stream-error</b> – Retry on refused stream</p> </li> </ul>"
+        },
+        "maxRetries":{
+          "shape":"MaxRetries",
+          "documentation":"<p>The maximum number of retry attempts.</p>"
+        },
+        "perRetryTimeout":{
+          "shape":"Duration",
+          "documentation":"<p>The timeout for each retry attempt.</p>"
+        },
+        "tcpRetryEvents":{
+          "shape":"TcpRetryPolicyEvents",
+          "documentation":"<p>Specify a valid value. The event occurs before any processing of a request has started and is encountered when the upstream is temporarily or permanently unavailable.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a retry policy. Specify at least one value for at least one of the types of <code>RetryEvents</code>, a value for <code>maxRetries</code>, and a value for <code>perRetryTimeout</code>. Both <code>server-error</code> and <code>gateway-error</code> under <code>httpRetryEvents</code> include the Envoy <code>reset</code> policy. For more information on the <code>reset</code> policy, see the <a href=\"https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/router_filter#x-envoy-retry-on\">Envoy documentation</a>.</p>"
+    },
+    "GrpcRetryPolicyEvent":{
+      "type":"string",
+      "enum":[
+        "cancelled",
+        "deadline-exceeded",
+        "internal",
+        "resource-exhausted",
+        "unavailable"
+      ]
+    },
+    "GrpcRetryPolicyEvents":{
+      "type":"list",
+      "member":{"shape":"GrpcRetryPolicyEvent"},
+      "max":5,
+      "min":1
+    },
+    "GrpcRoute":{
+      "type":"structure",
+      "required":[
+        "action",
+        "match"
+      ],
+      "members":{
+        "action":{
+          "shape":"GrpcRouteAction",
+          "documentation":"<p>An object that represents the action to take if a match is determined.</p>"
+        },
+        "match":{
+          "shape":"GrpcRouteMatch",
+          "documentation":"<p>An object that represents the criteria for determining a request match.</p>"
+        },
+        "retryPolicy":{
+          "shape":"GrpcRetryPolicy",
+          "documentation":"<p>An object that represents a retry policy.</p>"
+        },
+        "timeout":{
+          "shape":"GrpcTimeout",
+          "documentation":"<p>An object that represents types of timeouts. </p>"
+        }
+      },
+      "documentation":"<p>An object that represents a gRPC route type.</p>"
+    },
+    "GrpcRouteAction":{
+      "type":"structure",
+      "required":["weightedTargets"],
+      "members":{
+        "weightedTargets":{
+          "shape":"WeightedTargets",
+          "documentation":"<p>An object that represents the targets that traffic is routed to when a request matches the route.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the action to take if a match is determined.</p>"
+    },
+    "GrpcRouteMatch":{
+      "type":"structure",
+      "members":{
+        "metadata":{
+          "shape":"GrpcRouteMetadataList",
+          "documentation":"<p>An object that represents the data to match from the request.</p>"
+        },
+        "methodName":{
+          "shape":"MethodName",
+          "documentation":"<p>The method name to match from the request. If you specify a name, you must also specify a <code>serviceName</code>.</p>"
+        },
+        "serviceName":{
+          "shape":"ServiceName",
+          "documentation":"<p>The fully qualified domain name for the service to match from the request.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the criteria for determining a request match.</p>"
+    },
+    "GrpcRouteMetadata":{
+      "type":"structure",
+      "required":["name"],
+      "members":{
+        "invert":{
+          "shape":"Boolean",
+          "documentation":"<p>Specify <code>True</code> to match anything except the match criteria. The default value is <code>False</code>.</p>"
+        },
+        "match":{
+          "shape":"GrpcRouteMetadataMatchMethod",
+          "documentation":"<p>An object that represents the data to match from the request.</p>"
+        },
+        "name":{
+          "shape":"HeaderName",
+          "documentation":"<p>The name of the route.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the match metadata for the route.</p>"
+    },
+    "GrpcRouteMetadataList":{
+      "type":"list",
+      "member":{"shape":"GrpcRouteMetadata"},
+      "max":10,
+      "min":1
+    },
+    "GrpcRouteMetadataMatchMethod":{
+      "type":"structure",
+      "members":{
+        "exact":{
+          "shape":"HeaderMatch",
+          "documentation":"<p>The value sent by the client must match the specified value exactly.</p>"
+        },
+        "prefix":{
+          "shape":"HeaderMatch",
+          "documentation":"<p>The value sent by the client must begin with the specified characters.</p>"
+        },
+        "range":{
+          "shape":"MatchRange",
+          "documentation":"<p>An object that represents the range of values to match on.</p>"
+        },
+        "regex":{
+          "shape":"HeaderMatch",
+          "documentation":"<p>The value sent by the client must include the specified characters.</p>"
+        },
+        "suffix":{
+          "shape":"HeaderMatch",
+          "documentation":"<p>The value sent by the client must end with the specified characters.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the match method. Specify one of the match values.</p>",
+      "union":true
+    },
+    "GrpcTimeout":{
+      "type":"structure",
+      "members":{
+        "idle":{
+          "shape":"Duration",
+          "documentation":"<p>An object that represents an idle timeout. An idle timeout bounds the amount of time that a connection may be idle. The default value is none.</p>"
+        },
+        "perRequest":{
+          "shape":"Duration",
+          "documentation":"<p>An object that represents a per request timeout. The default value is 15 seconds. If you set a higher timeout, then make sure that the higher value is set for each App Mesh resource in a conversation. For example, if a virtual node backend uses a virtual router provider to route to another virtual node, then the timeout should be greater than 15 seconds for the source and destination virtual node and the route.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents types of timeouts. </p>"
+    },
+    "HeaderMatch":{
+      "type":"string",
+      "max":255,
+      "min":1
+    },
+    "HeaderMatchMethod":{
+      "type":"structure",
+      "members":{
+        "exact":{
+          "shape":"HeaderMatch",
+          "documentation":"<p>The value sent by the client must match the specified value exactly.</p>"
+        },
+        "prefix":{
+          "shape":"HeaderMatch",
+          "documentation":"<p>The value sent by the client must begin with the specified characters.</p>"
+        },
+        "range":{
+          "shape":"MatchRange",
+          "documentation":"<p>An object that represents the range of values to match on.</p>"
+        },
+        "regex":{
+          "shape":"HeaderMatch",
+          "documentation":"<p>The value sent by the client must include the specified characters.</p>"
+        },
+        "suffix":{
+          "shape":"HeaderMatch",
+          "documentation":"<p>The value sent by the client must end with the specified characters.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the method and value to match with the header value sent in a request. Specify one match method.</p>",
+      "union":true
+    },
+    "HeaderName":{
+      "type":"string",
+      "max":50,
+      "min":1
+    },
+    "HealthCheckIntervalMillis":{
+      "type":"long",
+      "box":true,
+      "max":300000,
+      "min":5000
+    },
+    "HealthCheckPolicy":{
+      "type":"structure",
+      "required":[
+        "healthyThreshold",
+        "intervalMillis",
+        "protocol",
+        "timeoutMillis",
+        "unhealthyThreshold"
+      ],
+      "members":{
+        "healthyThreshold":{
+          "shape":"HealthCheckThreshold",
+          "documentation":"<p>The number of consecutive successful health checks that must occur before declaring listener healthy.</p>"
+        },
+        "intervalMillis":{
+          "shape":"HealthCheckIntervalMillis",
+          "documentation":"<p>The time period in milliseconds between each health check execution.</p>"
+        },
+        "path":{
+          "shape":"String",
+          "documentation":"<p>The destination path for the health check request. This value is only used if the specified protocol is HTTP or HTTP/2. For any other protocol, this value is ignored.</p>"
+        },
+        "port":{
+          "shape":"PortNumber",
+          "documentation":"<p>The destination port for the health check request. This port must match the port defined in the <a>PortMapping</a> for the listener.</p>"
+        },
+        "protocol":{
+          "shape":"PortProtocol",
+          "documentation":"<p>The protocol for the health check request. If you specify <code>grpc</code>, then your service must conform to the <a href=\"https://github.com/grpc/grpc/blob/master/doc/health-checking.md\">GRPC Health Checking Protocol</a>.</p>"
+        },
+        "timeoutMillis":{
+          "shape":"HealthCheckTimeoutMillis",
+          "documentation":"<p>The amount of time to wait when receiving a response from the health check, in milliseconds.</p>"
+        },
+        "unhealthyThreshold":{
+          "shape":"HealthCheckThreshold",
+          "documentation":"<p>The number of consecutive failed health checks that must occur before declaring a virtual node unhealthy. </p>"
+        }
+      },
+      "documentation":"<p>An object that represents the health check policy for a virtual node's listener.</p>"
+    },
+    "HealthCheckThreshold":{
+      "type":"integer",
+      "max":10,
+      "min":2
+    },
+    "HealthCheckTimeoutMillis":{
+      "type":"long",
+      "box":true,
+      "max":60000,
+      "min":2000
+    },
+    "Hostname":{"type":"string"},
+    "HttpGatewayRoute":{
+      "type":"structure",
+      "required":[
+        "action",
+        "match"
+      ],
+      "members":{
+        "action":{
+          "shape":"HttpGatewayRouteAction",
+          "documentation":"<p>An object that represents the action to take if a match is determined.</p>"
+        },
+        "match":{
+          "shape":"HttpGatewayRouteMatch",
+          "documentation":"<p>An object that represents the criteria for determining a request match.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents an HTTP gateway route.</p>"
+    },
+    "HttpGatewayRouteAction":{
+      "type":"structure",
+      "required":["target"],
+      "members":{
+        "rewrite":{
+          "shape":"HttpGatewayRouteRewrite",
+          "documentation":"<p>The gateway route action to rewrite.</p>"
+        },
+        "target":{
+          "shape":"GatewayRouteTarget",
+          "documentation":"<p>An object that represents the target that traffic is routed to when a request matches the gateway route.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the action to take if a match is determined.</p>"
+    },
+    "HttpGatewayRouteHeader":{
+      "type":"structure",
+      "required":["name"],
+      "members":{
+        "invert":{
+          "shape":"Boolean",
+          "documentation":"<p>Specify <code>True</code> to match anything except the match criteria. The default value is <code>False</code>.</p>"
+        },
+        "match":{"shape":"HeaderMatchMethod"},
+        "name":{
+          "shape":"HeaderName",
+          "documentation":"<p>A name for the HTTP header in the gateway route that will be matched on.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the HTTP header in the gateway route.</p>"
+    },
+    "HttpGatewayRouteHeaders":{
+      "type":"list",
+      "member":{"shape":"HttpGatewayRouteHeader"},
+      "max":10,
+      "min":1
+    },
+    "HttpGatewayRouteMatch":{
+      "type":"structure",
+      "members":{
+        "headers":{
+          "shape":"HttpGatewayRouteHeaders",
+          "documentation":"<p>The client request headers to match on.</p>"
+        },
+        "hostname":{
+          "shape":"GatewayRouteHostnameMatch",
+          "documentation":"<p>The host name to match on.</p>"
+        },
+        "method":{
+          "shape":"HttpMethod",
+          "documentation":"<p>The method to match on.</p>"
+        },
+        "path":{
+          "shape":"HttpPathMatch",
+          "documentation":"<p>The path to match on.</p>"
+        },
+        "prefix":{
+          "shape":"String",
+          "documentation":"<p>Specifies the path to match requests with. This parameter must always start with <code>/</code>, which by itself matches all requests to the virtual service name. You can also match for path-based routing of requests. For example, if your virtual service name is <code>my-service.local</code> and you want the route to match requests to <code>my-service.local/metrics</code>, your prefix should be <code>/metrics</code>.</p>"
+        },
+        "queryParameters":{
+          "shape":"HttpQueryParameters",
+          "documentation":"<p>The query parameter to match on.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the criteria for determining a request match.</p>"
+    },
+    "HttpGatewayRoutePathRewrite":{
+      "type":"structure",
+      "members":{
+        "exact":{
+          "shape":"HttpPathExact",
+          "documentation":"<p>The exact path to rewrite.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the path to rewrite.</p>"
+    },
+    "HttpGatewayRoutePrefix":{
+      "type":"string",
+      "max":255,
+      "min":1
+    },
+    "HttpGatewayRoutePrefixRewrite":{
+      "type":"structure",
+      "members":{
+        "defaultPrefix":{
+          "shape":"DefaultGatewayRouteRewrite",
+          "documentation":"<p>The default prefix used to replace the incoming route prefix when rewritten.</p>"
+        },
+        "value":{
+          "shape":"HttpGatewayRoutePrefix",
+          "documentation":"<p>The value used to replace the incoming route prefix when rewritten.</p>"
+        }
+      },
+      "documentation":"<p>An object representing the beginning characters of the route to rewrite.</p>"
+    },
+    "HttpGatewayRouteRewrite":{
+      "type":"structure",
+      "members":{
+        "hostname":{
+          "shape":"GatewayRouteHostnameRewrite",
+          "documentation":"<p>The host name to rewrite.</p>"
+        },
+        "path":{
+          "shape":"HttpGatewayRoutePathRewrite",
+          "documentation":"<p>The path to rewrite.</p>"
+        },
+        "prefix":{
+          "shape":"HttpGatewayRoutePrefixRewrite",
+          "documentation":"<p>The specified beginning characters to rewrite.</p>"
+        }
+      },
+      "documentation":"<p>An object representing the gateway route to rewrite.</p>"
+    },
+    "HttpMethod":{
+      "type":"string",
+      "enum":[
+        "GET",
+        "HEAD",
+        "POST",
+        "PUT",
+        "DELETE",
+        "CONNECT",
+        "OPTIONS",
+        "TRACE",
+        "PATCH"
+      ]
+    },
+    "HttpPathExact":{
+      "type":"string",
+      "max":255,
+      "min":1
+    },
+    "HttpPathMatch":{
+      "type":"structure",
+      "members":{
+        "exact":{
+          "shape":"HttpPathExact",
+          "documentation":"<p>The exact path to match on.</p>"
+        },
+        "regex":{
+          "shape":"HttpPathRegex",
+          "documentation":"<p>The regex used to match the path.</p>"
+        }
+      },
+      "documentation":"<p>An object representing the path to match in the request.</p>"
+    },
+    "HttpPathRegex":{
+      "type":"string",
+      "max":255,
+      "min":1
+    },
+    "HttpQueryParameter":{
+      "type":"structure",
+      "required":["name"],
+      "members":{
+        "match":{
+          "shape":"QueryParameterMatch",
+          "documentation":"<p>The query parameter to match on.</p>"
+        },
+        "name":{
+          "shape":"QueryParameterName",
+          "documentation":"<p>A name for the query parameter that will be matched on.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the query parameter in the request.</p>"
+    },
+    "HttpQueryParameters":{
+      "type":"list",
+      "member":{"shape":"HttpQueryParameter"},
+      "max":10,
+      "min":1
+    },
+    "HttpRetryPolicy":{
+      "type":"structure",
+      "required":[
+        "maxRetries",
+        "perRetryTimeout"
+      ],
+      "members":{
+        "httpRetryEvents":{
+          "shape":"HttpRetryPolicyEvents",
+          "documentation":"<p>Specify at least one of the following values.</p> <ul> <li> <p> <b>server-error</b> – HTTP status codes 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, and 511</p> </li> <li> <p> <b>gateway-error</b> – HTTP status codes 502, 503, and 504</p> </li> <li> <p> <b>client-error</b> – HTTP status code 409</p> </li> <li> <p> <b>stream-error</b> – Retry on refused stream</p> </li> </ul>"
+        },
+        "maxRetries":{
+          "shape":"MaxRetries",
+          "documentation":"<p>The maximum number of retry attempts.</p>"
+        },
+        "perRetryTimeout":{
+          "shape":"Duration",
+          "documentation":"<p>The timeout for each retry attempt.</p>"
+        },
+        "tcpRetryEvents":{
+          "shape":"TcpRetryPolicyEvents",
+          "documentation":"<p>Specify a valid value. The event occurs before any processing of a request has started and is encountered when the upstream is temporarily or permanently unavailable.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a retry policy. Specify at least one value for at least one of the types of <code>RetryEvents</code>, a value for <code>maxRetries</code>, and a value for <code>perRetryTimeout</code>. Both <code>server-error</code> and <code>gateway-error</code> under <code>httpRetryEvents</code> include the Envoy <code>reset</code> policy. For more information on the <code>reset</code> policy, see the <a href=\"https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/router_filter#x-envoy-retry-on\">Envoy documentation</a>.</p>"
+    },
+    "HttpRetryPolicyEvent":{
+      "type":"string",
+      "max":25,
+      "min":1
+    },
+    "HttpRetryPolicyEvents":{
+      "type":"list",
+      "member":{"shape":"HttpRetryPolicyEvent"},
+      "max":25,
+      "min":1
+    },
+    "HttpRoute":{
+      "type":"structure",
+      "required":[
+        "action",
+        "match"
+      ],
+      "members":{
+        "action":{
+          "shape":"HttpRouteAction",
+          "documentation":"<p>An object that represents the action to take if a match is determined.</p>"
+        },
+        "match":{
+          "shape":"HttpRouteMatch",
+          "documentation":"<p>An object that represents the criteria for determining a request match.</p>"
+        },
+        "retryPolicy":{
+          "shape":"HttpRetryPolicy",
+          "documentation":"<p>An object that represents a retry policy.</p>"
+        },
+        "timeout":{
+          "shape":"HttpTimeout",
+          "documentation":"<p>An object that represents types of timeouts. </p>"
+        }
+      },
+      "documentation":"<p>An object that represents an HTTP or HTTP/2 route type.</p>"
+    },
+    "HttpRouteAction":{
+      "type":"structure",
+      "required":["weightedTargets"],
+      "members":{
+        "weightedTargets":{
+          "shape":"WeightedTargets",
+          "documentation":"<p>An object that represents the targets that traffic is routed to when a request matches the route.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the action to take if a match is determined.</p>"
+    },
+    "HttpRouteHeader":{
+      "type":"structure",
+      "required":["name"],
+      "members":{
+        "invert":{
+          "shape":"Boolean",
+          "documentation":"<p>Specify <code>True</code> to match anything except the match criteria. The default value is <code>False</code>.</p>"
+        },
+        "match":{
+          "shape":"HeaderMatchMethod",
+          "documentation":"<p>The <code>HeaderMatchMethod</code> object.</p>"
+        },
+        "name":{
+          "shape":"HeaderName",
+          "documentation":"<p>A name for the HTTP header in the client request that will be matched on.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the HTTP header in the request.</p>"
+    },
+    "HttpRouteHeaders":{
+      "type":"list",
+      "member":{"shape":"HttpRouteHeader"},
+      "max":10,
+      "min":1
+    },
+    "HttpRouteMatch":{
+      "type":"structure",
+      "members":{
+        "headers":{
+          "shape":"HttpRouteHeaders",
+          "documentation":"<p>The client request headers to match on.</p>"
+        },
+        "method":{
+          "shape":"HttpMethod",
+          "documentation":"<p>The client request method to match on. Specify only one.</p>"
+        },
+        "path":{
+          "shape":"HttpPathMatch",
+          "documentation":"<p>The client request path to match on.</p>"
+        },
+        "prefix":{
+          "shape":"String",
+          "documentation":"<p>Specifies the path to match requests with. This parameter must always start with <code>/</code>, which by itself matches all requests to the virtual service name. You can also match for path-based routing of requests. For example, if your virtual service name is <code>my-service.local</code> and you want the route to match requests to <code>my-service.local/metrics</code>, your prefix should be <code>/metrics</code>.</p>"
+        },
+        "queryParameters":{
+          "shape":"HttpQueryParameters",
+          "documentation":"<p>The client request query parameters to match on.</p>"
+        },
+        "scheme":{
+          "shape":"HttpScheme",
+          "documentation":"<p>The client request scheme to match on. Specify only one. Applicable only for HTTP2 routes.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the requirements for a route to match HTTP requests for a virtual router.</p>"
+    },
+    "HttpScheme":{
+      "type":"string",
+      "enum":[
+        "http",
+        "https"
+      ]
+    },
+    "HttpTimeout":{
+      "type":"structure",
+      "members":{
+        "idle":{
+          "shape":"Duration",
+          "documentation":"<p>An object that represents an idle timeout. An idle timeout bounds the amount of time that a connection may be idle. The default value is none.</p>"
+        },
+        "perRequest":{
+          "shape":"Duration",
+          "documentation":"<p>An object that represents a per request timeout. The default value is 15 seconds. If you set a higher timeout, then make sure that the higher value is set for each App Mesh resource in a conversation. For example, if a virtual node backend uses a virtual router provider to route to another virtual node, then the timeout should be greater than 15 seconds for the source and destination virtual node and the route.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents types of timeouts. </p>"
+    },
+    "InternalServerErrorException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"String"}
+      },
+      "documentation":"<p>The request processing has failed because of an unknown error, exception, or failure.</p>",
+      "error":{"httpStatusCode":500},
+      "exception":true,
+      "fault":true,
+      "retryable":{"throttling":false}
+    },
+    "LimitExceededException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"String"}
+      },
+      "documentation":"<p>You have exceeded a service limit for your account. For more information, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/service-quotas.html\">Service Limits</a> in the <i>AWS App Mesh User Guide</i>.</p>",
+      "error":{
+        "httpStatusCode":400,
+        "senderFault":true
+      },
+      "exception":true
+    },
+    "ListGatewayRoutesInput":{
+      "type":"structure",
+      "required":[
+        "meshName",
+        "virtualGatewayName"
+      ],
+      "members":{
+        "limit":{
+          "shape":"ListGatewayRoutesLimit",
+          "documentation":"<p>The maximum number of results returned by <code>ListGatewayRoutes</code> in paginated output. When you use this parameter, <code>ListGatewayRoutes</code> returns only <code>limit</code> results in a single page along with a <code>nextToken</code> response element. You can see the remaining results of the initial request by sending another <code>ListGatewayRoutes</code> request with the returned <code>nextToken</code> value. This value can be between 1 and 100. If you don't use this parameter, <code>ListGatewayRoutes</code> returns up to 100 results and a <code>nextToken</code> value if applicable.</p>",
+          "location":"querystring",
+          "locationName":"limit"
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh to list gateway routes in.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "nextToken":{
+          "shape":"String",
+          "documentation":"<p>The <code>nextToken</code> value returned from a previous paginated <code>ListGatewayRoutes</code> request where <code>limit</code> was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the <code>nextToken</code> value.</p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "virtualGatewayName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the virtual gateway to list gateway routes in.</p>",
+          "location":"uri",
+          "locationName":"virtualGatewayName"
+        }
+      }
+    },
+    "ListGatewayRoutesLimit":{
+      "type":"integer",
+      "box":true,
+      "max":100,
+      "min":1
+    },
+    "ListGatewayRoutesOutput":{
+      "type":"structure",
+      "required":["gatewayRoutes"],
+      "members":{
+        "gatewayRoutes":{
+          "shape":"GatewayRouteList",
+          "documentation":"<p>The list of existing gateway routes for the specified service mesh and virtual gateway.</p>"
+        },
+        "nextToken":{
+          "shape":"String",
+          "documentation":"<p>The <code>nextToken</code> value to include in a future <code>ListGatewayRoutes</code> request. When the results of a <code>ListGatewayRoutes</code> request exceed <code>limit</code>, you can use this value to retrieve the next page of results. This value is <code>null</code> when there are no more results to return.</p>"
+        }
+      }
+    },
+    "ListMeshesInput":{
+      "type":"structure",
+      "members":{
+        "limit":{
+          "shape":"ListMeshesLimit",
+          "documentation":"<p>The maximum number of results returned by <code>ListMeshes</code> in paginated output. When you use this parameter, <code>ListMeshes</code> returns only <code>limit</code> results in a single page along with a <code>nextToken</code> response element. You can see the remaining results of the initial request by sending another <code>ListMeshes</code> request with the returned <code>nextToken</code> value. This value can be between 1 and 100. If you don't use this parameter, <code>ListMeshes</code> returns up to 100 results and a <code>nextToken</code> value if applicable.</p>",
+          "location":"querystring",
+          "locationName":"limit"
+        },
+        "nextToken":{
+          "shape":"String",
+          "documentation":"<p>The <code>nextToken</code> value returned from a previous paginated <code>ListMeshes</code> request where <code>limit</code> was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the <code>nextToken</code> value.</p> <note> <p>This token should be treated as an opaque identifier that is used only to retrieve the next items in a list and not for other programmatic purposes.</p> </note>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "ListMeshesLimit":{
+      "type":"integer",
+      "box":true,
+      "max":100,
+      "min":1
+    },
+    "ListMeshesOutput":{
+      "type":"structure",
+      "required":["meshes"],
+      "members":{
+        "meshes":{
+          "shape":"MeshList",
+          "documentation":"<p>The list of existing service meshes.</p>"
+        },
+        "nextToken":{
+          "shape":"String",
+          "documentation":"<p>The <code>nextToken</code> value to include in a future <code>ListMeshes</code> request. When the results of a <code>ListMeshes</code> request exceed <code>limit</code>, you can use this value to retrieve the next page of results. This value is <code>null</code> when there are no more results to return.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "ListRoutesInput":{
+      "type":"structure",
+      "required":[
+        "meshName",
+        "virtualRouterName"
+      ],
+      "members":{
+        "limit":{
+          "shape":"ListRoutesLimit",
+          "documentation":"<p>The maximum number of results returned by <code>ListRoutes</code> in paginated output. When you use this parameter, <code>ListRoutes</code> returns only <code>limit</code> results in a single page along with a <code>nextToken</code> response element. You can see the remaining results of the initial request by sending another <code>ListRoutes</code> request with the returned <code>nextToken</code> value. This value can be between 1 and 100. If you don't use this parameter, <code>ListRoutes</code> returns up to 100 results and a <code>nextToken</code> value if applicable.</p>",
+          "location":"querystring",
+          "locationName":"limit"
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh to list routes in.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "nextToken":{
+          "shape":"String",
+          "documentation":"<p>The <code>nextToken</code> value returned from a previous paginated <code>ListRoutes</code> request where <code>limit</code> was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the <code>nextToken</code> value.</p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "virtualRouterName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the virtual router to list routes in.</p>",
+          "location":"uri",
+          "locationName":"virtualRouterName"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "ListRoutesLimit":{
+      "type":"integer",
+      "box":true,
+      "max":100,
+      "min":1
+    },
+    "ListRoutesOutput":{
+      "type":"structure",
+      "required":["routes"],
+      "members":{
+        "nextToken":{
+          "shape":"String",
+          "documentation":"<p>The <code>nextToken</code> value to include in a future <code>ListRoutes</code> request. When the results of a <code>ListRoutes</code> request exceed <code>limit</code>, you can use this value to retrieve the next page of results. This value is <code>null</code> when there are no more results to return.</p>"
+        },
+        "routes":{
+          "shape":"RouteList",
+          "documentation":"<p>The list of existing routes for the specified service mesh and virtual router.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "ListTagsForResourceInput":{
+      "type":"structure",
+      "required":["resourceArn"],
+      "members":{
+        "limit":{
+          "shape":"TagsLimit",
+          "documentation":"<p>The maximum number of tag results returned by <code>ListTagsForResource</code> in paginated output. When this parameter is used, <code>ListTagsForResource</code> returns only <code>limit</code> results in a single page along with a <code>nextToken</code> response element. You can see the remaining results of the initial request by sending another <code>ListTagsForResource</code> request with the returned <code>nextToken</code> value. This value can be between 1 and 100. If you don't use this parameter, <code>ListTagsForResource</code> returns up to 100 results and a <code>nextToken</code> value if applicable.</p>",
+          "location":"querystring",
+          "locationName":"limit"
+        },
+        "nextToken":{
+          "shape":"String",
+          "documentation":"<p>The <code>nextToken</code> value returned from a previous paginated <code>ListTagsForResource</code> request where <code>limit</code> was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the <code>nextToken</code> value.</p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "resourceArn":{
+          "shape":"Arn",
+          "documentation":"<p>The Amazon Resource Name (ARN) that identifies the resource to list the tags for.</p>",
+          "location":"querystring",
+          "locationName":"resourceArn"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "ListTagsForResourceOutput":{
+      "type":"structure",
+      "required":["tags"],
+      "members":{
+        "nextToken":{
+          "shape":"String",
+          "documentation":"<p>The <code>nextToken</code> value to include in a future <code>ListTagsForResource</code> request. When the results of a <code>ListTagsForResource</code> request exceed <code>limit</code>, you can use this value to retrieve the next page of results. This value is <code>null</code> when there are no more results to return.</p>"
+        },
+        "tags":{
+          "shape":"TagList",
+          "documentation":"<p>The tags for the resource.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "ListVirtualGatewaysInput":{
+      "type":"structure",
+      "required":["meshName"],
+      "members":{
+        "limit":{
+          "shape":"ListVirtualGatewaysLimit",
+          "documentation":"<p>The maximum number of results returned by <code>ListVirtualGateways</code> in paginated output. When you use this parameter, <code>ListVirtualGateways</code> returns only <code>limit</code> results in a single page along with a <code>nextToken</code> response element. You can see the remaining results of the initial request by sending another <code>ListVirtualGateways</code> request with the returned <code>nextToken</code> value. This value can be between 1 and 100. If you don't use this parameter, <code>ListVirtualGateways</code> returns up to 100 results and a <code>nextToken</code> value if applicable.</p>",
+          "location":"querystring",
+          "locationName":"limit"
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh to list virtual gateways in.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "nextToken":{
+          "shape":"String",
+          "documentation":"<p>The <code>nextToken</code> value returned from a previous paginated <code>ListVirtualGateways</code> request where <code>limit</code> was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the <code>nextToken</code> value.</p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        }
+      }
+    },
+    "ListVirtualGatewaysLimit":{
+      "type":"integer",
+      "box":true,
+      "max":100,
+      "min":1
+    },
+    "ListVirtualGatewaysOutput":{
+      "type":"structure",
+      "required":["virtualGateways"],
+      "members":{
+        "nextToken":{
+          "shape":"String",
+          "documentation":"<p>The <code>nextToken</code> value to include in a future <code>ListVirtualGateways</code> request. When the results of a <code>ListVirtualGateways</code> request exceed <code>limit</code>, you can use this value to retrieve the next page of results. This value is <code>null</code> when there are no more results to return.</p>"
+        },
+        "virtualGateways":{
+          "shape":"VirtualGatewayList",
+          "documentation":"<p>The list of existing virtual gateways for the specified service mesh.</p>"
+        }
+      }
+    },
+    "ListVirtualNodesInput":{
+      "type":"structure",
+      "required":["meshName"],
+      "members":{
+        "limit":{
+          "shape":"ListVirtualNodesLimit",
+          "documentation":"<p>The maximum number of results returned by <code>ListVirtualNodes</code> in paginated output. When you use this parameter, <code>ListVirtualNodes</code> returns only <code>limit</code> results in a single page along with a <code>nextToken</code> response element. You can see the remaining results of the initial request by sending another <code>ListVirtualNodes</code> request with the returned <code>nextToken</code> value. This value can be between 1 and 100. If you don't use this parameter, <code>ListVirtualNodes</code> returns up to 100 results and a <code>nextToken</code> value if applicable.</p>",
+          "location":"querystring",
+          "locationName":"limit"
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh to list virtual nodes in.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "nextToken":{
+          "shape":"String",
+          "documentation":"<p>The <code>nextToken</code> value returned from a previous paginated <code>ListVirtualNodes</code> request where <code>limit</code> was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the <code>nextToken</code> value.</p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "ListVirtualNodesLimit":{
+      "type":"integer",
+      "box":true,
+      "max":100,
+      "min":1
+    },
+    "ListVirtualNodesOutput":{
+      "type":"structure",
+      "required":["virtualNodes"],
+      "members":{
+        "nextToken":{
+          "shape":"String",
+          "documentation":"<p>The <code>nextToken</code> value to include in a future <code>ListVirtualNodes</code> request. When the results of a <code>ListVirtualNodes</code> request exceed <code>limit</code>, you can use this value to retrieve the next page of results. This value is <code>null</code> when there are no more results to return.</p>"
+        },
+        "virtualNodes":{
+          "shape":"VirtualNodeList",
+          "documentation":"<p>The list of existing virtual nodes for the specified service mesh.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "ListVirtualRoutersInput":{
+      "type":"structure",
+      "required":["meshName"],
+      "members":{
+        "limit":{
+          "shape":"ListVirtualRoutersLimit",
+          "documentation":"<p>The maximum number of results returned by <code>ListVirtualRouters</code> in paginated output. When you use this parameter, <code>ListVirtualRouters</code> returns only <code>limit</code> results in a single page along with a <code>nextToken</code> response element. You can see the remaining results of the initial request by sending another <code>ListVirtualRouters</code> request with the returned <code>nextToken</code> value. This value can be between 1 and 100. If you don't use this parameter, <code>ListVirtualRouters</code> returns up to 100 results and a <code>nextToken</code> value if applicable.</p>",
+          "location":"querystring",
+          "locationName":"limit"
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh to list virtual routers in.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "nextToken":{
+          "shape":"String",
+          "documentation":"<p>The <code>nextToken</code> value returned from a previous paginated <code>ListVirtualRouters</code> request where <code>limit</code> was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the <code>nextToken</code> value.</p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "ListVirtualRoutersLimit":{
+      "type":"integer",
+      "box":true,
+      "max":100,
+      "min":1
+    },
+    "ListVirtualRoutersOutput":{
+      "type":"structure",
+      "required":["virtualRouters"],
+      "members":{
+        "nextToken":{
+          "shape":"String",
+          "documentation":"<p>The <code>nextToken</code> value to include in a future <code>ListVirtualRouters</code> request. When the results of a <code>ListVirtualRouters</code> request exceed <code>limit</code>, you can use this value to retrieve the next page of results. This value is <code>null</code> when there are no more results to return.</p>"
+        },
+        "virtualRouters":{
+          "shape":"VirtualRouterList",
+          "documentation":"<p>The list of existing virtual routers for the specified service mesh.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "ListVirtualServicesInput":{
+      "type":"structure",
+      "required":["meshName"],
+      "members":{
+        "limit":{
+          "shape":"ListVirtualServicesLimit",
+          "documentation":"<p>The maximum number of results returned by <code>ListVirtualServices</code> in paginated output. When you use this parameter, <code>ListVirtualServices</code> returns only <code>limit</code> results in a single page along with a <code>nextToken</code> response element. You can see the remaining results of the initial request by sending another <code>ListVirtualServices</code> request with the returned <code>nextToken</code> value. This value can be between 1 and 100. If you don't use this parameter, <code>ListVirtualServices</code> returns up to 100 results and a <code>nextToken</code> value if applicable.</p>",
+          "location":"querystring",
+          "locationName":"limit"
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh to list virtual services in.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "nextToken":{
+          "shape":"String",
+          "documentation":"<p>The <code>nextToken</code> value returned from a previous paginated <code>ListVirtualServices</code> request where <code>limit</code> was used and the results exceeded the value of that parameter. Pagination continues from the end of the previous results that returned the <code>nextToken</code> value.</p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "ListVirtualServicesLimit":{
+      "type":"integer",
+      "box":true,
+      "max":100,
+      "min":1
+    },
+    "ListVirtualServicesOutput":{
+      "type":"structure",
+      "required":["virtualServices"],
+      "members":{
+        "nextToken":{
+          "shape":"String",
+          "documentation":"<p>The <code>nextToken</code> value to include in a future <code>ListVirtualServices</code> request. When the results of a <code>ListVirtualServices</code> request exceed <code>limit</code>, you can use this value to retrieve the next page of results. This value is <code>null</code> when there are no more results to return.</p>"
+        },
+        "virtualServices":{
+          "shape":"VirtualServiceList",
+          "documentation":"<p>The list of existing virtual services for the specified service mesh.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "Listener":{
+      "type":"structure",
+      "required":["portMapping"],
+      "members":{
+        "connectionPool":{
+          "shape":"VirtualNodeConnectionPool",
+          "documentation":"<p>The connection pool information for the listener.</p>"
+        },
+        "healthCheck":{
+          "shape":"HealthCheckPolicy",
+          "documentation":"<p>The health check information for the listener.</p>"
+        },
+        "outlierDetection":{
+          "shape":"OutlierDetection",
+          "documentation":"<p>The outlier detection information for the listener.</p>"
+        },
+        "portMapping":{
+          "shape":"PortMapping",
+          "documentation":"<p>The port mapping information for the listener.</p>"
+        },
+        "timeout":{
+          "shape":"ListenerTimeout",
+          "documentation":"<p>An object that represents timeouts for different protocols.</p>"
+        },
+        "tls":{
+          "shape":"ListenerTls",
+          "documentation":"<p>A reference to an object that represents the Transport Layer Security (TLS) properties for a listener.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a listener for a virtual node.</p>"
+    },
+    "ListenerTimeout":{
+      "type":"structure",
+      "members":{
+        "grpc":{
+          "shape":"GrpcTimeout",
+          "documentation":"<p>An object that represents types of timeouts. </p>"
+        },
+        "http":{
+          "shape":"HttpTimeout",
+          "documentation":"<p>An object that represents types of timeouts. </p>"
+        },
+        "http2":{
+          "shape":"HttpTimeout",
+          "documentation":"<p>An object that represents types of timeouts. </p>"
+        },
+        "tcp":{
+          "shape":"TcpTimeout",
+          "documentation":"<p>An object that represents types of timeouts. </p>"
+        }
+      },
+      "documentation":"<p>An object that represents timeouts for different protocols.</p>",
+      "union":true
+    },
+    "ListenerTls":{
+      "type":"structure",
+      "required":[
+        "certificate",
+        "mode"
+      ],
+      "members":{
+        "certificate":{
+          "shape":"ListenerTlsCertificate",
+          "documentation":"<p>A reference to an object that represents a listener's Transport Layer Security (TLS) certificate.</p>"
+        },
+        "mode":{
+          "shape":"ListenerTlsMode",
+          "documentation":"<p>Specify one of the following modes.</p> <ul> <li> <p> <b/>STRICT – Listener only accepts connections with TLS enabled. </p> </li> <li> <p> <b/>PERMISSIVE – Listener accepts connections with or without TLS enabled.</p> </li> <li> <p> <b/>DISABLED – Listener only accepts connections without TLS. </p> </li> </ul>"
+        },
+        "validation":{
+          "shape":"ListenerTlsValidationContext",
+          "documentation":"<p>A reference to an object that represents a listener's Transport Layer Security (TLS) validation context.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the Transport Layer Security (TLS) properties for a listener.</p>"
+    },
+    "ListenerTlsAcmCertificate":{
+      "type":"structure",
+      "required":["certificateArn"],
+      "members":{
+        "certificateArn":{
+          "shape":"Arn",
+          "documentation":"<p>The Amazon Resource Name (ARN) for the certificate. The certificate must meet specific requirements and you must have proxy authorization enabled. For more information, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html#virtual-node-tls-prerequisites\">Transport Layer Security (TLS)</a>.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents an AWS Certicate Manager (ACM) certificate.</p>"
+    },
+    "ListenerTlsCertificate":{
+      "type":"structure",
+      "members":{
+        "acm":{
+          "shape":"ListenerTlsAcmCertificate",
+          "documentation":"<p>A reference to an object that represents an AWS Certicate Manager (ACM) certificate.</p>"
+        },
+        "file":{
+          "shape":"ListenerTlsFileCertificate",
+          "documentation":"<p>A reference to an object that represents a local file certificate.</p>"
+        },
+        "sds":{
+          "shape":"ListenerTlsSdsCertificate",
+          "documentation":"<p>A reference to an object that represents a listener's Secret Discovery Service certificate.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a listener's Transport Layer Security (TLS) certificate.</p>",
+      "union":true
+    },
+    "ListenerTlsFileCertificate":{
+      "type":"structure",
+      "required":[
+        "certificateChain",
+        "privateKey"
+      ],
+      "members":{
+        "certificateChain":{
+          "shape":"FilePath",
+          "documentation":"<p>The certificate chain for the certificate.</p>"
+        },
+        "privateKey":{
+          "shape":"FilePath",
+          "documentation":"<p>The private key for a certificate stored on the file system of the virtual node that the proxy is running on.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a local file certificate. The certificate must meet specific requirements and you must have proxy authorization enabled. For more information, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html#virtual-node-tls-prerequisites\">Transport Layer Security (TLS)</a>.</p>"
+    },
+    "ListenerTlsMode":{
+      "type":"string",
+      "enum":[
+        "STRICT",
+        "PERMISSIVE",
+        "DISABLED"
+      ]
+    },
+    "ListenerTlsSdsCertificate":{
+      "type":"structure",
+      "required":["secretName"],
+      "members":{
+        "secretName":{
+          "shape":"SdsSecretName",
+          "documentation":"<p>A reference to an object that represents the name of the secret requested from the Secret Discovery Service provider representing Transport Layer Security (TLS) materials like a certificate or certificate chain.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the listener's Secret Discovery Service certificate. The proxy must be configured with a local SDS provider via a Unix Domain Socket. See App Mesh <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html\">TLS documentation</a> for more info.</p>"
+    },
+    "ListenerTlsValidationContext":{
+      "type":"structure",
+      "required":["trust"],
+      "members":{
+        "subjectAlternativeNames":{
+          "shape":"SubjectAlternativeNames",
+          "documentation":"<p>A reference to an object that represents the SANs for a listener's Transport Layer Security (TLS) validation context.</p>"
+        },
+        "trust":{
+          "shape":"ListenerTlsValidationContextTrust",
+          "documentation":"<p>A reference to where to retrieve the trust chain when validating a peer’s Transport Layer Security (TLS) certificate.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a listener's Transport Layer Security (TLS) validation context.</p>"
+    },
+    "ListenerTlsValidationContextTrust":{
+      "type":"structure",
+      "members":{
+        "file":{
+          "shape":"TlsValidationContextFileTrust",
+          "documentation":"<p>An object that represents a Transport Layer Security (TLS) validation context trust for a local file.</p>"
+        },
+        "sds":{
+          "shape":"TlsValidationContextSdsTrust",
+          "documentation":"<p>A reference to an object that represents a listener's Transport Layer Security (TLS) Secret Discovery Service validation context trust.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a listener's Transport Layer Security (TLS) validation context trust.</p>",
+      "union":true
+    },
+    "Listeners":{
+      "type":"list",
+      "member":{"shape":"Listener"},
+      "max":1,
+      "min":0
+    },
+    "Logging":{
+      "type":"structure",
+      "members":{
+        "accessLog":{
+          "shape":"AccessLog",
+          "documentation":"<p>The access log configuration for a virtual node.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the logging information for a virtual node.</p>"
+    },
+    "Long":{
+      "type":"long",
+      "box":true
+    },
+    "MatchRange":{
+      "type":"structure",
+      "required":[
+        "end",
+        "start"
+      ],
+      "members":{
+        "end":{
+          "shape":"Long",
+          "documentation":"<p>The end of the range.</p>"
+        },
+        "start":{
+          "shape":"Long",
+          "documentation":"<p>The start of the range.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the range of values to match on. The first character of the range is included in the range, though the last character is not. For example, if the range specified were 1-100, only values 1-99 would be matched.</p>"
+    },
+    "MaxConnections":{
+      "type":"integer",
+      "min":1
+    },
+    "MaxPendingRequests":{
+      "type":"integer",
+      "min":1
+    },
+    "MaxRequests":{
+      "type":"integer",
+      "min":1
+    },
+    "MaxRetries":{
+      "type":"long",
+      "box":true,
+      "min":0
+    },
+    "MeshData":{
+      "type":"structure",
+      "required":[
+        "meshName",
+        "metadata",
+        "spec",
+        "status"
+      ],
+      "members":{
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh.</p>"
+        },
+        "metadata":{
+          "shape":"ResourceMetadata",
+          "documentation":"<p>The associated metadata for the service mesh.</p>"
+        },
+        "spec":{
+          "shape":"MeshSpec",
+          "documentation":"<p>The associated specification for the service mesh.</p>"
+        },
+        "status":{
+          "shape":"MeshStatus",
+          "documentation":"<p>The status of the service mesh.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a service mesh returned by a describe operation.</p>"
+    },
+    "MeshList":{
+      "type":"list",
+      "member":{"shape":"MeshRef"}
+    },
+    "MeshRef":{
+      "type":"structure",
+      "required":[
+        "arn",
+        "createdAt",
+        "lastUpdatedAt",
+        "meshName",
+        "meshOwner",
+        "resourceOwner",
+        "version"
+      ],
+      "members":{
+        "arn":{
+          "shape":"Arn",
+          "documentation":"<p>The full Amazon Resource Name (ARN) of the service mesh.</p>"
+        },
+        "createdAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The Unix epoch timestamp in seconds for when the resource was created.</p>"
+        },
+        "lastUpdatedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The Unix epoch timestamp in seconds for when the resource was last updated.</p>"
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh.</p>"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>"
+        },
+        "resourceOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the resource owner. If the account ID is not your own, then it's the ID of the mesh owner or of another account that the mesh is shared with. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>"
+        },
+        "version":{
+          "shape":"Long",
+          "documentation":"<p>The version of the resource. Resources are created at version 1, and this version is incremented each time that they're updated.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a service mesh returned by a list operation.</p>"
+    },
+    "MeshSpec":{
+      "type":"structure",
+      "members":{
+        "egressFilter":{
+          "shape":"EgressFilter",
+          "documentation":"<p>The egress filter rules for the service mesh.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the specification of a service mesh.</p>"
+    },
+    "MeshStatus":{
+      "type":"structure",
+      "members":{
+        "status":{
+          "shape":"MeshStatusCode",
+          "documentation":"<p>The current mesh status.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the status of a service mesh.</p>"
+    },
+    "MeshStatusCode":{
+      "type":"string",
+      "enum":[
+        "ACTIVE",
+        "INACTIVE",
+        "DELETED"
+      ]
+    },
+    "MethodName":{
+      "type":"string",
+      "max":50,
+      "min":1
+    },
+    "NotFoundException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"String"}
+      },
+      "documentation":"<p>The specified resource doesn't exist. Check your request syntax and try again.</p>",
+      "error":{
+        "httpStatusCode":404,
+        "senderFault":true
+      },
+      "exception":true
+    },
+    "OutlierDetection":{
+      "type":"structure",
+      "required":[
+        "baseEjectionDuration",
+        "interval",
+        "maxEjectionPercent",
+        "maxServerErrors"
+      ],
+      "members":{
+        "baseEjectionDuration":{
+          "shape":"Duration",
+          "documentation":"<p>The base amount of time for which a host is ejected.</p>"
+        },
+        "interval":{
+          "shape":"Duration",
+          "documentation":"<p>The time interval between ejection sweep analysis.</p>"
+        },
+        "maxEjectionPercent":{
+          "shape":"OutlierDetectionMaxEjectionPercent",
+          "documentation":"<p>Maximum percentage of hosts in load balancing pool for upstream service that can be ejected. Will eject at least one host regardless of the value.</p>"
+        },
+        "maxServerErrors":{
+          "shape":"OutlierDetectionMaxServerErrors",
+          "documentation":"<p>Number of consecutive <code>5xx</code> errors required for ejection. </p>"
+        }
+      },
+      "documentation":"<p>An object that represents the outlier detection for a virtual node's listener.</p>"
+    },
+    "OutlierDetectionMaxEjectionPercent":{
+      "type":"integer",
+      "box":true,
+      "max":100,
+      "min":0
+    },
+    "OutlierDetectionMaxServerErrors":{
+      "type":"long",
+      "box":true,
+      "min":1
+    },
+    "PercentInt":{
+      "type":"integer",
+      "max":100,
+      "min":0
+    },
+    "PortMapping":{
+      "type":"structure",
+      "required":[
+        "port",
+        "protocol"
+      ],
+      "members":{
+        "port":{
+          "shape":"PortNumber",
+          "documentation":"<p>The port used for the port mapping.</p>"
+        },
+        "protocol":{
+          "shape":"PortProtocol",
+          "documentation":"<p>The protocol used for the port mapping. Specify one protocol.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a port mapping.</p>"
+    },
+    "PortNumber":{
+      "type":"integer",
+      "max":65535,
+      "min":1
+    },
+    "PortProtocol":{
+      "type":"string",
+      "enum":[
+        "http",
+        "tcp",
+        "http2",
+        "grpc"
+      ]
+    },
+    "PortSet":{
+      "type":"list",
+      "member":{"shape":"PortNumber"}
+    },
+    "QueryParameterMatch":{
+      "type":"structure",
+      "members":{
+        "exact":{
+          "shape":"String",
+          "documentation":"<p>The exact query parameter to match on.</p>"
+        }
+      },
+      "documentation":"<p>An object representing the query parameter to match.</p>"
+    },
+    "QueryParameterName":{"type":"string"},
+    "ResourceInUseException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"String"}
+      },
+      "documentation":"<p>You can't delete the specified resource because it's in use or required by another resource.</p>",
+      "error":{
+        "httpStatusCode":409,
+        "senderFault":true
+      },
+      "exception":true
+    },
+    "ResourceMetadata":{
+      "type":"structure",
+      "required":[
+        "arn",
+        "createdAt",
+        "lastUpdatedAt",
+        "meshOwner",
+        "resourceOwner",
+        "uid",
+        "version"
+      ],
+      "members":{
+        "arn":{
+          "shape":"Arn",
+          "documentation":"<p>The full Amazon Resource Name (ARN) for the resource.</p>"
+        },
+        "createdAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The Unix epoch timestamp in seconds for when the resource was created.</p>"
+        },
+        "lastUpdatedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The Unix epoch timestamp in seconds for when the resource was last updated.</p>"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>"
+        },
+        "resourceOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the resource owner. If the account ID is not your own, then it's the ID of the mesh owner or of another account that the mesh is shared with. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>"
+        },
+        "uid":{
+          "shape":"String",
+          "documentation":"<p>The unique identifier for the resource.</p>"
+        },
+        "version":{
+          "shape":"Long",
+          "documentation":"<p>The version of the resource. Resources are created at version 1, and this version is incremented each time that they're updated.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents metadata for a resource.</p>"
+    },
+    "ResourceName":{
+      "type":"string",
+      "max":255,
+      "min":1
+    },
+    "RouteData":{
+      "type":"structure",
+      "required":[
+        "meshName",
+        "metadata",
+        "routeName",
+        "spec",
+        "status",
+        "virtualRouterName"
+      ],
+      "members":{
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh that the route resides in.</p>"
+        },
+        "metadata":{
+          "shape":"ResourceMetadata",
+          "documentation":"<p>The associated metadata for the route.</p>"
+        },
+        "routeName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the route.</p>"
+        },
+        "spec":{
+          "shape":"RouteSpec",
+          "documentation":"<p>The specifications of the route.</p>"
+        },
+        "status":{
+          "shape":"RouteStatus",
+          "documentation":"<p>The status of the route.</p>"
+        },
+        "virtualRouterName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The virtual router that the route is associated with.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a route returned by a describe operation.</p>"
+    },
+    "RouteList":{
+      "type":"list",
+      "member":{"shape":"RouteRef"}
+    },
+    "RoutePriority":{
+      "type":"integer",
+      "box":true,
+      "max":1000,
+      "min":0
+    },
+    "RouteRef":{
+      "type":"structure",
+      "required":[
+        "arn",
+        "createdAt",
+        "lastUpdatedAt",
+        "meshName",
+        "meshOwner",
+        "resourceOwner",
+        "routeName",
+        "version",
+        "virtualRouterName"
+      ],
+      "members":{
+        "arn":{
+          "shape":"Arn",
+          "documentation":"<p>The full Amazon Resource Name (ARN) for the route.</p>"
+        },
+        "createdAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The Unix epoch timestamp in seconds for when the resource was created.</p>"
+        },
+        "lastUpdatedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The Unix epoch timestamp in seconds for when the resource was last updated.</p>"
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh that the route resides in.</p>"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>"
+        },
+        "resourceOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the resource owner. If the account ID is not your own, then it's the ID of the mesh owner or of another account that the mesh is shared with. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>"
+        },
+        "routeName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the route.</p>"
+        },
+        "version":{
+          "shape":"Long",
+          "documentation":"<p>The version of the resource. Resources are created at version 1, and this version is incremented each time that they're updated.</p>"
+        },
+        "virtualRouterName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The virtual router that the route is associated with.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a route returned by a list operation.</p>"
+    },
+    "RouteSpec":{
+      "type":"structure",
+      "members":{
+        "grpcRoute":{
+          "shape":"GrpcRoute",
+          "documentation":"<p>An object that represents the specification of a gRPC route.</p>"
+        },
+        "http2Route":{
+          "shape":"HttpRoute",
+          "documentation":"<p>An object that represents the specification of an HTTP/2 route.</p>"
+        },
+        "httpRoute":{
+          "shape":"HttpRoute",
+          "documentation":"<p>An object that represents the specification of an HTTP route.</p>"
+        },
+        "priority":{
+          "shape":"RoutePriority",
+          "documentation":"<p>The priority for the route. Routes are matched based on the specified value, where 0 is the highest priority.</p>"
+        },
+        "tcpRoute":{
+          "shape":"TcpRoute",
+          "documentation":"<p>An object that represents the specification of a TCP route.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a route specification. Specify one route type.</p>"
+    },
+    "RouteStatus":{
+      "type":"structure",
+      "required":["status"],
+      "members":{
+        "status":{
+          "shape":"RouteStatusCode",
+          "documentation":"<p>The current status for the route.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the current status of a route.</p>"
+    },
+    "RouteStatusCode":{
+      "type":"string",
+      "enum":[
+        "ACTIVE",
+        "INACTIVE",
+        "DELETED"
+      ]
+    },
+    "SdsSecretName":{"type":"string"},
+    "ServiceDiscovery":{
+      "type":"structure",
+      "members":{
+        "awsCloudMap":{
+          "shape":"AwsCloudMapServiceDiscovery",
+          "documentation":"<p>Specifies any Cloud Map information for the virtual node.</p>"
+        },
+        "dns":{
+          "shape":"DnsServiceDiscovery",
+          "documentation":"<p>Specifies the DNS information for the virtual node.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the service discovery information for a virtual node.</p>",
+      "union":true
+    },
+    "ServiceName":{"type":"string"},
+    "ServiceUnavailableException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"String"}
+      },
+      "documentation":"<p>The request has failed due to a temporary failure of the service.</p>",
+      "error":{"httpStatusCode":503},
+      "exception":true,
+      "fault":true,
+      "retryable":{"throttling":false}
+    },
+    "String":{"type":"string"},
+    "SubjectAlternativeName":{
+      "type":"string",
+      "max":254,
+      "min":1
+    },
+    "SubjectAlternativeNameList":{
+      "type":"list",
+      "member":{"shape":"SubjectAlternativeName"}
+    },
+    "SubjectAlternativeNameMatchers":{
+      "type":"structure",
+      "required":["exact"],
+      "members":{
+        "exact":{
+          "shape":"SubjectAlternativeNameList",
+          "documentation":"<p>The values sent must match the specified values exactly.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the methods by which a subject alternative name on a peer Transport Layer Security (TLS) certificate can be matched.</p>"
+    },
+    "SubjectAlternativeNames":{
+      "type":"structure",
+      "required":["match"],
+      "members":{
+        "match":{
+          "shape":"SubjectAlternativeNameMatchers",
+          "documentation":"<p>An object that represents the criteria for determining a SANs match.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the subject alternative names secured by the certificate.</p>"
+    },
+    "SuffixHostname":{
+      "type":"string",
+      "max":253,
+      "min":1
+    },
+    "TagKey":{
+      "type":"string",
+      "max":128,
+      "min":1
+    },
+    "TagKeyList":{
+      "type":"list",
+      "member":{"shape":"TagKey"},
+      "max":50,
+      "min":0
+    },
+    "TagList":{
+      "type":"list",
+      "member":{"shape":"TagRef"},
+      "max":50,
+      "min":0
+    },
+    "TagRef":{
+      "type":"structure",
+      "required":[
+        "key",
+        "value"
+      ],
+      "members":{
+        "key":{
+          "shape":"TagKey",
+          "documentation":"<p>One part of a key-value pair that make up a tag. A <code>key</code> is a general label that acts like a category for more specific tag values.</p>"
+        },
+        "value":{
+          "shape":"TagValue",
+          "documentation":"<p>The optional part of a key-value pair that make up a tag. A <code>value</code> acts as a descriptor within a tag category (key).</p>"
+        }
+      },
+      "documentation":"<p>Optional metadata that you apply to a resource to assist with categorization and organization. Each tag consists of a key and an optional value, both of which you define. Tag keys can have a maximum character length of 128 characters, and tag values can have a maximum length of 256 characters.</p>"
+    },
+    "TagResourceInput":{
+      "type":"structure",
+      "required":[
+        "resourceArn",
+        "tags"
+      ],
+      "members":{
+        "resourceArn":{
+          "shape":"Arn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the resource to add tags to.</p>",
+          "location":"querystring",
+          "locationName":"resourceArn"
+        },
+        "tags":{
+          "shape":"TagList",
+          "documentation":"<p>The tags to add to the resource. A tag is an array of key-value pairs. Tag keys can have a maximum character length of 128 characters, and tag values can have a maximum length of 256 characters.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "TagResourceOutput":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "TagValue":{
+      "type":"string",
+      "max":256,
+      "min":0
+    },
+    "TagsLimit":{
+      "type":"integer",
+      "box":true,
+      "max":50,
+      "min":1
+    },
+    "TcpRetryPolicyEvent":{
+      "type":"string",
+      "enum":["connection-error"]
+    },
+    "TcpRetryPolicyEvents":{
+      "type":"list",
+      "member":{"shape":"TcpRetryPolicyEvent"},
+      "max":1,
+      "min":1
+    },
+    "TcpRoute":{
+      "type":"structure",
+      "required":["action"],
+      "members":{
+        "action":{
+          "shape":"TcpRouteAction",
+          "documentation":"<p>The action to take if a match is determined.</p>"
+        },
+        "timeout":{
+          "shape":"TcpTimeout",
+          "documentation":"<p>An object that represents types of timeouts. </p>"
+        }
+      },
+      "documentation":"<p>An object that represents a TCP route type.</p>"
+    },
+    "TcpRouteAction":{
+      "type":"structure",
+      "required":["weightedTargets"],
+      "members":{
+        "weightedTargets":{
+          "shape":"WeightedTargets",
+          "documentation":"<p>An object that represents the targets that traffic is routed to when a request matches the route.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the action to take if a match is determined.</p>"
+    },
+    "TcpTimeout":{
+      "type":"structure",
+      "members":{
+        "idle":{
+          "shape":"Duration",
+          "documentation":"<p>An object that represents an idle timeout. An idle timeout bounds the amount of time that a connection may be idle. The default value is none.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents types of timeouts. </p>"
+    },
+    "Timestamp":{"type":"timestamp"},
+    "TlsValidationContext":{
+      "type":"structure",
+      "required":["trust"],
+      "members":{
+        "subjectAlternativeNames":{
+          "shape":"SubjectAlternativeNames",
+          "documentation":"<p>A reference to an object that represents the SANs for a Transport Layer Security (TLS) validation context.</p>"
+        },
+        "trust":{
+          "shape":"TlsValidationContextTrust",
+          "documentation":"<p>A reference to where to retrieve the trust chain when validating a peer’s Transport Layer Security (TLS) certificate.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents how the proxy will validate its peer during Transport Layer Security (TLS) negotiation.</p>"
+    },
+    "TlsValidationContextAcmTrust":{
+      "type":"structure",
+      "required":["certificateAuthorityArns"],
+      "members":{
+        "certificateAuthorityArns":{
+          "shape":"CertificateAuthorityArns",
+          "documentation":"<p>One or more ACM Amazon Resource Name (ARN)s.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a Transport Layer Security (TLS) validation context trust for an Certificate Manager certificate.</p>"
+    },
+    "TlsValidationContextFileTrust":{
+      "type":"structure",
+      "required":["certificateChain"],
+      "members":{
+        "certificateChain":{
+          "shape":"FilePath",
+          "documentation":"<p>The certificate trust chain for a certificate stored on the file system of the virtual node that the proxy is running on.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a Transport Layer Security (TLS) validation context trust for a local file.</p>"
+    },
+    "TlsValidationContextSdsTrust":{
+      "type":"structure",
+      "required":["secretName"],
+      "members":{
+        "secretName":{
+          "shape":"SdsSecretName",
+          "documentation":"<p>A reference to an object that represents the name of the secret for a Transport Layer Security (TLS) Secret Discovery Service validation context trust.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a Transport Layer Security (TLS) Secret Discovery Service validation context trust. The proxy must be configured with a local SDS provider via a Unix Domain Socket. See App Mesh <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html\">TLS documentation</a> for more info.</p>"
+    },
+    "TlsValidationContextTrust":{
+      "type":"structure",
+      "members":{
+        "acm":{
+          "shape":"TlsValidationContextAcmTrust",
+          "documentation":"<p>A reference to an object that represents a Transport Layer Security (TLS) validation context trust for an Certificate Manager certificate.</p>"
+        },
+        "file":{
+          "shape":"TlsValidationContextFileTrust",
+          "documentation":"<p>An object that represents a Transport Layer Security (TLS) validation context trust for a local file.</p>"
+        },
+        "sds":{
+          "shape":"TlsValidationContextSdsTrust",
+          "documentation":"<p>A reference to an object that represents a Transport Layer Security (TLS) Secret Discovery Service validation context trust.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a Transport Layer Security (TLS) validation context trust.</p>",
+      "union":true
+    },
+    "TooManyRequestsException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"String"}
+      },
+      "documentation":"<p>The maximum request rate permitted by the App Mesh APIs has been exceeded for your account. For best results, use an increasing or variable sleep interval between requests.</p>",
+      "error":{
+        "httpStatusCode":429,
+        "senderFault":true
+      },
+      "exception":true,
+      "retryable":{"throttling":true}
+    },
+    "TooManyTagsException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"String"}
+      },
+      "documentation":"<p>The request exceeds the maximum allowed number of tags allowed per resource. The current limit is 50 user tags per resource. You must reduce the number of tags in the request. None of the tags in this request were applied.</p>",
+      "error":{
+        "httpStatusCode":400,
+        "senderFault":true
+      },
+      "exception":true
+    },
+    "UntagResourceInput":{
+      "type":"structure",
+      "required":[
+        "resourceArn",
+        "tagKeys"
+      ],
+      "members":{
+        "resourceArn":{
+          "shape":"Arn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the resource to delete tags from.</p>",
+          "location":"querystring",
+          "locationName":"resourceArn"
+        },
+        "tagKeys":{
+          "shape":"TagKeyList",
+          "documentation":"<p>The keys of the tags to be removed.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "UntagResourceOutput":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "UpdateGatewayRouteInput":{
+      "type":"structure",
+      "required":[
+        "gatewayRouteName",
+        "meshName",
+        "spec",
+        "virtualGatewayName"
+      ],
+      "members":{
+        "clientToken":{
+          "shape":"String",
+          "documentation":"<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Up to 36 letters, numbers, hyphens, and underscores are allowed.</p>",
+          "idempotencyToken":true
+        },
+        "gatewayRouteName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the gateway route to update.</p>",
+          "location":"uri",
+          "locationName":"gatewayRouteName"
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh that the gateway route resides in.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "spec":{
+          "shape":"GatewayRouteSpec",
+          "documentation":"<p>The new gateway route specification to apply. This overwrites the existing data.</p>"
+        },
+        "virtualGatewayName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the virtual gateway that the gateway route is associated with.</p>",
+          "location":"uri",
+          "locationName":"virtualGatewayName"
+        }
+      }
+    },
+    "UpdateGatewayRouteOutput":{
+      "type":"structure",
+      "required":["gatewayRoute"],
+      "members":{
+        "gatewayRoute":{
+          "shape":"GatewayRouteData",
+          "documentation":"<p>A full description of the gateway route that was updated.</p>"
+        }
+      },
+      "payload":"gatewayRoute"
+    },
+    "UpdateMeshInput":{
+      "type":"structure",
+      "required":["meshName"],
+      "members":{
+        "clientToken":{
+          "shape":"String",
+          "documentation":"<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Up to 36 letters, numbers, hyphens, and underscores are allowed.</p>",
+          "idempotencyToken":true
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh to update.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "spec":{
+          "shape":"MeshSpec",
+          "documentation":"<p>The service mesh specification to apply.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "UpdateMeshOutput":{
+      "type":"structure",
+      "required":["mesh"],
+      "members":{
+        "mesh":{"shape":"MeshData"}
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>",
+      "payload":"mesh"
+    },
+    "UpdateRouteInput":{
+      "type":"structure",
+      "required":[
+        "meshName",
+        "routeName",
+        "spec",
+        "virtualRouterName"
+      ],
+      "members":{
+        "clientToken":{
+          "shape":"String",
+          "documentation":"<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Up to 36 letters, numbers, hyphens, and underscores are allowed.</p>",
+          "idempotencyToken":true
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh that the route resides in.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "routeName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the route to update.</p>",
+          "location":"uri",
+          "locationName":"routeName"
+        },
+        "spec":{
+          "shape":"RouteSpec",
+          "documentation":"<p>The new route specification to apply. This overwrites the existing data.</p>"
+        },
+        "virtualRouterName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the virtual router that the route is associated with.</p>",
+          "location":"uri",
+          "locationName":"virtualRouterName"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "UpdateRouteOutput":{
+      "type":"structure",
+      "required":["route"],
+      "members":{
+        "route":{
+          "shape":"RouteData",
+          "documentation":"<p>A full description of the route that was updated.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>",
+      "payload":"route"
+    },
+    "UpdateVirtualGatewayInput":{
+      "type":"structure",
+      "required":[
+        "meshName",
+        "spec",
+        "virtualGatewayName"
+      ],
+      "members":{
+        "clientToken":{
+          "shape":"String",
+          "documentation":"<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Up to 36 letters, numbers, hyphens, and underscores are allowed.</p>",
+          "idempotencyToken":true
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh that the virtual gateway resides in.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "spec":{
+          "shape":"VirtualGatewaySpec",
+          "documentation":"<p>The new virtual gateway specification to apply. This overwrites the existing data.</p>"
+        },
+        "virtualGatewayName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the virtual gateway to update.</p>",
+          "location":"uri",
+          "locationName":"virtualGatewayName"
+        }
+      }
+    },
+    "UpdateVirtualGatewayOutput":{
+      "type":"structure",
+      "required":["virtualGateway"],
+      "members":{
+        "virtualGateway":{
+          "shape":"VirtualGatewayData",
+          "documentation":"<p>A full description of the virtual gateway that was updated.</p>"
+        }
+      },
+      "payload":"virtualGateway"
+    },
+    "UpdateVirtualNodeInput":{
+      "type":"structure",
+      "required":[
+        "meshName",
+        "spec",
+        "virtualNodeName"
+      ],
+      "members":{
+        "clientToken":{
+          "shape":"String",
+          "documentation":"<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Up to 36 letters, numbers, hyphens, and underscores are allowed.</p>",
+          "idempotencyToken":true
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh that the virtual node resides in.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "spec":{
+          "shape":"VirtualNodeSpec",
+          "documentation":"<p>The new virtual node specification to apply. This overwrites the existing data.</p>"
+        },
+        "virtualNodeName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the virtual node to update.</p>",
+          "location":"uri",
+          "locationName":"virtualNodeName"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "UpdateVirtualNodeOutput":{
+      "type":"structure",
+      "required":["virtualNode"],
+      "members":{
+        "virtualNode":{
+          "shape":"VirtualNodeData",
+          "documentation":"<p>A full description of the virtual node that was updated.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>",
+      "payload":"virtualNode"
+    },
+    "UpdateVirtualRouterInput":{
+      "type":"structure",
+      "required":[
+        "meshName",
+        "spec",
+        "virtualRouterName"
+      ],
+      "members":{
+        "clientToken":{
+          "shape":"String",
+          "documentation":"<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Up to 36 letters, numbers, hyphens, and underscores are allowed.</p>",
+          "idempotencyToken":true
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh that the virtual router resides in.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "spec":{
+          "shape":"VirtualRouterSpec",
+          "documentation":"<p>The new virtual router specification to apply. This overwrites the existing data.</p>"
+        },
+        "virtualRouterName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the virtual router to update.</p>",
+          "location":"uri",
+          "locationName":"virtualRouterName"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "UpdateVirtualRouterOutput":{
+      "type":"structure",
+      "required":["virtualRouter"],
+      "members":{
+        "virtualRouter":{
+          "shape":"VirtualRouterData",
+          "documentation":"<p>A full description of the virtual router that was updated.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>",
+      "payload":"virtualRouter"
+    },
+    "UpdateVirtualServiceInput":{
+      "type":"structure",
+      "required":[
+        "meshName",
+        "spec",
+        "virtualServiceName"
+      ],
+      "members":{
+        "clientToken":{
+          "shape":"String",
+          "documentation":"<p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Up to 36 letters, numbers, hyphens, and underscores are allowed.</p>",
+          "idempotencyToken":true
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh that the virtual service resides in.</p>",
+          "location":"uri",
+          "locationName":"meshName"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>",
+          "location":"querystring",
+          "locationName":"meshOwner"
+        },
+        "spec":{
+          "shape":"VirtualServiceSpec",
+          "documentation":"<p>The new virtual service specification to apply. This overwrites the existing data.</p>"
+        },
+        "virtualServiceName":{
+          "shape":"ServiceName",
+          "documentation":"<p>The name of the virtual service to update.</p>",
+          "location":"uri",
+          "locationName":"virtualServiceName"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>"
+    },
+    "UpdateVirtualServiceOutput":{
+      "type":"structure",
+      "required":["virtualService"],
+      "members":{
+        "virtualService":{
+          "shape":"VirtualServiceData",
+          "documentation":"<p>A full description of the virtual service that was updated.</p>"
+        }
+      },
+      "documentation":"<zonbook></zonbook><xhtml></xhtml>",
+      "payload":"virtualService"
+    },
+    "VirtualGatewayAccessLog":{
+      "type":"structure",
+      "members":{
+        "file":{
+          "shape":"VirtualGatewayFileAccessLog",
+          "documentation":"<p>The file object to send virtual gateway access logs to.</p>"
+        }
+      },
+      "documentation":"<p>The access log configuration for a virtual gateway.</p>",
+      "union":true
+    },
+    "VirtualGatewayBackendDefaults":{
+      "type":"structure",
+      "members":{
+        "clientPolicy":{
+          "shape":"VirtualGatewayClientPolicy",
+          "documentation":"<p>A reference to an object that represents a client policy.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the default properties for a backend.</p>"
+    },
+    "VirtualGatewayCertificateAuthorityArns":{
+      "type":"list",
+      "member":{"shape":"Arn"},
+      "max":3,
+      "min":1
+    },
+    "VirtualGatewayClientPolicy":{
+      "type":"structure",
+      "members":{
+        "tls":{
+          "shape":"VirtualGatewayClientPolicyTls",
+          "documentation":"<p>A reference to an object that represents a Transport Layer Security (TLS) client policy.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a client policy.</p>"
+    },
+    "VirtualGatewayClientPolicyTls":{
+      "type":"structure",
+      "required":["validation"],
+      "members":{
+        "certificate":{
+          "shape":"VirtualGatewayClientTlsCertificate",
+          "documentation":"<p>A reference to an object that represents a virtual gateway's client's Transport Layer Security (TLS) certificate.</p>"
+        },
+        "enforce":{
+          "shape":"Boolean",
+          "documentation":"<p>Whether the policy is enforced. The default is <code>True</code>, if a value isn't specified.</p>",
+          "box":true
+        },
+        "ports":{
+          "shape":"PortSet",
+          "documentation":"<p>One or more ports that the policy is enforced for.</p>"
+        },
+        "validation":{
+          "shape":"VirtualGatewayTlsValidationContext",
+          "documentation":"<p>A reference to an object that represents a Transport Layer Security (TLS) validation context.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a Transport Layer Security (TLS) client policy.</p>"
+    },
+    "VirtualGatewayClientTlsCertificate":{
+      "type":"structure",
+      "members":{
+        "file":{
+          "shape":"VirtualGatewayListenerTlsFileCertificate",
+          "documentation":"<p>An object that represents a local file certificate. The certificate must meet specific requirements and you must have proxy authorization enabled. For more information, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html\"> Transport Layer Security (TLS) </a>.</p>"
+        },
+        "sds":{
+          "shape":"VirtualGatewayListenerTlsSdsCertificate",
+          "documentation":"<p>A reference to an object that represents a virtual gateway's client's Secret Discovery Service certificate.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the virtual gateway's client's Transport Layer Security (TLS) certificate.</p>",
+      "union":true
+    },
+    "VirtualGatewayConnectionPool":{
+      "type":"structure",
+      "members":{
+        "grpc":{
+          "shape":"VirtualGatewayGrpcConnectionPool",
+          "documentation":"<p>An object that represents a type of connection pool. </p>"
+        },
+        "http":{
+          "shape":"VirtualGatewayHttpConnectionPool",
+          "documentation":"<p>An object that represents a type of connection pool.</p>"
+        },
+        "http2":{
+          "shape":"VirtualGatewayHttp2ConnectionPool",
+          "documentation":"<p>An object that represents a type of connection pool.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the type of virtual gateway connection pool.</p> <p>Only one protocol is used at a time and should be the same protocol as the one chosen under port mapping.</p> <p>If not present the default value for <code>maxPendingRequests</code> is <code>2147483647</code>.</p>",
+      "union":true
+    },
+    "VirtualGatewayData":{
+      "type":"structure",
+      "required":[
+        "meshName",
+        "metadata",
+        "spec",
+        "status",
+        "virtualGatewayName"
+      ],
+      "members":{
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh that the virtual gateway resides in.</p>"
+        },
+        "metadata":{"shape":"ResourceMetadata"},
+        "spec":{
+          "shape":"VirtualGatewaySpec",
+          "documentation":"<p>The specifications of the virtual gateway.</p>"
+        },
+        "status":{
+          "shape":"VirtualGatewayStatus",
+          "documentation":"<p>The current status of the virtual gateway.</p>"
+        },
+        "virtualGatewayName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the virtual gateway.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a virtual gateway returned by a describe operation.</p>"
+    },
+    "VirtualGatewayFileAccessLog":{
+      "type":"structure",
+      "required":["path"],
+      "members":{
+        "path":{
+          "shape":"FilePath",
+          "documentation":"<p>The file path to write access logs to. You can use <code>/dev/stdout</code> to send access logs to standard out and configure your Envoy container to use a log driver, such as <code>awslogs</code>, to export the access logs to a log storage service such as Amazon CloudWatch Logs. You can also specify a path in the Envoy container's file system to write the files to disk.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents an access log file.</p>"
+    },
+    "VirtualGatewayGrpcConnectionPool":{
+      "type":"structure",
+      "required":["maxRequests"],
+      "members":{
+        "maxRequests":{
+          "shape":"MaxRequests",
+          "documentation":"<p>Maximum number of inflight requests Envoy can concurrently support across hosts in upstream cluster.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a type of connection pool.</p>"
+    },
+    "VirtualGatewayHealthCheckIntervalMillis":{
+      "type":"long",
+      "box":true,
+      "max":300000,
+      "min":5000
+    },
+    "VirtualGatewayHealthCheckPolicy":{
+      "type":"structure",
+      "required":[
+        "healthyThreshold",
+        "intervalMillis",
+        "protocol",
+        "timeoutMillis",
+        "unhealthyThreshold"
+      ],
+      "members":{
+        "healthyThreshold":{
+          "shape":"VirtualGatewayHealthCheckThreshold",
+          "documentation":"<p>The number of consecutive successful health checks that must occur before declaring the listener healthy.</p>"
+        },
+        "intervalMillis":{
+          "shape":"VirtualGatewayHealthCheckIntervalMillis",
+          "documentation":"<p>The time period in milliseconds between each health check execution.</p>"
+        },
+        "path":{
+          "shape":"String",
+          "documentation":"<p>The destination path for the health check request. This value is only used if the specified protocol is HTTP or HTTP/2. For any other protocol, this value is ignored.</p>"
+        },
+        "port":{
+          "shape":"PortNumber",
+          "documentation":"<p>The destination port for the health check request. This port must match the port defined in the <a>PortMapping</a> for the listener.</p>"
+        },
+        "protocol":{
+          "shape":"VirtualGatewayPortProtocol",
+          "documentation":"<p>The protocol for the health check request. If you specify <code>grpc</code>, then your service must conform to the <a href=\"https://github.com/grpc/grpc/blob/master/doc/health-checking.md\">GRPC Health Checking Protocol</a>.</p>"
+        },
+        "timeoutMillis":{
+          "shape":"VirtualGatewayHealthCheckTimeoutMillis",
+          "documentation":"<p>The amount of time to wait when receiving a response from the health check, in milliseconds.</p>"
+        },
+        "unhealthyThreshold":{
+          "shape":"VirtualGatewayHealthCheckThreshold",
+          "documentation":"<p>The number of consecutive failed health checks that must occur before declaring a virtual gateway unhealthy.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the health check policy for a virtual gateway's listener.</p>"
+    },
+    "VirtualGatewayHealthCheckThreshold":{
+      "type":"integer",
+      "max":10,
+      "min":2
+    },
+    "VirtualGatewayHealthCheckTimeoutMillis":{
+      "type":"long",
+      "box":true,
+      "max":60000,
+      "min":2000
+    },
+    "VirtualGatewayHttp2ConnectionPool":{
+      "type":"structure",
+      "required":["maxRequests"],
+      "members":{
+        "maxRequests":{
+          "shape":"MaxRequests",
+          "documentation":"<p>Maximum number of inflight requests Envoy can concurrently support across hosts in upstream cluster.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a type of connection pool.</p>"
+    },
+    "VirtualGatewayHttpConnectionPool":{
+      "type":"structure",
+      "required":["maxConnections"],
+      "members":{
+        "maxConnections":{
+          "shape":"MaxConnections",
+          "documentation":"<p>Maximum number of outbound TCP connections Envoy can establish concurrently with all hosts in upstream cluster.</p>"
+        },
+        "maxPendingRequests":{
+          "shape":"MaxPendingRequests",
+          "documentation":"<p>Number of overflowing requests after <code>max_connections</code> Envoy will queue to upstream cluster.</p>",
+          "box":true
+        }
+      },
+      "documentation":"<p>An object that represents a type of connection pool.</p>"
+    },
+    "VirtualGatewayList":{
+      "type":"list",
+      "member":{"shape":"VirtualGatewayRef"}
+    },
+    "VirtualGatewayListener":{
+      "type":"structure",
+      "required":["portMapping"],
+      "members":{
+        "connectionPool":{
+          "shape":"VirtualGatewayConnectionPool",
+          "documentation":"<p>The connection pool information for the virtual gateway listener.</p>"
+        },
+        "healthCheck":{
+          "shape":"VirtualGatewayHealthCheckPolicy",
+          "documentation":"<p>The health check information for the listener.</p>"
+        },
+        "portMapping":{
+          "shape":"VirtualGatewayPortMapping",
+          "documentation":"<p>The port mapping information for the listener.</p>"
+        },
+        "tls":{
+          "shape":"VirtualGatewayListenerTls",
+          "documentation":"<p>A reference to an object that represents the Transport Layer Security (TLS) properties for the listener.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a listener for a virtual gateway.</p>"
+    },
+    "VirtualGatewayListenerTls":{
+      "type":"structure",
+      "required":[
+        "certificate",
+        "mode"
+      ],
+      "members":{
+        "certificate":{
+          "shape":"VirtualGatewayListenerTlsCertificate",
+          "documentation":"<p>An object that represents a Transport Layer Security (TLS) certificate.</p>"
+        },
+        "mode":{
+          "shape":"VirtualGatewayListenerTlsMode",
+          "documentation":"<p>Specify one of the following modes.</p> <ul> <li> <p> <b/>STRICT – Listener only accepts connections with TLS enabled. </p> </li> <li> <p> <b/>PERMISSIVE – Listener accepts connections with or without TLS enabled.</p> </li> <li> <p> <b/>DISABLED – Listener only accepts connections without TLS. </p> </li> </ul>"
+        },
+        "validation":{
+          "shape":"VirtualGatewayListenerTlsValidationContext",
+          "documentation":"<p>A reference to an object that represents a virtual gateway's listener's Transport Layer Security (TLS) validation context.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the Transport Layer Security (TLS) properties for a listener.</p>"
+    },
+    "VirtualGatewayListenerTlsAcmCertificate":{
+      "type":"structure",
+      "required":["certificateArn"],
+      "members":{
+        "certificateArn":{
+          "shape":"Arn",
+          "documentation":"<p>The Amazon Resource Name (ARN) for the certificate. The certificate must meet specific requirements and you must have proxy authorization enabled. For more information, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html#virtual-node-tls-prerequisites\">Transport Layer Security (TLS)</a>.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents an Certificate Manager certificate.</p>"
+    },
+    "VirtualGatewayListenerTlsCertificate":{
+      "type":"structure",
+      "members":{
+        "acm":{
+          "shape":"VirtualGatewayListenerTlsAcmCertificate",
+          "documentation":"<p>A reference to an object that represents an Certificate Manager certificate.</p>"
+        },
+        "file":{
+          "shape":"VirtualGatewayListenerTlsFileCertificate",
+          "documentation":"<p>A reference to an object that represents a local file certificate.</p>"
+        },
+        "sds":{
+          "shape":"VirtualGatewayListenerTlsSdsCertificate",
+          "documentation":"<p>A reference to an object that represents a virtual gateway's listener's Secret Discovery Service certificate.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a listener's Transport Layer Security (TLS) certificate.</p>",
+      "union":true
+    },
+    "VirtualGatewayListenerTlsFileCertificate":{
+      "type":"structure",
+      "required":[
+        "certificateChain",
+        "privateKey"
+      ],
+      "members":{
+        "certificateChain":{
+          "shape":"FilePath",
+          "documentation":"<p>The certificate chain for the certificate.</p>"
+        },
+        "privateKey":{
+          "shape":"FilePath",
+          "documentation":"<p>The private key for a certificate stored on the file system of the mesh endpoint that the proxy is running on.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a local file certificate. The certificate must meet specific requirements and you must have proxy authorization enabled. For more information, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html#virtual-node-tls-prerequisites\">Transport Layer Security (TLS)</a>.</p>"
+    },
+    "VirtualGatewayListenerTlsMode":{
+      "type":"string",
+      "enum":[
+        "STRICT",
+        "PERMISSIVE",
+        "DISABLED"
+      ]
+    },
+    "VirtualGatewayListenerTlsSdsCertificate":{
+      "type":"structure",
+      "required":["secretName"],
+      "members":{
+        "secretName":{
+          "shape":"VirtualGatewaySdsSecretName",
+          "documentation":"<p>A reference to an object that represents the name of the secret secret requested from the Secret Discovery Service provider representing Transport Layer Security (TLS) materials like a certificate or certificate chain.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the virtual gateway's listener's Secret Discovery Service certificate.The proxy must be configured with a local SDS provider via a Unix Domain Socket. See App Mesh<a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html\">TLS documentation</a> for more info. </p>"
+    },
+    "VirtualGatewayListenerTlsValidationContext":{
+      "type":"structure",
+      "required":["trust"],
+      "members":{
+        "subjectAlternativeNames":{
+          "shape":"SubjectAlternativeNames",
+          "documentation":"<p>A reference to an object that represents the SANs for a virtual gateway listener's Transport Layer Security (TLS) validation context.</p>"
+        },
+        "trust":{
+          "shape":"VirtualGatewayListenerTlsValidationContextTrust",
+          "documentation":"<p>A reference to where to retrieve the trust chain when validating a peer’s Transport Layer Security (TLS) certificate.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a virtual gateway's listener's Transport Layer Security (TLS) validation context.</p>"
+    },
+    "VirtualGatewayListenerTlsValidationContextTrust":{
+      "type":"structure",
+      "members":{
+        "file":{
+          "shape":"VirtualGatewayTlsValidationContextFileTrust",
+          "documentation":"<p>An object that represents a Transport Layer Security (TLS) validation context trust for a local file.</p>"
+        },
+        "sds":{
+          "shape":"VirtualGatewayTlsValidationContextSdsTrust",
+          "documentation":"<p>A reference to an object that represents a virtual gateway's listener's Transport Layer Security (TLS) Secret Discovery Service validation context trust.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a virtual gateway's listener's Transport Layer Security (TLS) validation context trust.</p>",
+      "union":true
+    },
+    "VirtualGatewayListeners":{
+      "type":"list",
+      "member":{"shape":"VirtualGatewayListener"},
+      "max":1,
+      "min":0
+    },
+    "VirtualGatewayLogging":{
+      "type":"structure",
+      "members":{
+        "accessLog":{
+          "shape":"VirtualGatewayAccessLog",
+          "documentation":"<p>The access log configuration.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents logging information.</p>"
+    },
+    "VirtualGatewayPortMapping":{
+      "type":"structure",
+      "required":[
+        "port",
+        "protocol"
+      ],
+      "members":{
+        "port":{
+          "shape":"PortNumber",
+          "documentation":"<p>The port used for the port mapping. Specify one protocol.</p>"
+        },
+        "protocol":{
+          "shape":"VirtualGatewayPortProtocol",
+          "documentation":"<p>The protocol used for the port mapping.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a port mapping.</p>"
+    },
+    "VirtualGatewayPortProtocol":{
+      "type":"string",
+      "enum":[
+        "http",
+        "http2",
+        "grpc"
+      ]
+    },
+    "VirtualGatewayRef":{
+      "type":"structure",
+      "required":[
+        "arn",
+        "createdAt",
+        "lastUpdatedAt",
+        "meshName",
+        "meshOwner",
+        "resourceOwner",
+        "version",
+        "virtualGatewayName"
+      ],
+      "members":{
+        "arn":{
+          "shape":"Arn",
+          "documentation":"<p>The full Amazon Resource Name (ARN) for the resource.</p>"
+        },
+        "createdAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The Unix epoch timestamp in seconds for when the resource was created.</p>"
+        },
+        "lastUpdatedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The Unix epoch timestamp in seconds for when the resource was last updated.</p>"
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh that the resource resides in.</p>"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>"
+        },
+        "resourceOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the resource owner. If the account ID is not your own, then it's the ID of the mesh owner or of another account that the mesh is shared with. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>"
+        },
+        "version":{
+          "shape":"Long",
+          "documentation":"<p>The version of the resource. Resources are created at version 1, and this version is incremented each time that they're updated.</p>"
+        },
+        "virtualGatewayName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the resource.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a virtual gateway returned by a list operation.</p>"
+    },
+    "VirtualGatewaySdsSecretName":{"type":"string"},
+    "VirtualGatewaySpec":{
+      "type":"structure",
+      "required":["listeners"],
+      "members":{
+        "backendDefaults":{
+          "shape":"VirtualGatewayBackendDefaults",
+          "documentation":"<p>A reference to an object that represents the defaults for backends.</p>"
+        },
+        "listeners":{
+          "shape":"VirtualGatewayListeners",
+          "documentation":"<p>The listeners that the mesh endpoint is expected to receive inbound traffic from. You can specify one listener.</p>"
+        },
+        "logging":{"shape":"VirtualGatewayLogging"}
+      },
+      "documentation":"<p>An object that represents the specification of a service mesh resource.</p>"
+    },
+    "VirtualGatewayStatus":{
+      "type":"structure",
+      "required":["status"],
+      "members":{
+        "status":{
+          "shape":"VirtualGatewayStatusCode",
+          "documentation":"<p>The current status.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the status of the mesh resource.</p>"
+    },
+    "VirtualGatewayStatusCode":{
+      "type":"string",
+      "enum":[
+        "ACTIVE",
+        "INACTIVE",
+        "DELETED"
+      ]
+    },
+    "VirtualGatewayTlsValidationContext":{
+      "type":"structure",
+      "required":["trust"],
+      "members":{
+        "subjectAlternativeNames":{
+          "shape":"SubjectAlternativeNames",
+          "documentation":"<p>A reference to an object that represents the SANs for a virtual gateway's listener's Transport Layer Security (TLS) validation context.</p>"
+        },
+        "trust":{
+          "shape":"VirtualGatewayTlsValidationContextTrust",
+          "documentation":"<p>A reference to where to retrieve the trust chain when validating a peer’s Transport Layer Security (TLS) certificate.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a Transport Layer Security (TLS) validation context.</p>"
+    },
+    "VirtualGatewayTlsValidationContextAcmTrust":{
+      "type":"structure",
+      "required":["certificateAuthorityArns"],
+      "members":{
+        "certificateAuthorityArns":{
+          "shape":"VirtualGatewayCertificateAuthorityArns",
+          "documentation":"<p>One or more ACM Amazon Resource Name (ARN)s.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a Transport Layer Security (TLS) validation context trust for an Certificate Manager certificate.</p>"
+    },
+    "VirtualGatewayTlsValidationContextFileTrust":{
+      "type":"structure",
+      "required":["certificateChain"],
+      "members":{
+        "certificateChain":{
+          "shape":"FilePath",
+          "documentation":"<p>The certificate trust chain for a certificate stored on the file system of the virtual node that the proxy is running on.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a Transport Layer Security (TLS) validation context trust for a local file.</p>"
+    },
+    "VirtualGatewayTlsValidationContextSdsTrust":{
+      "type":"structure",
+      "required":["secretName"],
+      "members":{
+        "secretName":{
+          "shape":"VirtualGatewaySdsSecretName",
+          "documentation":"<p>A reference to an object that represents the name of the secret for a virtual gateway's Transport Layer Security (TLS) Secret Discovery Service validation context trust.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a virtual gateway's listener's Transport Layer Security (TLS) Secret Discovery Service validation context trust. The proxy must be configured with a local SDS provider via a Unix Domain Socket. See App Mesh <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html\">TLS documentation</a> for more info.</p>"
+    },
+    "VirtualGatewayTlsValidationContextTrust":{
+      "type":"structure",
+      "members":{
+        "acm":{
+          "shape":"VirtualGatewayTlsValidationContextAcmTrust",
+          "documentation":"<p>A reference to an object that represents a Transport Layer Security (TLS) validation context trust for an Certificate Manager certificate.</p>"
+        },
+        "file":{
+          "shape":"VirtualGatewayTlsValidationContextFileTrust",
+          "documentation":"<p>An object that represents a Transport Layer Security (TLS) validation context trust for a local file.</p>"
+        },
+        "sds":{
+          "shape":"VirtualGatewayTlsValidationContextSdsTrust",
+          "documentation":"<p>A reference to an object that represents a virtual gateway's Transport Layer Security (TLS) Secret Discovery Service validation context trust.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a Transport Layer Security (TLS) validation context trust.</p>",
+      "union":true
+    },
+    "VirtualNodeConnectionPool":{
+      "type":"structure",
+      "members":{
+        "grpc":{
+          "shape":"VirtualNodeGrpcConnectionPool",
+          "documentation":"<p>An object that represents a type of connection pool.</p>"
+        },
+        "http":{
+          "shape":"VirtualNodeHttpConnectionPool",
+          "documentation":"<p>An object that represents a type of connection pool.</p>"
+        },
+        "http2":{
+          "shape":"VirtualNodeHttp2ConnectionPool",
+          "documentation":"<p>An object that represents a type of connection pool.</p>"
+        },
+        "tcp":{
+          "shape":"VirtualNodeTcpConnectionPool",
+          "documentation":"<p>An object that represents a type of connection pool.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the type of virtual node connection pool.</p> <p>Only one protocol is used at a time and should be the same protocol as the one chosen under port mapping.</p> <p>If not present the default value for <code>maxPendingRequests</code> is <code>2147483647</code>.</p> <p/>",
+      "union":true
+    },
+    "VirtualNodeData":{
+      "type":"structure",
+      "required":[
+        "meshName",
+        "metadata",
+        "spec",
+        "status",
+        "virtualNodeName"
+      ],
+      "members":{
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh that the virtual node resides in.</p>"
+        },
+        "metadata":{
+          "shape":"ResourceMetadata",
+          "documentation":"<p>The associated metadata for the virtual node.</p>"
+        },
+        "spec":{
+          "shape":"VirtualNodeSpec",
+          "documentation":"<p>The specifications of the virtual node.</p>"
+        },
+        "status":{
+          "shape":"VirtualNodeStatus",
+          "documentation":"<p>The current status for the virtual node.</p>"
+        },
+        "virtualNodeName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the virtual node.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a virtual node returned by a describe operation.</p>"
+    },
+    "VirtualNodeGrpcConnectionPool":{
+      "type":"structure",
+      "required":["maxRequests"],
+      "members":{
+        "maxRequests":{
+          "shape":"MaxRequests",
+          "documentation":"<p>Maximum number of inflight requests Envoy can concurrently support across hosts in upstream cluster.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a type of connection pool.</p>"
+    },
+    "VirtualNodeHttp2ConnectionPool":{
+      "type":"structure",
+      "required":["maxRequests"],
+      "members":{
+        "maxRequests":{
+          "shape":"MaxRequests",
+          "documentation":"<p>Maximum number of inflight requests Envoy can concurrently support across hosts in upstream cluster.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a type of connection pool.</p>"
+    },
+    "VirtualNodeHttpConnectionPool":{
+      "type":"structure",
+      "required":["maxConnections"],
+      "members":{
+        "maxConnections":{
+          "shape":"MaxConnections",
+          "documentation":"<p>Maximum number of outbound TCP connections Envoy can establish concurrently with all hosts in upstream cluster.</p>"
+        },
+        "maxPendingRequests":{
+          "shape":"MaxPendingRequests",
+          "documentation":"<p>Number of overflowing requests after <code>max_connections</code> Envoy will queue to upstream cluster.</p>",
+          "box":true
+        }
+      },
+      "documentation":"<p>An object that represents a type of connection pool.</p>"
+    },
+    "VirtualNodeList":{
+      "type":"list",
+      "member":{"shape":"VirtualNodeRef"}
+    },
+    "VirtualNodeRef":{
+      "type":"structure",
+      "required":[
+        "arn",
+        "createdAt",
+        "lastUpdatedAt",
+        "meshName",
+        "meshOwner",
+        "resourceOwner",
+        "version",
+        "virtualNodeName"
+      ],
+      "members":{
+        "arn":{
+          "shape":"Arn",
+          "documentation":"<p>The full Amazon Resource Name (ARN) for the virtual node.</p>"
+        },
+        "createdAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The Unix epoch timestamp in seconds for when the resource was created.</p>"
+        },
+        "lastUpdatedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The Unix epoch timestamp in seconds for when the resource was last updated.</p>"
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh that the virtual node resides in.</p>"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>"
+        },
+        "resourceOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the resource owner. If the account ID is not your own, then it's the ID of the mesh owner or of another account that the mesh is shared with. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>"
+        },
+        "version":{
+          "shape":"Long",
+          "documentation":"<p>The version of the resource. Resources are created at version 1, and this version is incremented each time that they're updated.</p>"
+        },
+        "virtualNodeName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the virtual node.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a virtual node returned by a list operation.</p>"
+    },
+    "VirtualNodeServiceProvider":{
+      "type":"structure",
+      "required":["virtualNodeName"],
+      "members":{
+        "virtualNodeName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the virtual node that is acting as a service provider.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a virtual node service provider.</p>"
+    },
+    "VirtualNodeSpec":{
+      "type":"structure",
+      "members":{
+        "backendDefaults":{
+          "shape":"BackendDefaults",
+          "documentation":"<p>A reference to an object that represents the defaults for backends.</p>"
+        },
+        "backends":{
+          "shape":"Backends",
+          "documentation":"<p>The backends that the virtual node is expected to send outbound traffic to.</p>"
+        },
+        "listeners":{
+          "shape":"Listeners",
+          "documentation":"<p>The listener that the virtual node is expected to receive inbound traffic from. You can specify one listener.</p>"
+        },
+        "logging":{
+          "shape":"Logging",
+          "documentation":"<p>The inbound and outbound access logging information for the virtual node.</p>"
+        },
+        "serviceDiscovery":{
+          "shape":"ServiceDiscovery",
+          "documentation":"<p>The service discovery information for the virtual node. If your virtual node does not expect ingress traffic, you can omit this parameter. If you specify a <code>listener</code>, then you must specify service discovery information.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the specification of a virtual node.</p>"
+    },
+    "VirtualNodeStatus":{
+      "type":"structure",
+      "required":["status"],
+      "members":{
+        "status":{
+          "shape":"VirtualNodeStatusCode",
+          "documentation":"<p>The current status of the virtual node.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the current status of the virtual node.</p>"
+    },
+    "VirtualNodeStatusCode":{
+      "type":"string",
+      "enum":[
+        "ACTIVE",
+        "INACTIVE",
+        "DELETED"
+      ]
+    },
+    "VirtualNodeTcpConnectionPool":{
+      "type":"structure",
+      "required":["maxConnections"],
+      "members":{
+        "maxConnections":{
+          "shape":"MaxConnections",
+          "documentation":"<p>Maximum number of outbound TCP connections Envoy can establish concurrently with all hosts in upstream cluster.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a type of connection pool.</p>"
+    },
+    "VirtualRouterData":{
+      "type":"structure",
+      "required":[
+        "meshName",
+        "metadata",
+        "spec",
+        "status",
+        "virtualRouterName"
+      ],
+      "members":{
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh that the virtual router resides in.</p>"
+        },
+        "metadata":{
+          "shape":"ResourceMetadata",
+          "documentation":"<p>The associated metadata for the virtual router.</p>"
+        },
+        "spec":{
+          "shape":"VirtualRouterSpec",
+          "documentation":"<p>The specifications of the virtual router.</p>"
+        },
+        "status":{
+          "shape":"VirtualRouterStatus",
+          "documentation":"<p>The current status of the virtual router.</p>"
+        },
+        "virtualRouterName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the virtual router.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a virtual router returned by a describe operation.</p>"
+    },
+    "VirtualRouterList":{
+      "type":"list",
+      "member":{"shape":"VirtualRouterRef"}
+    },
+    "VirtualRouterListener":{
+      "type":"structure",
+      "required":["portMapping"],
+      "members":{
+        "portMapping":{"shape":"PortMapping"}
+      },
+      "documentation":"<p>An object that represents a virtual router listener.</p>"
+    },
+    "VirtualRouterListeners":{
+      "type":"list",
+      "member":{"shape":"VirtualRouterListener"},
+      "max":1,
+      "min":1
+    },
+    "VirtualRouterRef":{
+      "type":"structure",
+      "required":[
+        "arn",
+        "createdAt",
+        "lastUpdatedAt",
+        "meshName",
+        "meshOwner",
+        "resourceOwner",
+        "version",
+        "virtualRouterName"
+      ],
+      "members":{
+        "arn":{
+          "shape":"Arn",
+          "documentation":"<p>The full Amazon Resource Name (ARN) for the virtual router.</p>"
+        },
+        "createdAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The Unix epoch timestamp in seconds for when the resource was created.</p>"
+        },
+        "lastUpdatedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The Unix epoch timestamp in seconds for when the resource was last updated.</p>"
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh that the virtual router resides in.</p>"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>"
+        },
+        "resourceOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the resource owner. If the account ID is not your own, then it's the ID of the mesh owner or of another account that the mesh is shared with. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>"
+        },
+        "version":{
+          "shape":"Long",
+          "documentation":"<p>The version of the resource. Resources are created at version 1, and this version is incremented each time that they're updated.</p>"
+        },
+        "virtualRouterName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the virtual router.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a virtual router returned by a list operation.</p>"
+    },
+    "VirtualRouterServiceProvider":{
+      "type":"structure",
+      "required":["virtualRouterName"],
+      "members":{
+        "virtualRouterName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the virtual router that is acting as a service provider.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a virtual node service provider.</p>"
+    },
+    "VirtualRouterSpec":{
+      "type":"structure",
+      "members":{
+        "listeners":{
+          "shape":"VirtualRouterListeners",
+          "documentation":"<p>The listeners that the virtual router is expected to receive inbound traffic from. You can specify one listener.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the specification of a virtual router.</p>"
+    },
+    "VirtualRouterStatus":{
+      "type":"structure",
+      "required":["status"],
+      "members":{
+        "status":{
+          "shape":"VirtualRouterStatusCode",
+          "documentation":"<p>The current status of the virtual router.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the status of a virtual router. </p>"
+    },
+    "VirtualRouterStatusCode":{
+      "type":"string",
+      "enum":[
+        "ACTIVE",
+        "INACTIVE",
+        "DELETED"
+      ]
+    },
+    "VirtualServiceBackend":{
+      "type":"structure",
+      "required":["virtualServiceName"],
+      "members":{
+        "clientPolicy":{
+          "shape":"ClientPolicy",
+          "documentation":"<p>A reference to an object that represents the client policy for a backend.</p>"
+        },
+        "virtualServiceName":{
+          "shape":"ServiceName",
+          "documentation":"<p>The name of the virtual service that is acting as a virtual node backend.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a virtual service backend for a virtual node.</p>"
+    },
+    "VirtualServiceData":{
+      "type":"structure",
+      "required":[
+        "meshName",
+        "metadata",
+        "spec",
+        "status",
+        "virtualServiceName"
+      ],
+      "members":{
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh that the virtual service resides in.</p>"
+        },
+        "metadata":{"shape":"ResourceMetadata"},
+        "spec":{
+          "shape":"VirtualServiceSpec",
+          "documentation":"<p>The specifications of the virtual service.</p>"
+        },
+        "status":{
+          "shape":"VirtualServiceStatus",
+          "documentation":"<p>The current status of the virtual service.</p>"
+        },
+        "virtualServiceName":{
+          "shape":"ServiceName",
+          "documentation":"<p>The name of the virtual service.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a virtual service returned by a describe operation.</p>"
+    },
+    "VirtualServiceList":{
+      "type":"list",
+      "member":{"shape":"VirtualServiceRef"}
+    },
+    "VirtualServiceProvider":{
+      "type":"structure",
+      "members":{
+        "virtualNode":{
+          "shape":"VirtualNodeServiceProvider",
+          "documentation":"<p>The virtual node associated with a virtual service.</p>"
+        },
+        "virtualRouter":{
+          "shape":"VirtualRouterServiceProvider",
+          "documentation":"<p>The virtual router associated with a virtual service.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the provider for a virtual service.</p>",
+      "union":true
+    },
+    "VirtualServiceRef":{
+      "type":"structure",
+      "required":[
+        "arn",
+        "createdAt",
+        "lastUpdatedAt",
+        "meshName",
+        "meshOwner",
+        "resourceOwner",
+        "version",
+        "virtualServiceName"
+      ],
+      "members":{
+        "arn":{
+          "shape":"Arn",
+          "documentation":"<p>The full Amazon Resource Name (ARN) for the virtual service.</p>"
+        },
+        "createdAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The Unix epoch timestamp in seconds for when the resource was created.</p>"
+        },
+        "lastUpdatedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The Unix epoch timestamp in seconds for when the resource was last updated.</p>"
+        },
+        "meshName":{
+          "shape":"ResourceName",
+          "documentation":"<p>The name of the service mesh that the virtual service resides in.</p>"
+        },
+        "meshOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the service mesh owner. If the account ID is not your own, then it's the ID of the account that shared the mesh with your account. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>"
+        },
+        "resourceOwner":{
+          "shape":"AccountId",
+          "documentation":"<p>The AWS IAM account ID of the resource owner. If the account ID is not your own, then it's the ID of the mesh owner or of another account that the mesh is shared with. For more information about mesh sharing, see <a href=\"https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html\">Working with shared meshes</a>.</p>"
+        },
+        "version":{
+          "shape":"Long",
+          "documentation":"<p>The version of the resource. Resources are created at version 1, and this version is incremented each time that they're updated.</p>"
+        },
+        "virtualServiceName":{
+          "shape":"ServiceName",
+          "documentation":"<p>The name of the virtual service.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a virtual service returned by a list operation.</p>"
+    },
+    "VirtualServiceSpec":{
+      "type":"structure",
+      "members":{
+        "provider":{
+          "shape":"VirtualServiceProvider",
+          "documentation":"<p>The App Mesh object that is acting as the provider for a virtual service. You can specify a single virtual node or virtual router.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the specification of a virtual service.</p>"
+    },
+    "VirtualServiceStatus":{
+      "type":"structure",
+      "required":["status"],
+      "members":{
+        "status":{
+          "shape":"VirtualServiceStatusCode",
+          "documentation":"<p>The current status of the virtual service.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents the status of a virtual service.</p>"
+    },
+    "VirtualServiceStatusCode":{
+      "type":"string",
+      "enum":[
+        "ACTIVE",
+        "INACTIVE",
+        "DELETED"
+      ]
+    },
+    "WeightedTarget":{
+      "type":"structure",
+      "required":[
+        "virtualNode",
+        "weight"
+      ],
+      "members":{
+        "virtualNode":{
+          "shape":"ResourceName",
+          "documentation":"<p>The virtual node to associate with the weighted target.</p>"
+        },
+        "weight":{
+          "shape":"PercentInt",
+          "documentation":"<p>The relative weight of the weighted target.</p>"
+        }
+      },
+      "documentation":"<p>An object that represents a target and its relative weight. Traffic is distributed across targets according to their relative weight. For example, a weighted target with a relative weight of 50 receives five times as much traffic as one with a relative weight of 10. The total weight for all targets combined must be less than or equal to 100.</p>"
+    },
+    "WeightedTargets":{
+      "type":"list",
+      "member":{"shape":"WeightedTarget"},
+      "max":10,
+      "min":1
+    }
+  },
+  "documentation":"<p>App Mesh is a service mesh based on the Envoy proxy that makes it easy to monitor and control microservices. App Mesh standardizes how your microservices communicate, giving you end-to-end visibility and helping to ensure high availability for your applications.</p> <p>App Mesh gives you consistent visibility and network traffic controls for every microservice in an application. You can use App Mesh with Amazon Web Services Fargate, Amazon ECS, Amazon EKS, Kubernetes on Amazon Web Services, and Amazon EC2.</p> <note> <p>App Mesh supports microservice applications that use service discovery naming for their components. For more information about service discovery on Amazon ECS, see <a href=\"https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html\">Service Discovery</a> in the <i>Amazon Elastic Container Service Developer Guide</i>. Kubernetes <code>kube-dns</code> and <code>coredns</code> are supported. For more information, see <a href=\"https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/\">DNS for Services and Pods</a> in the Kubernetes documentation.</p> </note>"
+}

+ 3 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/apprunner/2020-05-15/paginators-1.json

@@ -0,0 +1,3 @@
+{
+  "pagination": {}
+}

+ 1897 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/apprunner/2020-05-15/service-2.json

@@ -0,0 +1,1897 @@
+{
+  "version":"2.0",
+  "metadata":{
+    "apiVersion":"2020-05-15",
+    "endpointPrefix":"apprunner",
+    "jsonVersion":"1.0",
+    "protocol":"json",
+    "serviceFullName":"AWS App Runner",
+    "serviceId":"AppRunner",
+    "signatureVersion":"v4",
+    "signingName":"apprunner",
+    "targetPrefix":"AppRunner",
+    "uid":"apprunner-2020-05-15"
+  },
+  "operations":{
+    "AssociateCustomDomain":{
+      "name":"AssociateCustomDomain",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"AssociateCustomDomainRequest"},
+      "output":{"shape":"AssociateCustomDomainResponse"},
+      "errors":[
+        {"shape":"InvalidRequestException"},
+        {"shape":"InternalServiceErrorException"},
+        {"shape":"InvalidStateException"}
+      ],
+      "documentation":"<p>Associate your own domain name with the AWS App Runner subdomain URL of your App Runner service.</p> <p>After you call <code>AssociateCustomDomain</code> and receive a successful response, use the information in the <a>CustomDomain</a> record that's returned to add CNAME records to your Domain Name System (DNS). For each mapped domain name, add a mapping to the target App Runner subdomain and one or more certificate validation records. App Runner then performs DNS validation to verify that you own or control the domain name that you associated. App Runner tracks domain validity in a certificate stored in <a href=\"https://docs.aws.amazon.com/acm/latest/userguide\">AWS Certificate Manager (ACM)</a>.</p>"
+    },
+    "CreateAutoScalingConfiguration":{
+      "name":"CreateAutoScalingConfiguration",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateAutoScalingConfigurationRequest"},
+      "output":{"shape":"CreateAutoScalingConfigurationResponse"},
+      "errors":[
+        {"shape":"InvalidRequestException"},
+        {"shape":"InternalServiceErrorException"},
+        {"shape":"ServiceQuotaExceededException"}
+      ],
+      "documentation":"<p>Create an AWS App Runner automatic scaling configuration resource. App Runner requires this resource when you create App Runner services that require non-default auto scaling settings. You can share an auto scaling configuration across multiple services.</p> <p>Create multiple revisions of a configuration by using the same <code>AutoScalingConfigurationName</code> and different <code>AutoScalingConfigurationRevision</code> values. When you create a service, you can set it to use the latest active revision of an auto scaling configuration or a specific revision.</p> <p>Configure a higher <code>MinSize</code> to increase the spread of your App Runner service over more Availability Zones in the AWS Region. The tradeoff is a higher minimal cost.</p> <p>Configure a lower <code>MaxSize</code> to control your cost. The tradeoff is lower responsiveness during peak demand.</p>"
+    },
+    "CreateConnection":{
+      "name":"CreateConnection",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateConnectionRequest"},
+      "output":{"shape":"CreateConnectionResponse"},
+      "errors":[
+        {"shape":"InvalidRequestException"},
+        {"shape":"InternalServiceErrorException"},
+        {"shape":"ServiceQuotaExceededException"}
+      ],
+      "documentation":"<p>Create an AWS App Runner connection resource. App Runner requires a connection resource when you create App Runner services that access private repositories from certain third-party providers. You can share a connection across multiple services.</p> <p>A connection resource is needed to access GitHub repositories. GitHub requires a user interface approval process through the App Runner console before you can use the connection.</p>"
+    },
+    "CreateService":{
+      "name":"CreateService",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateServiceRequest"},
+      "output":{"shape":"CreateServiceResponse"},
+      "errors":[
+        {"shape":"InvalidRequestException"},
+        {"shape":"InternalServiceErrorException"},
+        {"shape":"ServiceQuotaExceededException"}
+      ],
+      "documentation":"<p>Create an AWS App Runner service. After the service is created, the action also automatically starts a deployment.</p> <p>This is an asynchronous operation. On a successful call, you can use the returned <code>OperationId</code> and the <a href=\"https://docs.aws.amazon.com/apprunner/latest/api/API_ListOperations.html\">ListOperations</a> call to track the operation's progress.</p>"
+    },
+    "DeleteAutoScalingConfiguration":{
+      "name":"DeleteAutoScalingConfiguration",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteAutoScalingConfigurationRequest"},
+      "output":{"shape":"DeleteAutoScalingConfigurationResponse"},
+      "errors":[
+        {"shape":"InvalidRequestException"},
+        {"shape":"InternalServiceErrorException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Delete an AWS App Runner automatic scaling configuration resource. You can delete a specific revision or the latest active revision. You can't delete a configuration that's used by one or more App Runner services.</p>"
+    },
+    "DeleteConnection":{
+      "name":"DeleteConnection",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteConnectionRequest"},
+      "output":{"shape":"DeleteConnectionResponse"},
+      "errors":[
+        {"shape":"InvalidRequestException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InternalServiceErrorException"}
+      ],
+      "documentation":"<p>Delete an AWS App Runner connection. You must first ensure that there are no running App Runner services that use this connection. If there are any, the <code>DeleteConnection</code> action fails.</p>"
+    },
+    "DeleteService":{
+      "name":"DeleteService",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteServiceRequest"},
+      "output":{"shape":"DeleteServiceResponse"},
+      "errors":[
+        {"shape":"InvalidRequestException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidStateException"},
+        {"shape":"InternalServiceErrorException"}
+      ],
+      "documentation":"<p>Delete an AWS App Runner service.</p> <p>This is an asynchronous operation. On a successful call, you can use the returned <code>OperationId</code> and the <a>ListOperations</a> call to track the operation's progress.</p>"
+    },
+    "DescribeAutoScalingConfiguration":{
+      "name":"DescribeAutoScalingConfiguration",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeAutoScalingConfigurationRequest"},
+      "output":{"shape":"DescribeAutoScalingConfigurationResponse"},
+      "errors":[
+        {"shape":"InvalidRequestException"},
+        {"shape":"InternalServiceErrorException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Return a full description of an AWS App Runner automatic scaling configuration resource.</p>"
+    },
+    "DescribeCustomDomains":{
+      "name":"DescribeCustomDomains",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeCustomDomainsRequest"},
+      "output":{"shape":"DescribeCustomDomainsResponse"},
+      "errors":[
+        {"shape":"InvalidRequestException"},
+        {"shape":"InternalServiceErrorException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Return a description of custom domain names that are associated with an AWS App Runner service.</p>"
+    },
+    "DescribeService":{
+      "name":"DescribeService",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeServiceRequest"},
+      "output":{"shape":"DescribeServiceResponse"},
+      "errors":[
+        {"shape":"InvalidRequestException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InternalServiceErrorException"}
+      ],
+      "documentation":"<p>Return a full description of an AWS App Runner service.</p>"
+    },
+    "DisassociateCustomDomain":{
+      "name":"DisassociateCustomDomain",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DisassociateCustomDomainRequest"},
+      "output":{"shape":"DisassociateCustomDomainResponse"},
+      "errors":[
+        {"shape":"InvalidRequestException"},
+        {"shape":"InternalServiceErrorException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidStateException"}
+      ],
+      "documentation":"<p>Disassociate a custom domain name from an AWS App Runner service.</p> <p>Certificates tracking domain validity are associated with a custom domain and are stored in <a href=\"https://docs.aws.amazon.com/acm/latest/userguide\">AWS Certificate Manager (ACM)</a>. These certificates aren't deleted as part of this action. App Runner delays certificate deletion for 30 days after a domain is disassociated from your service.</p>"
+    },
+    "ListAutoScalingConfigurations":{
+      "name":"ListAutoScalingConfigurations",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListAutoScalingConfigurationsRequest"},
+      "output":{"shape":"ListAutoScalingConfigurationsResponse"},
+      "errors":[
+        {"shape":"InvalidRequestException"},
+        {"shape":"InternalServiceErrorException"}
+      ],
+      "documentation":"<p>Returns a list of AWS App Runner automatic scaling configurations in your AWS account. You can query the revisions for a specific configuration name or the revisions for all configurations in your account. You can optionally query only the latest revision of each requested name.</p>"
+    },
+    "ListConnections":{
+      "name":"ListConnections",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListConnectionsRequest"},
+      "output":{"shape":"ListConnectionsResponse"},
+      "errors":[
+        {"shape":"InvalidRequestException"},
+        {"shape":"InternalServiceErrorException"}
+      ],
+      "documentation":"<p>Returns a list of AWS App Runner connections that are associated with your AWS account.</p>"
+    },
+    "ListOperations":{
+      "name":"ListOperations",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListOperationsRequest"},
+      "output":{"shape":"ListOperationsResponse"},
+      "errors":[
+        {"shape":"InvalidRequestException"},
+        {"shape":"InternalServiceErrorException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Return a list of operations that occurred on an AWS App Runner service.</p> <p>The resulting list of <a>OperationSummary</a> objects is sorted in reverse chronological order. The first object on the list represents the last started operation.</p>"
+    },
+    "ListServices":{
+      "name":"ListServices",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListServicesRequest"},
+      "output":{"shape":"ListServicesResponse"},
+      "errors":[
+        {"shape":"InvalidRequestException"},
+        {"shape":"InternalServiceErrorException"}
+      ],
+      "documentation":"<p>Returns a list of running AWS App Runner services in your AWS account.</p>"
+    },
+    "ListTagsForResource":{
+      "name":"ListTagsForResource",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListTagsForResourceRequest"},
+      "output":{"shape":"ListTagsForResourceResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InternalServiceErrorException"},
+        {"shape":"InvalidRequestException"},
+        {"shape":"InvalidStateException"}
+      ],
+      "documentation":"<p>List tags that are associated with for an AWS App Runner resource. The response contains a list of tag key-value pairs.</p>"
+    },
+    "PauseService":{
+      "name":"PauseService",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"PauseServiceRequest"},
+      "output":{"shape":"PauseServiceResponse"},
+      "errors":[
+        {"shape":"InvalidRequestException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InternalServiceErrorException"},
+        {"shape":"InvalidStateException"}
+      ],
+      "documentation":"<p>Pause an active AWS App Runner service. App Runner reduces compute capacity for the service to zero and loses state (for example, ephemeral storage is removed).</p> <p>This is an asynchronous operation. On a successful call, you can use the returned <code>OperationId</code> and the <a>ListOperations</a> call to track the operation's progress.</p>"
+    },
+    "ResumeService":{
+      "name":"ResumeService",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ResumeServiceRequest"},
+      "output":{"shape":"ResumeServiceResponse"},
+      "errors":[
+        {"shape":"InvalidRequestException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InternalServiceErrorException"},
+        {"shape":"InvalidStateException"}
+      ],
+      "documentation":"<p>Resume an active AWS App Runner service. App Runner provisions compute capacity for the service.</p> <p>This is an asynchronous operation. On a successful call, you can use the returned <code>OperationId</code> and the <a>ListOperations</a> call to track the operation's progress.</p>"
+    },
+    "StartDeployment":{
+      "name":"StartDeployment",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"StartDeploymentRequest"},
+      "output":{"shape":"StartDeploymentResponse"},
+      "errors":[
+        {"shape":"InvalidRequestException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InternalServiceErrorException"}
+      ],
+      "documentation":"<p>Initiate a manual deployment of the latest commit in a source code repository or the latest image in a source image repository to an AWS App Runner service.</p> <p>For a source code repository, App Runner retrieves the commit and builds a Docker image. For a source image repository, App Runner retrieves the latest Docker image. In both cases, App Runner then deploys the new image to your service and starts a new container instance.</p> <p>This is an asynchronous operation. On a successful call, you can use the returned <code>OperationId</code> and the <a>ListOperations</a> call to track the operation's progress.</p>"
+    },
+    "TagResource":{
+      "name":"TagResource",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"TagResourceRequest"},
+      "output":{"shape":"TagResourceResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InternalServiceErrorException"},
+        {"shape":"InvalidRequestException"},
+        {"shape":"InvalidStateException"}
+      ],
+      "documentation":"<p>Add tags to, or update the tag values of, an App Runner resource. A tag is a key-value pair.</p>"
+    },
+    "UntagResource":{
+      "name":"UntagResource",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UntagResourceRequest"},
+      "output":{"shape":"UntagResourceResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InternalServiceErrorException"},
+        {"shape":"InvalidRequestException"},
+        {"shape":"InvalidStateException"}
+      ],
+      "documentation":"<p>Remove tags from an App Runner resource.</p>"
+    },
+    "UpdateService":{
+      "name":"UpdateService",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UpdateServiceRequest"},
+      "output":{"shape":"UpdateServiceResponse"},
+      "errors":[
+        {"shape":"InvalidRequestException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidStateException"},
+        {"shape":"InternalServiceErrorException"}
+      ],
+      "documentation":"<p>Update an AWS App Runner service. You can update the source configuration and instance configuration of the service. You can also update the ARN of the auto scaling configuration resource that's associated with the service. However, you can't change the name or the encryption configuration of the service. These can be set only when you create the service.</p> <p>To update the tags applied to your service, use the separate actions <a>TagResource</a> and <a>UntagResource</a>.</p> <p>This is an asynchronous operation. On a successful call, you can use the returned <code>OperationId</code> and the <a>ListOperations</a> call to track the operation's progress.</p>"
+    }
+  },
+  "shapes":{
+    "ASConfigMaxConcurrency":{
+      "type":"integer",
+      "max":200,
+      "min":1
+    },
+    "ASConfigMaxSize":{
+      "type":"integer",
+      "max":25,
+      "min":1
+    },
+    "ASConfigMinSize":{
+      "type":"integer",
+      "max":25,
+      "min":1
+    },
+    "AppRunnerResourceArn":{
+      "type":"string",
+      "max":1011,
+      "min":1,
+      "pattern":"arn:aws(-[\\w]+)*:[a-z0-9-\\\\.]{0,63}:[a-z0-9-\\\\.]{0,63}:[0-9]{12}:(\\w|\\/|-){1,1011}"
+    },
+    "AssociateCustomDomainRequest":{
+      "type":"structure",
+      "required":[
+        "ServiceArn",
+        "DomainName"
+      ],
+      "members":{
+        "ServiceArn":{
+          "shape":"AppRunnerResourceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the App Runner service that you want to associate a custom domain name with.</p>"
+        },
+        "DomainName":{
+          "shape":"DomainName",
+          "documentation":"<p>A custom domain endpoint to associate. Specify a root domain (for example, <code>example.com</code>), a subdomain (for example, <code>login.example.com</code> or <code>admin.login.example.com</code>), or a wildcard (for example, <code>*.example.com</code>).</p>"
+        },
+        "EnableWWWSubdomain":{
+          "shape":"NullableBoolean",
+          "documentation":"<p>Set to <code>true</code> to associate the subdomain <code>www.<i>DomainName</i> </code> with the App Runner service in addition to the base domain.</p> <p>Default: <code>true</code> </p>"
+        }
+      }
+    },
+    "AssociateCustomDomainResponse":{
+      "type":"structure",
+      "required":[
+        "DNSTarget",
+        "ServiceArn",
+        "CustomDomain"
+      ],
+      "members":{
+        "DNSTarget":{
+          "shape":"String",
+          "documentation":"<p>The App Runner subdomain of the App Runner service. The custom domain name is mapped to this target name.</p>"
+        },
+        "ServiceArn":{
+          "shape":"AppRunnerResourceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the App Runner service with which a custom domain name is associated.</p>"
+        },
+        "CustomDomain":{
+          "shape":"CustomDomain",
+          "documentation":"<p>A description of the domain name that's being associated.</p>"
+        }
+      }
+    },
+    "AuthenticationConfiguration":{
+      "type":"structure",
+      "members":{
+        "ConnectionArn":{
+          "shape":"AppRunnerResourceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the App Runner connection that enables the App Runner service to connect to a source repository. It's required for GitHub code repositories.</p>"
+        },
+        "AccessRoleArn":{
+          "shape":"RoleArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the IAM role that grants the App Runner service access to a source repository. It's required for ECR image repositories (but not for ECR Public repositories).</p>"
+        }
+      },
+      "documentation":"<p>Describes resources needed to authenticate access to some source repositories. The specific resource depends on the repository provider.</p>"
+    },
+    "AutoScalingConfiguration":{
+      "type":"structure",
+      "members":{
+        "AutoScalingConfigurationArn":{
+          "shape":"AppRunnerResourceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of this auto scaling configuration.</p>"
+        },
+        "AutoScalingConfigurationName":{
+          "shape":"AutoScalingConfigurationName",
+          "documentation":"<p>The customer-provided auto scaling configuration name. It can be used in multiple revisions of a configuration.</p>"
+        },
+        "AutoScalingConfigurationRevision":{
+          "shape":"Integer",
+          "documentation":"<p>The revision of this auto scaling configuration. It's unique among all the active configurations (<code>\"Status\": \"ACTIVE\"</code>) that share the same <code>AutoScalingConfigurationName</code>.</p>"
+        },
+        "Latest":{
+          "shape":"Boolean",
+          "documentation":"<p>It's set to <code>true</code> for the configuration with the highest <code>Revision</code> among all configurations that share the same <code>Name</code>. It's set to <code>false</code> otherwise.</p>"
+        },
+        "Status":{
+          "shape":"AutoScalingConfigurationStatus",
+          "documentation":"<p>The current state of the auto scaling configuration. If the status of a configuration revision is <code>INACTIVE</code>, it was deleted and can't be used. Inactive configuration revisions are permanently removed some time after they are deleted.</p>"
+        },
+        "MaxConcurrency":{
+          "shape":"Integer",
+          "documentation":"<p>The maximum number of concurrent requests that an instance processes. If the number of concurrent requests exceeds this limit, App Runner scales the service up.</p>"
+        },
+        "MinSize":{
+          "shape":"Integer",
+          "documentation":"<p>The minimum number of instances that App Runner provisions for a service. The service always has at least <code>MinSize</code> provisioned instances. Some of them actively serve traffic. The rest of them (provisioned and inactive instances) are a cost-effective compute capacity reserve and are ready to be quickly activated. You pay for memory usage of all the provisioned instances. You pay for CPU usage of only the active subset.</p> <p>App Runner temporarily doubles the number of provisioned instances during deployments, to maintain the same capacity for both old and new code.</p>"
+        },
+        "MaxSize":{
+          "shape":"Integer",
+          "documentation":"<p>The maximum number of instances that a service scales up to. At most <code>MaxSize</code> instances actively serve traffic for your service.</p>"
+        },
+        "CreatedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time when the auto scaling configuration was created. It's in Unix time stamp format.</p>"
+        },
+        "DeletedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time when the auto scaling configuration was deleted. It's in Unix time stamp format.</p>"
+        }
+      },
+      "documentation":"<p>Describes an AWS App Runner automatic scaling configuration resource. Multiple revisions of a configuration have the same <code>AutoScalingConfigurationName</code> and different <code>AutoScalingConfigurationRevision</code> values.</p> <p>A higher <code>MinSize</code> increases the spread of your App Runner service over more Availability Zones in the AWS Region. The tradeoff is a higher minimal cost.</p> <p>A lower <code>MaxSize</code> controls your cost. The tradeoff is lower responsiveness during peak demand.</p>"
+    },
+    "AutoScalingConfigurationName":{
+      "type":"string",
+      "max":32,
+      "min":4,
+      "pattern":"[A-Za-z0-9][A-Za-z0-9\\-_]{3,31}"
+    },
+    "AutoScalingConfigurationStatus":{
+      "type":"string",
+      "enum":[
+        "ACTIVE",
+        "INACTIVE"
+      ]
+    },
+    "AutoScalingConfigurationSummary":{
+      "type":"structure",
+      "members":{
+        "AutoScalingConfigurationArn":{
+          "shape":"AppRunnerResourceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of this auto scaling configuration.</p>"
+        },
+        "AutoScalingConfigurationName":{
+          "shape":"AutoScalingConfigurationName",
+          "documentation":"<p>The customer-provided auto scaling configuration name. It can be used in multiple revisions of a configuration.</p>"
+        },
+        "AutoScalingConfigurationRevision":{
+          "shape":"Integer",
+          "documentation":"<p>The revision of this auto scaling configuration. It's unique among all the active configurations (<code>\"Status\": \"ACTIVE\"</code>) with the same <code>AutoScalingConfigurationName</code>.</p>"
+        }
+      },
+      "documentation":"<p>Provides summary information about an AWS App Runner automatic scaling configuration resource.</p> <p>This type contains limited information about an auto scaling configuration. It includes only identification information, without configuration details. It's returned by the <a>ListAutoScalingConfigurations</a> action. Complete configuration information is returned by the <a>CreateAutoScalingConfiguration</a>, <a>DescribeAutoScalingConfiguration</a>, and <a>DeleteAutoScalingConfiguration</a> actions using the <a>AutoScalingConfiguration</a> type.</p>"
+    },
+    "AutoScalingConfigurationSummaryList":{
+      "type":"list",
+      "member":{"shape":"AutoScalingConfigurationSummary"}
+    },
+    "Boolean":{"type":"boolean"},
+    "BuildCommand":{
+      "type":"string",
+      "sensitive":true
+    },
+    "CertificateValidationRecord":{
+      "type":"structure",
+      "members":{
+        "Name":{
+          "shape":"String",
+          "documentation":"<p>The certificate CNAME record name.</p>"
+        },
+        "Type":{
+          "shape":"String",
+          "documentation":"<p>The record type, always <code>CNAME</code>.</p>"
+        },
+        "Value":{
+          "shape":"String",
+          "documentation":"<p>The certificate CNAME record value.</p>"
+        },
+        "Status":{
+          "shape":"CertificateValidationRecordStatus",
+          "documentation":"<p>The current state of the certificate CNAME record validation. It should change to <code>SUCCESS</code> after App Runner completes validation with your DNS.</p>"
+        }
+      },
+      "documentation":"<p>Describes a certificate CNAME record to add to your DNS. For more information, see <a href=\"https://docs.aws.amazon.com/apprunner/latest/api/API_AssociateCustomDomain.html\">AssociateCustomDomain</a>.</p>"
+    },
+    "CertificateValidationRecordList":{
+      "type":"list",
+      "member":{"shape":"CertificateValidationRecord"}
+    },
+    "CertificateValidationRecordStatus":{
+      "type":"string",
+      "enum":[
+        "PENDING_VALIDATION",
+        "SUCCESS",
+        "FAILED"
+      ]
+    },
+    "CodeConfiguration":{
+      "type":"structure",
+      "required":["ConfigurationSource"],
+      "members":{
+        "ConfigurationSource":{
+          "shape":"ConfigurationSource",
+          "documentation":"<p>The source of the App Runner configuration. Values are interpreted as follows:</p> <ul> <li> <p> <code>REPOSITORY</code> – App Runner reads configuration values from the <code>apprunner.yaml</code> file in the source code repository and ignores <code>CodeConfigurationValues</code>.</p> </li> <li> <p> <code>API</code> – App Runner uses configuration values provided in <code>CodeConfigurationValues</code> and ignores the <code>apprunner.yaml</code> file in the source code repository.</p> </li> </ul>"
+        },
+        "CodeConfigurationValues":{
+          "shape":"CodeConfigurationValues",
+          "documentation":"<p>The basic configuration for building and running the App Runner service. Use it to quickly launch an App Runner service without providing a <code>apprunner.yaml</code> file in the source code repository (or ignoring the file if it exists).</p>"
+        }
+      },
+      "documentation":"<p>Describes the configuration that AWS App Runner uses to build and run an App Runner service from a source code repository.</p>"
+    },
+    "CodeConfigurationValues":{
+      "type":"structure",
+      "required":["Runtime"],
+      "members":{
+        "Runtime":{
+          "shape":"Runtime",
+          "documentation":"<p>A runtime environment type for building and running an App Runner service. It represents a programming language runtime.</p>"
+        },
+        "BuildCommand":{
+          "shape":"BuildCommand",
+          "documentation":"<p>The command App Runner runs to build your application.</p>"
+        },
+        "StartCommand":{
+          "shape":"StartCommand",
+          "documentation":"<p>The command App Runner runs to start your application.</p>"
+        },
+        "Port":{
+          "shape":"String",
+          "documentation":"<p>The port that your application listens to in the container.</p> <p>Default: <code>8080</code> </p>"
+        },
+        "RuntimeEnvironmentVariables":{
+          "shape":"RuntimeEnvironmentVariables",
+          "documentation":"<p>The environment variables that are available to your running App Runner service. An array of key-value pairs. Keys with a prefix of <code>AWSAPPRUNNER</code> are reserved for system use and aren't valid.</p>"
+        }
+      },
+      "documentation":"<p>Describes the basic configuration needed for building and running an AWS App Runner service. This type doesn't support the full set of possible configuration options. Fur full configuration capabilities, use a <code>apprunner.yaml</code> file in the source code repository.</p>"
+    },
+    "CodeRepository":{
+      "type":"structure",
+      "required":[
+        "RepositoryUrl",
+        "SourceCodeVersion"
+      ],
+      "members":{
+        "RepositoryUrl":{
+          "shape":"String",
+          "documentation":"<p>The location of the repository that contains the source code.</p>"
+        },
+        "SourceCodeVersion":{
+          "shape":"SourceCodeVersion",
+          "documentation":"<p>The version that should be used within the source code repository.</p>"
+        },
+        "CodeConfiguration":{
+          "shape":"CodeConfiguration",
+          "documentation":"<p>Configuration for building and running the service from a source code repository.</p>"
+        }
+      },
+      "documentation":"<p>Describes a source code repository.</p>"
+    },
+    "ConfigurationSource":{
+      "type":"string",
+      "enum":[
+        "REPOSITORY",
+        "API"
+      ]
+    },
+    "Connection":{
+      "type":"structure",
+      "members":{
+        "ConnectionName":{
+          "shape":"ConnectionName",
+          "documentation":"<p>The customer-provided connection name.</p>"
+        },
+        "ConnectionArn":{
+          "shape":"AppRunnerResourceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of this connection.</p>"
+        },
+        "ProviderType":{
+          "shape":"ProviderType",
+          "documentation":"<p>The source repository provider.</p>"
+        },
+        "Status":{
+          "shape":"ConnectionStatus",
+          "documentation":"<p>The current state of the App Runner connection. When the state is <code>AVAILABLE</code>, you can use the connection to create an App Runner service.</p>"
+        },
+        "CreatedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The App Runner connection creation time, expressed as a Unix time stamp.</p>"
+        }
+      },
+      "documentation":"<p>Describes an AWS App Runner connection resource.</p>"
+    },
+    "ConnectionName":{
+      "type":"string",
+      "max":32,
+      "min":4,
+      "pattern":"[A-Za-z0-9][A-Za-z0-9\\-_]{3,31}"
+    },
+    "ConnectionStatus":{
+      "type":"string",
+      "enum":[
+        "PENDING_HANDSHAKE",
+        "AVAILABLE",
+        "ERROR",
+        "DELETED"
+      ]
+    },
+    "ConnectionSummary":{
+      "type":"structure",
+      "members":{
+        "ConnectionName":{
+          "shape":"ConnectionName",
+          "documentation":"<p>The customer-provided connection name.</p>"
+        },
+        "ConnectionArn":{
+          "shape":"AppRunnerResourceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of this connection.</p>"
+        },
+        "ProviderType":{
+          "shape":"ProviderType",
+          "documentation":"<p>The source repository provider.</p>"
+        },
+        "Status":{
+          "shape":"ConnectionStatus",
+          "documentation":"<p>The current state of the App Runner connection. When the state is <code>AVAILABLE</code>, you can use the connection to create an App Runner service.</p>"
+        },
+        "CreatedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The App Runner connection creation time, expressed as a Unix time stamp.</p>"
+        }
+      },
+      "documentation":"<p>Provides summary information about an AWS App Runner connection resource.</p>"
+    },
+    "ConnectionSummaryList":{
+      "type":"list",
+      "member":{"shape":"ConnectionSummary"}
+    },
+    "Cpu":{
+      "type":"string",
+      "max":6,
+      "min":4,
+      "pattern":"1024|2048|(1|2) vCPU"
+    },
+    "CreateAutoScalingConfigurationRequest":{
+      "type":"structure",
+      "required":["AutoScalingConfigurationName"],
+      "members":{
+        "AutoScalingConfigurationName":{
+          "shape":"AutoScalingConfigurationName",
+          "documentation":"<p>A name for the auto scaling configuration. When you use it for the first time in an AWS Region, App Runner creates revision number <code>1</code> of this name. When you use the same name in subsequent calls, App Runner creates incremental revisions of the configuration.</p>"
+        },
+        "MaxConcurrency":{
+          "shape":"ASConfigMaxConcurrency",
+          "documentation":"<p>The maximum number of concurrent requests that you want an instance to process. If the number of concurrent requests exceeds this limit, App Runner scales up your service.</p> <p>Default: <code>100</code> </p>"
+        },
+        "MinSize":{
+          "shape":"ASConfigMinSize",
+          "documentation":"<p>The minimum number of instances that App Runner provisions for your service. The service always has at least <code>MinSize</code> provisioned instances. Some of them actively serve traffic. The rest of them (provisioned and inactive instances) are a cost-effective compute capacity reserve and are ready to be quickly activated. You pay for memory usage of all the provisioned instances. You pay for CPU usage of only the active subset.</p> <p>App Runner temporarily doubles the number of provisioned instances during deployments, to maintain the same capacity for both old and new code.</p> <p>Default: <code>1</code> </p>"
+        },
+        "MaxSize":{
+          "shape":"ASConfigMaxSize",
+          "documentation":"<p>The maximum number of instances that your service scales up to. At most <code>MaxSize</code> instances actively serve traffic for your service.</p> <p>Default: <code>25</code> </p>"
+        },
+        "Tags":{
+          "shape":"TagList",
+          "documentation":"<p>A list of metadata items that you can associate with your auto scaling configuration resource. A tag is a key-value pair.</p>"
+        }
+      }
+    },
+    "CreateAutoScalingConfigurationResponse":{
+      "type":"structure",
+      "required":["AutoScalingConfiguration"],
+      "members":{
+        "AutoScalingConfiguration":{
+          "shape":"AutoScalingConfiguration",
+          "documentation":"<p>A description of the App Runner auto scaling configuration that's created by this request.</p>"
+        }
+      }
+    },
+    "CreateConnectionRequest":{
+      "type":"structure",
+      "required":[
+        "ConnectionName",
+        "ProviderType"
+      ],
+      "members":{
+        "ConnectionName":{
+          "shape":"ConnectionName",
+          "documentation":"<p>A name for the new connection. It must be unique across all App Runner connections for the AWS account in the AWS Region.</p>"
+        },
+        "ProviderType":{
+          "shape":"ProviderType",
+          "documentation":"<p>The source repository provider.</p>"
+        },
+        "Tags":{
+          "shape":"TagList",
+          "documentation":"<p>A list of metadata items that you can associate with your connection resource. A tag is a key-value pair.</p>"
+        }
+      }
+    },
+    "CreateConnectionResponse":{
+      "type":"structure",
+      "required":["Connection"],
+      "members":{
+        "Connection":{
+          "shape":"Connection",
+          "documentation":"<p>A description of the App Runner connection that's created by this request.</p>"
+        }
+      }
+    },
+    "CreateServiceRequest":{
+      "type":"structure",
+      "required":[
+        "ServiceName",
+        "SourceConfiguration"
+      ],
+      "members":{
+        "ServiceName":{
+          "shape":"ServiceName",
+          "documentation":"<p>A name for the new service. It must be unique across all the running App Runner services in your AWS account in the AWS Region.</p>"
+        },
+        "SourceConfiguration":{
+          "shape":"SourceConfiguration",
+          "documentation":"<p>The source to deploy to the App Runner service. It can be a code or an image repository.</p>"
+        },
+        "InstanceConfiguration":{
+          "shape":"InstanceConfiguration",
+          "documentation":"<p>The runtime configuration of instances (scaling units) of the App Runner service.</p>"
+        },
+        "Tags":{
+          "shape":"TagList",
+          "documentation":"<p>An optional list of metadata items that you can associate with your service resource. A tag is a key-value pair.</p>"
+        },
+        "EncryptionConfiguration":{
+          "shape":"EncryptionConfiguration",
+          "documentation":"<p>An optional custom encryption key that App Runner uses to encrypt the copy of your source repository that it maintains and your service logs. By default, App Runner uses an AWS managed CMK.</p>"
+        },
+        "HealthCheckConfiguration":{
+          "shape":"HealthCheckConfiguration",
+          "documentation":"<p>The settings for the health check that AWS App Runner performs to monitor the health of your service.</p>"
+        },
+        "AutoScalingConfigurationArn":{
+          "shape":"AppRunnerResourceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of an App Runner automatic scaling configuration resource that you want to associate with your service. If not provided, App Runner associates the latest revision of a default auto scaling configuration.</p>"
+        }
+      }
+    },
+    "CreateServiceResponse":{
+      "type":"structure",
+      "required":[
+        "Service",
+        "OperationId"
+      ],
+      "members":{
+        "Service":{
+          "shape":"Service",
+          "documentation":"<p>A description of the App Runner service that's created by this request.</p>"
+        },
+        "OperationId":{
+          "shape":"UUID",
+          "documentation":"<p>The unique ID of the asynchronous operation that this request started. You can use it combined with the <a href=\"https://docs.aws.amazon.com/apprunner/latest/api/API_ListOperations.html\">ListOperations</a> call to track the operation's progress.</p>"
+        }
+      }
+    },
+    "CustomDomain":{
+      "type":"structure",
+      "required":[
+        "DomainName",
+        "EnableWWWSubdomain",
+        "Status"
+      ],
+      "members":{
+        "DomainName":{
+          "shape":"DomainName",
+          "documentation":"<p>An associated custom domain endpoint. It can be a root domain (for example, <code>example.com</code>), a subdomain (for example, <code>login.example.com</code> or <code>admin.login.example.com</code>), or a wildcard (for example, <code>*.example.com</code>).</p>"
+        },
+        "EnableWWWSubdomain":{
+          "shape":"NullableBoolean",
+          "documentation":"<p>When <code>true</code>, the subdomain <code>www.<i>DomainName</i> </code> is associated with the App Runner service in addition to the base domain.</p>"
+        },
+        "CertificateValidationRecords":{
+          "shape":"CertificateValidationRecordList",
+          "documentation":"<p>A list of certificate CNAME records that's used for this domain name.</p>"
+        },
+        "Status":{
+          "shape":"CustomDomainAssociationStatus",
+          "documentation":"<p>The current state of the domain name association.</p>"
+        }
+      },
+      "documentation":"<p>Describes a custom domain that's associated with an AWS App Runner service.</p>"
+    },
+    "CustomDomainAssociationStatus":{
+      "type":"string",
+      "enum":[
+        "CREATING",
+        "CREATE_FAILED",
+        "ACTIVE",
+        "DELETING",
+        "DELETE_FAILED",
+        "PENDING_CERTIFICATE_DNS_VALIDATION",
+        "BINDING_CERTIFICATE"
+      ]
+    },
+    "CustomDomainList":{
+      "type":"list",
+      "member":{"shape":"CustomDomain"}
+    },
+    "DeleteAutoScalingConfigurationRequest":{
+      "type":"structure",
+      "required":["AutoScalingConfigurationArn"],
+      "members":{
+        "AutoScalingConfigurationArn":{
+          "shape":"AppRunnerResourceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the App Runner auto scaling configuration that you want to delete.</p> <p>The ARN can be a full auto scaling configuration ARN, or a partial ARN ending with either <code>.../<i>name</i> </code> or <code>.../<i>name</i>/<i>revision</i> </code>. If a revision isn't specified, the latest active revision is deleted.</p>"
+        }
+      }
+    },
+    "DeleteAutoScalingConfigurationResponse":{
+      "type":"structure",
+      "required":["AutoScalingConfiguration"],
+      "members":{
+        "AutoScalingConfiguration":{
+          "shape":"AutoScalingConfiguration",
+          "documentation":"<p>A description of the App Runner auto scaling configuration that this request just deleted.</p>"
+        }
+      }
+    },
+    "DeleteConnectionRequest":{
+      "type":"structure",
+      "required":["ConnectionArn"],
+      "members":{
+        "ConnectionArn":{
+          "shape":"AppRunnerResourceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the App Runner connection that you want to delete.</p>"
+        }
+      }
+    },
+    "DeleteConnectionResponse":{
+      "type":"structure",
+      "members":{
+        "Connection":{
+          "shape":"Connection",
+          "documentation":"<p>A description of the App Runner connection that this request just deleted.</p>"
+        }
+      }
+    },
+    "DeleteServiceRequest":{
+      "type":"structure",
+      "required":["ServiceArn"],
+      "members":{
+        "ServiceArn":{
+          "shape":"AppRunnerResourceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the App Runner service that you want to delete.</p>"
+        }
+      }
+    },
+    "DeleteServiceResponse":{
+      "type":"structure",
+      "required":[
+        "Service",
+        "OperationId"
+      ],
+      "members":{
+        "Service":{
+          "shape":"Service",
+          "documentation":"<p>A description of the App Runner service that this request just deleted.</p>"
+        },
+        "OperationId":{
+          "shape":"UUID",
+          "documentation":"<p>The unique ID of the asynchronous operation that this request started. You can use it combined with the <a>ListOperations</a> call to track the operation's progress.</p>"
+        }
+      }
+    },
+    "DescribeAutoScalingConfigurationRequest":{
+      "type":"structure",
+      "required":["AutoScalingConfigurationArn"],
+      "members":{
+        "AutoScalingConfigurationArn":{
+          "shape":"AppRunnerResourceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the App Runner auto scaling configuration that you want a description for.</p> <p>The ARN can be a full auto scaling configuration ARN, or a partial ARN ending with either <code>.../<i>name</i> </code> or <code>.../<i>name</i>/<i>revision</i> </code>. If a revision isn't specified, the latest active revision is described.</p>"
+        }
+      }
+    },
+    "DescribeAutoScalingConfigurationResponse":{
+      "type":"structure",
+      "required":["AutoScalingConfiguration"],
+      "members":{
+        "AutoScalingConfiguration":{
+          "shape":"AutoScalingConfiguration",
+          "documentation":"<p>A full description of the App Runner auto scaling configuration that you specified in this request.</p>"
+        }
+      }
+    },
+    "DescribeCustomDomainsMaxResults":{
+      "type":"integer",
+      "max":5,
+      "min":1
+    },
+    "DescribeCustomDomainsRequest":{
+      "type":"structure",
+      "required":["ServiceArn"],
+      "members":{
+        "ServiceArn":{
+          "shape":"AppRunnerResourceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the App Runner service that you want associated custom domain names to be described for.</p>"
+        },
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>A token from a previous result page. It's used for a paginated request. The request retrieves the next result page. All other parameter values must be identical to the ones that are specified in the initial request.</p> <p>If you don't specify <code>NextToken</code>, the request retrieves the first result page.</p>"
+        },
+        "MaxResults":{
+          "shape":"DescribeCustomDomainsMaxResults",
+          "documentation":"<p>The maximum number of results that each response (result page) can include. It's used for a paginated request.</p> <p>If you don't specify <code>MaxResults</code>, the request retrieves all available results in a single response.</p>"
+        }
+      }
+    },
+    "DescribeCustomDomainsResponse":{
+      "type":"structure",
+      "required":[
+        "DNSTarget",
+        "ServiceArn",
+        "CustomDomains"
+      ],
+      "members":{
+        "DNSTarget":{
+          "shape":"String",
+          "documentation":"<p>The App Runner subdomain of the App Runner service. The associated custom domain names are mapped to this target name.</p>"
+        },
+        "ServiceArn":{
+          "shape":"AppRunnerResourceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the App Runner service whose associated custom domain names you want to describe.</p>"
+        },
+        "CustomDomains":{
+          "shape":"CustomDomainList",
+          "documentation":"<p>A list of descriptions of custom domain names that are associated with the service. In a paginated request, the request returns up to <code>MaxResults</code> records per call.</p>"
+        },
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>The token that you can pass in a subsequent request to get the next result page. It's returned in a paginated request.</p>"
+        }
+      }
+    },
+    "DescribeServiceRequest":{
+      "type":"structure",
+      "required":["ServiceArn"],
+      "members":{
+        "ServiceArn":{
+          "shape":"AppRunnerResourceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the App Runner service that you want a description for.</p>"
+        }
+      }
+    },
+    "DescribeServiceResponse":{
+      "type":"structure",
+      "required":["Service"],
+      "members":{
+        "Service":{
+          "shape":"Service",
+          "documentation":"<p>A full description of the App Runner service that you specified in this request.</p>"
+        }
+      }
+    },
+    "DisassociateCustomDomainRequest":{
+      "type":"structure",
+      "required":[
+        "ServiceArn",
+        "DomainName"
+      ],
+      "members":{
+        "ServiceArn":{
+          "shape":"AppRunnerResourceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the App Runner service that you want to disassociate a custom domain name from.</p>"
+        },
+        "DomainName":{
+          "shape":"DomainName",
+          "documentation":"<p>The domain name that you want to disassociate from the App Runner service.</p>"
+        }
+      }
+    },
+    "DisassociateCustomDomainResponse":{
+      "type":"structure",
+      "required":[
+        "DNSTarget",
+        "ServiceArn",
+        "CustomDomain"
+      ],
+      "members":{
+        "DNSTarget":{
+          "shape":"String",
+          "documentation":"<p>The App Runner subdomain of the App Runner service. The disassociated custom domain name was mapped to this target name.</p>"
+        },
+        "ServiceArn":{
+          "shape":"AppRunnerResourceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the App Runner service that a custom domain name is disassociated from.</p>"
+        },
+        "CustomDomain":{
+          "shape":"CustomDomain",
+          "documentation":"<p>A description of the domain name that's being disassociated.</p>"
+        }
+      }
+    },
+    "DomainName":{
+      "type":"string",
+      "max":255,
+      "min":1
+    },
+    "EncryptionConfiguration":{
+      "type":"structure",
+      "required":["KmsKey"],
+      "members":{
+        "KmsKey":{
+          "shape":"KmsKeyArn",
+          "documentation":"<p>The ARN of the KMS key that's used for encryption.</p>"
+        }
+      },
+      "documentation":"<p>Describes a custom encryption key that AWS App Runner uses to encrypt copies of the source repository and service logs.</p>"
+    },
+    "ErrorMessage":{
+      "type":"string",
+      "max":600
+    },
+    "HealthCheckConfiguration":{
+      "type":"structure",
+      "members":{
+        "Protocol":{
+          "shape":"HealthCheckProtocol",
+          "documentation":"<p>The IP protocol that App Runner uses to perform health checks for your service.</p> <p>If you set <code>Protocol</code> to <code>HTTP</code>, App Runner sends health check requests to the HTTP path specified by <code>Path</code>.</p> <p>Default: <code>TCP</code> </p>"
+        },
+        "Path":{
+          "shape":"String",
+          "documentation":"<p>The URL that health check requests are sent to.</p> <p> <code>Path</code> is only applicable when you set <code>Protocol</code> to <code>HTTP</code>.</p> <p>Default: <code>\"/\"</code> </p>"
+        },
+        "Interval":{
+          "shape":"HealthCheckInterval",
+          "documentation":"<p>The time interval, in seconds, between health checks.</p> <p>Default: <code>5</code> </p>"
+        },
+        "Timeout":{
+          "shape":"HealthCheckTimeout",
+          "documentation":"<p>The time, in seconds, to wait for a health check response before deciding it failed.</p> <p>Default: <code>2</code> </p>"
+        },
+        "HealthyThreshold":{
+          "shape":"HealthCheckHealthyThreshold",
+          "documentation":"<p>The number of consecutive checks that must succeed before App Runner decides that the service is healthy.</p> <p>Default: <code>3</code> </p>"
+        },
+        "UnhealthyThreshold":{
+          "shape":"HealthCheckUnhealthyThreshold",
+          "documentation":"<p>The number of consecutive checks that must fail before App Runner decides that the service is unhealthy.</p> <p>Default: <code>3</code> </p>"
+        }
+      },
+      "documentation":"<p>Describes the settings for the health check that AWS App Runner performs to monitor the health of a service.</p>"
+    },
+    "HealthCheckHealthyThreshold":{
+      "type":"integer",
+      "max":20,
+      "min":1
+    },
+    "HealthCheckInterval":{
+      "type":"integer",
+      "max":20,
+      "min":1
+    },
+    "HealthCheckProtocol":{
+      "type":"string",
+      "enum":[
+        "TCP",
+        "HTTP"
+      ]
+    },
+    "HealthCheckTimeout":{
+      "type":"integer",
+      "max":20,
+      "min":1
+    },
+    "HealthCheckUnhealthyThreshold":{
+      "type":"integer",
+      "max":20,
+      "min":1
+    },
+    "ImageConfiguration":{
+      "type":"structure",
+      "members":{
+        "RuntimeEnvironmentVariables":{
+          "shape":"RuntimeEnvironmentVariables",
+          "documentation":"<p>Environment variables that are available to your running App Runner service. An array of key-value pairs. Keys with a prefix of <code>AWSAPPRUNNER</code> are reserved for system use and aren't valid.</p>"
+        },
+        "StartCommand":{
+          "shape":"String",
+          "documentation":"<p>An optional command that App Runner runs to start the application in the source image. If specified, this command overrides the Docker image’s default start command.</p>"
+        },
+        "Port":{
+          "shape":"String",
+          "documentation":"<p>The port that your application listens to in the container.</p> <p>Default: <code>8080</code> </p>"
+        }
+      },
+      "documentation":"<p>Describes the configuration that AWS App Runner uses to run an App Runner service using an image pulled from a source image repository.</p>"
+    },
+    "ImageIdentifier":{
+      "type":"string",
+      "max":1024,
+      "min":1,
+      "pattern":"([0-9]{12}.dkr.ecr.[a-z\\-]+-[0-9]{1}.amazonaws.com\\/.*)|(^public\\.ecr\\.aws\\/.+\\/.+)"
+    },
+    "ImageRepository":{
+      "type":"structure",
+      "required":[
+        "ImageIdentifier",
+        "ImageRepositoryType"
+      ],
+      "members":{
+        "ImageIdentifier":{
+          "shape":"ImageIdentifier",
+          "documentation":"<p>The identifier of an image.</p> <p>For an image in Amazon Elastic Container Registry (Amazon ECR), this is an image name. For the image name format, see <a href=\"https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-pull-ecr-image.html\">Pulling an image</a> in the <i>Amazon ECR User Guide</i>.</p>"
+        },
+        "ImageConfiguration":{
+          "shape":"ImageConfiguration",
+          "documentation":"<p>Configuration for running the identified image.</p>"
+        },
+        "ImageRepositoryType":{
+          "shape":"ImageRepositoryType",
+          "documentation":"<p>The type of the image repository. This reflects the repository provider and whether the repository is private or public.</p>"
+        }
+      },
+      "documentation":"<p>Describes a source image repository.</p>"
+    },
+    "ImageRepositoryType":{
+      "type":"string",
+      "enum":[
+        "ECR",
+        "ECR_PUBLIC"
+      ]
+    },
+    "InstanceConfiguration":{
+      "type":"structure",
+      "members":{
+        "Cpu":{
+          "shape":"Cpu",
+          "documentation":"<p>The number of CPU units reserved for each instance of your App Runner service.</p> <p>Default: <code>1 vCPU</code> </p>"
+        },
+        "Memory":{
+          "shape":"Memory",
+          "documentation":"<p>The amount of memory, in MB or GB, reserved for each instance of your App Runner service.</p> <p>Default: <code>2 GB</code> </p>"
+        },
+        "InstanceRoleArn":{
+          "shape":"RoleArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of an IAM role that provides permissions to your App Runner service. These are permissions that your code needs when it calls any AWS APIs.</p>"
+        }
+      },
+      "documentation":"<p>Describes the runtime configuration of an AWS App Runner service instance (scaling unit).</p>"
+    },
+    "Integer":{"type":"integer"},
+    "InternalServiceErrorException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>An unexpected service exception occurred.</p>",
+      "exception":true,
+      "fault":true
+    },
+    "InvalidRequestException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>One or more input parameters aren't valid. Refer to the API action's document page, correct the input parameters, and try the action again.</p>",
+      "exception":true
+    },
+    "InvalidStateException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>You can't perform this action when the resource is in its current state.</p>",
+      "exception":true
+    },
+    "KmsKeyArn":{
+      "type":"string",
+      "max":256,
+      "min":0,
+      "pattern":"arn:aws(-[\\w]+)*:kms:[a-z\\-]+-[0-9]{1}:[0-9]{12}:key\\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
+    },
+    "ListAutoScalingConfigurationsRequest":{
+      "type":"structure",
+      "members":{
+        "AutoScalingConfigurationName":{
+          "shape":"AutoScalingConfigurationName",
+          "documentation":"<p>The name of the App Runner auto scaling configuration that you want to list. If specified, App Runner lists revisions that share this name. If not specified, App Runner returns revisions of all configurations.</p>"
+        },
+        "LatestOnly":{
+          "shape":"Boolean",
+          "documentation":"<p>Set to <code>true</code> to list only the latest revision for each requested configuration name.</p> <p>Keep as <code>false</code> to list all revisions for each requested configuration name.</p> <p>Default: <code>false</code> </p>"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of results to include in each response (result page). It's used for a paginated request.</p> <p>If you don't specify <code>MaxResults</code>, the request retrieves all available results in a single response.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>A token from a previous result page. It's used for a paginated request. The request retrieves the next result page. All other parameter values must be identical to the ones that are specified in the initial request.</p> <p>If you don't specify <code>NextToken</code>, the request retrieves the first result page.</p>"
+        }
+      }
+    },
+    "ListAutoScalingConfigurationsResponse":{
+      "type":"structure",
+      "required":["AutoScalingConfigurationSummaryList"],
+      "members":{
+        "AutoScalingConfigurationSummaryList":{
+          "shape":"AutoScalingConfigurationSummaryList",
+          "documentation":"<p>A list of summary information records for auto scaling configurations. In a paginated request, the request returns up to <code>MaxResults</code> records for each call.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The token that you can pass in a subsequent request to get the next result page. It's returned in a paginated request.</p>"
+        }
+      }
+    },
+    "ListConnectionsRequest":{
+      "type":"structure",
+      "members":{
+        "ConnectionName":{
+          "shape":"ConnectionName",
+          "documentation":"<p>If specified, only this connection is returned. If not specified, the result isn't filtered by name.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of results to include in each response (result page). Used for a paginated request.</p> <p>If you don't specify <code>MaxResults</code>, the request retrieves all available results in a single response.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>A token from a previous result page. Used for a paginated request. The request retrieves the next result page. All other parameter values must be identical to the ones specified in the initial request.</p> <p>If you don't specify <code>NextToken</code>, the request retrieves the first result page.</p>"
+        }
+      }
+    },
+    "ListConnectionsResponse":{
+      "type":"structure",
+      "required":["ConnectionSummaryList"],
+      "members":{
+        "ConnectionSummaryList":{
+          "shape":"ConnectionSummaryList",
+          "documentation":"<p>A list of summary information records for connections. In a paginated request, the request returns up to <code>MaxResults</code> records for each call.</p>"
+        },
+        "NextToken":{
+          "shape":"NextToken",
+          "documentation":"<p>The token that you can pass in a subsequent request to get the next result page. Returned in a paginated request.</p>"
+        }
+      }
+    },
+    "ListOperationsMaxResults":{
+      "type":"integer",
+      "max":20,
+      "min":1
+    },
+    "ListOperationsRequest":{
+      "type":"structure",
+      "required":["ServiceArn"],
+      "members":{
+        "ServiceArn":{
+          "shape":"AppRunnerResourceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the App Runner service that you want a list of operations for.</p>"
+        },
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>A token from a previous result page. It's used for a paginated request. The request retrieves the next result page. All other parameter values must be identical to the ones specified in the initial request.</p> <p>If you don't specify <code>NextToken</code>, the request retrieves the first result page.</p>"
+        },
+        "MaxResults":{
+          "shape":"ListOperationsMaxResults",
+          "documentation":"<p>The maximum number of results to include in each response (result page). It's used for a paginated request.</p> <p>If you don't specify <code>MaxResults</code>, the request retrieves all available results in a single response.</p>"
+        }
+      }
+    },
+    "ListOperationsResponse":{
+      "type":"structure",
+      "members":{
+        "OperationSummaryList":{
+          "shape":"OperationSummaryList",
+          "documentation":"<p>A list of operation summary information records. In a paginated request, the request returns up to <code>MaxResults</code> records for each call.</p>"
+        },
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>The token that you can pass in a subsequent request to get the next result page. It's returned in a paginated request.</p>"
+        }
+      }
+    },
+    "ListServicesRequest":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>A token from a previous result page. Used for a paginated request. The request retrieves the next result page. All other parameter values must be identical to the ones specified in the initial request.</p> <p>If you don't specify <code>NextToken</code>, the request retrieves the first result page.</p>"
+        },
+        "MaxResults":{
+          "shape":"ServiceMaxResults",
+          "documentation":"<p>The maximum number of results to include in each response (result page). It's used for a paginated request.</p> <p>If you don't specify <code>MaxResults</code>, the request retrieves all available results in a single response.</p>"
+        }
+      }
+    },
+    "ListServicesResponse":{
+      "type":"structure",
+      "required":["ServiceSummaryList"],
+      "members":{
+        "ServiceSummaryList":{
+          "shape":"ServiceSummaryList",
+          "documentation":"<p>A list of service summary information records. In a paginated request, the request returns up to <code>MaxResults</code> records for each call.</p>"
+        },
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>The token that you can pass in a subsequent request to get the next result page. It's returned in a paginated request.</p>"
+        }
+      }
+    },
+    "ListTagsForResourceRequest":{
+      "type":"structure",
+      "required":["ResourceArn"],
+      "members":{
+        "ResourceArn":{
+          "shape":"AppRunnerResourceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the resource that a tag list is requested for.</p> <p>It must be the ARN of an App Runner resource.</p>"
+        }
+      }
+    },
+    "ListTagsForResourceResponse":{
+      "type":"structure",
+      "members":{
+        "Tags":{
+          "shape":"TagList",
+          "documentation":"<p>A list of the tag key-value pairs that are associated with the resource.</p>"
+        }
+      }
+    },
+    "MaxResults":{
+      "type":"integer",
+      "max":100,
+      "min":1
+    },
+    "Memory":{
+      "type":"string",
+      "max":4,
+      "min":4,
+      "pattern":"2048|3072|4096|(2|3|4) GB"
+    },
+    "NextToken":{
+      "type":"string",
+      "max":1024,
+      "min":1,
+      "pattern":".*"
+    },
+    "NullableBoolean":{"type":"boolean"},
+    "OperationStatus":{
+      "type":"string",
+      "enum":[
+        "PENDING",
+        "IN_PROGRESS",
+        "FAILED",
+        "SUCCEEDED",
+        "ROLLBACK_IN_PROGRESS",
+        "ROLLBACK_FAILED",
+        "ROLLBACK_SUCCEEDED"
+      ]
+    },
+    "OperationSummary":{
+      "type":"structure",
+      "members":{
+        "Id":{
+          "shape":"UUID",
+          "documentation":"<p>A unique ID of this operation. It's unique in the scope of the App Runner service.</p>"
+        },
+        "Type":{
+          "shape":"OperationType",
+          "documentation":"<p>The type of operation. It indicates a specific action that occured.</p>"
+        },
+        "Status":{
+          "shape":"OperationStatus",
+          "documentation":"<p>The current state of the operation.</p>"
+        },
+        "TargetArn":{
+          "shape":"AppRunnerResourceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the resource that the operation acted on (for example, an App Runner service).</p>"
+        },
+        "StartedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time when the operation started. It's in the Unix time stamp format.</p>"
+        },
+        "EndedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time when the operation ended. It's in the Unix time stamp format.</p>"
+        },
+        "UpdatedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time when the operation was last updated. It's in the Unix time stamp format.</p>"
+        }
+      },
+      "documentation":"<p>Provides summary information for an operation that occurred on an AWS App Runner service.</p>"
+    },
+    "OperationSummaryList":{
+      "type":"list",
+      "member":{"shape":"OperationSummary"}
+    },
+    "OperationType":{
+      "type":"string",
+      "enum":[
+        "START_DEPLOYMENT",
+        "CREATE_SERVICE",
+        "PAUSE_SERVICE",
+        "RESUME_SERVICE",
+        "DELETE_SERVICE"
+      ]
+    },
+    "PauseServiceRequest":{
+      "type":"structure",
+      "required":["ServiceArn"],
+      "members":{
+        "ServiceArn":{
+          "shape":"AppRunnerResourceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the App Runner service that you want to pause.</p>"
+        }
+      }
+    },
+    "PauseServiceResponse":{
+      "type":"structure",
+      "required":["Service"],
+      "members":{
+        "Service":{
+          "shape":"Service",
+          "documentation":"<p>A description of the App Runner service that this request just paused.</p>"
+        },
+        "OperationId":{
+          "shape":"UUID",
+          "documentation":"<p>The unique ID of the asynchronous operation that this request started. You can use it combined with the <a>ListOperations</a> call to track the operation's progress.</p>"
+        }
+      }
+    },
+    "ProviderType":{
+      "type":"string",
+      "enum":["GITHUB"]
+    },
+    "ResourceNotFoundException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>A resource doesn't exist for the specified Amazon Resource Name (ARN) in your AWS account.</p>",
+      "exception":true
+    },
+    "ResumeServiceRequest":{
+      "type":"structure",
+      "required":["ServiceArn"],
+      "members":{
+        "ServiceArn":{
+          "shape":"AppRunnerResourceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the App Runner service that you want to resume.</p>"
+        }
+      }
+    },
+    "ResumeServiceResponse":{
+      "type":"structure",
+      "required":["Service"],
+      "members":{
+        "Service":{
+          "shape":"Service",
+          "documentation":"<p>A description of the App Runner service that this request just resumed.</p>"
+        },
+        "OperationId":{
+          "shape":"UUID",
+          "documentation":"<p>The unique ID of the asynchronous operation that this request started. You can use it combined with the <a>ListOperations</a> call to track the operation's progress.</p>"
+        }
+      }
+    },
+    "RoleArn":{
+      "type":"string",
+      "max":102,
+      "min":29,
+      "pattern":"arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):iam::[0-9]{12}:role/[\\w+=,.@-]{1,64}"
+    },
+    "Runtime":{
+      "type":"string",
+      "enum":[
+        "PYTHON_3",
+        "NODEJS_12"
+      ]
+    },
+    "RuntimeEnvironmentVariables":{
+      "type":"map",
+      "key":{"shape":"RuntimeEnvironmentVariablesKey"},
+      "value":{"shape":"RuntimeEnvironmentVariablesValue"}
+    },
+    "RuntimeEnvironmentVariablesKey":{
+      "type":"string",
+      "sensitive":true
+    },
+    "RuntimeEnvironmentVariablesValue":{
+      "type":"string",
+      "sensitive":true
+    },
+    "Service":{
+      "type":"structure",
+      "required":[
+        "ServiceName",
+        "ServiceId",
+        "ServiceArn",
+        "ServiceUrl",
+        "CreatedAt",
+        "UpdatedAt",
+        "Status",
+        "SourceConfiguration",
+        "InstanceConfiguration",
+        "AutoScalingConfigurationSummary"
+      ],
+      "members":{
+        "ServiceName":{
+          "shape":"ServiceName",
+          "documentation":"<p>The customer-provided service name.</p>"
+        },
+        "ServiceId":{
+          "shape":"ServiceId",
+          "documentation":"<p>An ID that App Runner generated for this service. It's unique within the AWS Region.</p>"
+        },
+        "ServiceArn":{
+          "shape":"AppRunnerResourceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of this service.</p>"
+        },
+        "ServiceUrl":{
+          "shape":"String",
+          "documentation":"<p>A subdomain URL that App Runner generated for this service. You can use this URL to access your service web application.</p>"
+        },
+        "CreatedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time when the App Runner service was created. It's in the Unix time stamp format.</p>"
+        },
+        "UpdatedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time when the App Runner service was last updated at. It's in the Unix time stamp format.</p>"
+        },
+        "DeletedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time when the App Runner service was deleted. It's in the Unix time stamp format.</p>"
+        },
+        "Status":{
+          "shape":"ServiceStatus",
+          "documentation":"<p>The current state of the App Runner service. These particular values mean the following.</p> <ul> <li> <p> <code>CREATE_FAILED</code> – The service failed to create. To troubleshoot this failure, read the failure events and logs, change any parameters that need to be fixed, and retry the call to create the service.</p> <p>The failed service isn't usable, and still counts towards your service quota. When you're done analyzing the failure, delete the service.</p> </li> <li> <p> <code>DELETE_FAILED</code> – The service failed to delete and can't be successfully recovered. Retry the service deletion call to ensure that all related resources are removed.</p> </li> </ul>"
+        },
+        "SourceConfiguration":{
+          "shape":"SourceConfiguration",
+          "documentation":"<p>The source deployed to the App Runner service. It can be a code or an image repository.</p>"
+        },
+        "InstanceConfiguration":{
+          "shape":"InstanceConfiguration",
+          "documentation":"<p>The runtime configuration of instances (scaling units) of this service.</p>"
+        },
+        "EncryptionConfiguration":{
+          "shape":"EncryptionConfiguration",
+          "documentation":"<p>The encryption key that App Runner uses to encrypt the service logs and the copy of the source repository that App Runner maintains for the service. It can be either a customer-provided encryption key or an AWS managed CMK.</p>"
+        },
+        "HealthCheckConfiguration":{
+          "shape":"HealthCheckConfiguration",
+          "documentation":"<p>The settings for the health check that App Runner performs to monitor the health of this service.</p>"
+        },
+        "AutoScalingConfigurationSummary":{
+          "shape":"AutoScalingConfigurationSummary",
+          "documentation":"<p>Summary information for the App Runner automatic scaling configuration resource that's associated with this service.</p>"
+        }
+      },
+      "documentation":"<p>Describes an AWS App Runner service. It can describe a service in any state, including deleted services.</p> <p>This type contains the full information about a service, including configuration details. It's returned by the <a href=\"https://docs.aws.amazon.com/apprunner/latest/api/API_CreateService.html\">CreateService</a>, <a href=\"https://docs.aws.amazon.com/apprunner/latest/api/API_DescribeService.html\">DescribeService</a>, and <a href=\"https://docs.aws.amazon.com/apprunner/latest/api/API_DeleteService.html\">DeleteService</a> actions. A subset of this information is returned by the <a href=\"https://docs.aws.amazon.com/apprunner/latest/api/API_ListServices.html\">ListServices</a> action using the <a href=\"https://docs.aws.amazon.com/apprunner/latest/api/API_ServiceSummary.html\">ServiceSummary</a> type.</p>"
+    },
+    "ServiceId":{
+      "type":"string",
+      "max":32,
+      "min":32,
+      "pattern":"[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}"
+    },
+    "ServiceMaxResults":{
+      "type":"integer",
+      "max":20,
+      "min":1
+    },
+    "ServiceName":{
+      "type":"string",
+      "max":40,
+      "min":4,
+      "pattern":"[A-Za-z0-9][A-Za-z0-9-_]{3,39}"
+    },
+    "ServiceQuotaExceededException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>App Runner can't create this resource. You've reached your account quota for this resource type.</p> <p>For App Runner per-resource quotas, see <a href=\"https://docs.aws.amazon.com/general/latest/gr/apprunner.html\">AWS App Runner endpoints and quotas</a> in the <i>AWS General Reference</i>.</p>",
+      "exception":true
+    },
+    "ServiceStatus":{
+      "type":"string",
+      "enum":[
+        "CREATE_FAILED",
+        "RUNNING",
+        "DELETED",
+        "DELETE_FAILED",
+        "PAUSED",
+        "OPERATION_IN_PROGRESS"
+      ]
+    },
+    "ServiceSummary":{
+      "type":"structure",
+      "members":{
+        "ServiceName":{
+          "shape":"ServiceName",
+          "documentation":"<p>The customer-provided service name.</p>"
+        },
+        "ServiceId":{
+          "shape":"ServiceId",
+          "documentation":"<p>An ID that App Runner generated for this service. It's unique within the AWS Region.</p>"
+        },
+        "ServiceArn":{
+          "shape":"AppRunnerResourceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of this service.</p>"
+        },
+        "ServiceUrl":{
+          "shape":"String",
+          "documentation":"<p>A subdomain URL that App Runner generated for this service. You can use this URL to access your service web application.</p>"
+        },
+        "CreatedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time when the App Runner service was created. It's in the Unix time stamp format.</p>"
+        },
+        "UpdatedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time when the App Runner service was last updated. It's in theUnix time stamp format.</p>"
+        },
+        "Status":{
+          "shape":"ServiceStatus",
+          "documentation":"<p>The current state of the App Runner service. These particular values mean the following.</p> <ul> <li> <p> <code>CREATE_FAILED</code> – The service failed to create. Read the failure events and logs, change any parameters that need to be fixed, and retry the call to create the service.</p> <p>The failed service isn't usable, and still counts towards your service quota. When you're done analyzing the failure, delete the service.</p> </li> <li> <p> <code>DELETE_FAILED</code> – The service failed to delete and can't be successfully recovered. Retry the service deletion call to ensure that all related resources are removed.</p> </li> </ul>"
+        }
+      },
+      "documentation":"<p>Provides summary information for an AWS App Runner service.</p> <p>This type contains limited information about a service. It doesn't include configuration details. It's returned by the <a href=\"https://docs.aws.amazon.com/apprunner/latest/api/API_ListServices.html\">ListServices</a> action. Complete service information is returned by the <a href=\"https://docs.aws.amazon.com/apprunner/latest/api/API_CreateService.html\">CreateService</a>, <a href=\"https://docs.aws.amazon.com/apprunner/latest/api/API_DescribeService.html\">DescribeService</a>, and <a href=\"https://docs.aws.amazon.com/apprunner/latest/api/API_DeleteService.html\">DeleteService</a> actions using the <a href=\"https://docs.aws.amazon.com/apprunner/latest/api/API_Service.html\">Service</a> type.</p>"
+    },
+    "ServiceSummaryList":{
+      "type":"list",
+      "member":{"shape":"ServiceSummary"}
+    },
+    "SourceCodeVersion":{
+      "type":"structure",
+      "required":[
+        "Type",
+        "Value"
+      ],
+      "members":{
+        "Type":{
+          "shape":"SourceCodeVersionType",
+          "documentation":"<p>The type of version identifier.</p> <p>For a git-based repository, branches represent versions.</p>"
+        },
+        "Value":{
+          "shape":"String",
+          "documentation":"<p>A source code version.</p> <p>For a git-based repository, a branch name maps to a specific version. App Runner uses the most recent commit to the branch.</p>"
+        }
+      },
+      "documentation":"<p>Identifies a version of code that AWS App Runner refers to within a source code repository.</p>"
+    },
+    "SourceCodeVersionType":{
+      "type":"string",
+      "enum":["BRANCH"]
+    },
+    "SourceConfiguration":{
+      "type":"structure",
+      "members":{
+        "CodeRepository":{
+          "shape":"CodeRepository",
+          "documentation":"<p>The description of a source code repository.</p> <p>You must provide either this member or <code>ImageRepository</code> (but not both).</p>"
+        },
+        "ImageRepository":{
+          "shape":"ImageRepository",
+          "documentation":"<p>The description of a source image repository.</p> <p>You must provide either this member or <code>CodeRepository</code> (but not both).</p>"
+        },
+        "AutoDeploymentsEnabled":{
+          "shape":"NullableBoolean",
+          "documentation":"<p>If <code>true</code>, continuous integration from the source repository is enabled for the App Runner service. Each repository change (source code commit or new image version) starts a deployment.</p> <p>Default: <code>true</code> </p>"
+        },
+        "AuthenticationConfiguration":{
+          "shape":"AuthenticationConfiguration",
+          "documentation":"<p>Describes the resources that are needed to authenticate access to some source repositories.</p>"
+        }
+      },
+      "documentation":"<p>Describes the source deployed to an AWS App Runner service. It can be a code or an image repository.</p>"
+    },
+    "StartCommand":{
+      "type":"string",
+      "sensitive":true
+    },
+    "StartDeploymentRequest":{
+      "type":"structure",
+      "required":["ServiceArn"],
+      "members":{
+        "ServiceArn":{
+          "shape":"AppRunnerResourceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the App Runner service that you want to manually deploy to.</p>"
+        }
+      }
+    },
+    "StartDeploymentResponse":{
+      "type":"structure",
+      "required":["OperationId"],
+      "members":{
+        "OperationId":{
+          "shape":"UUID",
+          "documentation":"<p>The unique ID of the asynchronous operation that this request started. You can use it combined with the <a>ListOperations</a> call to track the operation's progress.</p>"
+        }
+      }
+    },
+    "String":{
+      "type":"string",
+      "max":51200,
+      "min":0,
+      "pattern":".*"
+    },
+    "Tag":{
+      "type":"structure",
+      "members":{
+        "Key":{
+          "shape":"TagKey",
+          "documentation":"<p>The key of the tag.</p>"
+        },
+        "Value":{
+          "shape":"TagValue",
+          "documentation":"<p>The value of the tag.</p>"
+        }
+      },
+      "documentation":"<p>Describes a tag that is applied to an AWS App Runner resource. A tag is a metadata item consisting of a key-value pair.</p>"
+    },
+    "TagKey":{
+      "type":"string",
+      "max":128,
+      "min":1,
+      "pattern":"^(?!aws:).+"
+    },
+    "TagKeyList":{
+      "type":"list",
+      "member":{"shape":"TagKey"}
+    },
+    "TagList":{
+      "type":"list",
+      "member":{"shape":"Tag"}
+    },
+    "TagResourceRequest":{
+      "type":"structure",
+      "required":[
+        "ResourceArn",
+        "Tags"
+      ],
+      "members":{
+        "ResourceArn":{
+          "shape":"AppRunnerResourceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the resource that you want to update tags for.</p> <p>It must be the ARN of an App Runner resource.</p>"
+        },
+        "Tags":{
+          "shape":"TagList",
+          "documentation":"<p>A list of tag key-value pairs to add or update. If a key is new to the resource, the tag is added with the provided value. If a key is already associated with the resource, the value of the tag is updated.</p>"
+        }
+      }
+    },
+    "TagResourceResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "TagValue":{
+      "type":"string",
+      "max":256,
+      "min":0,
+      "pattern":".*"
+    },
+    "Timestamp":{"type":"timestamp"},
+    "UUID":{
+      "type":"string",
+      "max":36,
+      "min":36,
+      "pattern":"[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}"
+    },
+    "UntagResourceRequest":{
+      "type":"structure",
+      "required":[
+        "ResourceArn",
+        "TagKeys"
+      ],
+      "members":{
+        "ResourceArn":{
+          "shape":"AppRunnerResourceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the resource that you want to remove tags from.</p> <p>It must be the ARN of an App Runner resource.</p>"
+        },
+        "TagKeys":{
+          "shape":"TagKeyList",
+          "documentation":"<p>A list of tag keys that you want to remove.</p>"
+        }
+      }
+    },
+    "UntagResourceResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "UpdateServiceRequest":{
+      "type":"structure",
+      "required":["ServiceArn"],
+      "members":{
+        "ServiceArn":{
+          "shape":"AppRunnerResourceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the App Runner service that you want to update.</p>"
+        },
+        "SourceConfiguration":{
+          "shape":"SourceConfiguration",
+          "documentation":"<p>The source configuration to apply to the App Runner service.</p> <p>You can change the configuration of the code or image repository that the service uses. However, you can't switch from code to image or the other way around. This means that you must provide the same structure member of <code>SourceConfiguration</code> that you originally included when you created the service. Specifically, you can include either <code>CodeRepository</code> or <code>ImageRepository</code>. To update the source configuration, set the values to members of the structure that you include.</p>"
+        },
+        "InstanceConfiguration":{
+          "shape":"InstanceConfiguration",
+          "documentation":"<p>The runtime configuration to apply to instances (scaling units) of the App Runner service.</p>"
+        },
+        "AutoScalingConfigurationArn":{
+          "shape":"AppRunnerResourceArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of an App Runner automatic scaling configuration resource that you want to associate with your service.</p>"
+        },
+        "HealthCheckConfiguration":{
+          "shape":"HealthCheckConfiguration",
+          "documentation":"<p>The settings for the health check that AWS App Runner performs to monitor the health of your service.</p>"
+        }
+      }
+    },
+    "UpdateServiceResponse":{
+      "type":"structure",
+      "required":[
+        "Service",
+        "OperationId"
+      ],
+      "members":{
+        "Service":{
+          "shape":"Service",
+          "documentation":"<p>A description of the App Runner service updated by this request. All configuration values in the returned <code>Service</code> structure reflect configuration changes that are being applied by this request.</p>"
+        },
+        "OperationId":{
+          "shape":"UUID",
+          "documentation":"<p>The unique ID of the asynchronous operation that this request started. You can use it combined with the <a>ListOperations</a> call to track the operation's progress.</p>"
+        }
+      }
+    }
+  },
+  "documentation":"<fullname>AWS App Runner</fullname> <p>AWS App Runner is an application service that provides a fast, simple, and cost-effective way to go directly from an existing container image or source code to a running service in the AWS cloud in seconds. You don't need to learn new technologies, decide which compute service to use, or understand how to provision and configure AWS resources.</p> <p>App Runner connects directly to your container registry or source code repository. It provides an automatic delivery pipeline with fully managed operations, high performance, scalability, and security.</p> <p>For more information about App Runner, see the <a href=\"https://docs.aws.amazon.com/apprunner/latest/dg/\">AWS App Runner Developer Guide</a>. For release information, see the <a href=\"https://docs.aws.amazon.com/apprunner/latest/relnotes/\">AWS App Runner Release Notes</a>.</p> <p> To install the Software Development Kits (SDKs), Integrated Development Environment (IDE) Toolkits, and command line tools that you can use to access the API, see <a href=\"http://aws.amazon.com/tools/\">Tools for Amazon Web Services</a>.</p> <p> <b>Endpoints</b> </p> <p>For a list of Region-specific endpoints that App Runner supports, see <a href=\"https://docs.aws.amazon.com/general/latest/gr/apprunner.html\">AWS App Runner endpoints and quotas</a> in the <i>AWS General Reference</i>.</p>"
+}

+ 5 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appstream/2016-12-01/examples-1.json

@@ -0,0 +1,5 @@
+{
+  "version": "1.0",
+  "examples": {
+  }
+}

+ 60 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appstream/2016-12-01/paginators-1.json

@@ -0,0 +1,60 @@
+{
+  "pagination": {
+    "DescribeDirectoryConfigs": {
+      "input_token": "NextToken",
+      "output_token": "NextToken",
+      "limit_key": "MaxResults",
+      "result_key": "DirectoryConfigs"
+    },
+    "DescribeFleets": {
+      "input_token": "NextToken",
+      "output_token": "NextToken",
+      "result_key": "Fleets"
+    },
+    "DescribeImageBuilders": {
+      "input_token": "NextToken",
+      "output_token": "NextToken",
+      "limit_key": "MaxResults",
+      "result_key": "ImageBuilders"
+    },
+    "DescribeImages": {
+      "input_token": "NextToken",
+      "output_token": "NextToken",
+      "limit_key": "MaxResults",
+      "result_key": "Images"
+    },
+    "DescribeSessions": {
+      "input_token": "NextToken",
+      "output_token": "NextToken",
+      "limit_key": "Limit",
+      "result_key": "Sessions"
+    },
+    "DescribeStacks": {
+      "input_token": "NextToken",
+      "output_token": "NextToken",
+      "result_key": "Stacks"
+    },
+    "DescribeUserStackAssociations": {
+      "input_token": "NextToken",
+      "output_token": "NextToken",
+      "limit_key": "MaxResults",
+      "result_key": "UserStackAssociations"
+    },
+    "DescribeUsers": {
+      "input_token": "NextToken",
+      "output_token": "NextToken",
+      "limit_key": "MaxResults",
+      "result_key": "Users"
+    },
+    "ListAssociatedFleets": {
+      "input_token": "NextToken",
+      "output_token": "NextToken",
+      "result_key": "Names"
+    },
+    "ListAssociatedStacks": {
+      "input_token": "NextToken",
+      "output_token": "NextToken",
+      "result_key": "Names"
+    }
+  }
+}

+ 3644 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appstream/2016-12-01/service-2.json

@@ -0,0 +1,3644 @@
+{
+  "version":"2.0",
+  "metadata":{
+    "apiVersion":"2016-12-01",
+    "endpointPrefix":"appstream2",
+    "jsonVersion":"1.1",
+    "protocol":"json",
+    "serviceFullName":"Amazon AppStream",
+    "serviceId":"AppStream",
+    "signatureVersion":"v4",
+    "signingName":"appstream",
+    "targetPrefix":"PhotonAdminProxyService",
+    "uid":"appstream-2016-12-01"
+  },
+  "operations":{
+    "AssociateFleet":{
+      "name":"AssociateFleet",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"AssociateFleetRequest"},
+      "output":{"shape":"AssociateFleetResult"},
+      "errors":[
+        {"shape":"LimitExceededException"},
+        {"shape":"InvalidAccountStatusException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ConcurrentModificationException"},
+        {"shape":"IncompatibleImageException"},
+        {"shape":"OperationNotPermittedException"}
+      ],
+      "documentation":"<p>Associates the specified fleet with the specified stack.</p>"
+    },
+    "BatchAssociateUserStack":{
+      "name":"BatchAssociateUserStack",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"BatchAssociateUserStackRequest"},
+      "output":{"shape":"BatchAssociateUserStackResult"},
+      "errors":[
+        {"shape":"OperationNotPermittedException"},
+        {"shape":"InvalidParameterCombinationException"}
+      ],
+      "documentation":"<p>Associates the specified users with the specified stacks. Users in a user pool cannot be assigned to stacks with fleets that are joined to an Active Directory domain.</p>"
+    },
+    "BatchDisassociateUserStack":{
+      "name":"BatchDisassociateUserStack",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"BatchDisassociateUserStackRequest"},
+      "output":{"shape":"BatchDisassociateUserStackResult"},
+      "errors":[
+        {"shape":"OperationNotPermittedException"},
+        {"shape":"InvalidParameterCombinationException"}
+      ],
+      "documentation":"<p>Disassociates the specified users from the specified stacks.</p>"
+    },
+    "CopyImage":{
+      "name":"CopyImage",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CopyImageRequest"},
+      "output":{"shape":"CopyImageResponse"},
+      "errors":[
+        {"shape":"ResourceAlreadyExistsException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ResourceNotAvailableException"},
+        {"shape":"LimitExceededException"},
+        {"shape":"InvalidAccountStatusException"},
+        {"shape":"IncompatibleImageException"}
+      ],
+      "documentation":"<p>Copies the image within the same region or to a new region within the same AWS account. Note that any tags you added to the image will not be copied.</p>"
+    },
+    "CreateDirectoryConfig":{
+      "name":"CreateDirectoryConfig",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateDirectoryConfigRequest"},
+      "output":{"shape":"CreateDirectoryConfigResult"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ResourceAlreadyExistsException"},
+        {"shape":"LimitExceededException"},
+        {"shape":"InvalidAccountStatusException"},
+        {"shape":"OperationNotPermittedException"},
+        {"shape":"InvalidRoleException"}
+      ],
+      "documentation":"<p>Creates a Directory Config object in AppStream 2.0. This object includes the configuration information required to join fleets and image builders to Microsoft Active Directory domains.</p>"
+    },
+    "CreateFleet":{
+      "name":"CreateFleet",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateFleetRequest"},
+      "output":{"shape":"CreateFleetResult"},
+      "errors":[
+        {"shape":"ResourceAlreadyExistsException"},
+        {"shape":"ResourceNotAvailableException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"LimitExceededException"},
+        {"shape":"RequestLimitExceededException"},
+        {"shape":"InvalidAccountStatusException"},
+        {"shape":"InvalidRoleException"},
+        {"shape":"ConcurrentModificationException"},
+        {"shape":"InvalidParameterCombinationException"},
+        {"shape":"IncompatibleImageException"},
+        {"shape":"OperationNotPermittedException"}
+      ],
+      "documentation":"<p>Creates a fleet. A fleet consists of streaming instances that run a specified image.</p>"
+    },
+    "CreateImageBuilder":{
+      "name":"CreateImageBuilder",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateImageBuilderRequest"},
+      "output":{"shape":"CreateImageBuilderResult"},
+      "errors":[
+        {"shape":"LimitExceededException"},
+        {"shape":"RequestLimitExceededException"},
+        {"shape":"InvalidAccountStatusException"},
+        {"shape":"ResourceAlreadyExistsException"},
+        {"shape":"ResourceNotAvailableException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidRoleException"},
+        {"shape":"ConcurrentModificationException"},
+        {"shape":"InvalidParameterCombinationException"},
+        {"shape":"IncompatibleImageException"},
+        {"shape":"OperationNotPermittedException"}
+      ],
+      "documentation":"<p>Creates an image builder. An image builder is a virtual machine that is used to create an image.</p> <p>The initial state of the builder is <code>PENDING</code>. When it is ready, the state is <code>RUNNING</code>.</p>"
+    },
+    "CreateImageBuilderStreamingURL":{
+      "name":"CreateImageBuilderStreamingURL",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateImageBuilderStreamingURLRequest"},
+      "output":{"shape":"CreateImageBuilderStreamingURLResult"},
+      "errors":[
+        {"shape":"OperationNotPermittedException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Creates a URL to start an image builder streaming session.</p>"
+    },
+    "CreateStack":{
+      "name":"CreateStack",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateStackRequest"},
+      "output":{"shape":"CreateStackResult"},
+      "errors":[
+        {"shape":"LimitExceededException"},
+        {"shape":"InvalidAccountStatusException"},
+        {"shape":"ResourceAlreadyExistsException"},
+        {"shape":"ConcurrentModificationException"},
+        {"shape":"InvalidRoleException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterCombinationException"}
+      ],
+      "documentation":"<p>Creates a stack to start streaming applications to users. A stack consists of an associated fleet, user access policies, and storage configurations. </p>"
+    },
+    "CreateStreamingURL":{
+      "name":"CreateStreamingURL",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateStreamingURLRequest"},
+      "output":{"shape":"CreateStreamingURLResult"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ResourceNotAvailableException"},
+        {"shape":"OperationNotPermittedException"},
+        {"shape":"InvalidParameterCombinationException"}
+      ],
+      "documentation":"<p>Creates a temporary URL to start an AppStream 2.0 streaming session for the specified user. A streaming URL enables application streaming to be tested without user setup. </p>"
+    },
+    "CreateUpdatedImage":{
+      "name":"CreateUpdatedImage",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateUpdatedImageRequest"},
+      "output":{"shape":"CreateUpdatedImageResult"},
+      "errors":[
+        {"shape":"LimitExceededException"},
+        {"shape":"InvalidAccountStatusException"},
+        {"shape":"OperationNotPermittedException"},
+        {"shape":"ResourceAlreadyExistsException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ConcurrentModificationException"},
+        {"shape":"IncompatibleImageException"}
+      ],
+      "documentation":"<p>Creates a new image with the latest Windows operating system updates, driver updates, and AppStream 2.0 agent software.</p> <p>For more information, see the \"Update an Image by Using Managed AppStream 2.0 Image Updates\" section in <a href=\"https://docs.aws.amazon.com/appstream2/latest/developerguide/administer-images.html\">Administer Your AppStream 2.0 Images</a>, in the <i>Amazon AppStream 2.0 Administration Guide</i>.</p>"
+    },
+    "CreateUsageReportSubscription":{
+      "name":"CreateUsageReportSubscription",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateUsageReportSubscriptionRequest"},
+      "output":{"shape":"CreateUsageReportSubscriptionResult"},
+      "errors":[
+        {"shape":"InvalidRoleException"},
+        {"shape":"InvalidAccountStatusException"},
+        {"shape":"LimitExceededException"}
+      ],
+      "documentation":"<p>Creates a usage report subscription. Usage reports are generated daily.</p>"
+    },
+    "CreateUser":{
+      "name":"CreateUser",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateUserRequest"},
+      "output":{"shape":"CreateUserResult"},
+      "errors":[
+        {"shape":"ResourceAlreadyExistsException"},
+        {"shape":"InvalidAccountStatusException"},
+        {"shape":"InvalidParameterCombinationException"},
+        {"shape":"LimitExceededException"},
+        {"shape":"OperationNotPermittedException"}
+      ],
+      "documentation":"<p>Creates a new user in the user pool.</p>"
+    },
+    "DeleteDirectoryConfig":{
+      "name":"DeleteDirectoryConfig",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteDirectoryConfigRequest"},
+      "output":{"shape":"DeleteDirectoryConfigResult"},
+      "errors":[
+        {"shape":"ResourceInUseException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Deletes the specified Directory Config object from AppStream 2.0. This object includes the information required to join streaming instances to an Active Directory domain.</p>"
+    },
+    "DeleteFleet":{
+      "name":"DeleteFleet",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteFleetRequest"},
+      "output":{"shape":"DeleteFleetResult"},
+      "errors":[
+        {"shape":"ResourceInUseException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Deletes the specified fleet.</p>"
+    },
+    "DeleteImage":{
+      "name":"DeleteImage",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteImageRequest"},
+      "output":{"shape":"DeleteImageResult"},
+      "errors":[
+        {"shape":"ResourceInUseException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"OperationNotPermittedException"},
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Deletes the specified image. You cannot delete an image when it is in use. After you delete an image, you cannot provision new capacity using the image.</p>"
+    },
+    "DeleteImageBuilder":{
+      "name":"DeleteImageBuilder",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteImageBuilderRequest"},
+      "output":{"shape":"DeleteImageBuilderResult"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"OperationNotPermittedException"},
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Deletes the specified image builder and releases the capacity.</p>"
+    },
+    "DeleteImagePermissions":{
+      "name":"DeleteImagePermissions",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteImagePermissionsRequest"},
+      "output":{"shape":"DeleteImagePermissionsResult"},
+      "errors":[
+        {"shape":"ResourceNotAvailableException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Deletes permissions for the specified private image. After you delete permissions for an image, AWS accounts to which you previously granted these permissions can no longer use the image.</p>"
+    },
+    "DeleteStack":{
+      "name":"DeleteStack",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteStackRequest"},
+      "output":{"shape":"DeleteStackResult"},
+      "errors":[
+        {"shape":"ResourceInUseException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Deletes the specified stack. After the stack is deleted, the application streaming environment provided by the stack is no longer available to users. Also, any reservations made for application streaming sessions for the stack are released.</p>"
+    },
+    "DeleteUsageReportSubscription":{
+      "name":"DeleteUsageReportSubscription",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteUsageReportSubscriptionRequest"},
+      "output":{"shape":"DeleteUsageReportSubscriptionResult"},
+      "errors":[
+        {"shape":"InvalidAccountStatusException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Disables usage report generation.</p>"
+    },
+    "DeleteUser":{
+      "name":"DeleteUser",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteUserRequest"},
+      "output":{"shape":"DeleteUserResult"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Deletes a user from the user pool.</p>"
+    },
+    "DescribeDirectoryConfigs":{
+      "name":"DescribeDirectoryConfigs",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeDirectoryConfigsRequest"},
+      "output":{"shape":"DescribeDirectoryConfigsResult"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Retrieves a list that describes one or more specified Directory Config objects for AppStream 2.0, if the names for these objects are provided. Otherwise, all Directory Config objects in the account are described. These objects include the configuration information required to join fleets and image builders to Microsoft Active Directory domains. </p> <p>Although the response syntax in this topic includes the account password, this password is not returned in the actual response.</p>"
+    },
+    "DescribeFleets":{
+      "name":"DescribeFleets",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeFleetsRequest"},
+      "output":{"shape":"DescribeFleetsResult"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Retrieves a list that describes one or more specified fleets, if the fleet names are provided. Otherwise, all fleets in the account are described.</p>"
+    },
+    "DescribeImageBuilders":{
+      "name":"DescribeImageBuilders",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeImageBuildersRequest"},
+      "output":{"shape":"DescribeImageBuildersResult"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Retrieves a list that describes one or more specified image builders, if the image builder names are provided. Otherwise, all image builders in the account are described.</p>"
+    },
+    "DescribeImagePermissions":{
+      "name":"DescribeImagePermissions",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeImagePermissionsRequest"},
+      "output":{"shape":"DescribeImagePermissionsResult"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Retrieves a list that describes the permissions for shared AWS account IDs on a private image that you own. </p>"
+    },
+    "DescribeImages":{
+      "name":"DescribeImages",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeImagesRequest"},
+      "output":{"shape":"DescribeImagesResult"},
+      "errors":[
+        {"shape":"InvalidParameterCombinationException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Retrieves a list that describes one or more specified images, if the image names or image ARNs are provided. Otherwise, all images in the account are described.</p>"
+    },
+    "DescribeSessions":{
+      "name":"DescribeSessions",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeSessionsRequest"},
+      "output":{"shape":"DescribeSessionsResult"},
+      "errors":[
+        {"shape":"InvalidParameterCombinationException"}
+      ],
+      "documentation":"<p>Retrieves a list that describes the streaming sessions for a specified stack and fleet. If a UserId is provided for the stack and fleet, only streaming sessions for that user are described. If an authentication type is not provided, the default is to authenticate users using a streaming URL.</p>"
+    },
+    "DescribeStacks":{
+      "name":"DescribeStacks",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeStacksRequest"},
+      "output":{"shape":"DescribeStacksResult"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Retrieves a list that describes one or more specified stacks, if the stack names are provided. Otherwise, all stacks in the account are described.</p>"
+    },
+    "DescribeUsageReportSubscriptions":{
+      "name":"DescribeUsageReportSubscriptions",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeUsageReportSubscriptionsRequest"},
+      "output":{"shape":"DescribeUsageReportSubscriptionsResult"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidAccountStatusException"}
+      ],
+      "documentation":"<p>Retrieves a list that describes one or more usage report subscriptions.</p>"
+    },
+    "DescribeUserStackAssociations":{
+      "name":"DescribeUserStackAssociations",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeUserStackAssociationsRequest"},
+      "output":{"shape":"DescribeUserStackAssociationsResult"},
+      "errors":[
+        {"shape":"InvalidParameterCombinationException"},
+        {"shape":"OperationNotPermittedException"}
+      ],
+      "documentation":"<p>Retrieves a list that describes the UserStackAssociation objects. You must specify either or both of the following:</p> <ul> <li> <p>The stack name</p> </li> <li> <p>The user name (email address of the user associated with the stack) and the authentication type for the user</p> </li> </ul>"
+    },
+    "DescribeUsers":{
+      "name":"DescribeUsers",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeUsersRequest"},
+      "output":{"shape":"DescribeUsersResult"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterCombinationException"}
+      ],
+      "documentation":"<p>Retrieves a list that describes one or more specified users in the user pool.</p>"
+    },
+    "DisableUser":{
+      "name":"DisableUser",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DisableUserRequest"},
+      "output":{"shape":"DisableUserResult"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Disables the specified user in the user pool. Users can't sign in to AppStream 2.0 until they are re-enabled. This action does not delete the user. </p>"
+    },
+    "DisassociateFleet":{
+      "name":"DisassociateFleet",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DisassociateFleetRequest"},
+      "output":{"shape":"DisassociateFleetResult"},
+      "errors":[
+        {"shape":"ResourceInUseException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ConcurrentModificationException"},
+        {"shape":"OperationNotPermittedException"}
+      ],
+      "documentation":"<p>Disassociates the specified fleet from the specified stack.</p>"
+    },
+    "EnableUser":{
+      "name":"EnableUser",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"EnableUserRequest"},
+      "output":{"shape":"EnableUserResult"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidAccountStatusException"}
+      ],
+      "documentation":"<p>Enables a user in the user pool. After being enabled, users can sign in to AppStream 2.0 and open applications from the stacks to which they are assigned.</p>"
+    },
+    "ExpireSession":{
+      "name":"ExpireSession",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ExpireSessionRequest"},
+      "output":{"shape":"ExpireSessionResult"},
+      "documentation":"<p>Immediately stops the specified streaming session.</p>"
+    },
+    "ListAssociatedFleets":{
+      "name":"ListAssociatedFleets",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListAssociatedFleetsRequest"},
+      "output":{"shape":"ListAssociatedFleetsResult"},
+      "documentation":"<p>Retrieves the name of the fleet that is associated with the specified stack.</p>"
+    },
+    "ListAssociatedStacks":{
+      "name":"ListAssociatedStacks",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListAssociatedStacksRequest"},
+      "output":{"shape":"ListAssociatedStacksResult"},
+      "documentation":"<p>Retrieves the name of the stack with which the specified fleet is associated.</p>"
+    },
+    "ListTagsForResource":{
+      "name":"ListTagsForResource",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListTagsForResourceRequest"},
+      "output":{"shape":"ListTagsForResourceResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Retrieves a list of all tags for the specified AppStream 2.0 resource. You can tag AppStream 2.0 image builders, images, fleets, and stacks.</p> <p>For more information about tags, see <a href=\"https://docs.aws.amazon.com/appstream2/latest/developerguide/tagging-basic.html\">Tagging Your Resources</a> in the <i>Amazon AppStream 2.0 Administration Guide</i>.</p>"
+    },
+    "StartFleet":{
+      "name":"StartFleet",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"StartFleetRequest"},
+      "output":{"shape":"StartFleetResult"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"OperationNotPermittedException"},
+        {"shape":"LimitExceededException"},
+        {"shape":"RequestLimitExceededException"},
+        {"shape":"InvalidAccountStatusException"},
+        {"shape":"ConcurrentModificationException"},
+        {"shape":"ResourceNotAvailableException"},
+        {"shape":"InvalidRoleException"}
+      ],
+      "documentation":"<p>Starts the specified fleet.</p>"
+    },
+    "StartImageBuilder":{
+      "name":"StartImageBuilder",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"StartImageBuilderRequest"},
+      "output":{"shape":"StartImageBuilderResult"},
+      "errors":[
+        {"shape":"ResourceNotAvailableException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ConcurrentModificationException"},
+        {"shape":"InvalidAccountStatusException"},
+        {"shape":"IncompatibleImageException"}
+      ],
+      "documentation":"<p>Starts the specified image builder.</p>"
+    },
+    "StopFleet":{
+      "name":"StopFleet",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"StopFleetRequest"},
+      "output":{"shape":"StopFleetResult"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Stops the specified fleet.</p>"
+    },
+    "StopImageBuilder":{
+      "name":"StopImageBuilder",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"StopImageBuilderRequest"},
+      "output":{"shape":"StopImageBuilderResult"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"OperationNotPermittedException"},
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Stops the specified image builder.</p>"
+    },
+    "TagResource":{
+      "name":"TagResource",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"TagResourceRequest"},
+      "output":{"shape":"TagResourceResponse"},
+      "errors":[
+        {"shape":"LimitExceededException"},
+        {"shape":"InvalidAccountStatusException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Adds or overwrites one or more tags for the specified AppStream 2.0 resource. You can tag AppStream 2.0 image builders, images, fleets, and stacks.</p> <p>Each tag consists of a key and an optional value. If a resource already has a tag with the same key, this operation updates its value.</p> <p>To list the current tags for your resources, use <a>ListTagsForResource</a>. To disassociate tags from your resources, use <a>UntagResource</a>.</p> <p>For more information about tags, see <a href=\"https://docs.aws.amazon.com/appstream2/latest/developerguide/tagging-basic.html\">Tagging Your Resources</a> in the <i>Amazon AppStream 2.0 Administration Guide</i>.</p>"
+    },
+    "UntagResource":{
+      "name":"UntagResource",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UntagResourceRequest"},
+      "output":{"shape":"UntagResourceResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Disassociates one or more specified tags from the specified AppStream 2.0 resource.</p> <p>To list the current tags for your resources, use <a>ListTagsForResource</a>.</p> <p>For more information about tags, see <a href=\"https://docs.aws.amazon.com/appstream2/latest/developerguide/tagging-basic.html\">Tagging Your Resources</a> in the <i>Amazon AppStream 2.0 Administration Guide</i>.</p>"
+    },
+    "UpdateDirectoryConfig":{
+      "name":"UpdateDirectoryConfig",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UpdateDirectoryConfigRequest"},
+      "output":{"shape":"UpdateDirectoryConfigResult"},
+      "errors":[
+        {"shape":"ResourceInUseException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ConcurrentModificationException"},
+        {"shape":"OperationNotPermittedException"},
+        {"shape":"InvalidRoleException"}
+      ],
+      "documentation":"<p>Updates the specified Directory Config object in AppStream 2.0. This object includes the configuration information required to join fleets and image builders to Microsoft Active Directory domains.</p>"
+    },
+    "UpdateFleet":{
+      "name":"UpdateFleet",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UpdateFleetRequest"},
+      "output":{"shape":"UpdateFleetResult"},
+      "errors":[
+        {"shape":"ResourceInUseException"},
+        {"shape":"LimitExceededException"},
+        {"shape":"RequestLimitExceededException"},
+        {"shape":"InvalidAccountStatusException"},
+        {"shape":"InvalidRoleException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ResourceNotAvailableException"},
+        {"shape":"InvalidParameterCombinationException"},
+        {"shape":"ConcurrentModificationException"},
+        {"shape":"IncompatibleImageException"},
+        {"shape":"OperationNotPermittedException"}
+      ],
+      "documentation":"<p>Updates the specified fleet.</p> <p>If the fleet is in the <code>STOPPED</code> state, you can update any attribute except the fleet name. If the fleet is in the <code>RUNNING</code> state, you can update the <code>DisplayName</code>, <code>ComputeCapacity</code>, <code>ImageARN</code>, <code>ImageName</code>, <code>IdleDisconnectTimeoutInSeconds</code>, and <code>DisconnectTimeoutInSeconds</code> attributes. If the fleet is in the <code>STARTING</code> or <code>STOPPING</code> state, you can't update it.</p>"
+    },
+    "UpdateImagePermissions":{
+      "name":"UpdateImagePermissions",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UpdateImagePermissionsRequest"},
+      "output":{"shape":"UpdateImagePermissionsResult"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ResourceNotAvailableException"},
+        {"shape":"LimitExceededException"}
+      ],
+      "documentation":"<p>Adds or updates permissions for the specified private image. </p>"
+    },
+    "UpdateStack":{
+      "name":"UpdateStack",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UpdateStackRequest"},
+      "output":{"shape":"UpdateStackResult"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ResourceInUseException"},
+        {"shape":"InvalidRoleException"},
+        {"shape":"InvalidParameterCombinationException"},
+        {"shape":"LimitExceededException"},
+        {"shape":"InvalidAccountStatusException"},
+        {"shape":"IncompatibleImageException"},
+        {"shape":"OperationNotPermittedException"},
+        {"shape":"ConcurrentModificationException"}
+      ],
+      "documentation":"<p>Updates the specified fields for the specified stack.</p>"
+    }
+  },
+  "shapes":{
+    "AccessEndpoint":{
+      "type":"structure",
+      "required":["EndpointType"],
+      "members":{
+        "EndpointType":{
+          "shape":"AccessEndpointType",
+          "documentation":"<p>The type of interface endpoint.</p>"
+        },
+        "VpceId":{
+          "shape":"String",
+          "documentation":"<p>The identifier (ID) of the VPC in which the interface endpoint is used.</p>"
+        }
+      },
+      "documentation":"<p>Describes an interface VPC endpoint (interface endpoint) that lets you create a private connection between the virtual private cloud (VPC) that you specify and AppStream 2.0. When you specify an interface endpoint for a stack, users of the stack can connect to AppStream 2.0 only through that endpoint. When you specify an interface endpoint for an image builder, administrators can connect to the image builder only through that endpoint.</p>"
+    },
+    "AccessEndpointList":{
+      "type":"list",
+      "member":{"shape":"AccessEndpoint"},
+      "max":4,
+      "min":1
+    },
+    "AccessEndpointType":{
+      "type":"string",
+      "enum":["STREAMING"]
+    },
+    "AccountName":{
+      "type":"string",
+      "min":1,
+      "sensitive":true
+    },
+    "AccountPassword":{
+      "type":"string",
+      "max":127,
+      "min":1,
+      "sensitive":true
+    },
+    "Action":{
+      "type":"string",
+      "enum":[
+        "CLIPBOARD_COPY_FROM_LOCAL_DEVICE",
+        "CLIPBOARD_COPY_TO_LOCAL_DEVICE",
+        "FILE_UPLOAD",
+        "FILE_DOWNLOAD",
+        "PRINTING_TO_LOCAL_DEVICE",
+        "DOMAIN_PASSWORD_SIGNIN",
+        "DOMAIN_SMART_CARD_SIGNIN"
+      ]
+    },
+    "Application":{
+      "type":"structure",
+      "members":{
+        "Name":{
+          "shape":"String",
+          "documentation":"<p>The name of the application.</p>"
+        },
+        "DisplayName":{
+          "shape":"String",
+          "documentation":"<p>The application name to display.</p>"
+        },
+        "IconURL":{
+          "shape":"String",
+          "documentation":"<p>The URL for the application icon. This URL might be time-limited.</p>"
+        },
+        "LaunchPath":{
+          "shape":"String",
+          "documentation":"<p>The path to the application executable in the instance.</p>"
+        },
+        "LaunchParameters":{
+          "shape":"String",
+          "documentation":"<p>The arguments that are passed to the application at launch.</p>"
+        },
+        "Enabled":{
+          "shape":"Boolean",
+          "documentation":"<p>If there is a problem, the application can be disabled after image creation.</p>"
+        },
+        "Metadata":{
+          "shape":"Metadata",
+          "documentation":"<p>Additional attributes that describe the application.</p>"
+        }
+      },
+      "documentation":"<p>Describes an application in the application catalog.</p>"
+    },
+    "ApplicationSettings":{
+      "type":"structure",
+      "required":["Enabled"],
+      "members":{
+        "Enabled":{
+          "shape":"Boolean",
+          "documentation":"<p>Enables or disables persistent application settings for users during their streaming sessions. </p>"
+        },
+        "SettingsGroup":{
+          "shape":"SettingsGroup",
+          "documentation":"<p>The path prefix for the S3 bucket where users’ persistent application settings are stored. You can allow the same persistent application settings to be used across multiple stacks by specifying the same settings group for each stack. </p>"
+        }
+      },
+      "documentation":"<p>The persistent application settings for users of a stack.</p>"
+    },
+    "ApplicationSettingsResponse":{
+      "type":"structure",
+      "members":{
+        "Enabled":{
+          "shape":"Boolean",
+          "documentation":"<p>Specifies whether persistent application settings are enabled for users during their streaming sessions.</p>"
+        },
+        "SettingsGroup":{
+          "shape":"SettingsGroup",
+          "documentation":"<p>The path prefix for the S3 bucket where users’ persistent application settings are stored.</p>"
+        },
+        "S3BucketName":{
+          "shape":"String",
+          "documentation":"<p>The S3 bucket where users’ persistent application settings are stored. When persistent application settings are enabled for the first time for an account in an AWS Region, an S3 bucket is created. The bucket is unique to the AWS account and the Region. </p>"
+        }
+      },
+      "documentation":"<p>Describes the persistent application settings for users of a stack.</p>"
+    },
+    "Applications":{
+      "type":"list",
+      "member":{"shape":"Application"}
+    },
+    "AppstreamAgentVersion":{
+      "type":"string",
+      "max":100,
+      "min":1
+    },
+    "Arn":{
+      "type":"string",
+      "pattern":"^arn:aws(?:\\-cn|\\-iso\\-b|\\-iso|\\-us\\-gov)?:[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.\\\\-]{0,1023}$"
+    },
+    "ArnList":{
+      "type":"list",
+      "member":{"shape":"Arn"}
+    },
+    "AssociateFleetRequest":{
+      "type":"structure",
+      "required":[
+        "FleetName",
+        "StackName"
+      ],
+      "members":{
+        "FleetName":{
+          "shape":"String",
+          "documentation":"<p>The name of the fleet. </p>"
+        },
+        "StackName":{
+          "shape":"String",
+          "documentation":"<p>The name of the stack.</p>"
+        }
+      }
+    },
+    "AssociateFleetResult":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "AuthenticationType":{
+      "type":"string",
+      "enum":[
+        "API",
+        "SAML",
+        "USERPOOL"
+      ]
+    },
+    "AwsAccountId":{
+      "type":"string",
+      "pattern":"^\\d+$"
+    },
+    "AwsAccountIdList":{
+      "type":"list",
+      "member":{"shape":"AwsAccountId"},
+      "max":5,
+      "min":1
+    },
+    "BatchAssociateUserStackRequest":{
+      "type":"structure",
+      "required":["UserStackAssociations"],
+      "members":{
+        "UserStackAssociations":{
+          "shape":"UserStackAssociationList",
+          "documentation":"<p>The list of UserStackAssociation objects.</p>"
+        }
+      }
+    },
+    "BatchAssociateUserStackResult":{
+      "type":"structure",
+      "members":{
+        "errors":{
+          "shape":"UserStackAssociationErrorList",
+          "documentation":"<p>The list of UserStackAssociationError objects.</p>"
+        }
+      }
+    },
+    "BatchDisassociateUserStackRequest":{
+      "type":"structure",
+      "required":["UserStackAssociations"],
+      "members":{
+        "UserStackAssociations":{
+          "shape":"UserStackAssociationList",
+          "documentation":"<p>The list of UserStackAssociation objects.</p>"
+        }
+      }
+    },
+    "BatchDisassociateUserStackResult":{
+      "type":"structure",
+      "members":{
+        "errors":{
+          "shape":"UserStackAssociationErrorList",
+          "documentation":"<p>The list of UserStackAssociationError objects.</p>"
+        }
+      }
+    },
+    "Boolean":{"type":"boolean"},
+    "BooleanObject":{"type":"boolean"},
+    "ComputeCapacity":{
+      "type":"structure",
+      "required":["DesiredInstances"],
+      "members":{
+        "DesiredInstances":{
+          "shape":"Integer",
+          "documentation":"<p>The desired number of streaming instances.</p>"
+        }
+      },
+      "documentation":"<p>Describes the capacity for a fleet.</p>"
+    },
+    "ComputeCapacityStatus":{
+      "type":"structure",
+      "required":["Desired"],
+      "members":{
+        "Desired":{
+          "shape":"Integer",
+          "documentation":"<p>The desired number of streaming instances.</p>"
+        },
+        "Running":{
+          "shape":"Integer",
+          "documentation":"<p>The total number of simultaneous streaming instances that are running.</p>"
+        },
+        "InUse":{
+          "shape":"Integer",
+          "documentation":"<p>The number of instances in use for streaming.</p>"
+        },
+        "Available":{
+          "shape":"Integer",
+          "documentation":"<p>The number of currently available instances that can be used to stream sessions.</p>"
+        }
+      },
+      "documentation":"<p>Describes the capacity status for a fleet.</p>"
+    },
+    "ConcurrentModificationException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>An API error occurred. Wait a few minutes and try again.</p>",
+      "exception":true
+    },
+    "CopyImageRequest":{
+      "type":"structure",
+      "required":[
+        "SourceImageName",
+        "DestinationImageName",
+        "DestinationRegion"
+      ],
+      "members":{
+        "SourceImageName":{
+          "shape":"Name",
+          "documentation":"<p>The name of the image to copy.</p>"
+        },
+        "DestinationImageName":{
+          "shape":"Name",
+          "documentation":"<p>The name that the image will have when it is copied to the destination.</p>"
+        },
+        "DestinationRegion":{
+          "shape":"RegionName",
+          "documentation":"<p>The destination region to which the image will be copied. This parameter is required, even if you are copying an image within the same region.</p>"
+        },
+        "DestinationImageDescription":{
+          "shape":"Description",
+          "documentation":"<p>The description that the image will have when it is copied to the destination.</p>"
+        }
+      }
+    },
+    "CopyImageResponse":{
+      "type":"structure",
+      "members":{
+        "DestinationImageName":{
+          "shape":"Name",
+          "documentation":"<p>The name of the destination image.</p>"
+        }
+      }
+    },
+    "CreateDirectoryConfigRequest":{
+      "type":"structure",
+      "required":[
+        "DirectoryName",
+        "OrganizationalUnitDistinguishedNames"
+      ],
+      "members":{
+        "DirectoryName":{
+          "shape":"DirectoryName",
+          "documentation":"<p>The fully qualified name of the directory (for example, corp.example.com).</p>"
+        },
+        "OrganizationalUnitDistinguishedNames":{
+          "shape":"OrganizationalUnitDistinguishedNamesList",
+          "documentation":"<p>The distinguished names of the organizational units for computer accounts.</p>"
+        },
+        "ServiceAccountCredentials":{
+          "shape":"ServiceAccountCredentials",
+          "documentation":"<p>The credentials for the service account used by the fleet or image builder to connect to the directory.</p>"
+        }
+      }
+    },
+    "CreateDirectoryConfigResult":{
+      "type":"structure",
+      "members":{
+        "DirectoryConfig":{
+          "shape":"DirectoryConfig",
+          "documentation":"<p>Information about the directory configuration.</p>"
+        }
+      }
+    },
+    "CreateFleetRequest":{
+      "type":"structure",
+      "required":[
+        "Name",
+        "InstanceType",
+        "ComputeCapacity"
+      ],
+      "members":{
+        "Name":{
+          "shape":"Name",
+          "documentation":"<p>A unique name for the fleet.</p>"
+        },
+        "ImageName":{
+          "shape":"String",
+          "documentation":"<p>The name of the image used to create the fleet.</p>"
+        },
+        "ImageArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the public, private, or shared image to use.</p>"
+        },
+        "InstanceType":{
+          "shape":"String",
+          "documentation":"<p>The instance type to use when launching fleet instances. The following instance types are available:</p> <ul> <li> <p>stream.standard.small</p> </li> <li> <p>stream.standard.medium</p> </li> <li> <p>stream.standard.large</p> </li> <li> <p>stream.compute.large</p> </li> <li> <p>stream.compute.xlarge</p> </li> <li> <p>stream.compute.2xlarge</p> </li> <li> <p>stream.compute.4xlarge</p> </li> <li> <p>stream.compute.8xlarge</p> </li> <li> <p>stream.memory.large</p> </li> <li> <p>stream.memory.xlarge</p> </li> <li> <p>stream.memory.2xlarge</p> </li> <li> <p>stream.memory.4xlarge</p> </li> <li> <p>stream.memory.8xlarge</p> </li> <li> <p>stream.memory.z1d.large</p> </li> <li> <p>stream.memory.z1d.xlarge</p> </li> <li> <p>stream.memory.z1d.2xlarge</p> </li> <li> <p>stream.memory.z1d.3xlarge</p> </li> <li> <p>stream.memory.z1d.6xlarge</p> </li> <li> <p>stream.memory.z1d.12xlarge</p> </li> <li> <p>stream.graphics-design.large</p> </li> <li> <p>stream.graphics-design.xlarge</p> </li> <li> <p>stream.graphics-design.2xlarge</p> </li> <li> <p>stream.graphics-design.4xlarge</p> </li> <li> <p>stream.graphics-desktop.2xlarge</p> </li> <li> <p>stream.graphics.g4dn.xlarge</p> </li> <li> <p>stream.graphics.g4dn.2xlarge</p> </li> <li> <p>stream.graphics.g4dn.4xlarge</p> </li> <li> <p>stream.graphics.g4dn.8xlarge</p> </li> <li> <p>stream.graphics.g4dn.12xlarge</p> </li> <li> <p>stream.graphics.g4dn.16xlarge</p> </li> <li> <p>stream.graphics-pro.4xlarge</p> </li> <li> <p>stream.graphics-pro.8xlarge</p> </li> <li> <p>stream.graphics-pro.16xlarge</p> </li> </ul>"
+        },
+        "FleetType":{
+          "shape":"FleetType",
+          "documentation":"<p>The fleet type.</p> <dl> <dt>ALWAYS_ON</dt> <dd> <p>Provides users with instant-on access to their apps. You are charged for all running instances in your fleet, even if no users are streaming apps.</p> </dd> <dt>ON_DEMAND</dt> <dd> <p>Provide users with access to applications after they connect, which takes one to two minutes. You are charged for instance streaming when users are connected and a small hourly fee for instances that are not streaming apps.</p> </dd> </dl>"
+        },
+        "ComputeCapacity":{
+          "shape":"ComputeCapacity",
+          "documentation":"<p>The desired capacity for the fleet.</p>"
+        },
+        "VpcConfig":{
+          "shape":"VpcConfig",
+          "documentation":"<p>The VPC configuration for the fleet.</p>"
+        },
+        "MaxUserDurationInSeconds":{
+          "shape":"Integer",
+          "documentation":"<p>The maximum amount of time that a streaming session can remain active, in seconds. If users are still connected to a streaming instance five minutes before this limit is reached, they are prompted to save any open documents before being disconnected. After this time elapses, the instance is terminated and replaced by a new instance.</p> <p>Specify a value between 600 and 360000.</p>"
+        },
+        "DisconnectTimeoutInSeconds":{
+          "shape":"Integer",
+          "documentation":"<p>The amount of time that a streaming session remains active after users disconnect. If users try to reconnect to the streaming session after a disconnection or network interruption within this time interval, they are connected to their previous session. Otherwise, they are connected to a new session with a new streaming instance. </p> <p>Specify a value between 60 and 360000.</p>"
+        },
+        "Description":{
+          "shape":"Description",
+          "documentation":"<p>The description to display.</p>"
+        },
+        "DisplayName":{
+          "shape":"DisplayName",
+          "documentation":"<p>The fleet name to display.</p>"
+        },
+        "EnableDefaultInternetAccess":{
+          "shape":"BooleanObject",
+          "documentation":"<p>Enables or disables default internet access for the fleet.</p>"
+        },
+        "DomainJoinInfo":{
+          "shape":"DomainJoinInfo",
+          "documentation":"<p>The name of the directory and organizational unit (OU) to use to join the fleet to a Microsoft Active Directory domain. </p>"
+        },
+        "Tags":{
+          "shape":"Tags",
+          "documentation":"<p>The tags to associate with the fleet. A tag is a key-value pair, and the value is optional. For example, Environment=Test. If you do not specify a value, Environment=. </p> <p>If you do not specify a value, the value is set to an empty string.</p> <p>Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following special characters: </p> <p>_ . : / = + \\ - @</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/appstream2/latest/developerguide/tagging-basic.html\">Tagging Your Resources</a> in the <i>Amazon AppStream 2.0 Administration Guide</i>.</p>"
+        },
+        "IdleDisconnectTimeoutInSeconds":{
+          "shape":"Integer",
+          "documentation":"<p>The amount of time that users can be idle (inactive) before they are disconnected from their streaming session and the <code>DisconnectTimeoutInSeconds</code> time interval begins. Users are notified before they are disconnected due to inactivity. If they try to reconnect to the streaming session before the time interval specified in <code>DisconnectTimeoutInSeconds</code> elapses, they are connected to their previous session. Users are considered idle when they stop providing keyboard or mouse input during their streaming session. File uploads and downloads, audio in, audio out, and pixels changing do not qualify as user activity. If users continue to be idle after the time interval in <code>IdleDisconnectTimeoutInSeconds</code> elapses, they are disconnected.</p> <p>To prevent users from being disconnected due to inactivity, specify a value of 0. Otherwise, specify a value between 60 and 3600. The default value is 0.</p> <note> <p>If you enable this feature, we recommend that you specify a value that corresponds exactly to a whole number of minutes (for example, 60, 120, and 180). If you don't do this, the value is rounded to the nearest minute. For example, if you specify a value of 70, users are disconnected after 1 minute of inactivity. If you specify a value that is at the midpoint between two different minutes, the value is rounded up. For example, if you specify a value of 90, users are disconnected after 2 minutes of inactivity. </p> </note>"
+        },
+        "IamRoleArn":{
+          "shape":"Arn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the IAM role to apply to the fleet. To assume a role, a fleet instance calls the AWS Security Token Service (STS) <code>AssumeRole</code> API operation and passes the ARN of the role to use. The operation creates a new session with temporary credentials. AppStream 2.0 retrieves the temporary credentials and creates the <b>appstream_machine_role</b> credential profile on the instance.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html\">Using an IAM Role to Grant Permissions to Applications and Scripts Running on AppStream 2.0 Streaming Instances</a> in the <i>Amazon AppStream 2.0 Administration Guide</i>.</p>"
+        },
+        "StreamView":{
+          "shape":"StreamView",
+          "documentation":"<p>The AppStream 2.0 view that is displayed to your users when they stream from the fleet. When <code>APP</code> is specified, only the windows of applications opened by users display. When <code>DESKTOP</code> is specified, the standard desktop that is provided by the operating system displays.</p> <p>The default value is <code>APP</code>.</p>"
+        }
+      }
+    },
+    "CreateFleetResult":{
+      "type":"structure",
+      "members":{
+        "Fleet":{
+          "shape":"Fleet",
+          "documentation":"<p>Information about the fleet.</p>"
+        }
+      }
+    },
+    "CreateImageBuilderRequest":{
+      "type":"structure",
+      "required":[
+        "Name",
+        "InstanceType"
+      ],
+      "members":{
+        "Name":{
+          "shape":"Name",
+          "documentation":"<p>A unique name for the image builder.</p>"
+        },
+        "ImageName":{
+          "shape":"String",
+          "documentation":"<p>The name of the image used to create the image builder.</p>"
+        },
+        "ImageArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the public, private, or shared image to use.</p>"
+        },
+        "InstanceType":{
+          "shape":"String",
+          "documentation":"<p>The instance type to use when launching the image builder. The following instance types are available:</p> <ul> <li> <p>stream.standard.small</p> </li> <li> <p>stream.standard.medium</p> </li> <li> <p>stream.standard.large</p> </li> <li> <p>stream.compute.large</p> </li> <li> <p>stream.compute.xlarge</p> </li> <li> <p>stream.compute.2xlarge</p> </li> <li> <p>stream.compute.4xlarge</p> </li> <li> <p>stream.compute.8xlarge</p> </li> <li> <p>stream.memory.large</p> </li> <li> <p>stream.memory.xlarge</p> </li> <li> <p>stream.memory.2xlarge</p> </li> <li> <p>stream.memory.4xlarge</p> </li> <li> <p>stream.memory.8xlarge</p> </li> <li> <p>stream.memory.z1d.large</p> </li> <li> <p>stream.memory.z1d.xlarge</p> </li> <li> <p>stream.memory.z1d.2xlarge</p> </li> <li> <p>stream.memory.z1d.3xlarge</p> </li> <li> <p>stream.memory.z1d.6xlarge</p> </li> <li> <p>stream.memory.z1d.12xlarge</p> </li> <li> <p>stream.graphics-design.large</p> </li> <li> <p>stream.graphics-design.xlarge</p> </li> <li> <p>stream.graphics-design.2xlarge</p> </li> <li> <p>stream.graphics-design.4xlarge</p> </li> <li> <p>stream.graphics-desktop.2xlarge</p> </li> <li> <p>stream.graphics.g4dn.xlarge</p> </li> <li> <p>stream.graphics.g4dn.2xlarge</p> </li> <li> <p>stream.graphics.g4dn.4xlarge</p> </li> <li> <p>stream.graphics.g4dn.8xlarge</p> </li> <li> <p>stream.graphics.g4dn.12xlarge</p> </li> <li> <p>stream.graphics.g4dn.16xlarge</p> </li> <li> <p>stream.graphics-pro.4xlarge</p> </li> <li> <p>stream.graphics-pro.8xlarge</p> </li> <li> <p>stream.graphics-pro.16xlarge</p> </li> </ul>"
+        },
+        "Description":{
+          "shape":"Description",
+          "documentation":"<p>The description to display.</p>"
+        },
+        "DisplayName":{
+          "shape":"DisplayName",
+          "documentation":"<p>The image builder name to display.</p>"
+        },
+        "VpcConfig":{
+          "shape":"VpcConfig",
+          "documentation":"<p>The VPC configuration for the image builder. You can specify only one subnet.</p>"
+        },
+        "IamRoleArn":{
+          "shape":"Arn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the IAM role to apply to the image builder. To assume a role, the image builder calls the AWS Security Token Service (STS) <code>AssumeRole</code> API operation and passes the ARN of the role to use. The operation creates a new session with temporary credentials. AppStream 2.0 retrieves the temporary credentials and creates the <b>appstream_machine_role</b> credential profile on the instance.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html\">Using an IAM Role to Grant Permissions to Applications and Scripts Running on AppStream 2.0 Streaming Instances</a> in the <i>Amazon AppStream 2.0 Administration Guide</i>.</p>"
+        },
+        "EnableDefaultInternetAccess":{
+          "shape":"BooleanObject",
+          "documentation":"<p>Enables or disables default internet access for the image builder.</p>"
+        },
+        "DomainJoinInfo":{
+          "shape":"DomainJoinInfo",
+          "documentation":"<p>The name of the directory and organizational unit (OU) to use to join the image builder to a Microsoft Active Directory domain. </p>"
+        },
+        "AppstreamAgentVersion":{
+          "shape":"AppstreamAgentVersion",
+          "documentation":"<p>The version of the AppStream 2.0 agent to use for this image builder. To use the latest version of the AppStream 2.0 agent, specify [LATEST]. </p>"
+        },
+        "Tags":{
+          "shape":"Tags",
+          "documentation":"<p>The tags to associate with the image builder. A tag is a key-value pair, and the value is optional. For example, Environment=Test. If you do not specify a value, Environment=. </p> <p>Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following special characters: </p> <p>_ . : / = + \\ - @</p> <p>If you do not specify a value, the value is set to an empty string.</p> <p>For more information about tags, see <a href=\"https://docs.aws.amazon.com/appstream2/latest/developerguide/tagging-basic.html\">Tagging Your Resources</a> in the <i>Amazon AppStream 2.0 Administration Guide</i>.</p>"
+        },
+        "AccessEndpoints":{
+          "shape":"AccessEndpointList",
+          "documentation":"<p>The list of interface VPC endpoint (interface endpoint) objects. Administrators can connect to the image builder only through the specified endpoints.</p>"
+        }
+      }
+    },
+    "CreateImageBuilderResult":{
+      "type":"structure",
+      "members":{
+        "ImageBuilder":{
+          "shape":"ImageBuilder",
+          "documentation":"<p>Information about the image builder.</p>"
+        }
+      }
+    },
+    "CreateImageBuilderStreamingURLRequest":{
+      "type":"structure",
+      "required":["Name"],
+      "members":{
+        "Name":{
+          "shape":"String",
+          "documentation":"<p>The name of the image builder.</p>"
+        },
+        "Validity":{
+          "shape":"Long",
+          "documentation":"<p>The time that the streaming URL will be valid, in seconds. Specify a value between 1 and 604800 seconds. The default is 3600 seconds.</p>"
+        }
+      }
+    },
+    "CreateImageBuilderStreamingURLResult":{
+      "type":"structure",
+      "members":{
+        "StreamingURL":{
+          "shape":"String",
+          "documentation":"<p>The URL to start the AppStream 2.0 streaming session.</p>"
+        },
+        "Expires":{
+          "shape":"Timestamp",
+          "documentation":"<p>The elapsed time, in seconds after the Unix epoch, when this URL expires.</p>"
+        }
+      }
+    },
+    "CreateStackRequest":{
+      "type":"structure",
+      "required":["Name"],
+      "members":{
+        "Name":{
+          "shape":"Name",
+          "documentation":"<p>The name of the stack.</p>"
+        },
+        "Description":{
+          "shape":"Description",
+          "documentation":"<p>The description to display.</p>"
+        },
+        "DisplayName":{
+          "shape":"DisplayName",
+          "documentation":"<p>The stack name to display.</p>"
+        },
+        "StorageConnectors":{
+          "shape":"StorageConnectorList",
+          "documentation":"<p>The storage connectors to enable.</p>"
+        },
+        "RedirectURL":{
+          "shape":"RedirectURL",
+          "documentation":"<p>The URL that users are redirected to after their streaming session ends.</p>"
+        },
+        "FeedbackURL":{
+          "shape":"FeedbackURL",
+          "documentation":"<p>The URL that users are redirected to after they click the Send Feedback link. If no URL is specified, no Send Feedback link is displayed.</p>"
+        },
+        "UserSettings":{
+          "shape":"UserSettingList",
+          "documentation":"<p>The actions that are enabled or disabled for users during their streaming sessions. By default, these actions are enabled. </p>"
+        },
+        "ApplicationSettings":{
+          "shape":"ApplicationSettings",
+          "documentation":"<p>The persistent application settings for users of a stack. When these settings are enabled, changes that users make to applications and Windows settings are automatically saved after each session and applied to the next session.</p>"
+        },
+        "Tags":{
+          "shape":"Tags",
+          "documentation":"<p>The tags to associate with the stack. A tag is a key-value pair, and the value is optional. For example, Environment=Test. If you do not specify a value, Environment=. </p> <p>If you do not specify a value, the value is set to an empty string.</p> <p>Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following special characters: </p> <p>_ . : / = + \\ - @</p> <p>For more information about tags, see <a href=\"https://docs.aws.amazon.com/appstream2/latest/developerguide/tagging-basic.html\">Tagging Your Resources</a> in the <i>Amazon AppStream 2.0 Administration Guide</i>.</p>"
+        },
+        "AccessEndpoints":{
+          "shape":"AccessEndpointList",
+          "documentation":"<p>The list of interface VPC endpoint (interface endpoint) objects. Users of the stack can connect to AppStream 2.0 only through the specified endpoints.</p>"
+        },
+        "EmbedHostDomains":{
+          "shape":"EmbedHostDomains",
+          "documentation":"<p>The domains where AppStream 2.0 streaming sessions can be embedded in an iframe. You must approve the domains that you want to host embedded AppStream 2.0 streaming sessions. </p>"
+        }
+      }
+    },
+    "CreateStackResult":{
+      "type":"structure",
+      "members":{
+        "Stack":{
+          "shape":"Stack",
+          "documentation":"<p>Information about the stack.</p>"
+        }
+      }
+    },
+    "CreateStreamingURLRequest":{
+      "type":"structure",
+      "required":[
+        "StackName",
+        "FleetName",
+        "UserId"
+      ],
+      "members":{
+        "StackName":{
+          "shape":"String",
+          "documentation":"<p>The name of the stack.</p>"
+        },
+        "FleetName":{
+          "shape":"String",
+          "documentation":"<p>The name of the fleet.</p>"
+        },
+        "UserId":{
+          "shape":"StreamingUrlUserId",
+          "documentation":"<p>The identifier of the user.</p>"
+        },
+        "ApplicationId":{
+          "shape":"String",
+          "documentation":"<p>The name of the application to launch after the session starts. This is the name that you specified as <b>Name</b> in the Image Assistant. If your fleet is enabled for the <b>Desktop</b> stream view, you can also choose to launch directly to the operating system desktop. To do so, specify <b>Desktop</b>.</p>"
+        },
+        "Validity":{
+          "shape":"Long",
+          "documentation":"<p>The time that the streaming URL will be valid, in seconds. Specify a value between 1 and 604800 seconds. The default is 60 seconds.</p>"
+        },
+        "SessionContext":{
+          "shape":"String",
+          "documentation":"<p>The session context. For more information, see <a href=\"https://docs.aws.amazon.com/appstream2/latest/developerguide/managing-stacks-fleets.html#managing-stacks-fleets-parameters\">Session Context</a> in the <i>Amazon AppStream 2.0 Administration Guide</i>.</p>"
+        }
+      }
+    },
+    "CreateStreamingURLResult":{
+      "type":"structure",
+      "members":{
+        "StreamingURL":{
+          "shape":"String",
+          "documentation":"<p>The URL to start the AppStream 2.0 streaming session.</p>"
+        },
+        "Expires":{
+          "shape":"Timestamp",
+          "documentation":"<p>The elapsed time, in seconds after the Unix epoch, when this URL expires.</p>"
+        }
+      }
+    },
+    "CreateUpdatedImageRequest":{
+      "type":"structure",
+      "required":[
+        "existingImageName",
+        "newImageName"
+      ],
+      "members":{
+        "existingImageName":{
+          "shape":"Name",
+          "documentation":"<p>The name of the image to update.</p>"
+        },
+        "newImageName":{
+          "shape":"Name",
+          "documentation":"<p>The name of the new image. The name must be unique within the AWS account and Region.</p>"
+        },
+        "newImageDescription":{
+          "shape":"Description",
+          "documentation":"<p>The description to display for the new image.</p>"
+        },
+        "newImageDisplayName":{
+          "shape":"DisplayName",
+          "documentation":"<p>The name to display for the new image.</p>"
+        },
+        "newImageTags":{
+          "shape":"Tags",
+          "documentation":"<p>The tags to associate with the new image. A tag is a key-value pair, and the value is optional. For example, Environment=Test. If you do not specify a value, Environment=. </p> <p>Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following special characters: </p> <p>_ . : / = + \\ - @</p> <p>If you do not specify a value, the value is set to an empty string.</p> <p>For more information about tags, see <a href=\"https://docs.aws.amazon.com/appstream2/latest/developerguide/tagging-basic.html\">Tagging Your Resources</a> in the <i>Amazon AppStream 2.0 Administration Guide</i>.</p>"
+        },
+        "dryRun":{
+          "shape":"Boolean",
+          "documentation":"<p>Indicates whether to display the status of image update availability before AppStream 2.0 initiates the process of creating a new updated image. If this value is set to <code>true</code>, AppStream 2.0 displays whether image updates are available. If this value is set to <code>false</code>, AppStream 2.0 initiates the process of creating a new updated image without displaying whether image updates are available.</p>"
+        }
+      }
+    },
+    "CreateUpdatedImageResult":{
+      "type":"structure",
+      "members":{
+        "image":{"shape":"Image"},
+        "canUpdateImage":{
+          "shape":"Boolean",
+          "documentation":"<p>Indicates whether a new image can be created.</p>"
+        }
+      }
+    },
+    "CreateUsageReportSubscriptionRequest":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "CreateUsageReportSubscriptionResult":{
+      "type":"structure",
+      "members":{
+        "S3BucketName":{
+          "shape":"String",
+          "documentation":"<p>The Amazon S3 bucket where generated reports are stored.</p> <p>If you enabled on-instance session scripts and Amazon S3 logging for your session script configuration, AppStream 2.0 created an S3 bucket to store the script output. The bucket is unique to your account and Region. When you enable usage reporting in this case, AppStream 2.0 uses the same bucket to store your usage reports. If you haven't already enabled on-instance session scripts, when you enable usage reports, AppStream 2.0 creates a new S3 bucket.</p>"
+        },
+        "Schedule":{
+          "shape":"UsageReportSchedule",
+          "documentation":"<p>The schedule for generating usage reports.</p>"
+        }
+      }
+    },
+    "CreateUserRequest":{
+      "type":"structure",
+      "required":[
+        "UserName",
+        "AuthenticationType"
+      ],
+      "members":{
+        "UserName":{
+          "shape":"Username",
+          "documentation":"<p>The email address of the user.</p> <note> <p>Users' email addresses are case-sensitive. During login, if they specify an email address that doesn't use the same capitalization as the email address specified when their user pool account was created, a \"user does not exist\" error message displays.</p> </note>"
+        },
+        "MessageAction":{
+          "shape":"MessageAction",
+          "documentation":"<p>The action to take for the welcome email that is sent to a user after the user is created in the user pool. If you specify SUPPRESS, no email is sent. If you specify RESEND, do not specify the first name or last name of the user. If the value is null, the email is sent. </p> <note> <p>The temporary password in the welcome email is valid for only 7 days. If users don’t set their passwords within 7 days, you must send them a new welcome email.</p> </note>"
+        },
+        "FirstName":{
+          "shape":"UserAttributeValue",
+          "documentation":"<p>The first name, or given name, of the user.</p>"
+        },
+        "LastName":{
+          "shape":"UserAttributeValue",
+          "documentation":"<p>The last name, or surname, of the user.</p>"
+        },
+        "AuthenticationType":{
+          "shape":"AuthenticationType",
+          "documentation":"<p>The authentication type for the user. You must specify USERPOOL. </p>"
+        }
+      }
+    },
+    "CreateUserResult":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeleteDirectoryConfigRequest":{
+      "type":"structure",
+      "required":["DirectoryName"],
+      "members":{
+        "DirectoryName":{
+          "shape":"DirectoryName",
+          "documentation":"<p>The name of the directory configuration.</p>"
+        }
+      }
+    },
+    "DeleteDirectoryConfigResult":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeleteFleetRequest":{
+      "type":"structure",
+      "required":["Name"],
+      "members":{
+        "Name":{
+          "shape":"String",
+          "documentation":"<p>The name of the fleet.</p>"
+        }
+      }
+    },
+    "DeleteFleetResult":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeleteImageBuilderRequest":{
+      "type":"structure",
+      "required":["Name"],
+      "members":{
+        "Name":{
+          "shape":"Name",
+          "documentation":"<p>The name of the image builder.</p>"
+        }
+      }
+    },
+    "DeleteImageBuilderResult":{
+      "type":"structure",
+      "members":{
+        "ImageBuilder":{
+          "shape":"ImageBuilder",
+          "documentation":"<p>Information about the image builder.</p>"
+        }
+      }
+    },
+    "DeleteImagePermissionsRequest":{
+      "type":"structure",
+      "required":[
+        "Name",
+        "SharedAccountId"
+      ],
+      "members":{
+        "Name":{
+          "shape":"Name",
+          "documentation":"<p>The name of the private image.</p>"
+        },
+        "SharedAccountId":{
+          "shape":"AwsAccountId",
+          "documentation":"<p>The 12-digit identifier of the AWS account for which to delete image permissions.</p>"
+        }
+      }
+    },
+    "DeleteImagePermissionsResult":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeleteImageRequest":{
+      "type":"structure",
+      "required":["Name"],
+      "members":{
+        "Name":{
+          "shape":"Name",
+          "documentation":"<p>The name of the image.</p>"
+        }
+      }
+    },
+    "DeleteImageResult":{
+      "type":"structure",
+      "members":{
+        "Image":{
+          "shape":"Image",
+          "documentation":"<p>Information about the image.</p>"
+        }
+      }
+    },
+    "DeleteStackRequest":{
+      "type":"structure",
+      "required":["Name"],
+      "members":{
+        "Name":{
+          "shape":"String",
+          "documentation":"<p>The name of the stack.</p>"
+        }
+      }
+    },
+    "DeleteStackResult":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeleteUsageReportSubscriptionRequest":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeleteUsageReportSubscriptionResult":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeleteUserRequest":{
+      "type":"structure",
+      "required":[
+        "UserName",
+        "AuthenticationType"
+      ],
+      "members":{
+        "UserName":{
+          "shape":"Username",
+          "documentation":"<p>The email address of the user.</p> <note> <p>Users' email addresses are case-sensitive.</p> </note>"
+        },
+        "AuthenticationType":{
+          "shape":"AuthenticationType",
+          "documentation":"<p>The authentication type for the user. You must specify USERPOOL.</p>"
+        }
+      }
+    },
+    "DeleteUserResult":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DescribeDirectoryConfigsRequest":{
+      "type":"structure",
+      "members":{
+        "DirectoryNames":{
+          "shape":"DirectoryNameList",
+          "documentation":"<p>The directory names.</p>"
+        },
+        "MaxResults":{
+          "shape":"Integer",
+          "documentation":"<p>The maximum size of each page of results.</p>"
+        },
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.</p>"
+        }
+      }
+    },
+    "DescribeDirectoryConfigsResult":{
+      "type":"structure",
+      "members":{
+        "DirectoryConfigs":{
+          "shape":"DirectoryConfigList",
+          "documentation":"<p>Information about the directory configurations. Note that although the response syntax in this topic includes the account password, this password is not returned in the actual response. </p>"
+        },
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.</p>"
+        }
+      }
+    },
+    "DescribeFleetsRequest":{
+      "type":"structure",
+      "members":{
+        "Names":{
+          "shape":"StringList",
+          "documentation":"<p>The names of the fleets to describe.</p>"
+        },
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.</p>"
+        }
+      }
+    },
+    "DescribeFleetsResult":{
+      "type":"structure",
+      "members":{
+        "Fleets":{
+          "shape":"FleetList",
+          "documentation":"<p>Information about the fleets.</p>"
+        },
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.</p>"
+        }
+      }
+    },
+    "DescribeImageBuildersRequest":{
+      "type":"structure",
+      "members":{
+        "Names":{
+          "shape":"StringList",
+          "documentation":"<p>The names of the image builders to describe.</p>"
+        },
+        "MaxResults":{
+          "shape":"Integer",
+          "documentation":"<p>The maximum size of each page of results.</p>"
+        },
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.</p>"
+        }
+      }
+    },
+    "DescribeImageBuildersResult":{
+      "type":"structure",
+      "members":{
+        "ImageBuilders":{
+          "shape":"ImageBuilderList",
+          "documentation":"<p>Information about the image builders.</p>"
+        },
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.</p>"
+        }
+      }
+    },
+    "DescribeImagePermissionsRequest":{
+      "type":"structure",
+      "required":["Name"],
+      "members":{
+        "Name":{
+          "shape":"Name",
+          "documentation":"<p>The name of the private image for which to describe permissions. The image must be one that you own. </p>"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum size of each page of results.</p>"
+        },
+        "SharedAwsAccountIds":{
+          "shape":"AwsAccountIdList",
+          "documentation":"<p>The 12-digit identifier of one or more AWS accounts with which the image is shared.</p>"
+        },
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.</p>"
+        }
+      }
+    },
+    "DescribeImagePermissionsResult":{
+      "type":"structure",
+      "members":{
+        "Name":{
+          "shape":"Name",
+          "documentation":"<p>The name of the private image.</p>"
+        },
+        "SharedImagePermissionsList":{
+          "shape":"SharedImagePermissionsList",
+          "documentation":"<p>The permissions for a private image that you own. </p>"
+        },
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.</p>"
+        }
+      }
+    },
+    "DescribeImagesMaxResults":{
+      "type":"integer",
+      "box":true,
+      "max":25,
+      "min":0
+    },
+    "DescribeImagesRequest":{
+      "type":"structure",
+      "members":{
+        "Names":{
+          "shape":"StringList",
+          "documentation":"<p>The names of the public or private images to describe.</p>"
+        },
+        "Arns":{
+          "shape":"ArnList",
+          "documentation":"<p>The ARNs of the public, private, and shared images to describe.</p>"
+        },
+        "Type":{
+          "shape":"VisibilityType",
+          "documentation":"<p>The type of image (public, private, or shared) to describe. </p>"
+        },
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.</p>"
+        },
+        "MaxResults":{
+          "shape":"DescribeImagesMaxResults",
+          "documentation":"<p>The maximum size of each page of results.</p>"
+        }
+      }
+    },
+    "DescribeImagesResult":{
+      "type":"structure",
+      "members":{
+        "Images":{
+          "shape":"ImageList",
+          "documentation":"<p>Information about the images.</p>"
+        },
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.</p>"
+        }
+      }
+    },
+    "DescribeSessionsRequest":{
+      "type":"structure",
+      "required":[
+        "StackName",
+        "FleetName"
+      ],
+      "members":{
+        "StackName":{
+          "shape":"String",
+          "documentation":"<p>The name of the stack. This value is case-sensitive.</p>"
+        },
+        "FleetName":{
+          "shape":"String",
+          "documentation":"<p>The name of the fleet. This value is case-sensitive.</p>"
+        },
+        "UserId":{
+          "shape":"UserId",
+          "documentation":"<p>The user identifier (ID). If you specify a user ID, you must also specify the authentication type.</p>"
+        },
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.</p>"
+        },
+        "Limit":{
+          "shape":"Integer",
+          "documentation":"<p>The size of each page of results. The default value is 20 and the maximum value is 50.</p>"
+        },
+        "AuthenticationType":{
+          "shape":"AuthenticationType",
+          "documentation":"<p>The authentication method. Specify <code>API</code> for a user authenticated using a streaming URL or <code>SAML</code> for a SAML federated user. The default is to authenticate users using a streaming URL.</p>"
+        }
+      }
+    },
+    "DescribeSessionsResult":{
+      "type":"structure",
+      "members":{
+        "Sessions":{
+          "shape":"SessionList",
+          "documentation":"<p>Information about the streaming sessions.</p>"
+        },
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.</p>"
+        }
+      }
+    },
+    "DescribeStacksRequest":{
+      "type":"structure",
+      "members":{
+        "Names":{
+          "shape":"StringList",
+          "documentation":"<p>The names of the stacks to describe.</p>"
+        },
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.</p>"
+        }
+      }
+    },
+    "DescribeStacksResult":{
+      "type":"structure",
+      "members":{
+        "Stacks":{
+          "shape":"StackList",
+          "documentation":"<p>Information about the stacks.</p>"
+        },
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.</p>"
+        }
+      }
+    },
+    "DescribeUsageReportSubscriptionsRequest":{
+      "type":"structure",
+      "members":{
+        "MaxResults":{
+          "shape":"Integer",
+          "documentation":"<p>The maximum size of each page of results.</p>"
+        },
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.</p>"
+        }
+      }
+    },
+    "DescribeUsageReportSubscriptionsResult":{
+      "type":"structure",
+      "members":{
+        "UsageReportSubscriptions":{
+          "shape":"UsageReportSubscriptionList",
+          "documentation":"<p>Information about the usage report subscription.</p>"
+        },
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.</p>"
+        }
+      }
+    },
+    "DescribeUserStackAssociationsRequest":{
+      "type":"structure",
+      "members":{
+        "StackName":{
+          "shape":"String",
+          "documentation":"<p>The name of the stack that is associated with the user.</p>"
+        },
+        "UserName":{
+          "shape":"Username",
+          "documentation":"<p>The email address of the user who is associated with the stack.</p> <note> <p>Users' email addresses are case-sensitive.</p> </note>"
+        },
+        "AuthenticationType":{
+          "shape":"AuthenticationType",
+          "documentation":"<p>The authentication type for the user who is associated with the stack. You must specify USERPOOL.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum size of each page of results.</p>"
+        },
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.</p>"
+        }
+      }
+    },
+    "DescribeUserStackAssociationsResult":{
+      "type":"structure",
+      "members":{
+        "UserStackAssociations":{
+          "shape":"UserStackAssociationList",
+          "documentation":"<p>The UserStackAssociation objects.</p>"
+        },
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.</p>"
+        }
+      }
+    },
+    "DescribeUsersRequest":{
+      "type":"structure",
+      "required":["AuthenticationType"],
+      "members":{
+        "AuthenticationType":{
+          "shape":"AuthenticationType",
+          "documentation":"<p>The authentication type for the users in the user pool to describe. You must specify USERPOOL.</p>"
+        },
+        "MaxResults":{
+          "shape":"Integer",
+          "documentation":"<p>The maximum size of each page of results.</p>"
+        },
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.</p>"
+        }
+      }
+    },
+    "DescribeUsersResult":{
+      "type":"structure",
+      "members":{
+        "Users":{
+          "shape":"UserList",
+          "documentation":"<p>Information about users in the user pool.</p>"
+        },
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.</p>"
+        }
+      }
+    },
+    "Description":{
+      "type":"string",
+      "max":256
+    },
+    "DirectoryConfig":{
+      "type":"structure",
+      "required":["DirectoryName"],
+      "members":{
+        "DirectoryName":{
+          "shape":"DirectoryName",
+          "documentation":"<p>The fully qualified name of the directory (for example, corp.example.com).</p>"
+        },
+        "OrganizationalUnitDistinguishedNames":{
+          "shape":"OrganizationalUnitDistinguishedNamesList",
+          "documentation":"<p>The distinguished names of the organizational units for computer accounts.</p>"
+        },
+        "ServiceAccountCredentials":{
+          "shape":"ServiceAccountCredentials",
+          "documentation":"<p>The credentials for the service account used by the fleet or image builder to connect to the directory.</p>"
+        },
+        "CreatedTime":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time the directory configuration was created.</p>"
+        }
+      },
+      "documentation":"<p>Describes the configuration information required to join fleets and image builders to Microsoft Active Directory domains.</p>"
+    },
+    "DirectoryConfigList":{
+      "type":"list",
+      "member":{"shape":"DirectoryConfig"}
+    },
+    "DirectoryName":{"type":"string"},
+    "DirectoryNameList":{
+      "type":"list",
+      "member":{"shape":"DirectoryName"}
+    },
+    "DisableUserRequest":{
+      "type":"structure",
+      "required":[
+        "UserName",
+        "AuthenticationType"
+      ],
+      "members":{
+        "UserName":{
+          "shape":"Username",
+          "documentation":"<p>The email address of the user.</p> <note> <p>Users' email addresses are case-sensitive.</p> </note>"
+        },
+        "AuthenticationType":{
+          "shape":"AuthenticationType",
+          "documentation":"<p>The authentication type for the user. You must specify USERPOOL.</p>"
+        }
+      }
+    },
+    "DisableUserResult":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DisassociateFleetRequest":{
+      "type":"structure",
+      "required":[
+        "FleetName",
+        "StackName"
+      ],
+      "members":{
+        "FleetName":{
+          "shape":"String",
+          "documentation":"<p>The name of the fleet.</p>"
+        },
+        "StackName":{
+          "shape":"String",
+          "documentation":"<p>The name of the stack.</p>"
+        }
+      }
+    },
+    "DisassociateFleetResult":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DisplayName":{
+      "type":"string",
+      "max":100
+    },
+    "Domain":{
+      "type":"string",
+      "documentation":"GSuite domain for GDrive integration.",
+      "max":64,
+      "min":1
+    },
+    "DomainJoinInfo":{
+      "type":"structure",
+      "members":{
+        "DirectoryName":{
+          "shape":"DirectoryName",
+          "documentation":"<p>The fully qualified name of the directory (for example, corp.example.com).</p>"
+        },
+        "OrganizationalUnitDistinguishedName":{
+          "shape":"OrganizationalUnitDistinguishedName",
+          "documentation":"<p>The distinguished name of the organizational unit for computer accounts.</p>"
+        }
+      },
+      "documentation":"<p>Describes the configuration information required to join fleets and image builders to Microsoft Active Directory domains.</p>"
+    },
+    "DomainList":{
+      "type":"list",
+      "member":{"shape":"Domain"},
+      "max":50
+    },
+    "EmbedHostDomain":{
+      "type":"string",
+      "documentation":"Specifies a valid domain that can embed AppStream. Valid examples include: [\"testorigin.tt--com\", \"testingorigin.com.us\", \"test.com.us\"] Invalid examples include: [\"test,com\", \".com\", \"h*llo.com\". \"\"]",
+      "max":128,
+      "pattern":"(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]"
+    },
+    "EmbedHostDomains":{
+      "type":"list",
+      "member":{"shape":"EmbedHostDomain"},
+      "max":20,
+      "min":1
+    },
+    "EnableUserRequest":{
+      "type":"structure",
+      "required":[
+        "UserName",
+        "AuthenticationType"
+      ],
+      "members":{
+        "UserName":{
+          "shape":"Username",
+          "documentation":"<p>The email address of the user.</p> <note> <p>Users' email addresses are case-sensitive. During login, if they specify an email address that doesn't use the same capitalization as the email address specified when their user pool account was created, a \"user does not exist\" error message displays. </p> </note>"
+        },
+        "AuthenticationType":{
+          "shape":"AuthenticationType",
+          "documentation":"<p>The authentication type for the user. You must specify USERPOOL.</p>"
+        }
+      }
+    },
+    "EnableUserResult":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "ErrorMessage":{
+      "type":"string",
+      "documentation":"<p>The error message in the exception.</p>"
+    },
+    "ExpireSessionRequest":{
+      "type":"structure",
+      "required":["SessionId"],
+      "members":{
+        "SessionId":{
+          "shape":"String",
+          "documentation":"<p>The identifier of the streaming session.</p>"
+        }
+      }
+    },
+    "ExpireSessionResult":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "FeedbackURL":{
+      "type":"string",
+      "max":1000
+    },
+    "Fleet":{
+      "type":"structure",
+      "required":[
+        "Arn",
+        "Name",
+        "InstanceType",
+        "ComputeCapacityStatus",
+        "State"
+      ],
+      "members":{
+        "Arn":{
+          "shape":"Arn",
+          "documentation":"<p>The Amazon Resource Name (ARN) for the fleet.</p>"
+        },
+        "Name":{
+          "shape":"String",
+          "documentation":"<p>The name of the fleet.</p>"
+        },
+        "DisplayName":{
+          "shape":"String",
+          "documentation":"<p>The fleet name to display.</p>"
+        },
+        "Description":{
+          "shape":"String",
+          "documentation":"<p>The description to display.</p>"
+        },
+        "ImageName":{
+          "shape":"String",
+          "documentation":"<p>The name of the image used to create the fleet.</p>"
+        },
+        "ImageArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN for the public, private, or shared image.</p>"
+        },
+        "InstanceType":{
+          "shape":"String",
+          "documentation":"<p>The instance type to use when launching fleet instances. The following instance types are available:</p> <ul> <li> <p>stream.standard.small</p> </li> <li> <p>stream.standard.medium</p> </li> <li> <p>stream.standard.large</p> </li> <li> <p>stream.compute.large</p> </li> <li> <p>stream.compute.xlarge</p> </li> <li> <p>stream.compute.2xlarge</p> </li> <li> <p>stream.compute.4xlarge</p> </li> <li> <p>stream.compute.8xlarge</p> </li> <li> <p>stream.memory.large</p> </li> <li> <p>stream.memory.xlarge</p> </li> <li> <p>stream.memory.2xlarge</p> </li> <li> <p>stream.memory.4xlarge</p> </li> <li> <p>stream.memory.8xlarge</p> </li> <li> <p>stream.memory.z1d.large</p> </li> <li> <p>stream.memory.z1d.xlarge</p> </li> <li> <p>stream.memory.z1d.2xlarge</p> </li> <li> <p>stream.memory.z1d.3xlarge</p> </li> <li> <p>stream.memory.z1d.6xlarge</p> </li> <li> <p>stream.memory.z1d.12xlarge</p> </li> <li> <p>stream.graphics-design.large</p> </li> <li> <p>stream.graphics-design.xlarge</p> </li> <li> <p>stream.graphics-design.2xlarge</p> </li> <li> <p>stream.graphics-design.4xlarge</p> </li> <li> <p>stream.graphics-desktop.2xlarge</p> </li> <li> <p>stream.graphics.g4dn.xlarge</p> </li> <li> <p>stream.graphics.g4dn.2xlarge</p> </li> <li> <p>stream.graphics.g4dn.4xlarge</p> </li> <li> <p>stream.graphics.g4dn.8xlarge</p> </li> <li> <p>stream.graphics.g4dn.12xlarge</p> </li> <li> <p>stream.graphics.g4dn.16xlarge</p> </li> <li> <p>stream.graphics-pro.4xlarge</p> </li> <li> <p>stream.graphics-pro.8xlarge</p> </li> <li> <p>stream.graphics-pro.16xlarge</p> </li> </ul>"
+        },
+        "FleetType":{
+          "shape":"FleetType",
+          "documentation":"<p>The fleet type.</p> <dl> <dt>ALWAYS_ON</dt> <dd> <p>Provides users with instant-on access to their apps. You are charged for all running instances in your fleet, even if no users are streaming apps.</p> </dd> <dt>ON_DEMAND</dt> <dd> <p>Provide users with access to applications after they connect, which takes one to two minutes. You are charged for instance streaming when users are connected and a small hourly fee for instances that are not streaming apps.</p> </dd> </dl>"
+        },
+        "ComputeCapacityStatus":{
+          "shape":"ComputeCapacityStatus",
+          "documentation":"<p>The capacity status for the fleet.</p>"
+        },
+        "MaxUserDurationInSeconds":{
+          "shape":"Integer",
+          "documentation":"<p>The maximum amount of time that a streaming session can remain active, in seconds. If users are still connected to a streaming instance five minutes before this limit is reached, they are prompted to save any open documents before being disconnected. After this time elapses, the instance is terminated and replaced by a new instance. </p> <p>Specify a value between 600 and 360000.</p>"
+        },
+        "DisconnectTimeoutInSeconds":{
+          "shape":"Integer",
+          "documentation":"<p>The amount of time that a streaming session remains active after users disconnect. If they try to reconnect to the streaming session after a disconnection or network interruption within this time interval, they are connected to their previous session. Otherwise, they are connected to a new session with a new streaming instance.</p> <p>Specify a value between 60 and 360000.</p>"
+        },
+        "State":{
+          "shape":"FleetState",
+          "documentation":"<p>The current state for the fleet.</p>"
+        },
+        "VpcConfig":{
+          "shape":"VpcConfig",
+          "documentation":"<p>The VPC configuration for the fleet.</p>"
+        },
+        "CreatedTime":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time the fleet was created.</p>"
+        },
+        "FleetErrors":{
+          "shape":"FleetErrors",
+          "documentation":"<p>The fleet errors.</p>"
+        },
+        "EnableDefaultInternetAccess":{
+          "shape":"BooleanObject",
+          "documentation":"<p>Indicates whether default internet access is enabled for the fleet.</p>"
+        },
+        "DomainJoinInfo":{
+          "shape":"DomainJoinInfo",
+          "documentation":"<p>The name of the directory and organizational unit (OU) to use to join the fleet to a Microsoft Active Directory domain. </p>"
+        },
+        "IdleDisconnectTimeoutInSeconds":{
+          "shape":"Integer",
+          "documentation":"<p>The amount of time that users can be idle (inactive) before they are disconnected from their streaming session and the <code>DisconnectTimeoutInSeconds</code> time interval begins. Users are notified before they are disconnected due to inactivity. If users try to reconnect to the streaming session before the time interval specified in <code>DisconnectTimeoutInSeconds</code> elapses, they are connected to their previous session. Users are considered idle when they stop providing keyboard or mouse input during their streaming session. File uploads and downloads, audio in, audio out, and pixels changing do not qualify as user activity. If users continue to be idle after the time interval in <code>IdleDisconnectTimeoutInSeconds</code> elapses, they are disconnected.</p> <p>To prevent users from being disconnected due to inactivity, specify a value of 0. Otherwise, specify a value between 60 and 3600. The default value is 0.</p> <note> <p>If you enable this feature, we recommend that you specify a value that corresponds exactly to a whole number of minutes (for example, 60, 120, and 180). If you don't do this, the value is rounded to the nearest minute. For example, if you specify a value of 70, users are disconnected after 1 minute of inactivity. If you specify a value that is at the midpoint between two different minutes, the value is rounded up. For example, if you specify a value of 90, users are disconnected after 2 minutes of inactivity. </p> </note>"
+        },
+        "IamRoleArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the IAM role that is applied to the fleet. To assume a role, the fleet instance calls the AWS Security Token Service (STS) <code>AssumeRole</code> API operation and passes the ARN of the role to use. The operation creates a new session with temporary credentials. AppStream 2.0 retrieves the temporary credentials and creates the <b>appstream_machine_role</b> credential profile on the instance.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html\">Using an IAM Role to Grant Permissions to Applications and Scripts Running on AppStream 2.0 Streaming Instances</a> in the <i>Amazon AppStream 2.0 Administration Guide</i>.</p>"
+        },
+        "StreamView":{
+          "shape":"StreamView",
+          "documentation":"<p>The AppStream 2.0 view that is displayed to your users when they stream from the fleet. When <code>APP</code> is specified, only the windows of applications opened by users display. When <code>DESKTOP</code> is specified, the standard desktop that is provided by the operating system displays.</p> <p>The default value is <code>APP</code>.</p>"
+        }
+      },
+      "documentation":"<p>Describes a fleet.</p>"
+    },
+    "FleetAttribute":{
+      "type":"string",
+      "documentation":"<p>The fleet attribute.</p>",
+      "enum":[
+        "VPC_CONFIGURATION",
+        "VPC_CONFIGURATION_SECURITY_GROUP_IDS",
+        "DOMAIN_JOIN_INFO",
+        "IAM_ROLE_ARN"
+      ]
+    },
+    "FleetAttributes":{
+      "type":"list",
+      "member":{"shape":"FleetAttribute"},
+      "documentation":"<p>The fleet attributes.</p>"
+    },
+    "FleetError":{
+      "type":"structure",
+      "members":{
+        "ErrorCode":{
+          "shape":"FleetErrorCode",
+          "documentation":"<p>The error code.</p>"
+        },
+        "ErrorMessage":{
+          "shape":"String",
+          "documentation":"<p>The error message.</p>"
+        }
+      },
+      "documentation":"<p>Describes a fleet error.</p>"
+    },
+    "FleetErrorCode":{
+      "type":"string",
+      "enum":[
+        "IAM_SERVICE_ROLE_MISSING_ENI_DESCRIBE_ACTION",
+        "IAM_SERVICE_ROLE_MISSING_ENI_CREATE_ACTION",
+        "IAM_SERVICE_ROLE_MISSING_ENI_DELETE_ACTION",
+        "NETWORK_INTERFACE_LIMIT_EXCEEDED",
+        "INTERNAL_SERVICE_ERROR",
+        "IAM_SERVICE_ROLE_IS_MISSING",
+        "MACHINE_ROLE_IS_MISSING",
+        "STS_DISABLED_IN_REGION",
+        "SUBNET_HAS_INSUFFICIENT_IP_ADDRESSES",
+        "IAM_SERVICE_ROLE_MISSING_DESCRIBE_SUBNET_ACTION",
+        "SUBNET_NOT_FOUND",
+        "IMAGE_NOT_FOUND",
+        "INVALID_SUBNET_CONFIGURATION",
+        "SECURITY_GROUPS_NOT_FOUND",
+        "IGW_NOT_ATTACHED",
+        "IAM_SERVICE_ROLE_MISSING_DESCRIBE_SECURITY_GROUPS_ACTION",
+        "FLEET_STOPPED",
+        "FLEET_INSTANCE_PROVISIONING_FAILURE",
+        "DOMAIN_JOIN_ERROR_FILE_NOT_FOUND",
+        "DOMAIN_JOIN_ERROR_ACCESS_DENIED",
+        "DOMAIN_JOIN_ERROR_LOGON_FAILURE",
+        "DOMAIN_JOIN_ERROR_INVALID_PARAMETER",
+        "DOMAIN_JOIN_ERROR_MORE_DATA",
+        "DOMAIN_JOIN_ERROR_NO_SUCH_DOMAIN",
+        "DOMAIN_JOIN_ERROR_NOT_SUPPORTED",
+        "DOMAIN_JOIN_NERR_INVALID_WORKGROUP_NAME",
+        "DOMAIN_JOIN_NERR_WORKSTATION_NOT_STARTED",
+        "DOMAIN_JOIN_ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED",
+        "DOMAIN_JOIN_NERR_PASSWORD_EXPIRED",
+        "DOMAIN_JOIN_INTERNAL_SERVICE_ERROR"
+      ]
+    },
+    "FleetErrors":{
+      "type":"list",
+      "member":{"shape":"FleetError"}
+    },
+    "FleetList":{
+      "type":"list",
+      "member":{"shape":"Fleet"},
+      "documentation":"<p>The fleets.</p>"
+    },
+    "FleetState":{
+      "type":"string",
+      "enum":[
+        "STARTING",
+        "RUNNING",
+        "STOPPING",
+        "STOPPED"
+      ]
+    },
+    "FleetType":{
+      "type":"string",
+      "enum":[
+        "ALWAYS_ON",
+        "ON_DEMAND"
+      ]
+    },
+    "Image":{
+      "type":"structure",
+      "required":["Name"],
+      "members":{
+        "Name":{
+          "shape":"String",
+          "documentation":"<p>The name of the image.</p>"
+        },
+        "Arn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the image.</p>"
+        },
+        "BaseImageArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the image from which this image was created.</p>"
+        },
+        "DisplayName":{
+          "shape":"String",
+          "documentation":"<p>The image name to display.</p>"
+        },
+        "State":{
+          "shape":"ImageState",
+          "documentation":"<p>The image starts in the <code>PENDING</code> state. If image creation succeeds, the state is <code>AVAILABLE</code>. If image creation fails, the state is <code>FAILED</code>.</p>"
+        },
+        "Visibility":{
+          "shape":"VisibilityType",
+          "documentation":"<p>Indicates whether the image is public or private.</p>"
+        },
+        "ImageBuilderSupported":{
+          "shape":"Boolean",
+          "documentation":"<p>Indicates whether an image builder can be launched from this image.</p>"
+        },
+        "ImageBuilderName":{
+          "shape":"String",
+          "documentation":"<p>The name of the image builder that was used to create the private image. If the image is shared, this value is null.</p>"
+        },
+        "Platform":{
+          "shape":"PlatformType",
+          "documentation":"<p>The operating system platform of the image.</p>"
+        },
+        "Description":{
+          "shape":"String",
+          "documentation":"<p>The description to display.</p>"
+        },
+        "StateChangeReason":{
+          "shape":"ImageStateChangeReason",
+          "documentation":"<p>The reason why the last state change occurred.</p>"
+        },
+        "Applications":{
+          "shape":"Applications",
+          "documentation":"<p>The applications associated with the image.</p>"
+        },
+        "CreatedTime":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time the image was created.</p>"
+        },
+        "PublicBaseImageReleasedDate":{
+          "shape":"Timestamp",
+          "documentation":"<p>The release date of the public base image. For private images, this date is the release date of the base image from which the image was created.</p>"
+        },
+        "AppstreamAgentVersion":{
+          "shape":"AppstreamAgentVersion",
+          "documentation":"<p>The version of the AppStream 2.0 agent to use for instances that are launched from this image. </p>"
+        },
+        "ImagePermissions":{
+          "shape":"ImagePermissions",
+          "documentation":"<p>The permissions to provide to the destination AWS account for the specified image.</p>"
+        },
+        "ImageErrors":{
+          "shape":"ResourceErrors",
+          "documentation":"<p>Describes the errors that are returned when a new image can't be created.</p>"
+        }
+      },
+      "documentation":"<p>Describes an image.</p>"
+    },
+    "ImageBuilder":{
+      "type":"structure",
+      "required":["Name"],
+      "members":{
+        "Name":{
+          "shape":"String",
+          "documentation":"<p>The name of the image builder.</p>"
+        },
+        "Arn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN for the image builder.</p>"
+        },
+        "ImageArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the image from which this builder was created.</p>"
+        },
+        "Description":{
+          "shape":"String",
+          "documentation":"<p>The description to display.</p>"
+        },
+        "DisplayName":{
+          "shape":"String",
+          "documentation":"<p>The image builder name to display.</p>"
+        },
+        "VpcConfig":{
+          "shape":"VpcConfig",
+          "documentation":"<p>The VPC configuration of the image builder.</p>"
+        },
+        "InstanceType":{
+          "shape":"String",
+          "documentation":"<p>The instance type for the image builder. The following instance types are available:</p> <ul> <li> <p>stream.standard.small</p> </li> <li> <p>stream.standard.medium</p> </li> <li> <p>stream.standard.large</p> </li> <li> <p>stream.compute.large</p> </li> <li> <p>stream.compute.xlarge</p> </li> <li> <p>stream.compute.2xlarge</p> </li> <li> <p>stream.compute.4xlarge</p> </li> <li> <p>stream.compute.8xlarge</p> </li> <li> <p>stream.memory.large</p> </li> <li> <p>stream.memory.xlarge</p> </li> <li> <p>stream.memory.2xlarge</p> </li> <li> <p>stream.memory.4xlarge</p> </li> <li> <p>stream.memory.8xlarge</p> </li> <li> <p>stream.memory.z1d.large</p> </li> <li> <p>stream.memory.z1d.xlarge</p> </li> <li> <p>stream.memory.z1d.2xlarge</p> </li> <li> <p>stream.memory.z1d.3xlarge</p> </li> <li> <p>stream.memory.z1d.6xlarge</p> </li> <li> <p>stream.memory.z1d.12xlarge</p> </li> <li> <p>stream.graphics-design.large</p> </li> <li> <p>stream.graphics-design.xlarge</p> </li> <li> <p>stream.graphics-design.2xlarge</p> </li> <li> <p>stream.graphics-design.4xlarge</p> </li> <li> <p>stream.graphics-desktop.2xlarge</p> </li> <li> <p>stream.graphics.g4dn.xlarge</p> </li> <li> <p>stream.graphics.g4dn.2xlarge</p> </li> <li> <p>stream.graphics.g4dn.4xlarge</p> </li> <li> <p>stream.graphics.g4dn.8xlarge</p> </li> <li> <p>stream.graphics.g4dn.12xlarge</p> </li> <li> <p>stream.graphics.g4dn.16xlarge</p> </li> <li> <p>stream.graphics-pro.4xlarge</p> </li> <li> <p>stream.graphics-pro.8xlarge</p> </li> <li> <p>stream.graphics-pro.16xlarge</p> </li> </ul>"
+        },
+        "Platform":{
+          "shape":"PlatformType",
+          "documentation":"<p>The operating system platform of the image builder.</p>"
+        },
+        "IamRoleArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the IAM role that is applied to the image builder. To assume a role, the image builder calls the AWS Security Token Service (STS) <code>AssumeRole</code> API operation and passes the ARN of the role to use. The operation creates a new session with temporary credentials. AppStream 2.0 retrieves the temporary credentials and creates the <b>appstream_machine_role</b> credential profile on the instance.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html\">Using an IAM Role to Grant Permissions to Applications and Scripts Running on AppStream 2.0 Streaming Instances</a> in the <i>Amazon AppStream 2.0 Administration Guide</i>.</p>"
+        },
+        "State":{
+          "shape":"ImageBuilderState",
+          "documentation":"<p>The state of the image builder.</p>"
+        },
+        "StateChangeReason":{
+          "shape":"ImageBuilderStateChangeReason",
+          "documentation":"<p>The reason why the last state change occurred.</p>"
+        },
+        "CreatedTime":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time stamp when the image builder was created.</p>"
+        },
+        "EnableDefaultInternetAccess":{
+          "shape":"BooleanObject",
+          "documentation":"<p>Enables or disables default internet access for the image builder.</p>"
+        },
+        "DomainJoinInfo":{
+          "shape":"DomainJoinInfo",
+          "documentation":"<p>The name of the directory and organizational unit (OU) to use to join the image builder to a Microsoft Active Directory domain. </p>"
+        },
+        "NetworkAccessConfiguration":{"shape":"NetworkAccessConfiguration"},
+        "ImageBuilderErrors":{
+          "shape":"ResourceErrors",
+          "documentation":"<p>The image builder errors.</p>"
+        },
+        "AppstreamAgentVersion":{
+          "shape":"AppstreamAgentVersion",
+          "documentation":"<p>The version of the AppStream 2.0 agent that is currently being used by the image builder. </p>"
+        },
+        "AccessEndpoints":{
+          "shape":"AccessEndpointList",
+          "documentation":"<p>The list of virtual private cloud (VPC) interface endpoint objects. Administrators can connect to the image builder only through the specified endpoints.</p>"
+        }
+      },
+      "documentation":"<p>Describes a virtual machine that is used to create an image. </p>"
+    },
+    "ImageBuilderList":{
+      "type":"list",
+      "member":{"shape":"ImageBuilder"}
+    },
+    "ImageBuilderState":{
+      "type":"string",
+      "enum":[
+        "PENDING",
+        "UPDATING_AGENT",
+        "RUNNING",
+        "STOPPING",
+        "STOPPED",
+        "REBOOTING",
+        "SNAPSHOTTING",
+        "DELETING",
+        "FAILED",
+        "UPDATING",
+        "PENDING_QUALIFICATION"
+      ]
+    },
+    "ImageBuilderStateChangeReason":{
+      "type":"structure",
+      "members":{
+        "Code":{
+          "shape":"ImageBuilderStateChangeReasonCode",
+          "documentation":"<p>The state change reason code.</p>"
+        },
+        "Message":{
+          "shape":"String",
+          "documentation":"<p>The state change reason message.</p>"
+        }
+      },
+      "documentation":"<p>Describes the reason why the last image builder state change occurred.</p>"
+    },
+    "ImageBuilderStateChangeReasonCode":{
+      "type":"string",
+      "enum":[
+        "INTERNAL_ERROR",
+        "IMAGE_UNAVAILABLE"
+      ]
+    },
+    "ImageList":{
+      "type":"list",
+      "member":{"shape":"Image"}
+    },
+    "ImagePermissions":{
+      "type":"structure",
+      "members":{
+        "allowFleet":{
+          "shape":"BooleanObject",
+          "documentation":"<p>Indicates whether the image can be used for a fleet.</p>"
+        },
+        "allowImageBuilder":{
+          "shape":"BooleanObject",
+          "documentation":"<p>Indicates whether the image can be used for an image builder.</p>"
+        }
+      },
+      "documentation":"<p>Describes the permissions for an image. </p>"
+    },
+    "ImageState":{
+      "type":"string",
+      "enum":[
+        "PENDING",
+        "AVAILABLE",
+        "FAILED",
+        "COPYING",
+        "DELETING",
+        "CREATING",
+        "IMPORTING"
+      ]
+    },
+    "ImageStateChangeReason":{
+      "type":"structure",
+      "members":{
+        "Code":{
+          "shape":"ImageStateChangeReasonCode",
+          "documentation":"<p>The state change reason code.</p>"
+        },
+        "Message":{
+          "shape":"String",
+          "documentation":"<p>The state change reason message.</p>"
+        }
+      },
+      "documentation":"<p>Describes the reason why the last image state change occurred.</p>"
+    },
+    "ImageStateChangeReasonCode":{
+      "type":"string",
+      "enum":[
+        "INTERNAL_ERROR",
+        "IMAGE_BUILDER_NOT_AVAILABLE",
+        "IMAGE_COPY_FAILURE"
+      ]
+    },
+    "IncompatibleImageException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>The image can't be updated because it's not compatible for updates.</p>",
+      "exception":true
+    },
+    "Integer":{"type":"integer"},
+    "InvalidAccountStatusException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>The resource cannot be created because your AWS account is suspended. For assistance, contact AWS Support. </p>",
+      "exception":true
+    },
+    "InvalidParameterCombinationException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>Indicates an incorrect combination of parameters, or a missing parameter.</p>",
+      "exception":true
+    },
+    "InvalidRoleException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>The specified role is invalid.</p>",
+      "exception":true
+    },
+    "LastReportGenerationExecutionError":{
+      "type":"structure",
+      "members":{
+        "ErrorCode":{
+          "shape":"UsageReportExecutionErrorCode",
+          "documentation":"<p>The error code for the error that is returned when a usage report can't be generated.</p>"
+        },
+        "ErrorMessage":{
+          "shape":"String",
+          "documentation":"<p>The error message for the error that is returned when a usage report can't be generated.</p>"
+        }
+      },
+      "documentation":"<p>Describes the error that is returned when a usage report can't be generated.</p>"
+    },
+    "LastReportGenerationExecutionErrors":{
+      "type":"list",
+      "member":{"shape":"LastReportGenerationExecutionError"}
+    },
+    "LimitExceededException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>The requested limit exceeds the permitted limit for an account.</p>",
+      "exception":true
+    },
+    "ListAssociatedFleetsRequest":{
+      "type":"structure",
+      "required":["StackName"],
+      "members":{
+        "StackName":{
+          "shape":"String",
+          "documentation":"<p>The name of the stack.</p>"
+        },
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.</p>"
+        }
+      }
+    },
+    "ListAssociatedFleetsResult":{
+      "type":"structure",
+      "members":{
+        "Names":{
+          "shape":"StringList",
+          "documentation":"<p>The name of the fleet.</p>"
+        },
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.</p>"
+        }
+      }
+    },
+    "ListAssociatedStacksRequest":{
+      "type":"structure",
+      "required":["FleetName"],
+      "members":{
+        "FleetName":{
+          "shape":"String",
+          "documentation":"<p>The name of the fleet.</p>"
+        },
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.</p>"
+        }
+      }
+    },
+    "ListAssociatedStacksResult":{
+      "type":"structure",
+      "members":{
+        "Names":{
+          "shape":"StringList",
+          "documentation":"<p>The name of the stack.</p>"
+        },
+        "NextToken":{
+          "shape":"String",
+          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.</p>"
+        }
+      }
+    },
+    "ListTagsForResourceRequest":{
+      "type":"structure",
+      "required":["ResourceArn"],
+      "members":{
+        "ResourceArn":{
+          "shape":"Arn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the resource.</p>"
+        }
+      }
+    },
+    "ListTagsForResourceResponse":{
+      "type":"structure",
+      "members":{
+        "Tags":{
+          "shape":"Tags",
+          "documentation":"<p>The information about the tags.</p>"
+        }
+      }
+    },
+    "Long":{"type":"long"},
+    "MaxResults":{
+      "type":"integer",
+      "box":true,
+      "max":500,
+      "min":0
+    },
+    "MessageAction":{
+      "type":"string",
+      "enum":[
+        "SUPPRESS",
+        "RESEND"
+      ]
+    },
+    "Metadata":{
+      "type":"map",
+      "key":{"shape":"String"},
+      "value":{"shape":"String"}
+    },
+    "Name":{
+      "type":"string",
+      "pattern":"^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,100}$"
+    },
+    "NetworkAccessConfiguration":{
+      "type":"structure",
+      "members":{
+        "EniPrivateIpAddress":{
+          "shape":"String",
+          "documentation":"<p>The private IP address of the elastic network interface that is attached to instances in your VPC.</p>"
+        },
+        "EniId":{
+          "shape":"String",
+          "documentation":"<p>The resource identifier of the elastic network interface that is attached to instances in your VPC. All network interfaces have the eni-xxxxxxxx resource identifier.</p>"
+        }
+      },
+      "documentation":"<p>Describes the network details of the fleet or image builder instance.</p>"
+    },
+    "OperationNotPermittedException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>The attempted operation is not permitted.</p>",
+      "exception":true
+    },
+    "OrganizationalUnitDistinguishedName":{
+      "type":"string",
+      "max":2000
+    },
+    "OrganizationalUnitDistinguishedNamesList":{
+      "type":"list",
+      "member":{"shape":"OrganizationalUnitDistinguishedName"}
+    },
+    "Permission":{
+      "type":"string",
+      "enum":[
+        "ENABLED",
+        "DISABLED"
+      ]
+    },
+    "PlatformType":{
+      "type":"string",
+      "enum":[
+        "WINDOWS",
+        "WINDOWS_SERVER_2016",
+        "WINDOWS_SERVER_2019"
+      ]
+    },
+    "RedirectURL":{
+      "type":"string",
+      "max":1000
+    },
+    "RegionName":{
+      "type":"string",
+      "max":32,
+      "min":1
+    },
+    "RequestLimitExceededException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>AppStream 2.0 can’t process the request right now because the Describe calls from your AWS account are being throttled by Amazon EC2. Try again later.</p>",
+      "exception":true
+    },
+    "ResourceAlreadyExistsException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>The specified resource already exists.</p>",
+      "exception":true
+    },
+    "ResourceError":{
+      "type":"structure",
+      "members":{
+        "ErrorCode":{
+          "shape":"FleetErrorCode",
+          "documentation":"<p>The error code.</p>"
+        },
+        "ErrorMessage":{
+          "shape":"String",
+          "documentation":"<p>The error message.</p>"
+        },
+        "ErrorTimestamp":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time the error occurred.</p>"
+        }
+      },
+      "documentation":"<p>Describes a resource error.</p>"
+    },
+    "ResourceErrors":{
+      "type":"list",
+      "member":{"shape":"ResourceError"}
+    },
+    "ResourceIdentifier":{
+      "type":"string",
+      "documentation":"<p>The ARN of the resource.</p>",
+      "max":2048,
+      "min":1
+    },
+    "ResourceInUseException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>The specified resource is in use.</p>",
+      "exception":true
+    },
+    "ResourceNotAvailableException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>The specified resource exists and is not in use, but isn't available.</p>",
+      "exception":true
+    },
+    "ResourceNotFoundException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>The specified resource was not found.</p>",
+      "exception":true
+    },
+    "SecurityGroupIdList":{
+      "type":"list",
+      "member":{"shape":"String"},
+      "documentation":"<p>The security group identifiers.</p>",
+      "max":5
+    },
+    "ServiceAccountCredentials":{
+      "type":"structure",
+      "required":[
+        "AccountName",
+        "AccountPassword"
+      ],
+      "members":{
+        "AccountName":{
+          "shape":"AccountName",
+          "documentation":"<p>The user name of the account. This account must have the following privileges: create computer objects, join computers to the domain, and change/reset the password on descendant computer objects for the organizational units specified.</p>"
+        },
+        "AccountPassword":{
+          "shape":"AccountPassword",
+          "documentation":"<p>The password for the account.</p>"
+        }
+      },
+      "documentation":"<p>Describes the credentials for the service account used by the fleet or image builder to connect to the directory.</p>"
+    },
+    "Session":{
+      "type":"structure",
+      "required":[
+        "Id",
+        "UserId",
+        "StackName",
+        "FleetName",
+        "State"
+      ],
+      "members":{
+        "Id":{
+          "shape":"String",
+          "documentation":"<p>The identifier of the streaming session.</p>"
+        },
+        "UserId":{
+          "shape":"UserId",
+          "documentation":"<p>The identifier of the user for whom the session was created.</p>"
+        },
+        "StackName":{
+          "shape":"String",
+          "documentation":"<p>The name of the stack for the streaming session.</p>"
+        },
+        "FleetName":{
+          "shape":"String",
+          "documentation":"<p>The name of the fleet for the streaming session.</p>"
+        },
+        "State":{
+          "shape":"SessionState",
+          "documentation":"<p>The current state of the streaming session.</p>"
+        },
+        "ConnectionState":{
+          "shape":"SessionConnectionState",
+          "documentation":"<p>Specifies whether a user is connected to the streaming session.</p>"
+        },
+        "StartTime":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time when a streaming instance is dedicated for the user.</p>"
+        },
+        "MaxExpirationTime":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time when the streaming session is set to expire. This time is based on the <code>MaxUserDurationinSeconds</code> value, which determines the maximum length of time that a streaming session can run. A streaming session might end earlier than the time specified in <code>SessionMaxExpirationTime</code>, when the <code>DisconnectTimeOutInSeconds</code> elapses or the user chooses to end his or her session. If the <code>DisconnectTimeOutInSeconds</code> elapses, or the user chooses to end his or her session, the streaming instance is terminated and the streaming session ends.</p>"
+        },
+        "AuthenticationType":{
+          "shape":"AuthenticationType",
+          "documentation":"<p>The authentication method. The user is authenticated using a streaming URL (<code>API</code>) or SAML 2.0 federation (<code>SAML</code>).</p>"
+        },
+        "NetworkAccessConfiguration":{
+          "shape":"NetworkAccessConfiguration",
+          "documentation":"<p>The network details for the streaming session.</p>"
+        }
+      },
+      "documentation":"<p>Describes a streaming session.</p>"
+    },
+    "SessionConnectionState":{
+      "type":"string",
+      "enum":[
+        "CONNECTED",
+        "NOT_CONNECTED"
+      ]
+    },
+    "SessionList":{
+      "type":"list",
+      "member":{"shape":"Session"},
+      "documentation":"<p>List of sessions.</p>"
+    },
+    "SessionState":{
+      "type":"string",
+      "documentation":"<p>Possible values for the state of a streaming session.</p>",
+      "enum":[
+        "ACTIVE",
+        "PENDING",
+        "EXPIRED"
+      ]
+    },
+    "SettingsGroup":{
+      "type":"string",
+      "max":100
+    },
+    "SharedImagePermissions":{
+      "type":"structure",
+      "required":[
+        "sharedAccountId",
+        "imagePermissions"
+      ],
+      "members":{
+        "sharedAccountId":{
+          "shape":"AwsAccountId",
+          "documentation":"<p>The 12-digit identifier of the AWS account with which the image is shared.</p>"
+        },
+        "imagePermissions":{
+          "shape":"ImagePermissions",
+          "documentation":"<p>Describes the permissions for a shared image.</p>"
+        }
+      },
+      "documentation":"<p>Describes the permissions that are available to the specified AWS account for a shared image.</p>"
+    },
+    "SharedImagePermissionsList":{
+      "type":"list",
+      "member":{"shape":"SharedImagePermissions"}
+    },
+    "Stack":{
+      "type":"structure",
+      "required":["Name"],
+      "members":{
+        "Arn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the stack.</p>"
+        },
+        "Name":{
+          "shape":"String",
+          "documentation":"<p>The name of the stack.</p>"
+        },
+        "Description":{
+          "shape":"String",
+          "documentation":"<p>The description to display.</p>"
+        },
+        "DisplayName":{
+          "shape":"String",
+          "documentation":"<p>The stack name to display.</p>"
+        },
+        "CreatedTime":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time the stack was created.</p>"
+        },
+        "StorageConnectors":{
+          "shape":"StorageConnectorList",
+          "documentation":"<p>The storage connectors to enable.</p>"
+        },
+        "RedirectURL":{
+          "shape":"RedirectURL",
+          "documentation":"<p>The URL that users are redirected to after their streaming session ends.</p>"
+        },
+        "FeedbackURL":{
+          "shape":"FeedbackURL",
+          "documentation":"<p>The URL that users are redirected to after they click the Send Feedback link. If no URL is specified, no Send Feedback link is displayed.</p>"
+        },
+        "StackErrors":{
+          "shape":"StackErrors",
+          "documentation":"<p>The errors for the stack.</p>"
+        },
+        "UserSettings":{
+          "shape":"UserSettingList",
+          "documentation":"<p>The actions that are enabled or disabled for users during their streaming sessions. By default these actions are enabled.</p>"
+        },
+        "ApplicationSettings":{
+          "shape":"ApplicationSettingsResponse",
+          "documentation":"<p>The persistent application settings for users of the stack.</p>"
+        },
+        "AccessEndpoints":{
+          "shape":"AccessEndpointList",
+          "documentation":"<p>The list of virtual private cloud (VPC) interface endpoint objects. Users of the stack can connect to AppStream 2.0 only through the specified endpoints. </p>"
+        },
+        "EmbedHostDomains":{
+          "shape":"EmbedHostDomains",
+          "documentation":"<p>The domains where AppStream 2.0 streaming sessions can be embedded in an iframe. You must approve the domains that you want to host embedded AppStream 2.0 streaming sessions.</p>"
+        }
+      },
+      "documentation":"<p>Describes a stack.</p>"
+    },
+    "StackAttribute":{
+      "type":"string",
+      "enum":[
+        "STORAGE_CONNECTORS",
+        "STORAGE_CONNECTOR_HOMEFOLDERS",
+        "STORAGE_CONNECTOR_GOOGLE_DRIVE",
+        "STORAGE_CONNECTOR_ONE_DRIVE",
+        "REDIRECT_URL",
+        "FEEDBACK_URL",
+        "THEME_NAME",
+        "USER_SETTINGS",
+        "EMBED_HOST_DOMAINS",
+        "IAM_ROLE_ARN",
+        "ACCESS_ENDPOINTS"
+      ]
+    },
+    "StackAttributes":{
+      "type":"list",
+      "member":{"shape":"StackAttribute"}
+    },
+    "StackError":{
+      "type":"structure",
+      "members":{
+        "ErrorCode":{
+          "shape":"StackErrorCode",
+          "documentation":"<p>The error code.</p>"
+        },
+        "ErrorMessage":{
+          "shape":"String",
+          "documentation":"<p>The error message.</p>"
+        }
+      },
+      "documentation":"<p>Describes a stack error.</p>"
+    },
+    "StackErrorCode":{
+      "type":"string",
+      "enum":[
+        "STORAGE_CONNECTOR_ERROR",
+        "INTERNAL_SERVICE_ERROR"
+      ]
+    },
+    "StackErrors":{
+      "type":"list",
+      "member":{"shape":"StackError"},
+      "documentation":"<p>The stack errors.</p>"
+    },
+    "StackList":{
+      "type":"list",
+      "member":{"shape":"Stack"},
+      "documentation":"<p>The stacks.</p>"
+    },
+    "StartFleetRequest":{
+      "type":"structure",
+      "required":["Name"],
+      "members":{
+        "Name":{
+          "shape":"String",
+          "documentation":"<p>The name of the fleet.</p>"
+        }
+      }
+    },
+    "StartFleetResult":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "StartImageBuilderRequest":{
+      "type":"structure",
+      "required":["Name"],
+      "members":{
+        "Name":{
+          "shape":"String",
+          "documentation":"<p>The name of the image builder.</p>"
+        },
+        "AppstreamAgentVersion":{
+          "shape":"AppstreamAgentVersion",
+          "documentation":"<p>The version of the AppStream 2.0 agent to use for this image builder. To use the latest version of the AppStream 2.0 agent, specify [LATEST]. </p>"
+        }
+      }
+    },
+    "StartImageBuilderResult":{
+      "type":"structure",
+      "members":{
+        "ImageBuilder":{
+          "shape":"ImageBuilder",
+          "documentation":"<p>Information about the image builder.</p>"
+        }
+      }
+    },
+    "StopFleetRequest":{
+      "type":"structure",
+      "required":["Name"],
+      "members":{
+        "Name":{
+          "shape":"String",
+          "documentation":"<p>The name of the fleet.</p>"
+        }
+      }
+    },
+    "StopFleetResult":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "StopImageBuilderRequest":{
+      "type":"structure",
+      "required":["Name"],
+      "members":{
+        "Name":{
+          "shape":"String",
+          "documentation":"<p>The name of the image builder.</p>"
+        }
+      }
+    },
+    "StopImageBuilderResult":{
+      "type":"structure",
+      "members":{
+        "ImageBuilder":{
+          "shape":"ImageBuilder",
+          "documentation":"<p>Information about the image builder.</p>"
+        }
+      }
+    },
+    "StorageConnector":{
+      "type":"structure",
+      "required":["ConnectorType"],
+      "members":{
+        "ConnectorType":{
+          "shape":"StorageConnectorType",
+          "documentation":"<p>The type of storage connector.</p>"
+        },
+        "ResourceIdentifier":{
+          "shape":"ResourceIdentifier",
+          "documentation":"<p>The ARN of the storage connector.</p>"
+        },
+        "Domains":{
+          "shape":"DomainList",
+          "documentation":"<p>The names of the domains for the account.</p>"
+        }
+      },
+      "documentation":"<p>Describes a connector that enables persistent storage for users.</p>"
+    },
+    "StorageConnectorList":{
+      "type":"list",
+      "member":{"shape":"StorageConnector"},
+      "documentation":"<p>The storage connectors.</p>"
+    },
+    "StorageConnectorType":{
+      "type":"string",
+      "documentation":"<p>The type of storage connector.</p>",
+      "enum":[
+        "HOMEFOLDERS",
+        "GOOGLE_DRIVE",
+        "ONE_DRIVE"
+      ]
+    },
+    "StreamView":{
+      "type":"string",
+      "enum":[
+        "APP",
+        "DESKTOP"
+      ]
+    },
+    "StreamingUrlUserId":{
+      "type":"string",
+      "max":32,
+      "min":2,
+      "pattern":"[\\w+=,.@-]*"
+    },
+    "String":{
+      "type":"string",
+      "min":1
+    },
+    "StringList":{
+      "type":"list",
+      "member":{"shape":"String"}
+    },
+    "SubnetIdList":{
+      "type":"list",
+      "member":{"shape":"String"},
+      "documentation":"<p>The subnet identifiers.</p>"
+    },
+    "TagKey":{
+      "type":"string",
+      "max":128,
+      "min":1,
+      "pattern":"^(^(?!aws:).[\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$"
+    },
+    "TagKeyList":{
+      "type":"list",
+      "member":{"shape":"TagKey"},
+      "max":50,
+      "min":1
+    },
+    "TagResourceRequest":{
+      "type":"structure",
+      "required":[
+        "ResourceArn",
+        "Tags"
+      ],
+      "members":{
+        "ResourceArn":{
+          "shape":"Arn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the resource.</p>"
+        },
+        "Tags":{
+          "shape":"Tags",
+          "documentation":"<p>The tags to associate. A tag is a key-value pair, and the value is optional. For example, Environment=Test. If you do not specify a value, Environment=. </p> <p>If you do not specify a value, the value is set to an empty string.</p> <p>Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following special characters: </p> <p>_ . : / = + \\ - @</p>"
+        }
+      }
+    },
+    "TagResourceResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "TagValue":{
+      "type":"string",
+      "max":256,
+      "min":0,
+      "pattern":"^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$"
+    },
+    "Tags":{
+      "type":"map",
+      "key":{"shape":"TagKey"},
+      "value":{"shape":"TagValue"},
+      "max":50,
+      "min":1
+    },
+    "Timestamp":{"type":"timestamp"},
+    "UntagResourceRequest":{
+      "type":"structure",
+      "required":[
+        "ResourceArn",
+        "TagKeys"
+      ],
+      "members":{
+        "ResourceArn":{
+          "shape":"Arn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the resource.</p>"
+        },
+        "TagKeys":{
+          "shape":"TagKeyList",
+          "documentation":"<p>The tag keys for the tags to disassociate.</p>"
+        }
+      }
+    },
+    "UntagResourceResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "UpdateDirectoryConfigRequest":{
+      "type":"structure",
+      "required":["DirectoryName"],
+      "members":{
+        "DirectoryName":{
+          "shape":"DirectoryName",
+          "documentation":"<p>The name of the Directory Config object.</p>"
+        },
+        "OrganizationalUnitDistinguishedNames":{
+          "shape":"OrganizationalUnitDistinguishedNamesList",
+          "documentation":"<p>The distinguished names of the organizational units for computer accounts.</p>"
+        },
+        "ServiceAccountCredentials":{
+          "shape":"ServiceAccountCredentials",
+          "documentation":"<p>The credentials for the service account used by the fleet or image builder to connect to the directory.</p>"
+        }
+      }
+    },
+    "UpdateDirectoryConfigResult":{
+      "type":"structure",
+      "members":{
+        "DirectoryConfig":{
+          "shape":"DirectoryConfig",
+          "documentation":"<p>Information about the Directory Config object.</p>"
+        }
+      }
+    },
+    "UpdateFleetRequest":{
+      "type":"structure",
+      "members":{
+        "ImageName":{
+          "shape":"String",
+          "documentation":"<p>The name of the image used to create the fleet.</p>"
+        },
+        "ImageArn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the public, private, or shared image to use.</p>"
+        },
+        "Name":{
+          "shape":"String",
+          "documentation":"<p>A unique name for the fleet.</p>"
+        },
+        "InstanceType":{
+          "shape":"String",
+          "documentation":"<p>The instance type to use when launching fleet instances. The following instance types are available:</p> <ul> <li> <p>stream.standard.small</p> </li> <li> <p>stream.standard.medium</p> </li> <li> <p>stream.standard.large</p> </li> <li> <p>stream.compute.large</p> </li> <li> <p>stream.compute.xlarge</p> </li> <li> <p>stream.compute.2xlarge</p> </li> <li> <p>stream.compute.4xlarge</p> </li> <li> <p>stream.compute.8xlarge</p> </li> <li> <p>stream.memory.large</p> </li> <li> <p>stream.memory.xlarge</p> </li> <li> <p>stream.memory.2xlarge</p> </li> <li> <p>stream.memory.4xlarge</p> </li> <li> <p>stream.memory.8xlarge</p> </li> <li> <p>stream.memory.z1d.large</p> </li> <li> <p>stream.memory.z1d.xlarge</p> </li> <li> <p>stream.memory.z1d.2xlarge</p> </li> <li> <p>stream.memory.z1d.3xlarge</p> </li> <li> <p>stream.memory.z1d.6xlarge</p> </li> <li> <p>stream.memory.z1d.12xlarge</p> </li> <li> <p>stream.graphics-design.large</p> </li> <li> <p>stream.graphics-design.xlarge</p> </li> <li> <p>stream.graphics-design.2xlarge</p> </li> <li> <p>stream.graphics-design.4xlarge</p> </li> <li> <p>stream.graphics-desktop.2xlarge</p> </li> <li> <p>stream.graphics.g4dn.xlarge</p> </li> <li> <p>stream.graphics.g4dn.2xlarge</p> </li> <li> <p>stream.graphics.g4dn.4xlarge</p> </li> <li> <p>stream.graphics.g4dn.8xlarge</p> </li> <li> <p>stream.graphics.g4dn.12xlarge</p> </li> <li> <p>stream.graphics.g4dn.16xlarge</p> </li> <li> <p>stream.graphics-pro.4xlarge</p> </li> <li> <p>stream.graphics-pro.8xlarge</p> </li> <li> <p>stream.graphics-pro.16xlarge</p> </li> </ul>"
+        },
+        "ComputeCapacity":{
+          "shape":"ComputeCapacity",
+          "documentation":"<p>The desired capacity for the fleet.</p>"
+        },
+        "VpcConfig":{
+          "shape":"VpcConfig",
+          "documentation":"<p>The VPC configuration for the fleet.</p>"
+        },
+        "MaxUserDurationInSeconds":{
+          "shape":"Integer",
+          "documentation":"<p>The maximum amount of time that a streaming session can remain active, in seconds. If users are still connected to a streaming instance five minutes before this limit is reached, they are prompted to save any open documents before being disconnected. After this time elapses, the instance is terminated and replaced by a new instance.</p> <p>Specify a value between 600 and 360000.</p>"
+        },
+        "DisconnectTimeoutInSeconds":{
+          "shape":"Integer",
+          "documentation":"<p>The amount of time that a streaming session remains active after users disconnect. If users try to reconnect to the streaming session after a disconnection or network interruption within this time interval, they are connected to their previous session. Otherwise, they are connected to a new session with a new streaming instance. </p> <p>Specify a value between 60 and 360000.</p>"
+        },
+        "DeleteVpcConfig":{
+          "shape":"Boolean",
+          "documentation":"<p>Deletes the VPC association for the specified fleet.</p>",
+          "deprecated":true
+        },
+        "Description":{
+          "shape":"Description",
+          "documentation":"<p>The description to display.</p>"
+        },
+        "DisplayName":{
+          "shape":"DisplayName",
+          "documentation":"<p>The fleet name to display.</p>"
+        },
+        "EnableDefaultInternetAccess":{
+          "shape":"BooleanObject",
+          "documentation":"<p>Enables or disables default internet access for the fleet.</p>"
+        },
+        "DomainJoinInfo":{
+          "shape":"DomainJoinInfo",
+          "documentation":"<p>The name of the directory and organizational unit (OU) to use to join the fleet to a Microsoft Active Directory domain. </p>"
+        },
+        "IdleDisconnectTimeoutInSeconds":{
+          "shape":"Integer",
+          "documentation":"<p>The amount of time that users can be idle (inactive) before they are disconnected from their streaming session and the <code>DisconnectTimeoutInSeconds</code> time interval begins. Users are notified before they are disconnected due to inactivity. If users try to reconnect to the streaming session before the time interval specified in <code>DisconnectTimeoutInSeconds</code> elapses, they are connected to their previous session. Users are considered idle when they stop providing keyboard or mouse input during their streaming session. File uploads and downloads, audio in, audio out, and pixels changing do not qualify as user activity. If users continue to be idle after the time interval in <code>IdleDisconnectTimeoutInSeconds</code> elapses, they are disconnected. </p> <p>To prevent users from being disconnected due to inactivity, specify a value of 0. Otherwise, specify a value between 60 and 3600. The default value is 0.</p> <note> <p>If you enable this feature, we recommend that you specify a value that corresponds exactly to a whole number of minutes (for example, 60, 120, and 180). If you don't do this, the value is rounded to the nearest minute. For example, if you specify a value of 70, users are disconnected after 1 minute of inactivity. If you specify a value that is at the midpoint between two different minutes, the value is rounded up. For example, if you specify a value of 90, users are disconnected after 2 minutes of inactivity. </p> </note>"
+        },
+        "AttributesToDelete":{
+          "shape":"FleetAttributes",
+          "documentation":"<p>The fleet attributes to delete.</p>"
+        },
+        "IamRoleArn":{
+          "shape":"Arn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the IAM role to apply to the fleet. To assume a role, a fleet instance calls the AWS Security Token Service (STS) <code>AssumeRole</code> API operation and passes the ARN of the role to use. The operation creates a new session with temporary credentials. AppStream 2.0 retrieves the temporary credentials and creates the <b>appstream_machine_role</b> credential profile on the instance.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html\">Using an IAM Role to Grant Permissions to Applications and Scripts Running on AppStream 2.0 Streaming Instances</a> in the <i>Amazon AppStream 2.0 Administration Guide</i>.</p>"
+        },
+        "StreamView":{
+          "shape":"StreamView",
+          "documentation":"<p>The AppStream 2.0 view that is displayed to your users when they stream from the fleet. When <code>APP</code> is specified, only the windows of applications opened by users display. When <code>DESKTOP</code> is specified, the standard desktop that is provided by the operating system displays.</p> <p>The default value is <code>APP</code>.</p>"
+        }
+      }
+    },
+    "UpdateFleetResult":{
+      "type":"structure",
+      "members":{
+        "Fleet":{
+          "shape":"Fleet",
+          "documentation":"<p>Information about the fleet.</p>"
+        }
+      }
+    },
+    "UpdateImagePermissionsRequest":{
+      "type":"structure",
+      "required":[
+        "Name",
+        "SharedAccountId",
+        "ImagePermissions"
+      ],
+      "members":{
+        "Name":{
+          "shape":"Name",
+          "documentation":"<p>The name of the private image.</p>"
+        },
+        "SharedAccountId":{
+          "shape":"AwsAccountId",
+          "documentation":"<p>The 12-digit identifier of the AWS account for which you want add or update image permissions.</p>"
+        },
+        "ImagePermissions":{
+          "shape":"ImagePermissions",
+          "documentation":"<p>The permissions for the image.</p>"
+        }
+      }
+    },
+    "UpdateImagePermissionsResult":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "UpdateStackRequest":{
+      "type":"structure",
+      "required":["Name"],
+      "members":{
+        "DisplayName":{
+          "shape":"DisplayName",
+          "documentation":"<p>The stack name to display.</p>"
+        },
+        "Description":{
+          "shape":"Description",
+          "documentation":"<p>The description to display.</p>"
+        },
+        "Name":{
+          "shape":"String",
+          "documentation":"<p>The name of the stack.</p>"
+        },
+        "StorageConnectors":{
+          "shape":"StorageConnectorList",
+          "documentation":"<p>The storage connectors to enable.</p>"
+        },
+        "DeleteStorageConnectors":{
+          "shape":"Boolean",
+          "documentation":"<p>Deletes the storage connectors currently enabled for the stack.</p>",
+          "deprecated":true
+        },
+        "RedirectURL":{
+          "shape":"RedirectURL",
+          "documentation":"<p>The URL that users are redirected to after their streaming session ends.</p>"
+        },
+        "FeedbackURL":{
+          "shape":"FeedbackURL",
+          "documentation":"<p>The URL that users are redirected to after they choose the Send Feedback link. If no URL is specified, no Send Feedback link is displayed.</p>"
+        },
+        "AttributesToDelete":{
+          "shape":"StackAttributes",
+          "documentation":"<p>The stack attributes to delete.</p>"
+        },
+        "UserSettings":{
+          "shape":"UserSettingList",
+          "documentation":"<p>The actions that are enabled or disabled for users during their streaming sessions. By default, these actions are enabled.</p>"
+        },
+        "ApplicationSettings":{
+          "shape":"ApplicationSettings",
+          "documentation":"<p>The persistent application settings for users of a stack. When these settings are enabled, changes that users make to applications and Windows settings are automatically saved after each session and applied to the next session.</p>"
+        },
+        "AccessEndpoints":{
+          "shape":"AccessEndpointList",
+          "documentation":"<p>The list of interface VPC endpoint (interface endpoint) objects. Users of the stack can connect to AppStream 2.0 only through the specified endpoints.</p>"
+        },
+        "EmbedHostDomains":{
+          "shape":"EmbedHostDomains",
+          "documentation":"<p>The domains where AppStream 2.0 streaming sessions can be embedded in an iframe. You must approve the domains that you want to host embedded AppStream 2.0 streaming sessions. </p>"
+        }
+      }
+    },
+    "UpdateStackResult":{
+      "type":"structure",
+      "members":{
+        "Stack":{
+          "shape":"Stack",
+          "documentation":"<p>Information about the stack.</p>"
+        }
+      }
+    },
+    "UsageReportExecutionErrorCode":{
+      "type":"string",
+      "enum":[
+        "RESOURCE_NOT_FOUND",
+        "ACCESS_DENIED",
+        "INTERNAL_SERVICE_ERROR"
+      ]
+    },
+    "UsageReportSchedule":{
+      "type":"string",
+      "enum":["DAILY"]
+    },
+    "UsageReportSubscription":{
+      "type":"structure",
+      "members":{
+        "S3BucketName":{
+          "shape":"String",
+          "documentation":"<p>The Amazon S3 bucket where generated reports are stored.</p> <p>If you enabled on-instance session scripts and Amazon S3 logging for your session script configuration, AppStream 2.0 created an S3 bucket to store the script output. The bucket is unique to your account and Region. When you enable usage reporting in this case, AppStream 2.0 uses the same bucket to store your usage reports. If you haven't already enabled on-instance session scripts, when you enable usage reports, AppStream 2.0 creates a new S3 bucket.</p>"
+        },
+        "Schedule":{
+          "shape":"UsageReportSchedule",
+          "documentation":"<p>The schedule for generating usage reports.</p>"
+        },
+        "LastGeneratedReportDate":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time when the last usage report was generated.</p>"
+        },
+        "SubscriptionErrors":{
+          "shape":"LastReportGenerationExecutionErrors",
+          "documentation":"<p>The errors that were returned if usage reports couldn't be generated.</p>"
+        }
+      },
+      "documentation":"<p>Describes information about the usage report subscription.</p>"
+    },
+    "UsageReportSubscriptionList":{
+      "type":"list",
+      "member":{"shape":"UsageReportSubscription"}
+    },
+    "User":{
+      "type":"structure",
+      "required":["AuthenticationType"],
+      "members":{
+        "Arn":{
+          "shape":"Arn",
+          "documentation":"<p>The ARN of the user.</p>"
+        },
+        "UserName":{
+          "shape":"Username",
+          "documentation":"<p>The email address of the user.</p> <note> <p>Users' email addresses are case-sensitive.</p> </note>"
+        },
+        "Enabled":{
+          "shape":"Boolean",
+          "documentation":"<p>Specifies whether the user in the user pool is enabled.</p>"
+        },
+        "Status":{
+          "shape":"String",
+          "documentation":"<p>The status of the user in the user pool. The status can be one of the following:</p> <ul> <li> <p>UNCONFIRMED – The user is created but not confirmed.</p> </li> <li> <p>CONFIRMED – The user is confirmed.</p> </li> <li> <p>ARCHIVED – The user is no longer active.</p> </li> <li> <p>COMPROMISED – The user is disabled because of a potential security threat.</p> </li> <li> <p>UNKNOWN – The user status is not known.</p> </li> </ul>"
+        },
+        "FirstName":{
+          "shape":"UserAttributeValue",
+          "documentation":"<p>The first name, or given name, of the user.</p>"
+        },
+        "LastName":{
+          "shape":"UserAttributeValue",
+          "documentation":"<p>The last name, or surname, of the user.</p>"
+        },
+        "CreatedTime":{
+          "shape":"Timestamp",
+          "documentation":"<p>The date and time the user was created in the user pool.</p>"
+        },
+        "AuthenticationType":{
+          "shape":"AuthenticationType",
+          "documentation":"<p>The authentication type for the user.</p>"
+        }
+      },
+      "documentation":"<p>Describes a user in the user pool.</p>"
+    },
+    "UserAttributeValue":{
+      "type":"string",
+      "max":2048,
+      "pattern":"^[A-Za-z0-9_\\-\\s]+$",
+      "sensitive":true
+    },
+    "UserId":{
+      "type":"string",
+      "max":128,
+      "min":2
+    },
+    "UserList":{
+      "type":"list",
+      "member":{"shape":"User"}
+    },
+    "UserSetting":{
+      "type":"structure",
+      "required":[
+        "Action",
+        "Permission"
+      ],
+      "members":{
+        "Action":{
+          "shape":"Action",
+          "documentation":"<p>The action that is enabled or disabled.</p>"
+        },
+        "Permission":{
+          "shape":"Permission",
+          "documentation":"<p>Indicates whether the action is enabled or disabled.</p>"
+        }
+      },
+      "documentation":"<p>Describes an action and whether the action is enabled or disabled for users during their streaming sessions.</p>"
+    },
+    "UserSettingList":{
+      "type":"list",
+      "member":{"shape":"UserSetting"},
+      "min":1
+    },
+    "UserStackAssociation":{
+      "type":"structure",
+      "required":[
+        "StackName",
+        "UserName",
+        "AuthenticationType"
+      ],
+      "members":{
+        "StackName":{
+          "shape":"String",
+          "documentation":"<p>The name of the stack that is associated with the user.</p>"
+        },
+        "UserName":{
+          "shape":"Username",
+          "documentation":"<p>The email address of the user who is associated with the stack.</p> <note> <p>Users' email addresses are case-sensitive.</p> </note>"
+        },
+        "AuthenticationType":{
+          "shape":"AuthenticationType",
+          "documentation":"<p>The authentication type for the user.</p>"
+        },
+        "SendEmailNotification":{
+          "shape":"Boolean",
+          "documentation":"<p>Specifies whether a welcome email is sent to a user after the user is created in the user pool.</p>"
+        }
+      },
+      "documentation":"<p>Describes a user in the user pool and the associated stack.</p>"
+    },
+    "UserStackAssociationError":{
+      "type":"structure",
+      "members":{
+        "UserStackAssociation":{
+          "shape":"UserStackAssociation",
+          "documentation":"<p>Information about the user and associated stack.</p>"
+        },
+        "ErrorCode":{
+          "shape":"UserStackAssociationErrorCode",
+          "documentation":"<p>The error code for the error that is returned when a user can’t be associated with or disassociated from a stack.</p>"
+        },
+        "ErrorMessage":{
+          "shape":"String",
+          "documentation":"<p>The error message for the error that is returned when a user can’t be associated with or disassociated from a stack.</p>"
+        }
+      },
+      "documentation":"<p>Describes the error that is returned when a user can’t be associated with or disassociated from a stack. </p>"
+    },
+    "UserStackAssociationErrorCode":{
+      "type":"string",
+      "enum":[
+        "STACK_NOT_FOUND",
+        "USER_NAME_NOT_FOUND",
+        "DIRECTORY_NOT_FOUND",
+        "INTERNAL_ERROR"
+      ]
+    },
+    "UserStackAssociationErrorList":{
+      "type":"list",
+      "member":{"shape":"UserStackAssociationError"}
+    },
+    "UserStackAssociationList":{
+      "type":"list",
+      "member":{"shape":"UserStackAssociation"},
+      "max":25,
+      "min":1
+    },
+    "Username":{
+      "type":"string",
+      "max":128,
+      "min":1,
+      "pattern":"[\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}]+",
+      "sensitive":true
+    },
+    "VisibilityType":{
+      "type":"string",
+      "enum":[
+        "PUBLIC",
+        "PRIVATE",
+        "SHARED"
+      ]
+    },
+    "VpcConfig":{
+      "type":"structure",
+      "members":{
+        "SubnetIds":{
+          "shape":"SubnetIdList",
+          "documentation":"<p>The identifiers of the subnets to which a network interface is attached from the fleet instance or image builder instance. Fleet instances use one or more subnets. Image builder instances use one subnet.</p>"
+        },
+        "SecurityGroupIds":{
+          "shape":"SecurityGroupIdList",
+          "documentation":"<p>The identifiers of the security groups for the fleet or image builder.</p>"
+        }
+      },
+      "documentation":"<p>Describes VPC configuration information for fleets and image builders.</p>"
+    }
+  },
+  "documentation":"<fullname>Amazon AppStream 2.0</fullname> <p>This is the <i>Amazon AppStream 2.0 API Reference</i>. This documentation provides descriptions and syntax for each of the actions and data types in AppStream 2.0. AppStream 2.0 is a fully managed, secure application streaming service that lets you stream desktop applications to users without rewriting applications. AppStream 2.0 manages the AWS resources that are required to host and run your applications, scales automatically, and provides access to your users on demand. </p> <note> <p>You can call the AppStream 2.0 API operations by using an interface VPC endpoint (interface endpoint). For more information, see <a href=\"https://docs.aws.amazon.com/appstream2/latest/developerguide/access-api-cli-through-interface-vpc-endpoint.html\">Access AppStream 2.0 API Operations and CLI Commands Through an Interface VPC Endpoint</a> in the <i>Amazon AppStream 2.0 Administration Guide</i>.</p> </note> <p>To learn more about AppStream 2.0, see the following resources:</p> <ul> <li> <p> <a href=\"http://aws.amazon.com/appstream2\">Amazon AppStream 2.0 product page</a> </p> </li> <li> <p> <a href=\"http://aws.amazon.com/documentation/appstream2\">Amazon AppStream 2.0 documentation</a> </p> </li> </ul>"
+}

+ 55 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appstream/2016-12-01/waiters-2.json

@@ -0,0 +1,55 @@
+{
+  "version": 2,
+  "waiters": {
+    "FleetStarted": {
+      "delay": 30,
+      "maxAttempts": 40,
+      "operation": "DescribeFleets",
+      "acceptors": [
+        {
+          "state": "success",
+          "matcher": "pathAll",
+          "argument": "Fleets[].State",
+          "expected": "ACTIVE"
+        },
+        {
+          "state": "failure",
+          "matcher": "pathAny",
+          "argument": "Fleets[].State",
+          "expected": "PENDING_DEACTIVATE"
+        },
+        {
+          "state": "failure",
+          "matcher": "pathAny",
+          "argument": "Fleets[].State",
+          "expected": "INACTIVE"
+        }
+      ]
+    },
+    "FleetStopped": {
+      "delay": 30,
+      "maxAttempts": 40,
+      "operation": "DescribeFleets",
+      "acceptors": [
+        {
+          "state": "success",
+          "matcher": "pathAll",
+          "argument": "Fleets[].State",
+          "expected": "INACTIVE"
+        },
+        {
+          "state": "failure",
+          "matcher": "pathAny",
+          "argument": "Fleets[].State",
+          "expected": "PENDING_ACTIVATE"
+        },
+        {
+          "state": "failure",
+          "matcher": "pathAny",
+          "argument": "Fleets[].State",
+          "expected": "ACTIVE"
+        }
+      ]
+    }
+  }
+}

+ 5 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appsync/2017-07-25/examples-1.json

@@ -0,0 +1,5 @@
+{
+  "version": "1.0",
+  "examples": {
+  }
+}

+ 46 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appsync/2017-07-25/paginators-1.json

@@ -0,0 +1,46 @@
+{
+  "pagination": {
+    "ListApiKeys": {
+      "input_token": "nextToken",
+      "limit_key": "maxResults",
+      "output_token": "nextToken",
+      "result_key": "apiKeys"
+    },
+    "ListDataSources": {
+      "input_token": "nextToken",
+      "limit_key": "maxResults",
+      "output_token": "nextToken",
+      "result_key": "dataSources"
+    },
+    "ListFunctions": {
+      "input_token": "nextToken",
+      "limit_key": "maxResults",
+      "output_token": "nextToken",
+      "result_key": "functions"
+    },
+    "ListGraphqlApis": {
+      "input_token": "nextToken",
+      "limit_key": "maxResults",
+      "output_token": "nextToken",
+      "result_key": "graphqlApis"
+    },
+    "ListResolvers": {
+      "input_token": "nextToken",
+      "limit_key": "maxResults",
+      "output_token": "nextToken",
+      "result_key": "resolvers"
+    },
+    "ListResolversByFunction": {
+      "input_token": "nextToken",
+      "limit_key": "maxResults",
+      "output_token": "nextToken",
+      "result_key": "resolvers"
+    },
+    "ListTypes": {
+      "input_token": "nextToken",
+      "limit_key": "maxResults",
+      "output_token": "nextToken",
+      "result_key": "types"
+    }
+  }
+}

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 822 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/appsync/2017-07-25/service-2.json


+ 5 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/athena/2017-05-18/examples-1.json

@@ -0,0 +1,5 @@
+{
+  "version": "1.0",
+  "examples": {
+  }
+}

+ 50 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/athena/2017-05-18/paginators-1.json

@@ -0,0 +1,50 @@
+{
+  "pagination": {
+    "ListNamedQueries": {
+      "input_token": "NextToken",
+      "output_token": "NextToken",
+      "limit_key": "MaxResults",
+      "result_key": "NamedQueryIds"
+    },
+    "ListQueryExecutions": {
+      "input_token": "NextToken",
+      "output_token": "NextToken",
+      "limit_key": "MaxResults",
+      "result_key": "QueryExecutionIds"
+    },
+    "GetQueryResults": {
+      "input_token": "NextToken",
+      "output_token": "NextToken",
+      "limit_key": "MaxResults",
+      "result_key": "ResultSet.Rows",
+      "non_aggregate_keys": [
+        "ResultSet.ResultSetMetadata",
+        "UpdateCount"
+      ]
+    },
+    "ListDataCatalogs": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "DataCatalogsSummary"
+    },
+    "ListDatabases": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "DatabaseList"
+    },
+    "ListTableMetadata": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "TableMetadataList"
+    },
+    "ListTagsForResource": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "Tags"
+    }
+  }
+}

+ 2404 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/athena/2017-05-18/service-2.json

@@ -0,0 +1,2404 @@
+{
+  "version":"2.0",
+  "metadata":{
+    "apiVersion":"2017-05-18",
+    "endpointPrefix":"athena",
+    "jsonVersion":"1.1",
+    "protocol":"json",
+    "serviceFullName":"Amazon Athena",
+    "serviceId":"Athena",
+    "signatureVersion":"v4",
+    "targetPrefix":"AmazonAthena",
+    "uid":"athena-2017-05-18"
+  },
+  "operations":{
+    "BatchGetNamedQuery":{
+      "name":"BatchGetNamedQuery",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"BatchGetNamedQueryInput"},
+      "output":{"shape":"BatchGetNamedQueryOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Returns the details of a single named query or a list of up to 50 queries, which you provide as an array of query ID strings. Requires you to have access to the workgroup in which the queries were saved. Use <a>ListNamedQueriesInput</a> to get the list of named query IDs in the specified workgroup. If information could not be retrieved for a submitted query ID, information about the query ID submitted is listed under <a>UnprocessedNamedQueryId</a>. Named queries differ from executed queries. Use <a>BatchGetQueryExecutionInput</a> to get details about each unique query execution, and <a>ListQueryExecutionsInput</a> to get a list of query execution IDs.</p>"
+    },
+    "BatchGetQueryExecution":{
+      "name":"BatchGetQueryExecution",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"BatchGetQueryExecutionInput"},
+      "output":{"shape":"BatchGetQueryExecutionOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Returns the details of a single query execution or a list of up to 50 query executions, which you provide as an array of query execution ID strings. Requires you to have access to the workgroup in which the queries ran. To get a list of query execution IDs, use <a>ListQueryExecutionsInput$WorkGroup</a>. Query executions differ from named (saved) queries. Use <a>BatchGetNamedQueryInput</a> to get details about named queries.</p>"
+    },
+    "CreateDataCatalog":{
+      "name":"CreateDataCatalog",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateDataCatalogInput"},
+      "output":{"shape":"CreateDataCatalogOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Creates (registers) a data catalog with the specified name and properties. Catalogs created are visible to all users of the same AWS account.</p>"
+    },
+    "CreateNamedQuery":{
+      "name":"CreateNamedQuery",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateNamedQueryInput"},
+      "output":{"shape":"CreateNamedQueryOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Creates a named query in the specified workgroup. Requires that you have access to the workgroup.</p> <p>For code samples using the AWS SDK for Java, see <a href=\"http://docs.aws.amazon.com/athena/latest/ug/code-samples.html\">Examples and Code Samples</a> in the <i>Amazon Athena User Guide</i>.</p>",
+      "idempotent":true
+    },
+    "CreatePreparedStatement":{
+      "name":"CreatePreparedStatement",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreatePreparedStatementInput"},
+      "output":{"shape":"CreatePreparedStatementOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Creates a prepared statement for use with SQL queries in Athena.</p>"
+    },
+    "CreateWorkGroup":{
+      "name":"CreateWorkGroup",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateWorkGroupInput"},
+      "output":{"shape":"CreateWorkGroupOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Creates a workgroup with the specified name.</p>"
+    },
+    "DeleteDataCatalog":{
+      "name":"DeleteDataCatalog",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteDataCatalogInput"},
+      "output":{"shape":"DeleteDataCatalogOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Deletes a data catalog.</p>"
+    },
+    "DeleteNamedQuery":{
+      "name":"DeleteNamedQuery",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteNamedQueryInput"},
+      "output":{"shape":"DeleteNamedQueryOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Deletes the named query if you have access to the workgroup in which the query was saved.</p> <p>For code samples using the AWS SDK for Java, see <a href=\"http://docs.aws.amazon.com/athena/latest/ug/code-samples.html\">Examples and Code Samples</a> in the <i>Amazon Athena User Guide</i>.</p>",
+      "idempotent":true
+    },
+    "DeletePreparedStatement":{
+      "name":"DeletePreparedStatement",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeletePreparedStatementInput"},
+      "output":{"shape":"DeletePreparedStatementOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Deletes the prepared statement with the specified name from the specified workgroup.</p>"
+    },
+    "DeleteWorkGroup":{
+      "name":"DeleteWorkGroup",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteWorkGroupInput"},
+      "output":{"shape":"DeleteWorkGroupOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Deletes the workgroup with the specified name. The primary workgroup cannot be deleted.</p>",
+      "idempotent":true
+    },
+    "GetDataCatalog":{
+      "name":"GetDataCatalog",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"GetDataCatalogInput"},
+      "output":{"shape":"GetDataCatalogOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Returns the specified data catalog.</p>"
+    },
+    "GetDatabase":{
+      "name":"GetDatabase",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"GetDatabaseInput"},
+      "output":{"shape":"GetDatabaseOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"},
+        {"shape":"MetadataException"}
+      ],
+      "documentation":"<p>Returns a database object for the specified database and data catalog.</p>"
+    },
+    "GetNamedQuery":{
+      "name":"GetNamedQuery",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"GetNamedQueryInput"},
+      "output":{"shape":"GetNamedQueryOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Returns information about a single query. Requires that you have access to the workgroup in which the query was saved.</p>"
+    },
+    "GetPreparedStatement":{
+      "name":"GetPreparedStatement",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"GetPreparedStatementInput"},
+      "output":{"shape":"GetPreparedStatementOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Retrieves the prepared statement with the specified name from the specified workgroup.</p>"
+    },
+    "GetQueryExecution":{
+      "name":"GetQueryExecution",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"GetQueryExecutionInput"},
+      "output":{"shape":"GetQueryExecutionOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Returns information about a single execution of a query if you have access to the workgroup in which the query ran. Each time a query executes, information about the query execution is saved with a unique ID.</p>"
+    },
+    "GetQueryResults":{
+      "name":"GetQueryResults",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"GetQueryResultsInput"},
+      "output":{"shape":"GetQueryResultsOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Streams the results of a single query execution specified by <code>QueryExecutionId</code> from the Athena query results location in Amazon S3. For more information, see <a href=\"https://docs.aws.amazon.com/athena/latest/ug/querying.html\">Query Results</a> in the <i>Amazon Athena User Guide</i>. This request does not execute the query but returns results. Use <a>StartQueryExecution</a> to run a query.</p> <p>To stream query results successfully, the IAM principal with permission to call <code>GetQueryResults</code> also must have permissions to the Amazon S3 <code>GetObject</code> action for the Athena query results location.</p> <important> <p>IAM principals with permission to the Amazon S3 <code>GetObject</code> action for the query results location are able to retrieve query results from Amazon S3 even if permission to the <code>GetQueryResults</code> action is denied. To restrict user or role access, ensure that Amazon S3 permissions to the Athena query location are denied.</p> </important>"
+    },
+    "GetTableMetadata":{
+      "name":"GetTableMetadata",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"GetTableMetadataInput"},
+      "output":{"shape":"GetTableMetadataOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"},
+        {"shape":"MetadataException"}
+      ],
+      "documentation":"<p>Returns table metadata for the specified catalog, database, and table.</p>"
+    },
+    "GetWorkGroup":{
+      "name":"GetWorkGroup",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"GetWorkGroupInput"},
+      "output":{"shape":"GetWorkGroupOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Returns information about the workgroup with the specified name.</p>"
+    },
+    "ListDataCatalogs":{
+      "name":"ListDataCatalogs",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListDataCatalogsInput"},
+      "output":{"shape":"ListDataCatalogsOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Lists the data catalogs in the current AWS account.</p>"
+    },
+    "ListDatabases":{
+      "name":"ListDatabases",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListDatabasesInput"},
+      "output":{"shape":"ListDatabasesOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"},
+        {"shape":"MetadataException"}
+      ],
+      "documentation":"<p>Lists the databases in the specified data catalog.</p>"
+    },
+    "ListEngineVersions":{
+      "name":"ListEngineVersions",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListEngineVersionsInput"},
+      "output":{"shape":"ListEngineVersionsOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Returns a list of engine versions that are available to choose from, including the Auto option.</p>"
+    },
+    "ListNamedQueries":{
+      "name":"ListNamedQueries",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListNamedQueriesInput"},
+      "output":{"shape":"ListNamedQueriesOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Provides a list of available query IDs only for queries saved in the specified workgroup. Requires that you have access to the specified workgroup. If a workgroup is not specified, lists the saved queries for the primary workgroup.</p> <p>For code samples using the AWS SDK for Java, see <a href=\"http://docs.aws.amazon.com/athena/latest/ug/code-samples.html\">Examples and Code Samples</a> in the <i>Amazon Athena User Guide</i>.</p>"
+    },
+    "ListPreparedStatements":{
+      "name":"ListPreparedStatements",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListPreparedStatementsInput"},
+      "output":{"shape":"ListPreparedStatementsOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Lists the prepared statements in the specfied workgroup.</p>"
+    },
+    "ListQueryExecutions":{
+      "name":"ListQueryExecutions",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListQueryExecutionsInput"},
+      "output":{"shape":"ListQueryExecutionsOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Provides a list of available query execution IDs for the queries in the specified workgroup. If a workgroup is not specified, returns a list of query execution IDs for the primary workgroup. Requires you to have access to the workgroup in which the queries ran.</p> <p>For code samples using the AWS SDK for Java, see <a href=\"http://docs.aws.amazon.com/athena/latest/ug/code-samples.html\">Examples and Code Samples</a> in the <i>Amazon Athena User Guide</i>.</p>"
+    },
+    "ListTableMetadata":{
+      "name":"ListTableMetadata",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListTableMetadataInput"},
+      "output":{"shape":"ListTableMetadataOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"},
+        {"shape":"MetadataException"}
+      ],
+      "documentation":"<p>Lists the metadata for the tables in the specified data catalog database.</p>"
+    },
+    "ListTagsForResource":{
+      "name":"ListTagsForResource",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListTagsForResourceInput"},
+      "output":{"shape":"ListTagsForResourceOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Lists the tags associated with an Athena workgroup or data catalog resource.</p>"
+    },
+    "ListWorkGroups":{
+      "name":"ListWorkGroups",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ListWorkGroupsInput"},
+      "output":{"shape":"ListWorkGroupsOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Lists available workgroups for the account.</p>"
+    },
+    "StartQueryExecution":{
+      "name":"StartQueryExecution",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"StartQueryExecutionInput"},
+      "output":{"shape":"StartQueryExecutionOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"},
+        {"shape":"TooManyRequestsException"}
+      ],
+      "documentation":"<p>Runs the SQL query statements contained in the <code>Query</code>. Requires you to have access to the workgroup in which the query ran. Running queries against an external catalog requires <a>GetDataCatalog</a> permission to the catalog. For code samples using the AWS SDK for Java, see <a href=\"http://docs.aws.amazon.com/athena/latest/ug/code-samples.html\">Examples and Code Samples</a> in the <i>Amazon Athena User Guide</i>.</p>",
+      "idempotent":true
+    },
+    "StopQueryExecution":{
+      "name":"StopQueryExecution",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"StopQueryExecutionInput"},
+      "output":{"shape":"StopQueryExecutionOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Stops a query execution. Requires you to have access to the workgroup in which the query ran.</p> <p>For code samples using the AWS SDK for Java, see <a href=\"http://docs.aws.amazon.com/athena/latest/ug/code-samples.html\">Examples and Code Samples</a> in the <i>Amazon Athena User Guide</i>.</p>",
+      "idempotent":true
+    },
+    "TagResource":{
+      "name":"TagResource",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"TagResourceInput"},
+      "output":{"shape":"TagResourceOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Adds one or more tags to an Athena resource. A tag is a label that you assign to a resource. In Athena, a resource can be a workgroup or data catalog. Each tag consists of a key and an optional value, both of which you define. For example, you can use tags to categorize Athena workgroups or data catalogs by purpose, owner, or environment. Use a consistent set of tag keys to make it easier to search and filter workgroups or data catalogs in your account. For best practices, see <a href=\"https://aws.amazon.com/answers/account-management/aws-tagging-strategies/\">Tagging Best Practices</a>. Tag keys can be from 1 to 128 UTF-8 Unicode characters, and tag values can be from 0 to 256 UTF-8 Unicode characters. Tags can use letters and numbers representable in UTF-8, and the following characters: + - = . _ : / @. Tag keys and values are case-sensitive. Tag keys must be unique per resource. If you specify more than one tag, separate them by commas.</p>"
+    },
+    "UntagResource":{
+      "name":"UntagResource",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UntagResourceInput"},
+      "output":{"shape":"UntagResourceOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Removes one or more tags from a data catalog or workgroup resource.</p>"
+    },
+    "UpdateDataCatalog":{
+      "name":"UpdateDataCatalog",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UpdateDataCatalogInput"},
+      "output":{"shape":"UpdateDataCatalogOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Updates the data catalog that has the specified name.</p>"
+    },
+    "UpdatePreparedStatement":{
+      "name":"UpdatePreparedStatement",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UpdatePreparedStatementInput"},
+      "output":{"shape":"UpdatePreparedStatementOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Updates a prepared statement.</p>"
+    },
+    "UpdateWorkGroup":{
+      "name":"UpdateWorkGroup",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UpdateWorkGroupInput"},
+      "output":{"shape":"UpdateWorkGroupOutput"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Updates the workgroup with the specified name. The workgroup's name cannot be changed.</p>"
+    }
+  },
+  "shapes":{
+    "AmazonResourceName":{
+      "type":"string",
+      "max":1011,
+      "min":1
+    },
+    "BatchGetNamedQueryInput":{
+      "type":"structure",
+      "required":["NamedQueryIds"],
+      "members":{
+        "NamedQueryIds":{
+          "shape":"NamedQueryIdList",
+          "documentation":"<p>An array of query IDs.</p>"
+        }
+      }
+    },
+    "BatchGetNamedQueryOutput":{
+      "type":"structure",
+      "members":{
+        "NamedQueries":{
+          "shape":"NamedQueryList",
+          "documentation":"<p>Information about the named query IDs submitted.</p>"
+        },
+        "UnprocessedNamedQueryIds":{
+          "shape":"UnprocessedNamedQueryIdList",
+          "documentation":"<p>Information about provided query IDs.</p>"
+        }
+      }
+    },
+    "BatchGetQueryExecutionInput":{
+      "type":"structure",
+      "required":["QueryExecutionIds"],
+      "members":{
+        "QueryExecutionIds":{
+          "shape":"QueryExecutionIdList",
+          "documentation":"<p>An array of query execution IDs.</p>"
+        }
+      }
+    },
+    "BatchGetQueryExecutionOutput":{
+      "type":"structure",
+      "members":{
+        "QueryExecutions":{
+          "shape":"QueryExecutionList",
+          "documentation":"<p>Information about a query execution.</p>"
+        },
+        "UnprocessedQueryExecutionIds":{
+          "shape":"UnprocessedQueryExecutionIdList",
+          "documentation":"<p>Information about the query executions that failed to run.</p>"
+        }
+      }
+    },
+    "Boolean":{"type":"boolean"},
+    "BoxedBoolean":{"type":"boolean"},
+    "BytesScannedCutoffValue":{
+      "type":"long",
+      "min":10000000
+    },
+    "CatalogNameString":{
+      "type":"string",
+      "max":256,
+      "min":1,
+      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\t]*"
+    },
+    "Column":{
+      "type":"structure",
+      "required":["Name"],
+      "members":{
+        "Name":{
+          "shape":"NameString",
+          "documentation":"<p>The name of the column.</p>"
+        },
+        "Type":{
+          "shape":"TypeString",
+          "documentation":"<p>The data type of the column.</p>"
+        },
+        "Comment":{
+          "shape":"CommentString",
+          "documentation":"<p>Optional information about the column.</p>"
+        }
+      },
+      "documentation":"<p>Contains metadata for a column in a table.</p>"
+    },
+    "ColumnInfo":{
+      "type":"structure",
+      "required":[
+        "Name",
+        "Type"
+      ],
+      "members":{
+        "CatalogName":{
+          "shape":"String",
+          "documentation":"<p>The catalog to which the query results belong.</p>"
+        },
+        "SchemaName":{
+          "shape":"String",
+          "documentation":"<p>The schema name (database name) to which the query results belong.</p>"
+        },
+        "TableName":{
+          "shape":"String",
+          "documentation":"<p>The table name for the query results.</p>"
+        },
+        "Name":{
+          "shape":"String",
+          "documentation":"<p>The name of the column.</p>"
+        },
+        "Label":{
+          "shape":"String",
+          "documentation":"<p>A column label.</p>"
+        },
+        "Type":{
+          "shape":"String",
+          "documentation":"<p>The data type of the column.</p>"
+        },
+        "Precision":{
+          "shape":"Integer",
+          "documentation":"<p>For <code>DECIMAL</code> data types, specifies the total number of digits, up to 38. For performance reasons, we recommend up to 18 digits.</p>"
+        },
+        "Scale":{
+          "shape":"Integer",
+          "documentation":"<p>For <code>DECIMAL</code> data types, specifies the total number of digits in the fractional part of the value. Defaults to 0.</p>"
+        },
+        "Nullable":{
+          "shape":"ColumnNullable",
+          "documentation":"<p>Indicates the column's nullable status.</p>"
+        },
+        "CaseSensitive":{
+          "shape":"Boolean",
+          "documentation":"<p>Indicates whether values in the column are case-sensitive.</p>"
+        }
+      },
+      "documentation":"<p>Information about the columns in a query execution result.</p>"
+    },
+    "ColumnInfoList":{
+      "type":"list",
+      "member":{"shape":"ColumnInfo"}
+    },
+    "ColumnList":{
+      "type":"list",
+      "member":{"shape":"Column"}
+    },
+    "ColumnNullable":{
+      "type":"string",
+      "enum":[
+        "NOT_NULL",
+        "NULLABLE",
+        "UNKNOWN"
+      ]
+    },
+    "CommentString":{
+      "type":"string",
+      "max":255,
+      "min":0,
+      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\t]*"
+    },
+    "CreateDataCatalogInput":{
+      "type":"structure",
+      "required":[
+        "Name",
+        "Type"
+      ],
+      "members":{
+        "Name":{
+          "shape":"CatalogNameString",
+          "documentation":"<p>The name of the data catalog to create. The catalog name must be unique for the AWS account and can use a maximum of 128 alphanumeric, underscore, at sign, or hyphen characters.</p>"
+        },
+        "Type":{
+          "shape":"DataCatalogType",
+          "documentation":"<p>The type of data catalog to create: <code>LAMBDA</code> for a federated catalog or <code>HIVE</code> for an external hive metastore.</p> <note> <p>Do not use the <code>GLUE</code> type. This refers to the <code>AwsDataCatalog</code> that already exists in your account, of which you can have only one. Specifying the <code>GLUE</code> type will result in an <code>INVALID_INPUT</code> error.</p> </note>"
+        },
+        "Description":{
+          "shape":"DescriptionString",
+          "documentation":"<p>A description of the data catalog to be created.</p>"
+        },
+        "Parameters":{
+          "shape":"ParametersMap",
+          "documentation":"<p>Specifies the Lambda function or functions to use for creating the data catalog. This is a mapping whose values depend on the catalog type. </p> <ul> <li> <p>For the <code>HIVE</code> data catalog type, use the following syntax. The <code>metadata-function</code> parameter is required. <code>The sdk-version</code> parameter is optional and defaults to the currently supported version.</p> <p> <code>metadata-function=<i>lambda_arn</i>, sdk-version=<i>version_number</i> </code> </p> </li> <li> <p>For the <code>LAMBDA</code> data catalog type, use one of the following sets of required parameters, but not both.</p> <ul> <li> <p>If you have one Lambda function that processes metadata and another for reading the actual data, use the following syntax. Both parameters are required.</p> <p> <code>metadata-function=<i>lambda_arn</i>, record-function=<i>lambda_arn</i> </code> </p> </li> <li> <p> If you have a composite Lambda function that processes both metadata and data, use the following syntax to specify your Lambda function.</p> <p> <code>function=<i>lambda_arn</i> </code> </p> </li> </ul> </li> </ul>"
+        },
+        "Tags":{
+          "shape":"TagList",
+          "documentation":"<p>A list of comma separated tags to add to the data catalog that is created.</p>"
+        }
+      }
+    },
+    "CreateDataCatalogOutput":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "CreateNamedQueryInput":{
+      "type":"structure",
+      "required":[
+        "Name",
+        "Database",
+        "QueryString"
+      ],
+      "members":{
+        "Name":{
+          "shape":"NameString",
+          "documentation":"<p>The query name.</p>"
+        },
+        "Description":{
+          "shape":"DescriptionString",
+          "documentation":"<p>The query description.</p>"
+        },
+        "Database":{
+          "shape":"DatabaseString",
+          "documentation":"<p>The database to which the query belongs.</p>"
+        },
+        "QueryString":{
+          "shape":"QueryString",
+          "documentation":"<p>The contents of the query with all query statements.</p>"
+        },
+        "ClientRequestToken":{
+          "shape":"IdempotencyToken",
+          "documentation":"<p>A unique case-sensitive string used to ensure the request to create the query is idempotent (executes only once). If another <code>CreateNamedQuery</code> request is received, the same response is returned and another query is not created. If a parameter has changed, for example, the <code>QueryString</code>, an error is returned.</p> <important> <p>This token is listed as not required because AWS SDKs (for example the AWS SDK for Java) auto-generate the token for users. If you are not using the AWS SDK or the AWS CLI, you must provide this token or the action will fail.</p> </important>",
+          "idempotencyToken":true
+        },
+        "WorkGroup":{
+          "shape":"WorkGroupName",
+          "documentation":"<p>The name of the workgroup in which the named query is being created.</p>"
+        }
+      }
+    },
+    "CreateNamedQueryOutput":{
+      "type":"structure",
+      "members":{
+        "NamedQueryId":{
+          "shape":"NamedQueryId",
+          "documentation":"<p>The unique ID of the query.</p>"
+        }
+      }
+    },
+    "CreatePreparedStatementInput":{
+      "type":"structure",
+      "required":[
+        "StatementName",
+        "WorkGroup",
+        "QueryStatement"
+      ],
+      "members":{
+        "StatementName":{
+          "shape":"StatementName",
+          "documentation":"<p>The name of the prepared statement.</p>"
+        },
+        "WorkGroup":{
+          "shape":"WorkGroupName",
+          "documentation":"<p>The name of the workgroup to which the prepared statement belongs.</p>"
+        },
+        "QueryStatement":{
+          "shape":"QueryString",
+          "documentation":"<p>The query string for the prepared statement.</p>"
+        },
+        "Description":{
+          "shape":"DescriptionString",
+          "documentation":"<p>The description of the prepared statement.</p>"
+        }
+      }
+    },
+    "CreatePreparedStatementOutput":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "CreateWorkGroupInput":{
+      "type":"structure",
+      "required":["Name"],
+      "members":{
+        "Name":{
+          "shape":"WorkGroupName",
+          "documentation":"<p>The workgroup name.</p>"
+        },
+        "Configuration":{
+          "shape":"WorkGroupConfiguration",
+          "documentation":"<p>The configuration for the workgroup, which includes the location in Amazon S3 where query results are stored, the encryption configuration, if any, used for encrypting query results, whether the Amazon CloudWatch Metrics are enabled for the workgroup, the limit for the amount of bytes scanned (cutoff) per query, if it is specified, and whether workgroup's settings (specified with EnforceWorkGroupConfiguration) in the WorkGroupConfiguration override client-side settings. See <a>WorkGroupConfiguration$EnforceWorkGroupConfiguration</a>.</p>"
+        },
+        "Description":{
+          "shape":"WorkGroupDescriptionString",
+          "documentation":"<p>The workgroup description.</p>"
+        },
+        "Tags":{
+          "shape":"TagList",
+          "documentation":"<p>A list of comma separated tags to add to the workgroup that is created.</p>"
+        }
+      }
+    },
+    "CreateWorkGroupOutput":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DataCatalog":{
+      "type":"structure",
+      "required":[
+        "Name",
+        "Type"
+      ],
+      "members":{
+        "Name":{
+          "shape":"CatalogNameString",
+          "documentation":"<p>The name of the data catalog. The catalog name must be unique for the AWS account and can use a maximum of 128 alphanumeric, underscore, at sign, or hyphen characters.</p>"
+        },
+        "Description":{
+          "shape":"DescriptionString",
+          "documentation":"<p>An optional description of the data catalog.</p>"
+        },
+        "Type":{
+          "shape":"DataCatalogType",
+          "documentation":"<p>The type of data catalog: <code>LAMBDA</code> for a federated catalog or <code>HIVE</code> for an external hive metastore. <code>GLUE</code> refers to the <code>AwsDataCatalog</code> that already exists in your account, of which you can have only one.</p>"
+        },
+        "Parameters":{
+          "shape":"ParametersMap",
+          "documentation":"<p>Specifies the Lambda function or functions to use for the data catalog. This is a mapping whose values depend on the catalog type. </p> <ul> <li> <p>For the <code>HIVE</code> data catalog type, use the following syntax. The <code>metadata-function</code> parameter is required. <code>The sdk-version</code> parameter is optional and defaults to the currently supported version.</p> <p> <code>metadata-function=<i>lambda_arn</i>, sdk-version=<i>version_number</i> </code> </p> </li> <li> <p>For the <code>LAMBDA</code> data catalog type, use one of the following sets of required parameters, but not both.</p> <ul> <li> <p>If you have one Lambda function that processes metadata and another for reading the actual data, use the following syntax. Both parameters are required.</p> <p> <code>metadata-function=<i>lambda_arn</i>, record-function=<i>lambda_arn</i> </code> </p> </li> <li> <p> If you have a composite Lambda function that processes both metadata and data, use the following syntax to specify your Lambda function.</p> <p> <code>function=<i>lambda_arn</i> </code> </p> </li> </ul> </li> </ul>"
+        }
+      },
+      "documentation":"<p>Contains information about a data catalog in an AWS account.</p>"
+    },
+    "DataCatalogSummary":{
+      "type":"structure",
+      "members":{
+        "CatalogName":{
+          "shape":"CatalogNameString",
+          "documentation":"<p>The name of the data catalog.</p>"
+        },
+        "Type":{
+          "shape":"DataCatalogType",
+          "documentation":"<p>The data catalog type.</p>"
+        }
+      },
+      "documentation":"<p>The summary information for the data catalog, which includes its name and type.</p>"
+    },
+    "DataCatalogSummaryList":{
+      "type":"list",
+      "member":{"shape":"DataCatalogSummary"}
+    },
+    "DataCatalogType":{
+      "type":"string",
+      "enum":[
+        "LAMBDA",
+        "GLUE",
+        "HIVE"
+      ]
+    },
+    "Database":{
+      "type":"structure",
+      "required":["Name"],
+      "members":{
+        "Name":{
+          "shape":"NameString",
+          "documentation":"<p>The name of the database.</p>"
+        },
+        "Description":{
+          "shape":"DescriptionString",
+          "documentation":"<p>An optional description of the database.</p>"
+        },
+        "Parameters":{
+          "shape":"ParametersMap",
+          "documentation":"<p>A set of custom key/value pairs.</p>"
+        }
+      },
+      "documentation":"<p>Contains metadata information for a database in a data catalog.</p>"
+    },
+    "DatabaseList":{
+      "type":"list",
+      "member":{"shape":"Database"}
+    },
+    "DatabaseString":{
+      "type":"string",
+      "max":255,
+      "min":1
+    },
+    "Date":{"type":"timestamp"},
+    "Datum":{
+      "type":"structure",
+      "members":{
+        "VarCharValue":{
+          "shape":"datumString",
+          "documentation":"<p>The value of the datum.</p>"
+        }
+      },
+      "documentation":"<p>A piece of data (a field in the table).</p>"
+    },
+    "DeleteDataCatalogInput":{
+      "type":"structure",
+      "required":["Name"],
+      "members":{
+        "Name":{
+          "shape":"CatalogNameString",
+          "documentation":"<p>The name of the data catalog to delete.</p>"
+        }
+      }
+    },
+    "DeleteDataCatalogOutput":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeleteNamedQueryInput":{
+      "type":"structure",
+      "required":["NamedQueryId"],
+      "members":{
+        "NamedQueryId":{
+          "shape":"NamedQueryId",
+          "documentation":"<p>The unique ID of the query to delete.</p>",
+          "idempotencyToken":true
+        }
+      }
+    },
+    "DeleteNamedQueryOutput":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeletePreparedStatementInput":{
+      "type":"structure",
+      "required":[
+        "StatementName",
+        "WorkGroup"
+      ],
+      "members":{
+        "StatementName":{
+          "shape":"StatementName",
+          "documentation":"<p>The name of the prepared statement to delete.</p>"
+        },
+        "WorkGroup":{
+          "shape":"WorkGroupName",
+          "documentation":"<p>The workgroup to which the statement to be deleted belongs.</p>"
+        }
+      }
+    },
+    "DeletePreparedStatementOutput":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeleteWorkGroupInput":{
+      "type":"structure",
+      "required":["WorkGroup"],
+      "members":{
+        "WorkGroup":{
+          "shape":"WorkGroupName",
+          "documentation":"<p>The unique name of the workgroup to delete.</p>"
+        },
+        "RecursiveDeleteOption":{
+          "shape":"BoxedBoolean",
+          "documentation":"<p>The option to delete the workgroup and its contents even if the workgroup contains any named queries or query executions.</p>"
+        }
+      }
+    },
+    "DeleteWorkGroupOutput":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DescriptionString":{
+      "type":"string",
+      "max":1024,
+      "min":1
+    },
+    "EncryptionConfiguration":{
+      "type":"structure",
+      "required":["EncryptionOption"],
+      "members":{
+        "EncryptionOption":{
+          "shape":"EncryptionOption",
+          "documentation":"<p>Indicates whether Amazon S3 server-side encryption with Amazon S3-managed keys (<code>SSE-S3</code>), server-side encryption with KMS-managed keys (<code>SSE-KMS</code>), or client-side encryption with KMS-managed keys (CSE-KMS) is used.</p> <p>If a query runs in a workgroup and the workgroup overrides client-side settings, then the workgroup's setting for encryption is used. It specifies whether query results must be encrypted, for all queries that run in this workgroup. </p>"
+        },
+        "KmsKey":{
+          "shape":"String",
+          "documentation":"<p>For <code>SSE-KMS</code> and <code>CSE-KMS</code>, this is the KMS key ARN or ID.</p>"
+        }
+      },
+      "documentation":"<p>If query results are encrypted in Amazon S3, indicates the encryption option used (for example, <code>SSE-KMS</code> or <code>CSE-KMS</code>) and key information.</p>"
+    },
+    "EncryptionOption":{
+      "type":"string",
+      "enum":[
+        "SSE_S3",
+        "SSE_KMS",
+        "CSE_KMS"
+      ]
+    },
+    "EngineVersion":{
+      "type":"structure",
+      "members":{
+        "SelectedEngineVersion":{
+          "shape":"NameString",
+          "documentation":"<p>The engine version requested by the user. Possible values are determined by the output of <code>ListEngineVersions</code>, including Auto. The default is Auto.</p>"
+        },
+        "EffectiveEngineVersion":{
+          "shape":"NameString",
+          "documentation":"<p>Read only. The engine version on which the query runs. If the user requests a valid engine version other than Auto, the effective engine version is the same as the engine version that the user requested. If the user requests Auto, the effective engine version is chosen by Athena. When a request to update the engine version is made by a <code>CreateWorkGroup</code> or <code>UpdateWorkGroup</code> operation, the <code>EffectiveEngineVersion</code> field is ignored.</p>"
+        }
+      },
+      "documentation":"<p>The Athena engine version for running queries.</p>"
+    },
+    "EngineVersionsList":{
+      "type":"list",
+      "member":{"shape":"EngineVersion"},
+      "max":10,
+      "min":0
+    },
+    "ErrorCode":{
+      "type":"string",
+      "documentation":"<p>The error code returned when the query execution failed to process, or when the processing request for the named query failed.</p>",
+      "max":256,
+      "min":1
+    },
+    "ErrorMessage":{"type":"string"},
+    "ExpressionString":{
+      "type":"string",
+      "max":256,
+      "min":0
+    },
+    "GetDataCatalogInput":{
+      "type":"structure",
+      "required":["Name"],
+      "members":{
+        "Name":{
+          "shape":"CatalogNameString",
+          "documentation":"<p>The name of the data catalog to return.</p>"
+        }
+      }
+    },
+    "GetDataCatalogOutput":{
+      "type":"structure",
+      "members":{
+        "DataCatalog":{
+          "shape":"DataCatalog",
+          "documentation":"<p>The data catalog returned.</p>"
+        }
+      }
+    },
+    "GetDatabaseInput":{
+      "type":"structure",
+      "required":[
+        "CatalogName",
+        "DatabaseName"
+      ],
+      "members":{
+        "CatalogName":{
+          "shape":"CatalogNameString",
+          "documentation":"<p>The name of the data catalog that contains the database to return.</p>"
+        },
+        "DatabaseName":{
+          "shape":"NameString",
+          "documentation":"<p>The name of the database to return.</p>"
+        }
+      }
+    },
+    "GetDatabaseOutput":{
+      "type":"structure",
+      "members":{
+        "Database":{
+          "shape":"Database",
+          "documentation":"<p>The database returned.</p>"
+        }
+      }
+    },
+    "GetNamedQueryInput":{
+      "type":"structure",
+      "required":["NamedQueryId"],
+      "members":{
+        "NamedQueryId":{
+          "shape":"NamedQueryId",
+          "documentation":"<p>The unique ID of the query. Use <a>ListNamedQueries</a> to get query IDs.</p>"
+        }
+      }
+    },
+    "GetNamedQueryOutput":{
+      "type":"structure",
+      "members":{
+        "NamedQuery":{
+          "shape":"NamedQuery",
+          "documentation":"<p>Information about the query.</p>"
+        }
+      }
+    },
+    "GetPreparedStatementInput":{
+      "type":"structure",
+      "required":[
+        "StatementName",
+        "WorkGroup"
+      ],
+      "members":{
+        "StatementName":{
+          "shape":"StatementName",
+          "documentation":"<p>The name of the prepared statement to retrieve.</p>"
+        },
+        "WorkGroup":{
+          "shape":"WorkGroupName",
+          "documentation":"<p>The workgroup to which the statement to be retrieved belongs.</p>"
+        }
+      }
+    },
+    "GetPreparedStatementOutput":{
+      "type":"structure",
+      "members":{
+        "PreparedStatement":{
+          "shape":"PreparedStatement",
+          "documentation":"<p>The name of the prepared statement that was retrieved.</p>"
+        }
+      }
+    },
+    "GetQueryExecutionInput":{
+      "type":"structure",
+      "required":["QueryExecutionId"],
+      "members":{
+        "QueryExecutionId":{
+          "shape":"QueryExecutionId",
+          "documentation":"<p>The unique ID of the query execution.</p>"
+        }
+      }
+    },
+    "GetQueryExecutionOutput":{
+      "type":"structure",
+      "members":{
+        "QueryExecution":{
+          "shape":"QueryExecution",
+          "documentation":"<p>Information about the query execution.</p>"
+        }
+      }
+    },
+    "GetQueryResultsInput":{
+      "type":"structure",
+      "required":["QueryExecutionId"],
+      "members":{
+        "QueryExecutionId":{
+          "shape":"QueryExecutionId",
+          "documentation":"<p>The unique ID of the query execution.</p>"
+        },
+        "NextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token generated by the Athena service that specifies where to continue pagination if a previous request was truncated. To obtain the next set of pages, pass in the <code>NextToken</code> from the response object of the previous page call.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxQueryResults",
+          "documentation":"<p>The maximum number of results (rows) to return in this request.</p>"
+        }
+      }
+    },
+    "GetQueryResultsOutput":{
+      "type":"structure",
+      "members":{
+        "UpdateCount":{
+          "shape":"Long",
+          "documentation":"<p>The number of rows inserted with a CREATE TABLE AS SELECT statement. </p>"
+        },
+        "ResultSet":{
+          "shape":"ResultSet",
+          "documentation":"<p>The results of the query execution.</p>"
+        },
+        "NextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token generated by the Athena service that specifies where to continue pagination if a previous request was truncated. To obtain the next set of pages, pass in the <code>NextToken</code> from the response object of the previous page call.</p>"
+        }
+      }
+    },
+    "GetTableMetadataInput":{
+      "type":"structure",
+      "required":[
+        "CatalogName",
+        "DatabaseName",
+        "TableName"
+      ],
+      "members":{
+        "CatalogName":{
+          "shape":"CatalogNameString",
+          "documentation":"<p>The name of the data catalog that contains the database and table metadata to return.</p>"
+        },
+        "DatabaseName":{
+          "shape":"NameString",
+          "documentation":"<p>The name of the database that contains the table metadata to return.</p>"
+        },
+        "TableName":{
+          "shape":"NameString",
+          "documentation":"<p>The name of the table for which metadata is returned.</p>"
+        }
+      }
+    },
+    "GetTableMetadataOutput":{
+      "type":"structure",
+      "members":{
+        "TableMetadata":{
+          "shape":"TableMetadata",
+          "documentation":"<p>An object that contains table metadata.</p>"
+        }
+      }
+    },
+    "GetWorkGroupInput":{
+      "type":"structure",
+      "required":["WorkGroup"],
+      "members":{
+        "WorkGroup":{
+          "shape":"WorkGroupName",
+          "documentation":"<p>The name of the workgroup.</p>"
+        }
+      }
+    },
+    "GetWorkGroupOutput":{
+      "type":"structure",
+      "members":{
+        "WorkGroup":{
+          "shape":"WorkGroup",
+          "documentation":"<p>Information about the workgroup.</p>"
+        }
+      }
+    },
+    "IdempotencyToken":{
+      "type":"string",
+      "max":128,
+      "min":32
+    },
+    "Integer":{"type":"integer"},
+    "InternalServerException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>Indicates a platform issue, which may be due to a transient condition or outage.</p>",
+      "exception":true,
+      "fault":true
+    },
+    "InvalidRequestException":{
+      "type":"structure",
+      "members":{
+        "AthenaErrorCode":{"shape":"ErrorCode"},
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>Indicates that something is wrong with the input to the request. For example, a required parameter may be missing or out of range.</p>",
+      "exception":true
+    },
+    "KeyString":{
+      "type":"string",
+      "max":255,
+      "min":1,
+      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\t]*"
+    },
+    "ListDataCatalogsInput":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token generated by the Athena service that specifies where to continue pagination if a previous request was truncated. To obtain the next set of pages, pass in the NextToken from the response object of the previous page call.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxDataCatalogsCount",
+          "documentation":"<p>Specifies the maximum number of data catalogs to return.</p>"
+        }
+      }
+    },
+    "ListDataCatalogsOutput":{
+      "type":"structure",
+      "members":{
+        "DataCatalogsSummary":{
+          "shape":"DataCatalogSummaryList",
+          "documentation":"<p>A summary list of data catalogs.</p>"
+        },
+        "NextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token generated by the Athena service that specifies where to continue pagination if a previous request was truncated. To obtain the next set of pages, pass in the NextToken from the response object of the previous page call.</p>"
+        }
+      }
+    },
+    "ListDatabasesInput":{
+      "type":"structure",
+      "required":["CatalogName"],
+      "members":{
+        "CatalogName":{
+          "shape":"CatalogNameString",
+          "documentation":"<p>The name of the data catalog that contains the databases to return.</p>"
+        },
+        "NextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token generated by the Athena service that specifies where to continue pagination if a previous request was truncated. To obtain the next set of pages, pass in the <code>NextToken</code> from the response object of the previous page call.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxDatabasesCount",
+          "documentation":"<p>Specifies the maximum number of results to return.</p>"
+        }
+      }
+    },
+    "ListDatabasesOutput":{
+      "type":"structure",
+      "members":{
+        "DatabaseList":{
+          "shape":"DatabaseList",
+          "documentation":"<p>A list of databases from a data catalog.</p>"
+        },
+        "NextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token generated by the Athena service that specifies where to continue pagination if a previous request was truncated. To obtain the next set of pages, pass in the NextToken from the response object of the previous page call.</p>"
+        }
+      }
+    },
+    "ListEngineVersionsInput":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token generated by the Athena service that specifies where to continue pagination if a previous request was truncated. To obtain the next set of pages, pass in the <code>NextToken</code> from the response object of the previous page call.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxEngineVersionsCount",
+          "documentation":"<p>The maximum number of engine versions to return in this request.</p>"
+        }
+      }
+    },
+    "ListEngineVersionsOutput":{
+      "type":"structure",
+      "members":{
+        "EngineVersions":{
+          "shape":"EngineVersionsList",
+          "documentation":"<p>A list of engine versions that are available to choose from.</p>"
+        },
+        "NextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token generated by the Athena service that specifies where to continue pagination if a previous request was truncated. To obtain the next set of pages, pass in the <code>NextToken</code> from the response object of the previous page call.</p>"
+        }
+      }
+    },
+    "ListNamedQueriesInput":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token generated by the Athena service that specifies where to continue pagination if a previous request was truncated. To obtain the next set of pages, pass in the <code>NextToken</code> from the response object of the previous page call.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxNamedQueriesCount",
+          "documentation":"<p>The maximum number of queries to return in this request.</p>"
+        },
+        "WorkGroup":{
+          "shape":"WorkGroupName",
+          "documentation":"<p>The name of the workgroup from which the named queries are being returned. If a workgroup is not specified, the saved queries for the primary workgroup are returned.</p>"
+        }
+      }
+    },
+    "ListNamedQueriesOutput":{
+      "type":"structure",
+      "members":{
+        "NamedQueryIds":{
+          "shape":"NamedQueryIdList",
+          "documentation":"<p>The list of unique query IDs.</p>"
+        },
+        "NextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token generated by the Athena service that specifies where to continue pagination if a previous request was truncated. To obtain the next set of pages, pass in the <code>NextToken</code> from the response object of the previous page call.</p>"
+        }
+      }
+    },
+    "ListPreparedStatementsInput":{
+      "type":"structure",
+      "required":["WorkGroup"],
+      "members":{
+        "WorkGroup":{
+          "shape":"WorkGroupName",
+          "documentation":"<p>The workgroup to list the prepared statements for.</p>"
+        },
+        "NextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token generated by the Athena service that specifies where to continue pagination if a previous request was truncated. To obtain the next set of pages, pass in the <code>NextToken</code> from the response object of the previous page call.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxPreparedStatementsCount",
+          "documentation":"<p>The maximum number of results to return in this request.</p>"
+        }
+      }
+    },
+    "ListPreparedStatementsOutput":{
+      "type":"structure",
+      "members":{
+        "PreparedStatements":{
+          "shape":"PreparedStatementsList",
+          "documentation":"<p>The list of prepared statements for the workgroup.</p>"
+        },
+        "NextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token generated by the Athena service that specifies where to continue pagination if a previous request was truncated. To obtain the next set of pages, pass in the <code>NextToken</code> from the response object of the previous page call.</p>"
+        }
+      }
+    },
+    "ListQueryExecutionsInput":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token generated by the Athena service that specifies where to continue pagination if a previous request was truncated. To obtain the next set of pages, pass in the <code>NextToken</code> from the response object of the previous page call.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxQueryExecutionsCount",
+          "documentation":"<p>The maximum number of query executions to return in this request.</p>"
+        },
+        "WorkGroup":{
+          "shape":"WorkGroupName",
+          "documentation":"<p>The name of the workgroup from which queries are being returned. If a workgroup is not specified, a list of available query execution IDs for the queries in the primary workgroup is returned.</p>"
+        }
+      }
+    },
+    "ListQueryExecutionsOutput":{
+      "type":"structure",
+      "members":{
+        "QueryExecutionIds":{
+          "shape":"QueryExecutionIdList",
+          "documentation":"<p>The unique IDs of each query execution as an array of strings.</p>"
+        },
+        "NextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token to be used by the next request if this request is truncated.</p>"
+        }
+      }
+    },
+    "ListTableMetadataInput":{
+      "type":"structure",
+      "required":[
+        "CatalogName",
+        "DatabaseName"
+      ],
+      "members":{
+        "CatalogName":{
+          "shape":"CatalogNameString",
+          "documentation":"<p>The name of the data catalog for which table metadata should be returned.</p>"
+        },
+        "DatabaseName":{
+          "shape":"NameString",
+          "documentation":"<p>The name of the database for which table metadata should be returned.</p>"
+        },
+        "Expression":{
+          "shape":"ExpressionString",
+          "documentation":"<p>A regex filter that pattern-matches table names. If no expression is supplied, metadata for all tables are listed.</p>"
+        },
+        "NextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token generated by the Athena service that specifies where to continue pagination if a previous request was truncated. To obtain the next set of pages, pass in the NextToken from the response object of the previous page call.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxTableMetadataCount",
+          "documentation":"<p>Specifies the maximum number of results to return.</p>"
+        }
+      }
+    },
+    "ListTableMetadataOutput":{
+      "type":"structure",
+      "members":{
+        "TableMetadataList":{
+          "shape":"TableMetadataList",
+          "documentation":"<p>A list of table metadata.</p>"
+        },
+        "NextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token generated by the Athena service that specifies where to continue pagination if a previous request was truncated. To obtain the next set of pages, pass in the NextToken from the response object of the previous page call.</p>"
+        }
+      }
+    },
+    "ListTagsForResourceInput":{
+      "type":"structure",
+      "required":["ResourceARN"],
+      "members":{
+        "ResourceARN":{
+          "shape":"AmazonResourceName",
+          "documentation":"<p>Lists the tags for the resource with the specified ARN.</p>"
+        },
+        "NextToken":{
+          "shape":"Token",
+          "documentation":"<p>The token for the next set of results, or null if there are no additional results for this request, where the request lists the tags for the resource with the specified ARN.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxTagsCount",
+          "documentation":"<p>The maximum number of results to be returned per request that lists the tags for the resource.</p>"
+        }
+      }
+    },
+    "ListTagsForResourceOutput":{
+      "type":"structure",
+      "members":{
+        "Tags":{
+          "shape":"TagList",
+          "documentation":"<p>The list of tags associated with the specified resource.</p>"
+        },
+        "NextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token to be used by the next request if this request is truncated.</p>"
+        }
+      }
+    },
+    "ListWorkGroupsInput":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token generated by the Athena service that specifies where to continue pagination if a previous request was truncated. To obtain the next set of pages, pass in the <code>NextToken</code> from the response object of the previous page call.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxWorkGroupsCount",
+          "documentation":"<p>The maximum number of workgroups to return in this request.</p>"
+        }
+      }
+    },
+    "ListWorkGroupsOutput":{
+      "type":"structure",
+      "members":{
+        "WorkGroups":{
+          "shape":"WorkGroupsList",
+          "documentation":"<p>A list of <a>WorkGroupSummary</a> objects that include the names, descriptions, creation times, and states for each workgroup.</p>"
+        },
+        "NextToken":{
+          "shape":"Token",
+          "documentation":"<p>A token generated by the Athena service that specifies where to continue pagination if a previous request was truncated. To obtain the next set of pages, pass in the <code>NextToken</code> from the response object of the previous page call.</p>"
+        }
+      }
+    },
+    "Long":{"type":"long"},
+    "MaxDataCatalogsCount":{
+      "type":"integer",
+      "box":true,
+      "max":50,
+      "min":2
+    },
+    "MaxDatabasesCount":{
+      "type":"integer",
+      "box":true,
+      "max":50,
+      "min":1
+    },
+    "MaxEngineVersionsCount":{
+      "type":"integer",
+      "box":true,
+      "max":10,
+      "min":1
+    },
+    "MaxNamedQueriesCount":{
+      "type":"integer",
+      "box":true,
+      "max":50,
+      "min":0
+    },
+    "MaxPreparedStatementsCount":{
+      "type":"integer",
+      "box":true,
+      "max":50,
+      "min":1
+    },
+    "MaxQueryExecutionsCount":{
+      "type":"integer",
+      "box":true,
+      "max":50,
+      "min":0
+    },
+    "MaxQueryResults":{
+      "type":"integer",
+      "box":true,
+      "max":1000,
+      "min":1
+    },
+    "MaxTableMetadataCount":{
+      "type":"integer",
+      "box":true,
+      "max":50,
+      "min":1
+    },
+    "MaxTagsCount":{
+      "type":"integer",
+      "box":true,
+      "min":75
+    },
+    "MaxWorkGroupsCount":{
+      "type":"integer",
+      "box":true,
+      "max":50,
+      "min":1
+    },
+    "MetadataException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"}
+      },
+      "documentation":"<p>An exception that Athena received when it called a custom metastore. Occurs if the error is not caused by user input (<code>InvalidRequestException</code>) or from the Athena platform (<code>InternalServerException</code>). For example, if a user-created Lambda function is missing permissions, the Lambda <code>4XX</code> exception is returned in a <code>MetadataException</code>.</p>",
+      "exception":true
+    },
+    "NameString":{
+      "type":"string",
+      "max":128,
+      "min":1
+    },
+    "NamedQuery":{
+      "type":"structure",
+      "required":[
+        "Name",
+        "Database",
+        "QueryString"
+      ],
+      "members":{
+        "Name":{
+          "shape":"NameString",
+          "documentation":"<p>The query name.</p>"
+        },
+        "Description":{
+          "shape":"DescriptionString",
+          "documentation":"<p>The query description.</p>"
+        },
+        "Database":{
+          "shape":"DatabaseString",
+          "documentation":"<p>The database to which the query belongs.</p>"
+        },
+        "QueryString":{
+          "shape":"QueryString",
+          "documentation":"<p>The SQL query statements that comprise the query.</p>"
+        },
+        "NamedQueryId":{
+          "shape":"NamedQueryId",
+          "documentation":"<p>The unique identifier of the query.</p>"
+        },
+        "WorkGroup":{
+          "shape":"WorkGroupName",
+          "documentation":"<p>The name of the workgroup that contains the named query.</p>"
+        }
+      },
+      "documentation":"<p>A query, where <code>QueryString</code> is the list of SQL query statements that comprise the query.</p>"
+    },
+    "NamedQueryId":{"type":"string"},
+    "NamedQueryIdList":{
+      "type":"list",
+      "member":{"shape":"NamedQueryId"},
+      "max":50,
+      "min":1
+    },
+    "NamedQueryList":{
+      "type":"list",
+      "member":{"shape":"NamedQuery"}
+    },
+    "ParametersMap":{
+      "type":"map",
+      "key":{"shape":"KeyString"},
+      "value":{"shape":"ParametersMapValue"}
+    },
+    "ParametersMapValue":{
+      "type":"string",
+      "max":51200
+    },
+    "PreparedStatement":{
+      "type":"structure",
+      "members":{
+        "StatementName":{
+          "shape":"StatementName",
+          "documentation":"<p>The name of the prepared statement.</p>"
+        },
+        "QueryStatement":{
+          "shape":"QueryString",
+          "documentation":"<p>The query string for the prepared statement.</p>"
+        },
+        "WorkGroupName":{
+          "shape":"WorkGroupName",
+          "documentation":"<p>The name of the workgroup to which the prepared statement belongs.</p>"
+        },
+        "Description":{
+          "shape":"DescriptionString",
+          "documentation":"<p>The description of the prepared statement.</p>"
+        },
+        "LastModifiedTime":{
+          "shape":"Date",
+          "documentation":"<p>The last modified time of the prepared statement.</p>"
+        }
+      },
+      "documentation":"<p>A prepared SQL statement for use with Athena.</p>"
+    },
+    "PreparedStatementSummary":{
+      "type":"structure",
+      "members":{
+        "StatementName":{
+          "shape":"StatementName",
+          "documentation":"<p>The name of the prepared statement.</p>"
+        },
+        "LastModifiedTime":{
+          "shape":"Date",
+          "documentation":"<p>The last modified time of the prepared statement.</p>"
+        }
+      },
+      "documentation":"<p>The name and last modified time of the prepared statement.</p>"
+    },
+    "PreparedStatementsList":{
+      "type":"list",
+      "member":{"shape":"PreparedStatementSummary"},
+      "max":50,
+      "min":0
+    },
+    "QueryExecution":{
+      "type":"structure",
+      "members":{
+        "QueryExecutionId":{
+          "shape":"QueryExecutionId",
+          "documentation":"<p>The unique identifier for each query execution.</p>"
+        },
+        "Query":{
+          "shape":"QueryString",
+          "documentation":"<p>The SQL query statements which the query execution ran.</p>"
+        },
+        "StatementType":{
+          "shape":"StatementType",
+          "documentation":"<p>The type of query statement that was run. <code>DDL</code> indicates DDL query statements. <code>DML</code> indicates DML (Data Manipulation Language) query statements, such as <code>CREATE TABLE AS SELECT</code>. <code>UTILITY</code> indicates query statements other than DDL and DML, such as <code>SHOW CREATE TABLE</code>, or <code>DESCRIBE &lt;table&gt;</code>.</p>"
+        },
+        "ResultConfiguration":{
+          "shape":"ResultConfiguration",
+          "documentation":"<p>The location in Amazon S3 where query results were stored and the encryption option, if any, used for query results. These are known as \"client-side settings\". If workgroup settings override client-side settings, then the query uses the location for the query results and the encryption configuration that are specified for the workgroup.</p>"
+        },
+        "QueryExecutionContext":{
+          "shape":"QueryExecutionContext",
+          "documentation":"<p>The database in which the query execution occurred.</p>"
+        },
+        "Status":{
+          "shape":"QueryExecutionStatus",
+          "documentation":"<p>The completion date, current state, submission time, and state change reason (if applicable) for the query execution.</p>"
+        },
+        "Statistics":{
+          "shape":"QueryExecutionStatistics",
+          "documentation":"<p>Query execution statistics, such as the amount of data scanned, the amount of time that the query took to process, and the type of statement that was run.</p>"
+        },
+        "WorkGroup":{
+          "shape":"WorkGroupName",
+          "documentation":"<p>The name of the workgroup in which the query ran.</p>"
+        },
+        "EngineVersion":{
+          "shape":"EngineVersion",
+          "documentation":"<p>The engine version that executed the query.</p>"
+        }
+      },
+      "documentation":"<p>Information about a single instance of a query execution.</p>"
+    },
+    "QueryExecutionContext":{
+      "type":"structure",
+      "members":{
+        "Database":{
+          "shape":"DatabaseString",
+          "documentation":"<p>The name of the database used in the query execution.</p>"
+        },
+        "Catalog":{
+          "shape":"CatalogNameString",
+          "documentation":"<p>The name of the data catalog used in the query execution.</p>"
+        }
+      },
+      "documentation":"<p>The database and data catalog context in which the query execution occurs.</p>"
+    },
+    "QueryExecutionId":{"type":"string"},
+    "QueryExecutionIdList":{
+      "type":"list",
+      "member":{"shape":"QueryExecutionId"},
+      "max":50,
+      "min":1
+    },
+    "QueryExecutionList":{
+      "type":"list",
+      "member":{"shape":"QueryExecution"}
+    },
+    "QueryExecutionState":{
+      "type":"string",
+      "enum":[
+        "QUEUED",
+        "RUNNING",
+        "SUCCEEDED",
+        "FAILED",
+        "CANCELLED"
+      ]
+    },
+    "QueryExecutionStatistics":{
+      "type":"structure",
+      "members":{
+        "EngineExecutionTimeInMillis":{
+          "shape":"Long",
+          "documentation":"<p>The number of milliseconds that the query took to execute.</p>"
+        },
+        "DataScannedInBytes":{
+          "shape":"Long",
+          "documentation":"<p>The number of bytes in the data that was queried.</p>"
+        },
+        "DataManifestLocation":{
+          "shape":"String",
+          "documentation":"<p>The location and file name of a data manifest file. The manifest file is saved to the Athena query results location in Amazon S3. The manifest file tracks files that the query wrote to Amazon S3. If the query fails, the manifest file also tracks files that the query intended to write. The manifest is useful for identifying orphaned files resulting from a failed query. For more information, see <a href=\"https://docs.aws.amazon.com/athena/latest/ug/querying.html\">Working with Query Results, Output Files, and Query History</a> in the <i>Amazon Athena User Guide</i>.</p>"
+        },
+        "TotalExecutionTimeInMillis":{
+          "shape":"Long",
+          "documentation":"<p>The number of milliseconds that Athena took to run the query.</p>"
+        },
+        "QueryQueueTimeInMillis":{
+          "shape":"Long",
+          "documentation":"<p>The number of milliseconds that the query was in your query queue waiting for resources. Note that if transient errors occur, Athena might automatically add the query back to the queue.</p>"
+        },
+        "QueryPlanningTimeInMillis":{
+          "shape":"Long",
+          "documentation":"<p>The number of milliseconds that Athena took to plan the query processing flow. This includes the time spent retrieving table partitions from the data source. Note that because the query engine performs the query planning, query planning time is a subset of engine processing time.</p>"
+        },
+        "ServiceProcessingTimeInMillis":{
+          "shape":"Long",
+          "documentation":"<p>The number of milliseconds that Athena took to finalize and publish the query results after the query engine finished running the query.</p>"
+        }
+      },
+      "documentation":"<p>The amount of data scanned during the query execution and the amount of time that it took to execute, and the type of statement that was run.</p>"
+    },
+    "QueryExecutionStatus":{
+      "type":"structure",
+      "members":{
+        "State":{
+          "shape":"QueryExecutionState",
+          "documentation":"<p>The state of query execution. <code>QUEUED</code> indicates that the query has been submitted to the service, and Athena will execute the query as soon as resources are available. <code>RUNNING</code> indicates that the query is in execution phase. <code>SUCCEEDED</code> indicates that the query completed without errors. <code>FAILED</code> indicates that the query experienced an error and did not complete processing. <code>CANCELLED</code> indicates that a user input interrupted query execution.</p> <note> <p>Athena automatically retries your queries in cases of certain transient errors. As a result, you may see the query state transition from <code>RUNNING</code> or <code>FAILED</code> to <code>QUEUED</code>. </p> </note>"
+        },
+        "StateChangeReason":{
+          "shape":"String",
+          "documentation":"<p>Further detail about the status of the query.</p>"
+        },
+        "SubmissionDateTime":{
+          "shape":"Date",
+          "documentation":"<p>The date and time that the query was submitted.</p>"
+        },
+        "CompletionDateTime":{
+          "shape":"Date",
+          "documentation":"<p>The date and time that the query completed.</p>"
+        }
+      },
+      "documentation":"<p>The completion date, current state, submission time, and state change reason (if applicable) for the query execution.</p>"
+    },
+    "QueryString":{
+      "type":"string",
+      "max":262144,
+      "min":1
+    },
+    "ResourceNotFoundException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"},
+        "ResourceName":{"shape":"AmazonResourceName"}
+      },
+      "documentation":"<p>A resource, such as a workgroup, was not found.</p>",
+      "exception":true
+    },
+    "ResultConfiguration":{
+      "type":"structure",
+      "members":{
+        "OutputLocation":{
+          "shape":"String",
+          "documentation":"<p>The location in Amazon S3 where your query results are stored, such as <code>s3://path/to/query/bucket/</code>. To run the query, you must specify the query results location using one of the ways: either for individual queries using either this setting (client-side), or in the workgroup, using <a>WorkGroupConfiguration</a>. If none of them is set, Athena issues an error that no output location is provided. For more information, see <a href=\"https://docs.aws.amazon.com/athena/latest/ug/querying.html\">Query Results</a>. If workgroup settings override client-side settings, then the query uses the settings specified for the workgroup. See <a>WorkGroupConfiguration$EnforceWorkGroupConfiguration</a>.</p>"
+        },
+        "EncryptionConfiguration":{
+          "shape":"EncryptionConfiguration",
+          "documentation":"<p>If query results are encrypted in Amazon S3, indicates the encryption option used (for example, <code>SSE-KMS</code> or <code>CSE-KMS</code>) and key information. This is a client-side setting. If workgroup settings override client-side settings, then the query uses the encryption configuration that is specified for the workgroup, and also uses the location for storing query results specified in the workgroup. See <a>WorkGroupConfiguration$EnforceWorkGroupConfiguration</a> and <a href=\"https://docs.aws.amazon.com/athena/latest/ug/workgroups-settings-override.html\">Workgroup Settings Override Client-Side Settings</a>.</p>"
+        }
+      },
+      "documentation":"<p>The location in Amazon S3 where query results are stored and the encryption option, if any, used for query results. These are known as \"client-side settings\". If workgroup settings override client-side settings, then the query uses the workgroup settings.</p>"
+    },
+    "ResultConfigurationUpdates":{
+      "type":"structure",
+      "members":{
+        "OutputLocation":{
+          "shape":"String",
+          "documentation":"<p>The location in Amazon S3 where your query results are stored, such as <code>s3://path/to/query/bucket/</code>. For more information, see <a href=\"https://docs.aws.amazon.com/athena/latest/ug/querying.html\">Query Results</a> If workgroup settings override client-side settings, then the query uses the location for the query results and the encryption configuration that are specified for the workgroup. The \"workgroup settings override\" is specified in EnforceWorkGroupConfiguration (true/false) in the WorkGroupConfiguration. See <a>WorkGroupConfiguration$EnforceWorkGroupConfiguration</a>.</p>"
+        },
+        "RemoveOutputLocation":{
+          "shape":"BoxedBoolean",
+          "documentation":"<p>If set to \"true\", indicates that the previously-specified query results location (also known as a client-side setting) for queries in this workgroup should be ignored and set to null. If set to \"false\" or not set, and a value is present in the OutputLocation in ResultConfigurationUpdates (the client-side setting), the OutputLocation in the workgroup's ResultConfiguration will be updated with the new value. For more information, see <a href=\"https://docs.aws.amazon.com/athena/latest/ug/workgroups-settings-override.html\">Workgroup Settings Override Client-Side Settings</a>.</p>"
+        },
+        "EncryptionConfiguration":{
+          "shape":"EncryptionConfiguration",
+          "documentation":"<p>The encryption configuration for the query results.</p>"
+        },
+        "RemoveEncryptionConfiguration":{
+          "shape":"BoxedBoolean",
+          "documentation":"<p>If set to \"true\", indicates that the previously-specified encryption configuration (also known as the client-side setting) for queries in this workgroup should be ignored and set to null. If set to \"false\" or not set, and a value is present in the EncryptionConfiguration in ResultConfigurationUpdates (the client-side setting), the EncryptionConfiguration in the workgroup's ResultConfiguration will be updated with the new value. For more information, see <a href=\"https://docs.aws.amazon.com/athena/latest/ug/workgroups-settings-override.html\">Workgroup Settings Override Client-Side Settings</a>.</p>"
+        }
+      },
+      "documentation":"<p>The information about the updates in the query results, such as output location and encryption configuration for the query results.</p>"
+    },
+    "ResultSet":{
+      "type":"structure",
+      "members":{
+        "Rows":{
+          "shape":"RowList",
+          "documentation":"<p>The rows in the table.</p>"
+        },
+        "ResultSetMetadata":{
+          "shape":"ResultSetMetadata",
+          "documentation":"<p>The metadata that describes the column structure and data types of a table of query results.</p>"
+        }
+      },
+      "documentation":"<p>The metadata and rows that comprise a query result set. The metadata describes the column structure and data types. To return a <code>ResultSet</code> object, use <a>GetQueryResults</a>.</p>"
+    },
+    "ResultSetMetadata":{
+      "type":"structure",
+      "members":{
+        "ColumnInfo":{
+          "shape":"ColumnInfoList",
+          "documentation":"<p>Information about the columns returned in a query result metadata.</p>"
+        }
+      },
+      "documentation":"<p>The metadata that describes the column structure and data types of a table of query results. To return a <code>ResultSetMetadata</code> object, use <a>GetQueryResults</a>.</p>"
+    },
+    "Row":{
+      "type":"structure",
+      "members":{
+        "Data":{
+          "shape":"datumList",
+          "documentation":"<p>The data that populates a row in a query result table.</p>"
+        }
+      },
+      "documentation":"<p>The rows that comprise a query result table.</p>"
+    },
+    "RowList":{
+      "type":"list",
+      "member":{"shape":"Row"}
+    },
+    "StartQueryExecutionInput":{
+      "type":"structure",
+      "required":["QueryString"],
+      "members":{
+        "QueryString":{
+          "shape":"QueryString",
+          "documentation":"<p>The SQL query statements to be executed.</p>"
+        },
+        "ClientRequestToken":{
+          "shape":"IdempotencyToken",
+          "documentation":"<p>A unique case-sensitive string used to ensure the request to create the query is idempotent (executes only once). If another <code>StartQueryExecution</code> request is received, the same response is returned and another query is not created. If a parameter has changed, for example, the <code>QueryString</code>, an error is returned.</p> <important> <p>This token is listed as not required because AWS SDKs (for example the AWS SDK for Java) auto-generate the token for users. If you are not using the AWS SDK or the AWS CLI, you must provide this token or the action will fail.</p> </important>",
+          "idempotencyToken":true
+        },
+        "QueryExecutionContext":{
+          "shape":"QueryExecutionContext",
+          "documentation":"<p>The database within which the query executes.</p>"
+        },
+        "ResultConfiguration":{
+          "shape":"ResultConfiguration",
+          "documentation":"<p>Specifies information about where and how to save the results of the query execution. If the query runs in a workgroup, then workgroup's settings may override query settings. This affects the query results location. The workgroup settings override is specified in EnforceWorkGroupConfiguration (true/false) in the WorkGroupConfiguration. See <a>WorkGroupConfiguration$EnforceWorkGroupConfiguration</a>.</p>"
+        },
+        "WorkGroup":{
+          "shape":"WorkGroupName",
+          "documentation":"<p>The name of the workgroup in which the query is being started.</p>"
+        }
+      }
+    },
+    "StartQueryExecutionOutput":{
+      "type":"structure",
+      "members":{
+        "QueryExecutionId":{
+          "shape":"QueryExecutionId",
+          "documentation":"<p>The unique ID of the query that ran as a result of this request.</p>"
+        }
+      }
+    },
+    "StatementName":{
+      "type":"string",
+      "max":256,
+      "min":1,
+      "pattern":"[a-zA-Z_][a-zA-Z0-9_@:]{1,256}"
+    },
+    "StatementType":{
+      "type":"string",
+      "enum":[
+        "DDL",
+        "DML",
+        "UTILITY"
+      ]
+    },
+    "StopQueryExecutionInput":{
+      "type":"structure",
+      "required":["QueryExecutionId"],
+      "members":{
+        "QueryExecutionId":{
+          "shape":"QueryExecutionId",
+          "documentation":"<p>The unique ID of the query execution to stop.</p>",
+          "idempotencyToken":true
+        }
+      }
+    },
+    "StopQueryExecutionOutput":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "String":{"type":"string"},
+    "TableMetadata":{
+      "type":"structure",
+      "required":["Name"],
+      "members":{
+        "Name":{
+          "shape":"NameString",
+          "documentation":"<p>The name of the table.</p>"
+        },
+        "CreateTime":{
+          "shape":"Timestamp",
+          "documentation":"<p>The time that the table was created.</p>"
+        },
+        "LastAccessTime":{
+          "shape":"Timestamp",
+          "documentation":"<p>The last time the table was accessed.</p>"
+        },
+        "TableType":{
+          "shape":"TableTypeString",
+          "documentation":"<p>The type of table. In Athena, only <code>EXTERNAL_TABLE</code> is supported.</p>"
+        },
+        "Columns":{
+          "shape":"ColumnList",
+          "documentation":"<p>A list of the columns in the table.</p>"
+        },
+        "PartitionKeys":{
+          "shape":"ColumnList",
+          "documentation":"<p>A list of the partition keys in the table.</p>"
+        },
+        "Parameters":{
+          "shape":"ParametersMap",
+          "documentation":"<p>A set of custom key/value pairs for table properties.</p>"
+        }
+      },
+      "documentation":"<p>Contains metadata for a table.</p>"
+    },
+    "TableMetadataList":{
+      "type":"list",
+      "member":{"shape":"TableMetadata"}
+    },
+    "TableTypeString":{
+      "type":"string",
+      "max":255
+    },
+    "Tag":{
+      "type":"structure",
+      "members":{
+        "Key":{
+          "shape":"TagKey",
+          "documentation":"<p>A tag key. The tag key length is from 1 to 128 Unicode characters in UTF-8. You can use letters and numbers representable in UTF-8, and the following characters: + - = . _ : / @. Tag keys are case-sensitive and must be unique per resource. </p>"
+        },
+        "Value":{
+          "shape":"TagValue",
+          "documentation":"<p>A tag value. The tag value length is from 0 to 256 Unicode characters in UTF-8. You can use letters and numbers representable in UTF-8, and the following characters: + - = . _ : / @. Tag values are case-sensitive. </p>"
+        }
+      },
+      "documentation":"<p>A label that you assign to a resource. In Athena, a resource can be a workgroup or data catalog. Each tag consists of a key and an optional value, both of which you define. For example, you can use tags to categorize Athena workgroups or data catalogs by purpose, owner, or environment. Use a consistent set of tag keys to make it easier to search and filter workgroups or data catalogs in your account. For best practices, see <a href=\"https://aws.amazon.com/answers/account-management/aws-tagging-strategies/\">Tagging Best Practices</a>. Tag keys can be from 1 to 128 UTF-8 Unicode characters, and tag values can be from 0 to 256 UTF-8 Unicode characters. Tags can use letters and numbers representable in UTF-8, and the following characters: + - = . _ : / @. Tag keys and values are case-sensitive. Tag keys must be unique per resource. If you specify more than one tag, separate them by commas. </p>"
+    },
+    "TagKey":{
+      "type":"string",
+      "max":128,
+      "min":1
+    },
+    "TagKeyList":{
+      "type":"list",
+      "member":{"shape":"TagKey"}
+    },
+    "TagList":{
+      "type":"list",
+      "member":{"shape":"Tag"}
+    },
+    "TagResourceInput":{
+      "type":"structure",
+      "required":[
+        "ResourceARN",
+        "Tags"
+      ],
+      "members":{
+        "ResourceARN":{
+          "shape":"AmazonResourceName",
+          "documentation":"<p>Specifies the ARN of the Athena resource (workgroup or data catalog) to which tags are to be added.</p>"
+        },
+        "Tags":{
+          "shape":"TagList",
+          "documentation":"<p>A collection of one or more tags, separated by commas, to be added to an Athena workgroup or data catalog resource.</p>"
+        }
+      }
+    },
+    "TagResourceOutput":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "TagValue":{
+      "type":"string",
+      "max":256,
+      "min":0
+    },
+    "ThrottleReason":{
+      "type":"string",
+      "documentation":"<p>The reason for the query throttling, for example, when it exceeds the concurrent query limit.</p>",
+      "enum":["CONCURRENT_QUERY_LIMIT_EXCEEDED"]
+    },
+    "Timestamp":{"type":"timestamp"},
+    "Token":{
+      "type":"string",
+      "max":1024,
+      "min":1
+    },
+    "TooManyRequestsException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"ErrorMessage"},
+        "Reason":{"shape":"ThrottleReason"}
+      },
+      "documentation":"<p>Indicates that the request was throttled.</p>",
+      "exception":true
+    },
+    "TypeString":{
+      "type":"string",
+      "max":4096,
+      "min":0,
+      "pattern":"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\t]*"
+    },
+    "UnprocessedNamedQueryId":{
+      "type":"structure",
+      "members":{
+        "NamedQueryId":{
+          "shape":"NamedQueryId",
+          "documentation":"<p>The unique identifier of the named query.</p>"
+        },
+        "ErrorCode":{
+          "shape":"ErrorCode",
+          "documentation":"<p>The error code returned when the processing request for the named query failed, if applicable.</p>"
+        },
+        "ErrorMessage":{
+          "shape":"ErrorMessage",
+          "documentation":"<p>The error message returned when the processing request for the named query failed, if applicable.</p>"
+        }
+      },
+      "documentation":"<p>Information about a named query ID that could not be processed.</p>"
+    },
+    "UnprocessedNamedQueryIdList":{
+      "type":"list",
+      "member":{"shape":"UnprocessedNamedQueryId"}
+    },
+    "UnprocessedQueryExecutionId":{
+      "type":"structure",
+      "members":{
+        "QueryExecutionId":{
+          "shape":"QueryExecutionId",
+          "documentation":"<p>The unique identifier of the query execution.</p>"
+        },
+        "ErrorCode":{
+          "shape":"ErrorCode",
+          "documentation":"<p>The error code returned when the query execution failed to process, if applicable.</p>"
+        },
+        "ErrorMessage":{
+          "shape":"ErrorMessage",
+          "documentation":"<p>The error message returned when the query execution failed to process, if applicable.</p>"
+        }
+      },
+      "documentation":"<p>Describes a query execution that failed to process.</p>"
+    },
+    "UnprocessedQueryExecutionIdList":{
+      "type":"list",
+      "member":{"shape":"UnprocessedQueryExecutionId"}
+    },
+    "UntagResourceInput":{
+      "type":"structure",
+      "required":[
+        "ResourceARN",
+        "TagKeys"
+      ],
+      "members":{
+        "ResourceARN":{
+          "shape":"AmazonResourceName",
+          "documentation":"<p>Specifies the ARN of the resource from which tags are to be removed.</p>"
+        },
+        "TagKeys":{
+          "shape":"TagKeyList",
+          "documentation":"<p>A comma-separated list of one or more tag keys whose tags are to be removed from the specified resource.</p>"
+        }
+      }
+    },
+    "UntagResourceOutput":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "UpdateDataCatalogInput":{
+      "type":"structure",
+      "required":[
+        "Name",
+        "Type"
+      ],
+      "members":{
+        "Name":{
+          "shape":"CatalogNameString",
+          "documentation":"<p>The name of the data catalog to update. The catalog name must be unique for the AWS account and can use a maximum of 128 alphanumeric, underscore, at sign, or hyphen characters.</p>"
+        },
+        "Type":{
+          "shape":"DataCatalogType",
+          "documentation":"<p>Specifies the type of data catalog to update. Specify <code>LAMBDA</code> for a federated catalog or <code>HIVE</code> for an external hive metastore.</p> <note> <p>Do not use the <code>GLUE</code> type. This refers to the <code>AwsDataCatalog</code> that already exists in your account, of which you can have only one. Specifying the <code>GLUE</code> type will result in an <code>INVALID_INPUT</code> error.</p> </note>"
+        },
+        "Description":{
+          "shape":"DescriptionString",
+          "documentation":"<p>New or modified text that describes the data catalog.</p>"
+        },
+        "Parameters":{
+          "shape":"ParametersMap",
+          "documentation":"<p>Specifies the Lambda function or functions to use for updating the data catalog. This is a mapping whose values depend on the catalog type. </p> <ul> <li> <p>For the <code>HIVE</code> data catalog type, use the following syntax. The <code>metadata-function</code> parameter is required. <code>The sdk-version</code> parameter is optional and defaults to the currently supported version.</p> <p> <code>metadata-function=<i>lambda_arn</i>, sdk-version=<i>version_number</i> </code> </p> </li> <li> <p>For the <code>LAMBDA</code> data catalog type, use one of the following sets of required parameters, but not both.</p> <ul> <li> <p>If you have one Lambda function that processes metadata and another for reading the actual data, use the following syntax. Both parameters are required.</p> <p> <code>metadata-function=<i>lambda_arn</i>, record-function=<i>lambda_arn</i> </code> </p> </li> <li> <p> If you have a composite Lambda function that processes both metadata and data, use the following syntax to specify your Lambda function.</p> <p> <code>function=<i>lambda_arn</i> </code> </p> </li> </ul> </li> </ul>"
+        }
+      }
+    },
+    "UpdateDataCatalogOutput":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "UpdatePreparedStatementInput":{
+      "type":"structure",
+      "required":[
+        "StatementName",
+        "WorkGroup",
+        "QueryStatement"
+      ],
+      "members":{
+        "StatementName":{
+          "shape":"StatementName",
+          "documentation":"<p>The name of the prepared statement.</p>"
+        },
+        "WorkGroup":{
+          "shape":"WorkGroupName",
+          "documentation":"<p>The workgroup for the prepared statement.</p>"
+        },
+        "QueryStatement":{
+          "shape":"QueryString",
+          "documentation":"<p>The query string for the prepared statement.</p>"
+        },
+        "Description":{
+          "shape":"DescriptionString",
+          "documentation":"<p>The description of the prepared statement.</p>"
+        }
+      }
+    },
+    "UpdatePreparedStatementOutput":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "UpdateWorkGroupInput":{
+      "type":"structure",
+      "required":["WorkGroup"],
+      "members":{
+        "WorkGroup":{
+          "shape":"WorkGroupName",
+          "documentation":"<p>The specified workgroup that will be updated.</p>"
+        },
+        "Description":{
+          "shape":"WorkGroupDescriptionString",
+          "documentation":"<p>The workgroup description.</p>"
+        },
+        "ConfigurationUpdates":{
+          "shape":"WorkGroupConfigurationUpdates",
+          "documentation":"<p>The workgroup configuration that will be updated for the given workgroup.</p>"
+        },
+        "State":{
+          "shape":"WorkGroupState",
+          "documentation":"<p>The workgroup state that will be updated for the given workgroup.</p>"
+        }
+      }
+    },
+    "UpdateWorkGroupOutput":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "WorkGroup":{
+      "type":"structure",
+      "required":["Name"],
+      "members":{
+        "Name":{
+          "shape":"WorkGroupName",
+          "documentation":"<p>The workgroup name.</p>"
+        },
+        "State":{
+          "shape":"WorkGroupState",
+          "documentation":"<p>The state of the workgroup: ENABLED or DISABLED.</p>"
+        },
+        "Configuration":{
+          "shape":"WorkGroupConfiguration",
+          "documentation":"<p>The configuration of the workgroup, which includes the location in Amazon S3 where query results are stored, the encryption configuration, if any, used for query results; whether the Amazon CloudWatch Metrics are enabled for the workgroup; whether workgroup settings override client-side settings; and the data usage limits for the amount of data scanned per query or per workgroup. The workgroup settings override is specified in EnforceWorkGroupConfiguration (true/false) in the WorkGroupConfiguration. See <a>WorkGroupConfiguration$EnforceWorkGroupConfiguration</a>.</p>"
+        },
+        "Description":{
+          "shape":"WorkGroupDescriptionString",
+          "documentation":"<p>The workgroup description.</p>"
+        },
+        "CreationTime":{
+          "shape":"Date",
+          "documentation":"<p>The date and time the workgroup was created.</p>"
+        }
+      },
+      "documentation":"<p>A workgroup, which contains a name, description, creation time, state, and other configuration, listed under <a>WorkGroup$Configuration</a>. Each workgroup enables you to isolate queries for you or your group of users from other queries in the same account, to configure the query results location and the encryption configuration (known as workgroup settings), to enable sending query metrics to Amazon CloudWatch, and to establish per-query data usage control limits for all queries in a workgroup. The workgroup settings override is specified in EnforceWorkGroupConfiguration (true/false) in the WorkGroupConfiguration. See <a>WorkGroupConfiguration$EnforceWorkGroupConfiguration</a>.</p>"
+    },
+    "WorkGroupConfiguration":{
+      "type":"structure",
+      "members":{
+        "ResultConfiguration":{
+          "shape":"ResultConfiguration",
+          "documentation":"<p>The configuration for the workgroup, which includes the location in Amazon S3 where query results are stored and the encryption option, if any, used for query results. To run the query, you must specify the query results location using one of the ways: either in the workgroup using this setting, or for individual queries (client-side), using <a>ResultConfiguration$OutputLocation</a>. If none of them is set, Athena issues an error that no output location is provided. For more information, see <a href=\"https://docs.aws.amazon.com/athena/latest/ug/querying.html\">Query Results</a>.</p>"
+        },
+        "EnforceWorkGroupConfiguration":{
+          "shape":"BoxedBoolean",
+          "documentation":"<p>If set to \"true\", the settings for the workgroup override client-side settings. If set to \"false\", client-side settings are used. For more information, see <a href=\"https://docs.aws.amazon.com/athena/latest/ug/workgroups-settings-override.html\">Workgroup Settings Override Client-Side Settings</a>.</p>"
+        },
+        "PublishCloudWatchMetricsEnabled":{
+          "shape":"BoxedBoolean",
+          "documentation":"<p>Indicates that the Amazon CloudWatch metrics are enabled for the workgroup.</p>"
+        },
+        "BytesScannedCutoffPerQuery":{
+          "shape":"BytesScannedCutoffValue",
+          "documentation":"<p>The upper data usage limit (cutoff) for the amount of bytes a single query in a workgroup is allowed to scan.</p>"
+        },
+        "RequesterPaysEnabled":{
+          "shape":"BoxedBoolean",
+          "documentation":"<p>If set to <code>true</code>, allows members assigned to a workgroup to reference Amazon S3 Requester Pays buckets in queries. If set to <code>false</code>, workgroup members cannot query data from Requester Pays buckets, and queries that retrieve data from Requester Pays buckets cause an error. The default is <code>false</code>. For more information about Requester Pays buckets, see <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html\">Requester Pays Buckets</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>"
+        },
+        "EngineVersion":{
+          "shape":"EngineVersion",
+          "documentation":"<p>The engine version that all queries running on the workgroup use. Queries on the <code>AmazonAthenaPreviewFunctionality</code> workgroup run on the preview engine regardless of this setting.</p>"
+        }
+      },
+      "documentation":"<p>The configuration of the workgroup, which includes the location in Amazon S3 where query results are stored, the encryption option, if any, used for query results, whether the Amazon CloudWatch Metrics are enabled for the workgroup and whether workgroup settings override query settings, and the data usage limits for the amount of data scanned per query or per workgroup. The workgroup settings override is specified in EnforceWorkGroupConfiguration (true/false) in the WorkGroupConfiguration. See <a>WorkGroupConfiguration$EnforceWorkGroupConfiguration</a>. </p>"
+    },
+    "WorkGroupConfigurationUpdates":{
+      "type":"structure",
+      "members":{
+        "EnforceWorkGroupConfiguration":{
+          "shape":"BoxedBoolean",
+          "documentation":"<p>If set to \"true\", the settings for the workgroup override client-side settings. If set to \"false\" client-side settings are used. For more information, see <a href=\"https://docs.aws.amazon.com/athena/latest/ug/workgroups-settings-override.html\">Workgroup Settings Override Client-Side Settings</a>.</p>"
+        },
+        "ResultConfigurationUpdates":{
+          "shape":"ResultConfigurationUpdates",
+          "documentation":"<p>The result configuration information about the queries in this workgroup that will be updated. Includes the updated results location and an updated option for encrypting query results.</p>"
+        },
+        "PublishCloudWatchMetricsEnabled":{
+          "shape":"BoxedBoolean",
+          "documentation":"<p>Indicates whether this workgroup enables publishing metrics to Amazon CloudWatch.</p>"
+        },
+        "BytesScannedCutoffPerQuery":{
+          "shape":"BytesScannedCutoffValue",
+          "documentation":"<p>The upper limit (cutoff) for the amount of bytes a single query in a workgroup is allowed to scan.</p>"
+        },
+        "RemoveBytesScannedCutoffPerQuery":{
+          "shape":"BoxedBoolean",
+          "documentation":"<p>Indicates that the data usage control limit per query is removed. <a>WorkGroupConfiguration$BytesScannedCutoffPerQuery</a> </p>"
+        },
+        "RequesterPaysEnabled":{
+          "shape":"BoxedBoolean",
+          "documentation":"<p>If set to <code>true</code>, allows members assigned to a workgroup to specify Amazon S3 Requester Pays buckets in queries. If set to <code>false</code>, workgroup members cannot query data from Requester Pays buckets, and queries that retrieve data from Requester Pays buckets cause an error. The default is <code>false</code>. For more information about Requester Pays buckets, see <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html\">Requester Pays Buckets</a> in the <i>Amazon Simple Storage Service Developer Guide</i>.</p>"
+        },
+        "EngineVersion":{
+          "shape":"EngineVersion",
+          "documentation":"<p>The engine version requested when a workgroup is updated. After the update, all queries on the workgroup run on the requested engine version. If no value was previously set, the default is Auto. Queries on the <code>AmazonAthenaPreviewFunctionality</code> workgroup run on the preview engine regardless of this setting.</p>"
+        }
+      },
+      "documentation":"<p>The configuration information that will be updated for this workgroup, which includes the location in Amazon S3 where query results are stored, the encryption option, if any, used for query results, whether the Amazon CloudWatch Metrics are enabled for the workgroup, whether the workgroup settings override the client-side settings, and the data usage limit for the amount of bytes scanned per query, if it is specified.</p>"
+    },
+    "WorkGroupDescriptionString":{
+      "type":"string",
+      "max":1024,
+      "min":0
+    },
+    "WorkGroupName":{
+      "type":"string",
+      "pattern":"[a-zA-Z0-9._-]{1,128}"
+    },
+    "WorkGroupState":{
+      "type":"string",
+      "enum":[
+        "ENABLED",
+        "DISABLED"
+      ]
+    },
+    "WorkGroupSummary":{
+      "type":"structure",
+      "members":{
+        "Name":{
+          "shape":"WorkGroupName",
+          "documentation":"<p>The name of the workgroup.</p>"
+        },
+        "State":{
+          "shape":"WorkGroupState",
+          "documentation":"<p>The state of the workgroup.</p>"
+        },
+        "Description":{
+          "shape":"WorkGroupDescriptionString",
+          "documentation":"<p>The workgroup description.</p>"
+        },
+        "CreationTime":{
+          "shape":"Date",
+          "documentation":"<p>The workgroup creation date and time.</p>"
+        },
+        "EngineVersion":{
+          "shape":"EngineVersion",
+          "documentation":"<p>The engine version setting for all queries on the workgroup. Queries on the <code>AmazonAthenaPreviewFunctionality</code> workgroup run on the preview engine regardless of this setting.</p>"
+        }
+      },
+      "documentation":"<p>The summary information for the workgroup, which includes its name, state, description, and the date and time it was created.</p>"
+    },
+    "WorkGroupsList":{
+      "type":"list",
+      "member":{"shape":"WorkGroupSummary"},
+      "max":50,
+      "min":0
+    },
+    "datumList":{
+      "type":"list",
+      "member":{"shape":"Datum"}
+    },
+    "datumString":{"type":"string"}
+  },
+  "documentation":"<p>Amazon Athena is an interactive query service that lets you use standard SQL to analyze data directly in Amazon S3. You can point Athena at your data in Amazon S3 and run ad-hoc queries and get results in seconds. Athena is serverless, so there is no infrastructure to set up or manage. You pay only for the queries you run. Athena scales automatically—executing queries in parallel—so results are fast, even with large datasets and complex queries. For more information, see <a href=\"http://docs.aws.amazon.com/athena/latest/ug/what-is.html\">What is Amazon Athena</a> in the <i>Amazon Athena User Guide</i>.</p> <p>If you connect to Athena using the JDBC driver, use version 1.1.0 of the driver or later with the Amazon Athena API. Earlier version drivers do not support the API. For more information and to download the driver, see <a href=\"https://docs.aws.amazon.com/athena/latest/ug/connect-with-jdbc.html\">Accessing Amazon Athena with JDBC</a>.</p> <p>For code samples using the AWS SDK for Java, see <a href=\"https://docs.aws.amazon.com/athena/latest/ug/code-samples.html\">Examples and Code Samples</a> in the <i>Amazon Athena User Guide</i>.</p>"
+}

+ 3 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/auditmanager/2017-07-25/paginators-1.json

@@ -0,0 +1,3 @@
+{
+  "pagination": {}
+}

+ 4342 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/auditmanager/2017-07-25/service-2.json

@@ -0,0 +1,4342 @@
+{
+  "version":"2.0",
+  "metadata":{
+    "apiVersion":"2017-07-25",
+    "endpointPrefix":"auditmanager",
+    "jsonVersion":"1.1",
+    "protocol":"rest-json",
+    "serviceFullName":"AWS Audit Manager",
+    "serviceId":"AuditManager",
+    "signatureVersion":"v4",
+    "signingName":"auditmanager",
+    "uid":"auditmanager-2017-07-25"
+  },
+  "operations":{
+    "AssociateAssessmentReportEvidenceFolder":{
+      "name":"AssociateAssessmentReportEvidenceFolder",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/assessments/{assessmentId}/associateToAssessmentReport"
+      },
+      "input":{"shape":"AssociateAssessmentReportEvidenceFolderRequest"},
+      "output":{"shape":"AssociateAssessmentReportEvidenceFolderResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p> Associates an evidence folder to the specified assessment report in AWS Audit Manager. </p>"
+    },
+    "BatchAssociateAssessmentReportEvidence":{
+      "name":"BatchAssociateAssessmentReportEvidence",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/assessments/{assessmentId}/batchAssociateToAssessmentReport"
+      },
+      "input":{"shape":"BatchAssociateAssessmentReportEvidenceRequest"},
+      "output":{"shape":"BatchAssociateAssessmentReportEvidenceResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p> Associates a list of evidence to an assessment report in an AWS Audit Manager assessment. </p>"
+    },
+    "BatchCreateDelegationByAssessment":{
+      "name":"BatchCreateDelegationByAssessment",
+      "http":{
+        "method":"POST",
+        "requestUri":"/assessments/{assessmentId}/delegations"
+      },
+      "input":{"shape":"BatchCreateDelegationByAssessmentRequest"},
+      "output":{"shape":"BatchCreateDelegationByAssessmentResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Create a batch of delegations for a specified assessment in AWS Audit Manager. </p>"
+    },
+    "BatchDeleteDelegationByAssessment":{
+      "name":"BatchDeleteDelegationByAssessment",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/assessments/{assessmentId}/delegations"
+      },
+      "input":{"shape":"BatchDeleteDelegationByAssessmentRequest"},
+      "output":{"shape":"BatchDeleteDelegationByAssessmentResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Deletes the delegations in the specified AWS Audit Manager assessment. </p>"
+    },
+    "BatchDisassociateAssessmentReportEvidence":{
+      "name":"BatchDisassociateAssessmentReportEvidence",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/assessments/{assessmentId}/batchDisassociateFromAssessmentReport"
+      },
+      "input":{"shape":"BatchDisassociateAssessmentReportEvidenceRequest"},
+      "output":{"shape":"BatchDisassociateAssessmentReportEvidenceResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p> Disassociates a list of evidence from the specified assessment report in AWS Audit Manager. </p>"
+    },
+    "BatchImportEvidenceToAssessmentControl":{
+      "name":"BatchImportEvidenceToAssessmentControl",
+      "http":{
+        "method":"POST",
+        "requestUri":"/assessments/{assessmentId}/controlSets/{controlSetId}/controls/{controlId}/evidence"
+      },
+      "input":{"shape":"BatchImportEvidenceToAssessmentControlRequest"},
+      "output":{"shape":"BatchImportEvidenceToAssessmentControlResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Uploads one or more pieces of evidence to the specified control in the assessment in AWS Audit Manager. </p>"
+    },
+    "CreateAssessment":{
+      "name":"CreateAssessment",
+      "http":{
+        "method":"POST",
+        "requestUri":"/assessments"
+      },
+      "input":{"shape":"CreateAssessmentRequest"},
+      "output":{"shape":"CreateAssessmentResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Creates an assessment in AWS Audit Manager. </p>"
+    },
+    "CreateAssessmentFramework":{
+      "name":"CreateAssessmentFramework",
+      "http":{
+        "method":"POST",
+        "requestUri":"/assessmentFrameworks"
+      },
+      "input":{"shape":"CreateAssessmentFrameworkRequest"},
+      "output":{"shape":"CreateAssessmentFrameworkResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Creates a custom framework in AWS Audit Manager. </p>"
+    },
+    "CreateAssessmentReport":{
+      "name":"CreateAssessmentReport",
+      "http":{
+        "method":"POST",
+        "requestUri":"/assessments/{assessmentId}/reports"
+      },
+      "input":{"shape":"CreateAssessmentReportRequest"},
+      "output":{"shape":"CreateAssessmentReportResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p> Creates an assessment report for the specified assessment. </p>"
+    },
+    "CreateControl":{
+      "name":"CreateControl",
+      "http":{
+        "method":"POST",
+        "requestUri":"/controls"
+      },
+      "input":{"shape":"CreateControlRequest"},
+      "output":{"shape":"CreateControlResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Creates a new custom control in AWS Audit Manager. </p>"
+    },
+    "DeleteAssessment":{
+      "name":"DeleteAssessment",
+      "http":{
+        "method":"DELETE",
+        "requestUri":"/assessments/{assessmentId}"
+      },
+      "input":{"shape":"DeleteAssessmentRequest"},
+      "output":{"shape":"DeleteAssessmentResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Deletes an assessment in AWS Audit Manager. </p>"
+    },
+    "DeleteAssessmentFramework":{
+      "name":"DeleteAssessmentFramework",
+      "http":{
+        "method":"DELETE",
+        "requestUri":"/assessmentFrameworks/{frameworkId}"
+      },
+      "input":{"shape":"DeleteAssessmentFrameworkRequest"},
+      "output":{"shape":"DeleteAssessmentFrameworkResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Deletes a custom framework in AWS Audit Manager. </p>"
+    },
+    "DeleteAssessmentReport":{
+      "name":"DeleteAssessmentReport",
+      "http":{
+        "method":"DELETE",
+        "requestUri":"/assessments/{assessmentId}/reports/{assessmentReportId}"
+      },
+      "input":{"shape":"DeleteAssessmentReportRequest"},
+      "output":{"shape":"DeleteAssessmentReportResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p> Deletes an assessment report from an assessment in AWS Audit Manager. </p>"
+    },
+    "DeleteControl":{
+      "name":"DeleteControl",
+      "http":{
+        "method":"DELETE",
+        "requestUri":"/controls/{controlId}"
+      },
+      "input":{"shape":"DeleteControlRequest"},
+      "output":{"shape":"DeleteControlResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Deletes a custom control in AWS Audit Manager. </p>"
+    },
+    "DeregisterAccount":{
+      "name":"DeregisterAccount",
+      "http":{
+        "method":"POST",
+        "requestUri":"/account/deregisterAccount"
+      },
+      "input":{"shape":"DeregisterAccountRequest"},
+      "output":{"shape":"DeregisterAccountResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p> Deregisters an account in AWS Audit Manager. </p>"
+    },
+    "DeregisterOrganizationAdminAccount":{
+      "name":"DeregisterOrganizationAdminAccount",
+      "http":{
+        "method":"POST",
+        "requestUri":"/account/deregisterOrganizationAdminAccount"
+      },
+      "input":{"shape":"DeregisterOrganizationAdminAccountRequest"},
+      "output":{"shape":"DeregisterOrganizationAdminAccountResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p> Deregisters the delegated AWS administrator account from the AWS organization. </p>"
+    },
+    "DisassociateAssessmentReportEvidenceFolder":{
+      "name":"DisassociateAssessmentReportEvidenceFolder",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/assessments/{assessmentId}/disassociateFromAssessmentReport"
+      },
+      "input":{"shape":"DisassociateAssessmentReportEvidenceFolderRequest"},
+      "output":{"shape":"DisassociateAssessmentReportEvidenceFolderResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p> Disassociates an evidence folder from the specified assessment report in AWS Audit Manager. </p>"
+    },
+    "GetAccountStatus":{
+      "name":"GetAccountStatus",
+      "http":{
+        "method":"GET",
+        "requestUri":"/account/status"
+      },
+      "input":{"shape":"GetAccountStatusRequest"},
+      "output":{"shape":"GetAccountStatusResponse"},
+      "errors":[
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Returns the registration status of an account in AWS Audit Manager. </p>"
+    },
+    "GetAssessment":{
+      "name":"GetAssessment",
+      "http":{
+        "method":"GET",
+        "requestUri":"/assessments/{assessmentId}"
+      },
+      "input":{"shape":"GetAssessmentRequest"},
+      "output":{"shape":"GetAssessmentResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Returns an assessment from AWS Audit Manager. </p>"
+    },
+    "GetAssessmentFramework":{
+      "name":"GetAssessmentFramework",
+      "http":{
+        "method":"GET",
+        "requestUri":"/assessmentFrameworks/{frameworkId}"
+      },
+      "input":{"shape":"GetAssessmentFrameworkRequest"},
+      "output":{"shape":"GetAssessmentFrameworkResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Returns a framework from AWS Audit Manager. </p>"
+    },
+    "GetAssessmentReportUrl":{
+      "name":"GetAssessmentReportUrl",
+      "http":{
+        "method":"GET",
+        "requestUri":"/assessments/{assessmentId}/reports/{assessmentReportId}/url"
+      },
+      "input":{"shape":"GetAssessmentReportUrlRequest"},
+      "output":{"shape":"GetAssessmentReportUrlResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p> Returns the URL of a specified assessment report in AWS Audit Manager. </p>"
+    },
+    "GetChangeLogs":{
+      "name":"GetChangeLogs",
+      "http":{
+        "method":"GET",
+        "requestUri":"/assessments/{assessmentId}/changelogs"
+      },
+      "input":{"shape":"GetChangeLogsRequest"},
+      "output":{"shape":"GetChangeLogsResponse"},
+      "errors":[
+        {"shape":"AccessDeniedException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Returns a list of changelogs from AWS Audit Manager. </p>"
+    },
+    "GetControl":{
+      "name":"GetControl",
+      "http":{
+        "method":"GET",
+        "requestUri":"/controls/{controlId}"
+      },
+      "input":{"shape":"GetControlRequest"},
+      "output":{"shape":"GetControlResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Returns a control from AWS Audit Manager. </p>"
+    },
+    "GetDelegations":{
+      "name":"GetDelegations",
+      "http":{
+        "method":"GET",
+        "requestUri":"/delegations"
+      },
+      "input":{"shape":"GetDelegationsRequest"},
+      "output":{"shape":"GetDelegationsResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Returns a list of delegations from an audit owner to a delegate. </p>"
+    },
+    "GetEvidence":{
+      "name":"GetEvidence",
+      "http":{
+        "method":"GET",
+        "requestUri":"/assessments/{assessmentId}/controlSets/{controlSetId}/evidenceFolders/{evidenceFolderId}/evidence/{evidenceId}"
+      },
+      "input":{"shape":"GetEvidenceRequest"},
+      "output":{"shape":"GetEvidenceResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Returns evidence from AWS Audit Manager. </p>"
+    },
+    "GetEvidenceByEvidenceFolder":{
+      "name":"GetEvidenceByEvidenceFolder",
+      "http":{
+        "method":"GET",
+        "requestUri":"/assessments/{assessmentId}/controlSets/{controlSetId}/evidenceFolders/{evidenceFolderId}/evidence"
+      },
+      "input":{"shape":"GetEvidenceByEvidenceFolderRequest"},
+      "output":{"shape":"GetEvidenceByEvidenceFolderResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Returns all evidence from a specified evidence folder in AWS Audit Manager. </p>"
+    },
+    "GetEvidenceFolder":{
+      "name":"GetEvidenceFolder",
+      "http":{
+        "method":"GET",
+        "requestUri":"/assessments/{assessmentId}/controlSets/{controlSetId}/evidenceFolders/{evidenceFolderId}"
+      },
+      "input":{"shape":"GetEvidenceFolderRequest"},
+      "output":{"shape":"GetEvidenceFolderResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Returns an evidence folder from the specified assessment in AWS Audit Manager. </p>"
+    },
+    "GetEvidenceFoldersByAssessment":{
+      "name":"GetEvidenceFoldersByAssessment",
+      "http":{
+        "method":"GET",
+        "requestUri":"/assessments/{assessmentId}/evidenceFolders"
+      },
+      "input":{"shape":"GetEvidenceFoldersByAssessmentRequest"},
+      "output":{"shape":"GetEvidenceFoldersByAssessmentResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Returns the evidence folders from a specified assessment in AWS Audit Manager. </p>"
+    },
+    "GetEvidenceFoldersByAssessmentControl":{
+      "name":"GetEvidenceFoldersByAssessmentControl",
+      "http":{
+        "method":"GET",
+        "requestUri":"/assessments/{assessmentId}/evidenceFolders-by-assessment-control/{controlSetId}/{controlId}"
+      },
+      "input":{"shape":"GetEvidenceFoldersByAssessmentControlRequest"},
+      "output":{"shape":"GetEvidenceFoldersByAssessmentControlResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Returns a list of evidence folders associated with a specified control of an assessment in AWS Audit Manager. </p>"
+    },
+    "GetOrganizationAdminAccount":{
+      "name":"GetOrganizationAdminAccount",
+      "http":{
+        "method":"GET",
+        "requestUri":"/account/organizationAdminAccount"
+      },
+      "input":{"shape":"GetOrganizationAdminAccountRequest"},
+      "output":{"shape":"GetOrganizationAdminAccountResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p> Returns the name of the delegated AWS administrator account for the AWS organization. </p>"
+    },
+    "GetServicesInScope":{
+      "name":"GetServicesInScope",
+      "http":{
+        "method":"GET",
+        "requestUri":"/services"
+      },
+      "input":{"shape":"GetServicesInScopeRequest"},
+      "output":{"shape":"GetServicesInScopeResponse"},
+      "errors":[
+        {"shape":"AccessDeniedException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Returns a list of the in-scope AWS services for the specified assessment. </p>"
+    },
+    "GetSettings":{
+      "name":"GetSettings",
+      "http":{
+        "method":"GET",
+        "requestUri":"/settings/{attribute}"
+      },
+      "input":{"shape":"GetSettingsRequest"},
+      "output":{"shape":"GetSettingsResponse"},
+      "errors":[
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Returns the settings for the specified AWS account. </p>"
+    },
+    "ListAssessmentFrameworks":{
+      "name":"ListAssessmentFrameworks",
+      "http":{
+        "method":"GET",
+        "requestUri":"/assessmentFrameworks"
+      },
+      "input":{"shape":"ListAssessmentFrameworksRequest"},
+      "output":{"shape":"ListAssessmentFrameworksResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Returns a list of the frameworks available in the AWS Audit Manager framework library. </p>"
+    },
+    "ListAssessmentReports":{
+      "name":"ListAssessmentReports",
+      "http":{
+        "method":"GET",
+        "requestUri":"/assessmentReports"
+      },
+      "input":{"shape":"ListAssessmentReportsRequest"},
+      "output":{"shape":"ListAssessmentReportsResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Returns a list of assessment reports created in AWS Audit Manager. </p>"
+    },
+    "ListAssessments":{
+      "name":"ListAssessments",
+      "http":{
+        "method":"GET",
+        "requestUri":"/assessments"
+      },
+      "input":{"shape":"ListAssessmentsRequest"},
+      "output":{"shape":"ListAssessmentsResponse"},
+      "errors":[
+        {"shape":"AccessDeniedException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Returns a list of current and past assessments from AWS Audit Manager. </p>"
+    },
+    "ListControls":{
+      "name":"ListControls",
+      "http":{
+        "method":"GET",
+        "requestUri":"/controls"
+      },
+      "input":{"shape":"ListControlsRequest"},
+      "output":{"shape":"ListControlsResponse"},
+      "errors":[
+        {"shape":"AccessDeniedException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Returns a list of controls from AWS Audit Manager. </p>"
+    },
+    "ListKeywordsForDataSource":{
+      "name":"ListKeywordsForDataSource",
+      "http":{
+        "method":"GET",
+        "requestUri":"/dataSourceKeywords"
+      },
+      "input":{"shape":"ListKeywordsForDataSourceRequest"},
+      "output":{"shape":"ListKeywordsForDataSourceResponse"},
+      "errors":[
+        {"shape":"AccessDeniedException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Returns a list of keywords that pre-mapped to the specified control data source. </p>"
+    },
+    "ListNotifications":{
+      "name":"ListNotifications",
+      "http":{
+        "method":"GET",
+        "requestUri":"/notifications"
+      },
+      "input":{"shape":"ListNotificationsRequest"},
+      "output":{"shape":"ListNotificationsResponse"},
+      "errors":[
+        {"shape":"AccessDeniedException"},
+        {"shape":"ValidationException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Returns a list of all AWS Audit Manager notifications. </p>"
+    },
+    "ListTagsForResource":{
+      "name":"ListTagsForResource",
+      "http":{
+        "method":"GET",
+        "requestUri":"/tags/{resourceArn}"
+      },
+      "input":{"shape":"ListTagsForResourceRequest"},
+      "output":{"shape":"ListTagsForResourceResponse"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"ValidationException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p> Returns a list of tags for the specified resource in AWS Audit Manager. </p>"
+    },
+    "RegisterAccount":{
+      "name":"RegisterAccount",
+      "http":{
+        "method":"POST",
+        "requestUri":"/account/registerAccount"
+      },
+      "input":{"shape":"RegisterAccountRequest"},
+      "output":{"shape":"RegisterAccountResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p> Enables AWS Audit Manager for the specified AWS account. </p>"
+    },
+    "RegisterOrganizationAdminAccount":{
+      "name":"RegisterOrganizationAdminAccount",
+      "http":{
+        "method":"POST",
+        "requestUri":"/account/registerOrganizationAdminAccount"
+      },
+      "input":{"shape":"RegisterOrganizationAdminAccountRequest"},
+      "output":{"shape":"RegisterOrganizationAdminAccountResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p> Enables an AWS account within the organization as the delegated administrator for AWS Audit Manager. </p>"
+    },
+    "TagResource":{
+      "name":"TagResource",
+      "http":{
+        "method":"POST",
+        "requestUri":"/tags/{resourceArn}"
+      },
+      "input":{"shape":"TagResourceRequest"},
+      "output":{"shape":"TagResourceResponse"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"ValidationException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p> Tags the specified resource in AWS Audit Manager. </p>"
+    },
+    "UntagResource":{
+      "name":"UntagResource",
+      "http":{
+        "method":"DELETE",
+        "requestUri":"/tags/{resourceArn}"
+      },
+      "input":{"shape":"UntagResourceRequest"},
+      "output":{"shape":"UntagResourceResponse"},
+      "errors":[
+        {"shape":"InternalServerException"},
+        {"shape":"ValidationException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p> Removes a tag from a resource in AWS Audit Manager. </p>"
+    },
+    "UpdateAssessment":{
+      "name":"UpdateAssessment",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/assessments/{assessmentId}"
+      },
+      "input":{"shape":"UpdateAssessmentRequest"},
+      "output":{"shape":"UpdateAssessmentResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Edits an AWS Audit Manager assessment. </p>"
+    },
+    "UpdateAssessmentControl":{
+      "name":"UpdateAssessmentControl",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/assessments/{assessmentId}/controlSets/{controlSetId}/controls/{controlId}"
+      },
+      "input":{"shape":"UpdateAssessmentControlRequest"},
+      "output":{"shape":"UpdateAssessmentControlResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Updates a control within an assessment in AWS Audit Manager. </p>"
+    },
+    "UpdateAssessmentControlSetStatus":{
+      "name":"UpdateAssessmentControlSetStatus",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/assessments/{assessmentId}/controlSets/{controlSetId}/status"
+      },
+      "input":{"shape":"UpdateAssessmentControlSetStatusRequest"},
+      "output":{"shape":"UpdateAssessmentControlSetStatusResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Updates the status of a control set in an AWS Audit Manager assessment. </p>"
+    },
+    "UpdateAssessmentFramework":{
+      "name":"UpdateAssessmentFramework",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/assessmentFrameworks/{frameworkId}"
+      },
+      "input":{"shape":"UpdateAssessmentFrameworkRequest"},
+      "output":{"shape":"UpdateAssessmentFrameworkResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Updates a custom framework in AWS Audit Manager. </p>"
+    },
+    "UpdateAssessmentStatus":{
+      "name":"UpdateAssessmentStatus",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/assessments/{assessmentId}/status"
+      },
+      "input":{"shape":"UpdateAssessmentStatusRequest"},
+      "output":{"shape":"UpdateAssessmentStatusResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Updates the status of an assessment in AWS Audit Manager. </p>"
+    },
+    "UpdateControl":{
+      "name":"UpdateControl",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/controls/{controlId}"
+      },
+      "input":{"shape":"UpdateControlRequest"},
+      "output":{"shape":"UpdateControlResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Updates a custom control in AWS Audit Manager. </p>"
+    },
+    "UpdateSettings":{
+      "name":"UpdateSettings",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/settings"
+      },
+      "input":{"shape":"UpdateSettingsRequest"},
+      "output":{"shape":"UpdateSettingsResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"}
+      ],
+      "documentation":"<p> Updates AWS Audit Manager settings for the current user account. </p>"
+    },
+    "ValidateAssessmentReportIntegrity":{
+      "name":"ValidateAssessmentReportIntegrity",
+      "http":{
+        "method":"POST",
+        "requestUri":"/assessmentReports/integrity"
+      },
+      "input":{"shape":"ValidateAssessmentReportIntegrityRequest"},
+      "output":{"shape":"ValidateAssessmentReportIntegrityResponse"},
+      "errors":[
+        {"shape":"ValidationException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InternalServerException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p> Validates the integrity of an assessment report in AWS Audit Manager. </p>"
+    }
+  },
+  "shapes":{
+    "AWSAccount":{
+      "type":"structure",
+      "members":{
+        "id":{
+          "shape":"AccountId",
+          "documentation":"<p> The identifier for the specified AWS account. </p>"
+        },
+        "emailAddress":{
+          "shape":"EmailAddress",
+          "documentation":"<p> The email address associated with the specified AWS account. </p>"
+        },
+        "name":{
+          "shape":"AccountName",
+          "documentation":"<p> The name of the specified AWS account. </p>"
+        }
+      },
+      "documentation":"<p> The wrapper of AWS account details, such as account ID, email address, and so on. </p>"
+    },
+    "AWSAccounts":{
+      "type":"list",
+      "member":{"shape":"AWSAccount"}
+    },
+    "AWSService":{
+      "type":"structure",
+      "members":{
+        "serviceName":{
+          "shape":"AWSServiceName",
+          "documentation":"<p> The name of the AWS service. </p>"
+        }
+      },
+      "documentation":"<p> An AWS service such as Amazon S3, AWS CloudTrail, and so on. </p>"
+    },
+    "AWSServiceName":{
+      "type":"string",
+      "max":40,
+      "min":1,
+      "pattern":"^[a-zA-Z0-9-\\s().]+$"
+    },
+    "AWSServices":{
+      "type":"list",
+      "member":{"shape":"AWSService"}
+    },
+    "AccessDeniedException":{
+      "type":"structure",
+      "required":["message"],
+      "members":{
+        "message":{"shape":"String"}
+      },
+      "documentation":"<p> Your account is not registered with AWS Audit Manager. Check the delegated administrator setup on the AWS Audit Manager settings page, and try again. </p>",
+      "error":{"httpStatusCode":403},
+      "exception":true
+    },
+    "AccountId":{
+      "type":"string",
+      "max":12,
+      "min":12,
+      "pattern":"^[0-9]{12}$"
+    },
+    "AccountName":{
+      "type":"string",
+      "max":50,
+      "min":1,
+      "pattern":"^[\\u0020-\\u007E]+$"
+    },
+    "AccountStatus":{
+      "type":"string",
+      "enum":[
+        "ACTIVE",
+        "INACTIVE",
+        "PENDING_ACTIVATION"
+      ]
+    },
+    "ActionEnum":{
+      "type":"string",
+      "enum":[
+        "CREATE",
+        "UPDATE_METADATA",
+        "ACTIVE",
+        "INACTIVE",
+        "DELETE",
+        "UNDER_REVIEW",
+        "REVIEWED",
+        "IMPORT_EVIDENCE"
+      ]
+    },
+    "ActionPlanInstructions":{
+      "type":"string",
+      "max":1000,
+      "pattern":"^[\\w\\W\\s\\S]*$"
+    },
+    "ActionPlanTitle":{
+      "type":"string",
+      "max":300,
+      "pattern":"^[\\w\\W\\s\\S]*$"
+    },
+    "Assessment":{
+      "type":"structure",
+      "members":{
+        "arn":{
+          "shape":"AuditManagerArn",
+          "documentation":"<p> The Amazon Resource Name (ARN) of the assessment. </p>"
+        },
+        "awsAccount":{
+          "shape":"AWSAccount",
+          "documentation":"<p> The AWS account associated with the assessment. </p>"
+        },
+        "metadata":{
+          "shape":"AssessmentMetadata",
+          "documentation":"<p> The metadata for the specified assessment. </p>"
+        },
+        "framework":{
+          "shape":"AssessmentFramework",
+          "documentation":"<p> The framework from which the assessment was created. </p>"
+        },
+        "tags":{
+          "shape":"TagMap",
+          "documentation":"<p> The tags associated with the assessment. </p>"
+        }
+      },
+      "documentation":"<p> An entity that defines the scope of audit evidence collected by AWS Audit Manager. An AWS Audit Manager assessment is an implementation of an AWS Audit Manager framework. </p>"
+    },
+    "AssessmentControl":{
+      "type":"structure",
+      "members":{
+        "id":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified control. </p>"
+        },
+        "name":{
+          "shape":"ControlName",
+          "documentation":"<p> The name of the specified control. </p>"
+        },
+        "description":{
+          "shape":"ControlDescription",
+          "documentation":"<p> The description of the specified control. </p>"
+        },
+        "status":{
+          "shape":"ControlStatus",
+          "documentation":"<p> The status of the specified control. </p>"
+        },
+        "response":{
+          "shape":"ControlResponse",
+          "documentation":"<p> The response of the specified control. </p>"
+        },
+        "comments":{
+          "shape":"ControlComments",
+          "documentation":"<p> The list of comments attached to the specified control. </p>"
+        },
+        "evidenceSources":{
+          "shape":"EvidenceSources",
+          "documentation":"<p> The list of data sources for the specified evidence. </p>"
+        },
+        "evidenceCount":{
+          "shape":"Integer",
+          "documentation":"<p> The amount of evidence generated for the control. </p>"
+        },
+        "assessmentReportEvidenceCount":{
+          "shape":"Integer",
+          "documentation":"<p> The amount of evidence in the assessment report. </p>"
+        }
+      },
+      "documentation":"<p> The control entity that represents a standard or custom control used in an AWS Audit Manager assessment. </p>"
+    },
+    "AssessmentControlSet":{
+      "type":"structure",
+      "members":{
+        "id":{
+          "shape":"ControlSetId",
+          "documentation":"<p> The identifier of the control set in the assessment. This is the control set name in a plain string format. </p>"
+        },
+        "description":{
+          "shape":"NonEmptyString",
+          "documentation":"<p> The description for the control set. </p>"
+        },
+        "status":{
+          "shape":"ControlSetStatus",
+          "documentation":"<p> Specifies the current status of the control set. </p>"
+        },
+        "roles":{
+          "shape":"Roles",
+          "documentation":"<p> The roles associated with the control set. </p>"
+        },
+        "controls":{
+          "shape":"AssessmentControls",
+          "documentation":"<p> The list of controls contained with the control set. </p>"
+        },
+        "delegations":{
+          "shape":"Delegations",
+          "documentation":"<p> The delegations associated with the control set. </p>"
+        },
+        "systemEvidenceCount":{
+          "shape":"Integer",
+          "documentation":"<p> The total number of evidence objects retrieved automatically for the control set. </p>"
+        },
+        "manualEvidenceCount":{
+          "shape":"Integer",
+          "documentation":"<p> The total number of evidence objects uploaded manually to the control set. </p>"
+        }
+      },
+      "documentation":"<p> Represents a set of controls in an AWS Audit Manager assessment. </p>"
+    },
+    "AssessmentControlSets":{
+      "type":"list",
+      "member":{"shape":"AssessmentControlSet"}
+    },
+    "AssessmentControls":{
+      "type":"list",
+      "member":{"shape":"AssessmentControl"}
+    },
+    "AssessmentDescription":{
+      "type":"string",
+      "max":1000,
+      "pattern":"^[\\w\\W\\s\\S]*$"
+    },
+    "AssessmentEvidenceFolder":{
+      "type":"structure",
+      "members":{
+        "name":{
+          "shape":"AssessmentEvidenceFolderName",
+          "documentation":"<p> The name of the specified evidence folder. </p>"
+        },
+        "date":{
+          "shape":"Timestamp",
+          "documentation":"<p> The date when the first evidence was added to the evidence folder. </p>"
+        },
+        "assessmentId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified assessment. </p>"
+        },
+        "controlSetId":{
+          "shape":"ControlSetId",
+          "documentation":"<p> The identifier for the control set. </p>"
+        },
+        "controlId":{
+          "shape":"UUID",
+          "documentation":"<p> The unique identifier for the specified control. </p>"
+        },
+        "id":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the folder in which evidence is stored. </p>"
+        },
+        "dataSource":{
+          "shape":"String",
+          "documentation":"<p> The AWS service from which the evidence was collected. </p>"
+        },
+        "author":{
+          "shape":"String",
+          "documentation":"<p> The name of the user who created the evidence folder. </p>"
+        },
+        "totalEvidence":{
+          "shape":"Integer",
+          "documentation":"<p> The total amount of evidence in the evidence folder. </p>"
+        },
+        "assessmentReportSelectionCount":{
+          "shape":"Integer",
+          "documentation":"<p> The total count of evidence included in the assessment report. </p>"
+        },
+        "controlName":{
+          "shape":"ControlName",
+          "documentation":"<p> The name of the control. </p>"
+        },
+        "evidenceResourcesIncludedCount":{
+          "shape":"Integer",
+          "documentation":"<p> The amount of evidence included in the evidence folder. </p>"
+        },
+        "evidenceByTypeConfigurationDataCount":{
+          "shape":"Integer",
+          "documentation":"<p> The number of evidence that falls under the configuration data category. This evidence is collected from configuration snapshots of other AWS services such as Amazon EC2, Amazon S3, or IAM. </p>"
+        },
+        "evidenceByTypeManualCount":{
+          "shape":"Integer",
+          "documentation":"<p> The number of evidence that falls under the manual category. This evidence is imported manually. </p>"
+        },
+        "evidenceByTypeComplianceCheckCount":{
+          "shape":"Integer",
+          "documentation":"<p> The number of evidence that falls under the compliance check category. This evidence is collected from AWS Config or AWS Security Hub. </p>"
+        },
+        "evidenceByTypeComplianceCheckIssuesCount":{
+          "shape":"Integer",
+          "documentation":"<p> The total number of issues that were reported directly from AWS Security Hub, AWS Config, or both. </p>"
+        },
+        "evidenceByTypeUserActivityCount":{
+          "shape":"Integer",
+          "documentation":"<p> The number of evidence that falls under the user activity category. This evidence is collected from AWS CloudTrail logs. </p>"
+        },
+        "evidenceAwsServiceSourceCount":{
+          "shape":"Integer",
+          "documentation":"<p> The total number of AWS resources assessed to generate the evidence. </p>"
+        }
+      },
+      "documentation":"<p> The folder in which AWS Audit Manager stores evidence for an assessment. </p>"
+    },
+    "AssessmentEvidenceFolderName":{
+      "type":"string",
+      "max":300,
+      "min":1,
+      "pattern":"^[\\w\\W\\s\\S]*$"
+    },
+    "AssessmentEvidenceFolders":{
+      "type":"list",
+      "member":{"shape":"AssessmentEvidenceFolder"}
+    },
+    "AssessmentFramework":{
+      "type":"structure",
+      "members":{
+        "id":{
+          "shape":"UUID",
+          "documentation":"<p> The unique identifier for the framework. </p>"
+        },
+        "arn":{
+          "shape":"AuditManagerArn",
+          "documentation":"<p> The Amazon Resource Name (ARN) of the specified framework. </p>"
+        },
+        "metadata":{"shape":"FrameworkMetadata"},
+        "controlSets":{
+          "shape":"AssessmentControlSets",
+          "documentation":"<p> The control sets associated with the framework. </p>"
+        }
+      },
+      "documentation":"<p> The file used to structure and automate AWS Audit Manager assessments for a given compliance standard. </p>"
+    },
+    "AssessmentFrameworkDescription":{
+      "type":"string",
+      "max":200,
+      "min":1,
+      "pattern":"^[\\w\\W\\s\\S]*$"
+    },
+    "AssessmentFrameworkMetadata":{
+      "type":"structure",
+      "members":{
+        "arn":{
+          "shape":"AuditManagerArn",
+          "documentation":"<p> The Amazon Resource Name (ARN) of the framework. </p>"
+        },
+        "id":{
+          "shape":"UUID",
+          "documentation":"<p> The unique identified for the specified framework. </p>"
+        },
+        "type":{
+          "shape":"FrameworkType",
+          "documentation":"<p> The framework type, such as standard or custom. </p>"
+        },
+        "name":{
+          "shape":"FrameworkName",
+          "documentation":"<p> The name of the specified framework. </p>"
+        },
+        "description":{
+          "shape":"FrameworkDescription",
+          "documentation":"<p> The description of the specified framework. </p>"
+        },
+        "logo":{
+          "shape":"Filename",
+          "documentation":"<p> The logo associated with the framework. </p>"
+        },
+        "complianceType":{
+          "shape":"ComplianceType",
+          "documentation":"<p> The compliance type that the new custom framework supports, such as CIS or HIPAA. </p>"
+        },
+        "controlsCount":{
+          "shape":"ControlsCount",
+          "documentation":"<p> The number of controls associated with the specified framework. </p>"
+        },
+        "controlSetsCount":{
+          "shape":"ControlSetsCount",
+          "documentation":"<p> The number of control sets associated with the specified framework. </p>"
+        },
+        "createdAt":{
+          "shape":"Timestamp",
+          "documentation":"<p> Specifies when the framework was created. </p>"
+        },
+        "lastUpdatedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p> Specifies when the framework was most recently updated. </p>"
+        }
+      },
+      "documentation":"<p> The metadata associated with a standard or custom framework. </p>"
+    },
+    "AssessmentMetadata":{
+      "type":"structure",
+      "members":{
+        "name":{
+          "shape":"AssessmentName",
+          "documentation":"<p> The name of the assessment. </p>"
+        },
+        "id":{
+          "shape":"UUID",
+          "documentation":"<p> The unique identifier for the assessment. </p>"
+        },
+        "description":{
+          "shape":"AssessmentDescription",
+          "documentation":"<p> The description of the assessment. </p>"
+        },
+        "complianceType":{
+          "shape":"ComplianceType",
+          "documentation":"<p> The name of a compliance standard related to the assessment, such as PCI-DSS. </p>"
+        },
+        "status":{
+          "shape":"AssessmentStatus",
+          "documentation":"<p> The overall status of the assessment. </p>"
+        },
+        "assessmentReportsDestination":{
+          "shape":"AssessmentReportsDestination",
+          "documentation":"<p> The destination in which evidence reports are stored for the specified assessment. </p>"
+        },
+        "scope":{
+          "shape":"Scope",
+          "documentation":"<p> The wrapper of AWS accounts and services in scope for the assessment. </p>"
+        },
+        "roles":{
+          "shape":"Roles",
+          "documentation":"<p> The roles associated with the assessment. </p>"
+        },
+        "delegations":{
+          "shape":"Delegations",
+          "documentation":"<p> The delegations associated with the assessment. </p>"
+        },
+        "creationTime":{
+          "shape":"Timestamp",
+          "documentation":"<p> Specifies when the assessment was created. </p>"
+        },
+        "lastUpdated":{
+          "shape":"Timestamp",
+          "documentation":"<p> The time of the most recent update. </p>"
+        }
+      },
+      "documentation":"<p> The metadata associated with the specified assessment. </p>"
+    },
+    "AssessmentMetadataItem":{
+      "type":"structure",
+      "members":{
+        "name":{
+          "shape":"AssessmentName",
+          "documentation":"<p> The name of the assessment. </p>"
+        },
+        "id":{
+          "shape":"UUID",
+          "documentation":"<p> The unique identifier for the assessment. </p>"
+        },
+        "complianceType":{
+          "shape":"ComplianceType",
+          "documentation":"<p> The name of the compliance standard related to the assessment, such as PCI-DSS. </p>"
+        },
+        "status":{
+          "shape":"AssessmentStatus",
+          "documentation":"<p> The current status of the assessment. </p>"
+        },
+        "roles":{
+          "shape":"Roles",
+          "documentation":"<p> The roles associated with the assessment. </p>"
+        },
+        "delegations":{
+          "shape":"Delegations",
+          "documentation":"<p> The delegations associated with the assessment. </p>"
+        },
+        "creationTime":{
+          "shape":"Timestamp",
+          "documentation":"<p> Specifies when the assessment was created. </p>"
+        },
+        "lastUpdated":{
+          "shape":"Timestamp",
+          "documentation":"<p> The time of the most recent update. </p>"
+        }
+      },
+      "documentation":"<p> A metadata object associated with an assessment in AWS Audit Manager. </p>"
+    },
+    "AssessmentName":{
+      "type":"string",
+      "max":300,
+      "min":1,
+      "pattern":"^[^\\\\]*$"
+    },
+    "AssessmentReport":{
+      "type":"structure",
+      "members":{
+        "id":{
+          "shape":"UUID",
+          "documentation":"<p> The unique identifier for the specified assessment report. </p>"
+        },
+        "name":{
+          "shape":"AssessmentReportName",
+          "documentation":"<p> The name given to the assessment report. </p>"
+        },
+        "description":{
+          "shape":"AssessmentReportDescription",
+          "documentation":"<p> The description of the specified assessment report. </p>"
+        },
+        "awsAccountId":{
+          "shape":"AccountId",
+          "documentation":"<p> The identifier for the specified AWS account. </p>"
+        },
+        "assessmentId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified assessment. </p>"
+        },
+        "assessmentName":{
+          "shape":"AssessmentName",
+          "documentation":"<p> The name of the associated assessment. </p>"
+        },
+        "author":{
+          "shape":"Username",
+          "documentation":"<p> The name of the user who created the assessment report. </p>"
+        },
+        "status":{
+          "shape":"AssessmentReportStatus",
+          "documentation":"<p> The current status of the specified assessment report. </p>"
+        },
+        "creationTime":{
+          "shape":"Timestamp",
+          "documentation":"<p> Specifies when the assessment report was created. </p>"
+        }
+      },
+      "documentation":"<p> A finalized document generated from an AWS Audit Manager assessment. These reports summarize the relevant evidence collected for your audit, and link to the relevant evidence folders which are named and organized according to the controls specified in your assessment. </p>"
+    },
+    "AssessmentReportDescription":{
+      "type":"string",
+      "max":1000,
+      "pattern":"^[\\w\\W\\s\\S]*$"
+    },
+    "AssessmentReportDestinationType":{
+      "type":"string",
+      "enum":["S3"]
+    },
+    "AssessmentReportEvidenceError":{
+      "type":"structure",
+      "members":{
+        "evidenceId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the evidence. </p>"
+        },
+        "errorCode":{
+          "shape":"ErrorCode",
+          "documentation":"<p> The error code returned by the <code>AssessmentReportEvidence</code> API. </p>"
+        },
+        "errorMessage":{
+          "shape":"ErrorMessage",
+          "documentation":"<p> The error message returned by the <code>AssessmentReportEvidence</code> API. </p>"
+        }
+      },
+      "documentation":"<p> An error entity for the <code>AssessmentReportEvidence</code> API. This is used to provide more meaningful errors than a simple string message. </p>"
+    },
+    "AssessmentReportEvidenceErrors":{
+      "type":"list",
+      "member":{"shape":"AssessmentReportEvidenceError"}
+    },
+    "AssessmentReportMetadata":{
+      "type":"structure",
+      "members":{
+        "id":{
+          "shape":"UUID",
+          "documentation":"<p> The unique identifier for the assessment report. </p>"
+        },
+        "name":{
+          "shape":"AssessmentReportName",
+          "documentation":"<p> The name of the assessment report. </p>"
+        },
+        "description":{
+          "shape":"AssessmentReportDescription",
+          "documentation":"<p> The description of the specified assessment report. </p>"
+        },
+        "assessmentId":{
+          "shape":"UUID",
+          "documentation":"<p> The unique identifier for the associated assessment. </p>"
+        },
+        "assessmentName":{
+          "shape":"AssessmentName",
+          "documentation":"<p>The name of the associated assessment. </p>"
+        },
+        "author":{
+          "shape":"Username",
+          "documentation":"<p> The name of the user who created the assessment report. </p>"
+        },
+        "status":{
+          "shape":"AssessmentReportStatus",
+          "documentation":"<p> The current status of the assessment report. </p>"
+        },
+        "creationTime":{
+          "shape":"Timestamp",
+          "documentation":"<p> Specifies when the assessment report was created. </p>"
+        }
+      },
+      "documentation":"<p> The metadata objects associated with the specified assessment report. </p>"
+    },
+    "AssessmentReportName":{
+      "type":"string",
+      "max":300,
+      "min":1,
+      "pattern":"^[a-zA-Z0-9-_\\.]+$"
+    },
+    "AssessmentReportStatus":{
+      "type":"string",
+      "enum":[
+        "COMPLETE",
+        "IN_PROGRESS",
+        "FAILED"
+      ]
+    },
+    "AssessmentReportsDestination":{
+      "type":"structure",
+      "members":{
+        "destinationType":{
+          "shape":"AssessmentReportDestinationType",
+          "documentation":"<p> The destination type, such as Amazon S3. </p>"
+        },
+        "destination":{
+          "shape":"S3Url",
+          "documentation":"<p> The destination of the assessment report. </p>"
+        }
+      },
+      "documentation":"<p> The location in which AWS Audit Manager saves assessment reports for the given assessment. </p>"
+    },
+    "AssessmentReportsMetadata":{
+      "type":"list",
+      "member":{"shape":"AssessmentReportMetadata"}
+    },
+    "AssessmentStatus":{
+      "type":"string",
+      "enum":[
+        "ACTIVE",
+        "INACTIVE"
+      ]
+    },
+    "AssociateAssessmentReportEvidenceFolderRequest":{
+      "type":"structure",
+      "required":[
+        "assessmentId",
+        "evidenceFolderId"
+      ],
+      "members":{
+        "assessmentId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified assessment. </p>",
+          "location":"uri",
+          "locationName":"assessmentId"
+        },
+        "evidenceFolderId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the folder in which evidence is stored. </p>"
+        }
+      }
+    },
+    "AssociateAssessmentReportEvidenceFolderResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "AuditManagerArn":{
+      "type":"string",
+      "max":2048,
+      "min":20,
+      "pattern":"^arn:.*:auditmanager:.*"
+    },
+    "BatchAssociateAssessmentReportEvidenceRequest":{
+      "type":"structure",
+      "required":[
+        "assessmentId",
+        "evidenceFolderId",
+        "evidenceIds"
+      ],
+      "members":{
+        "assessmentId":{
+          "shape":"UUID",
+          "documentation":"<p> The unique identifier for the specified assessment. </p>",
+          "location":"uri",
+          "locationName":"assessmentId"
+        },
+        "evidenceFolderId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the folder in which the evidence is stored. </p>"
+        },
+        "evidenceIds":{
+          "shape":"EvidenceIds",
+          "documentation":"<p> The list of evidence identifiers. </p>"
+        }
+      }
+    },
+    "BatchAssociateAssessmentReportEvidenceResponse":{
+      "type":"structure",
+      "members":{
+        "evidenceIds":{
+          "shape":"EvidenceIds",
+          "documentation":"<p> The identifier for the evidence. </p>"
+        },
+        "errors":{
+          "shape":"AssessmentReportEvidenceErrors",
+          "documentation":"<p> A list of errors returned by the <code>BatchAssociateAssessmentReportEvidence</code> API. </p>"
+        }
+      }
+    },
+    "BatchCreateDelegationByAssessmentError":{
+      "type":"structure",
+      "members":{
+        "createDelegationRequest":{
+          "shape":"CreateDelegationRequest",
+          "documentation":"<p> The API request to batch create delegations in AWS Audit Manager. </p>"
+        },
+        "errorCode":{
+          "shape":"ErrorCode",
+          "documentation":"<p> The error code returned by the <code>BatchCreateDelegationByAssessment</code> API. </p>"
+        },
+        "errorMessage":{
+          "shape":"ErrorMessage",
+          "documentation":"<p> The error message returned by the <code>BatchCreateDelegationByAssessment</code> API. </p>"
+        }
+      },
+      "documentation":"<p> An error entity for the <code>BatchCreateDelegationByAssessment</code> API. This is used to provide more meaningful errors than a simple string message. </p>"
+    },
+    "BatchCreateDelegationByAssessmentErrors":{
+      "type":"list",
+      "member":{"shape":"BatchCreateDelegationByAssessmentError"}
+    },
+    "BatchCreateDelegationByAssessmentRequest":{
+      "type":"structure",
+      "required":[
+        "createDelegationRequests",
+        "assessmentId"
+      ],
+      "members":{
+        "createDelegationRequests":{
+          "shape":"CreateDelegationRequests",
+          "documentation":"<p> The API request to batch create delegations in AWS Audit Manager. </p>"
+        },
+        "assessmentId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified assessment. </p>",
+          "location":"uri",
+          "locationName":"assessmentId"
+        }
+      }
+    },
+    "BatchCreateDelegationByAssessmentResponse":{
+      "type":"structure",
+      "members":{
+        "delegations":{
+          "shape":"Delegations",
+          "documentation":"<p> The delegations associated with the assessment. </p>"
+        },
+        "errors":{
+          "shape":"BatchCreateDelegationByAssessmentErrors",
+          "documentation":"<p> A list of errors returned by the <code>BatchCreateDelegationByAssessment</code> API. </p>"
+        }
+      }
+    },
+    "BatchDeleteDelegationByAssessmentError":{
+      "type":"structure",
+      "members":{
+        "delegationId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified delegation. </p>"
+        },
+        "errorCode":{
+          "shape":"ErrorCode",
+          "documentation":"<p> The error code returned by the <code>BatchDeleteDelegationByAssessment</code> API. </p>"
+        },
+        "errorMessage":{
+          "shape":"ErrorMessage",
+          "documentation":"<p> The error message returned by the <code>BatchDeleteDelegationByAssessment</code> API. </p>"
+        }
+      },
+      "documentation":"<p> An error entity for the <code>BatchDeleteDelegationByAssessment</code> API. This is used to provide more meaningful errors than a simple string message. </p>"
+    },
+    "BatchDeleteDelegationByAssessmentErrors":{
+      "type":"list",
+      "member":{"shape":"BatchDeleteDelegationByAssessmentError"}
+    },
+    "BatchDeleteDelegationByAssessmentRequest":{
+      "type":"structure",
+      "required":[
+        "delegationIds",
+        "assessmentId"
+      ],
+      "members":{
+        "delegationIds":{
+          "shape":"DelegationIds",
+          "documentation":"<p> The identifiers for the specified delegations. </p>"
+        },
+        "assessmentId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified assessment. </p>",
+          "location":"uri",
+          "locationName":"assessmentId"
+        }
+      }
+    },
+    "BatchDeleteDelegationByAssessmentResponse":{
+      "type":"structure",
+      "members":{
+        "errors":{
+          "shape":"BatchDeleteDelegationByAssessmentErrors",
+          "documentation":"<p> A list of errors returned by the <code>BatchDeleteDelegationByAssessment</code> API. </p>"
+        }
+      }
+    },
+    "BatchDisassociateAssessmentReportEvidenceRequest":{
+      "type":"structure",
+      "required":[
+        "assessmentId",
+        "evidenceFolderId",
+        "evidenceIds"
+      ],
+      "members":{
+        "assessmentId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified assessment. </p>",
+          "location":"uri",
+          "locationName":"assessmentId"
+        },
+        "evidenceFolderId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the folder in which evidence is stored. </p>"
+        },
+        "evidenceIds":{
+          "shape":"EvidenceIds",
+          "documentation":"<p> The list of evidence identifiers. </p>"
+        }
+      }
+    },
+    "BatchDisassociateAssessmentReportEvidenceResponse":{
+      "type":"structure",
+      "members":{
+        "evidenceIds":{
+          "shape":"EvidenceIds",
+          "documentation":"<p> The identifier for the evidence. </p>"
+        },
+        "errors":{
+          "shape":"AssessmentReportEvidenceErrors",
+          "documentation":"<p> A list of errors returned by the <code>BatchDisassociateAssessmentReportEvidence</code> API. </p>"
+        }
+      }
+    },
+    "BatchImportEvidenceToAssessmentControlError":{
+      "type":"structure",
+      "members":{
+        "manualEvidence":{
+          "shape":"ManualEvidence",
+          "documentation":"<p> Manual evidence that cannot be collected automatically by AWS Audit Manager. </p>"
+        },
+        "errorCode":{
+          "shape":"ErrorCode",
+          "documentation":"<p> The error code returned by the <code>BatchImportEvidenceToAssessmentControl</code> API. </p>"
+        },
+        "errorMessage":{
+          "shape":"ErrorMessage",
+          "documentation":"<p> The error message returned by the <code>BatchImportEvidenceToAssessmentControl</code> API. </p>"
+        }
+      },
+      "documentation":"<p> An error entity for the <code>BatchImportEvidenceToAssessmentControl</code> API. This is used to provide more meaningful errors than a simple string message. </p>"
+    },
+    "BatchImportEvidenceToAssessmentControlErrors":{
+      "type":"list",
+      "member":{"shape":"BatchImportEvidenceToAssessmentControlError"}
+    },
+    "BatchImportEvidenceToAssessmentControlRequest":{
+      "type":"structure",
+      "required":[
+        "assessmentId",
+        "controlSetId",
+        "controlId",
+        "manualEvidence"
+      ],
+      "members":{
+        "assessmentId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified assessment. </p>",
+          "location":"uri",
+          "locationName":"assessmentId"
+        },
+        "controlSetId":{
+          "shape":"ControlSetId",
+          "documentation":"<p> The identifier for the specified control set. </p>",
+          "location":"uri",
+          "locationName":"controlSetId"
+        },
+        "controlId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified control. </p>",
+          "location":"uri",
+          "locationName":"controlId"
+        },
+        "manualEvidence":{
+          "shape":"ManualEvidenceList",
+          "documentation":"<p> The list of manual evidence objects. </p>"
+        }
+      }
+    },
+    "BatchImportEvidenceToAssessmentControlResponse":{
+      "type":"structure",
+      "members":{
+        "errors":{
+          "shape":"BatchImportEvidenceToAssessmentControlErrors",
+          "documentation":"<p> A list of errors returned by the <code>BatchImportEvidenceToAssessmentControl</code> API. </p>"
+        }
+      }
+    },
+    "Boolean":{"type":"boolean"},
+    "ChangeLog":{
+      "type":"structure",
+      "members":{
+        "objectType":{
+          "shape":"ObjectTypeEnum",
+          "documentation":"<p> The changelog object type, such as an assessment, control, or control set. </p>"
+        },
+        "objectName":{
+          "shape":"NonEmptyString",
+          "documentation":"<p> The name of the changelog object. </p>"
+        },
+        "action":{
+          "shape":"ActionEnum",
+          "documentation":"<p> The action performed. </p>"
+        },
+        "createdAt":{
+          "shape":"Timestamp",
+          "documentation":"<p> The time of creation for the changelog object. </p>"
+        },
+        "createdBy":{
+          "shape":"IamArn",
+          "documentation":"<p> The IAM user or role that performed the action. </p>"
+        }
+      },
+      "documentation":"<p> The record of a change within AWS Audit Manager, such as a modified assessment, a delegated control set, and so on. </p>"
+    },
+    "ChangeLogs":{
+      "type":"list",
+      "member":{"shape":"ChangeLog"}
+    },
+    "ComplianceType":{
+      "type":"string",
+      "max":100,
+      "pattern":"^[\\w\\W\\s\\S]*$"
+    },
+    "Control":{
+      "type":"structure",
+      "members":{
+        "arn":{
+          "shape":"AuditManagerArn",
+          "documentation":"<p> The Amazon Resource Name (ARN) of the specified control. </p>"
+        },
+        "id":{
+          "shape":"UUID",
+          "documentation":"<p> The unique identifier for the control. </p>"
+        },
+        "type":{
+          "shape":"ControlType",
+          "documentation":"<p> The type of control, such as custom or standard. </p>"
+        },
+        "name":{
+          "shape":"ControlName",
+          "documentation":"<p> The name of the specified control. </p>"
+        },
+        "description":{
+          "shape":"ControlDescription",
+          "documentation":"<p> The description of the specified control. </p>"
+        },
+        "testingInformation":{
+          "shape":"TestingInformation",
+          "documentation":"<p> The steps to follow to determine if the control has been satisfied. </p>"
+        },
+        "actionPlanTitle":{
+          "shape":"ActionPlanTitle",
+          "documentation":"<p> The title of the action plan for remediating the control. </p>"
+        },
+        "actionPlanInstructions":{
+          "shape":"ActionPlanInstructions",
+          "documentation":"<p> The recommended actions to carry out if the control is not fulfilled. </p>"
+        },
+        "controlSources":{
+          "shape":"ControlSources",
+          "documentation":"<p> The data source that determines from where AWS Audit Manager collects evidence for the control. </p>"
+        },
+        "controlMappingSources":{
+          "shape":"ControlMappingSources",
+          "documentation":"<p> The data mapping sources for the specified control. </p>"
+        },
+        "createdAt":{
+          "shape":"Timestamp",
+          "documentation":"<p> Specifies when the control was created. </p>"
+        },
+        "lastUpdatedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p> Specifies when the control was most recently updated. </p>"
+        },
+        "createdBy":{
+          "shape":"CreatedBy",
+          "documentation":"<p> The IAM user or role that created the control. </p>"
+        },
+        "lastUpdatedBy":{
+          "shape":"LastUpdatedBy",
+          "documentation":"<p> The IAM user or role that most recently updated the control. </p>"
+        },
+        "tags":{
+          "shape":"TagMap",
+          "documentation":"<p> The tags associated with the control. </p>"
+        }
+      },
+      "documentation":"<p> A control in AWS Audit Manager. </p>"
+    },
+    "ControlComment":{
+      "type":"structure",
+      "members":{
+        "authorName":{
+          "shape":"Username",
+          "documentation":"<p> The name of the user who authored the comment. </p>"
+        },
+        "commentBody":{
+          "shape":"ControlCommentBody",
+          "documentation":"<p> The body text of a control comment. </p>"
+        },
+        "postedDate":{
+          "shape":"Timestamp",
+          "documentation":"<p> The time when the comment was posted. </p>"
+        }
+      },
+      "documentation":"<p> A comment posted by a user on a control. This includes the author's name, the comment text, and a timestamp. </p>"
+    },
+    "ControlCommentBody":{
+      "type":"string",
+      "max":500,
+      "pattern":"^[\\w\\W\\s\\S]*$"
+    },
+    "ControlComments":{
+      "type":"list",
+      "member":{"shape":"ControlComment"}
+    },
+    "ControlDescription":{
+      "type":"string",
+      "max":1000,
+      "pattern":"^[\\w\\W\\s\\S]*$"
+    },
+    "ControlMappingSource":{
+      "type":"structure",
+      "members":{
+        "sourceId":{
+          "shape":"UUID",
+          "documentation":"<p> The unique identifier for the specified source. </p>"
+        },
+        "sourceName":{
+          "shape":"SourceName",
+          "documentation":"<p> The name of the specified source. </p>"
+        },
+        "sourceDescription":{
+          "shape":"SourceDescription",
+          "documentation":"<p> The description of the specified source. </p>"
+        },
+        "sourceSetUpOption":{
+          "shape":"SourceSetUpOption",
+          "documentation":"<p> The setup option for the data source, which reflects if the evidence collection is automated or manual. </p>"
+        },
+        "sourceType":{
+          "shape":"SourceType",
+          "documentation":"<p> Specifies one of the five types of data sources for evidence collection. </p>"
+        },
+        "sourceKeyword":{"shape":"SourceKeyword"},
+        "sourceFrequency":{
+          "shape":"SourceFrequency",
+          "documentation":"<p> The frequency of evidence collection for the specified control mapping source. </p>"
+        },
+        "troubleshootingText":{
+          "shape":"TroubleshootingText",
+          "documentation":"<p> The instructions for troubleshooting the specified control. </p>"
+        }
+      },
+      "documentation":"<p> The data source that determines from where AWS Audit Manager collects evidence for the control. </p>"
+    },
+    "ControlMappingSources":{
+      "type":"list",
+      "member":{"shape":"ControlMappingSource"},
+      "min":1
+    },
+    "ControlMetadata":{
+      "type":"structure",
+      "members":{
+        "arn":{
+          "shape":"AuditManagerArn",
+          "documentation":"<p> The Amazon Resource Name (ARN) of the specified control. </p>"
+        },
+        "id":{
+          "shape":"UUID",
+          "documentation":"<p> The unique identifier for the specified control. </p>"
+        },
+        "name":{
+          "shape":"ControlName",
+          "documentation":"<p> The name of the specified control. </p>"
+        },
+        "controlSources":{
+          "shape":"ControlSources",
+          "documentation":"<p> The data source that determines from where AWS Audit Manager collects evidence for the control. </p>"
+        },
+        "createdAt":{
+          "shape":"Timestamp",
+          "documentation":"<p> Specifies when the control was created. </p>"
+        },
+        "lastUpdatedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p> Specifies when the control was most recently updated. </p>"
+        }
+      },
+      "documentation":"<p> The metadata associated with the specified standard or custom control. </p>"
+    },
+    "ControlMetadataList":{
+      "type":"list",
+      "member":{"shape":"ControlMetadata"}
+    },
+    "ControlName":{
+      "type":"string",
+      "max":300,
+      "min":1,
+      "pattern":"^[^\\\\]*$"
+    },
+    "ControlResponse":{
+      "type":"string",
+      "enum":[
+        "MANUAL",
+        "AUTOMATE",
+        "DEFER",
+        "IGNORE"
+      ]
+    },
+    "ControlSet":{
+      "type":"structure",
+      "members":{
+        "id":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier of the control set in the assessment. This is the control set name in a plain string format. </p>"
+        },
+        "name":{
+          "shape":"ControlSetName",
+          "documentation":"<p> The name of the control set. </p>"
+        },
+        "controls":{
+          "shape":"Controls",
+          "documentation":"<p> The list of controls within the control set. </p>"
+        }
+      },
+      "documentation":"<p> A set of controls in AWS Audit Manager. </p>"
+    },
+    "ControlSetId":{
+      "type":"string",
+      "max":300,
+      "min":1,
+      "pattern":"^[\\w\\W\\s\\S]*$"
+    },
+    "ControlSetName":{
+      "type":"string",
+      "max":300,
+      "min":1,
+      "pattern":"^[^\\_]*$"
+    },
+    "ControlSetStatus":{
+      "type":"string",
+      "enum":[
+        "ACTIVE",
+        "UNDER_REVIEW",
+        "REVIEWED"
+      ]
+    },
+    "ControlSets":{
+      "type":"list",
+      "member":{"shape":"ControlSet"},
+      "min":1
+    },
+    "ControlSetsCount":{"type":"integer"},
+    "ControlSources":{
+      "type":"string",
+      "max":100,
+      "min":1,
+      "pattern":"^[a-zA-Z_0-9-\\s.,]+$"
+    },
+    "ControlStatus":{
+      "type":"string",
+      "enum":[
+        "UNDER_REVIEW",
+        "REVIEWED",
+        "INACTIVE"
+      ]
+    },
+    "ControlType":{
+      "type":"string",
+      "enum":[
+        "Standard",
+        "Custom"
+      ]
+    },
+    "Controls":{
+      "type":"list",
+      "member":{"shape":"Control"},
+      "min":1
+    },
+    "ControlsCount":{"type":"integer"},
+    "CreateAssessmentFrameworkControl":{
+      "type":"structure",
+      "members":{
+        "id":{
+          "shape":"UUID",
+          "documentation":"<p> The unique identifier of the control. </p>"
+        }
+      },
+      "documentation":"<p> Control entity attributes that uniquely identify an existing control to be added to a framework in AWS Audit Manager. </p>"
+    },
+    "CreateAssessmentFrameworkControlSet":{
+      "type":"structure",
+      "required":["name"],
+      "members":{
+        "name":{
+          "shape":"ControlSetName",
+          "documentation":"<p> The name of the specified control set. </p>"
+        },
+        "controls":{
+          "shape":"CreateAssessmentFrameworkControls",
+          "documentation":"<p> The list of controls within the control set. This does not contain the control set ID. </p>"
+        }
+      },
+      "documentation":"<p> A <code>controlSet</code> entity that represents a collection of controls in AWS Audit Manager. This does not contain the control set ID. </p>"
+    },
+    "CreateAssessmentFrameworkControlSets":{
+      "type":"list",
+      "member":{"shape":"CreateAssessmentFrameworkControlSet"},
+      "min":1
+    },
+    "CreateAssessmentFrameworkControls":{
+      "type":"list",
+      "member":{"shape":"CreateAssessmentFrameworkControl"},
+      "min":1
+    },
+    "CreateAssessmentFrameworkRequest":{
+      "type":"structure",
+      "required":[
+        "name",
+        "controlSets"
+      ],
+      "members":{
+        "name":{
+          "shape":"FrameworkName",
+          "documentation":"<p> The name of the new custom framework. </p>"
+        },
+        "description":{
+          "shape":"FrameworkDescription",
+          "documentation":"<p> An optional description for the new custom framework. </p>"
+        },
+        "complianceType":{
+          "shape":"ComplianceType",
+          "documentation":"<p> The compliance type that the new custom framework supports, such as CIS or HIPAA. </p>"
+        },
+        "controlSets":{
+          "shape":"CreateAssessmentFrameworkControlSets",
+          "documentation":"<p> The control sets to be associated with the framework. </p>"
+        },
+        "tags":{
+          "shape":"TagMap",
+          "documentation":"<p> The tags associated with the framework. </p>"
+        }
+      }
+    },
+    "CreateAssessmentFrameworkResponse":{
+      "type":"structure",
+      "members":{
+        "framework":{
+          "shape":"Framework",
+          "documentation":"<p> The name of the new framework returned by the <code>CreateAssessmentFramework</code> API. </p>"
+        }
+      }
+    },
+    "CreateAssessmentReportRequest":{
+      "type":"structure",
+      "required":[
+        "name",
+        "assessmentId"
+      ],
+      "members":{
+        "name":{
+          "shape":"AssessmentReportName",
+          "documentation":"<p> The name of the new assessment report. </p>"
+        },
+        "description":{
+          "shape":"AssessmentReportDescription",
+          "documentation":"<p> The description of the assessment report. </p>"
+        },
+        "assessmentId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified assessment. </p>",
+          "location":"uri",
+          "locationName":"assessmentId"
+        }
+      }
+    },
+    "CreateAssessmentReportResponse":{
+      "type":"structure",
+      "members":{
+        "assessmentReport":{
+          "shape":"AssessmentReport",
+          "documentation":"<p> The new assessment report returned by the <code>CreateAssessmentReport</code> API. </p>"
+        }
+      }
+    },
+    "CreateAssessmentRequest":{
+      "type":"structure",
+      "required":[
+        "name",
+        "assessmentReportsDestination",
+        "scope",
+        "roles",
+        "frameworkId"
+      ],
+      "members":{
+        "name":{
+          "shape":"AssessmentName",
+          "documentation":"<p> The name of the assessment to be created. </p>"
+        },
+        "description":{
+          "shape":"AssessmentDescription",
+          "documentation":"<p> The optional description of the assessment to be created. </p>"
+        },
+        "assessmentReportsDestination":{
+          "shape":"AssessmentReportsDestination",
+          "documentation":"<p> The assessment report storage destination for the specified assessment that is being created. </p>"
+        },
+        "scope":{"shape":"Scope"},
+        "roles":{
+          "shape":"Roles",
+          "documentation":"<p> The list of roles for the specified assessment. </p>"
+        },
+        "frameworkId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified framework. </p>"
+        },
+        "tags":{
+          "shape":"TagMap",
+          "documentation":"<p> The tags associated with the assessment. </p>"
+        }
+      }
+    },
+    "CreateAssessmentResponse":{
+      "type":"structure",
+      "members":{
+        "assessment":{"shape":"Assessment"}
+      }
+    },
+    "CreateControlMappingSource":{
+      "type":"structure",
+      "members":{
+        "sourceName":{
+          "shape":"SourceName",
+          "documentation":"<p> The name of the control mapping data source. </p>"
+        },
+        "sourceDescription":{
+          "shape":"SourceDescription",
+          "documentation":"<p> The description of the data source that determines from where AWS Audit Manager collects evidence for the control. </p>"
+        },
+        "sourceSetUpOption":{
+          "shape":"SourceSetUpOption",
+          "documentation":"<p> The setup option for the data source, which reflects if the evidence collection is automated or manual. </p>"
+        },
+        "sourceType":{
+          "shape":"SourceType",
+          "documentation":"<p> Specifies one of the five types of data sources for evidence collection. </p>"
+        },
+        "sourceKeyword":{"shape":"SourceKeyword"},
+        "sourceFrequency":{
+          "shape":"SourceFrequency",
+          "documentation":"<p> The frequency of evidence collection for the specified control mapping source. </p>"
+        },
+        "troubleshootingText":{
+          "shape":"TroubleshootingText",
+          "documentation":"<p> The instructions for troubleshooting the specified control. </p>"
+        }
+      },
+      "documentation":"<p> Control mapping fields that represent the source for evidence collection, along with related parameters and metadata. This does not contain <code>mappingID</code>. </p>"
+    },
+    "CreateControlMappingSources":{
+      "type":"list",
+      "member":{"shape":"CreateControlMappingSource"},
+      "min":1
+    },
+    "CreateControlRequest":{
+      "type":"structure",
+      "required":[
+        "name",
+        "controlMappingSources"
+      ],
+      "members":{
+        "name":{
+          "shape":"ControlName",
+          "documentation":"<p> The name of the control. </p>"
+        },
+        "description":{
+          "shape":"ControlDescription",
+          "documentation":"<p> The description of the control. </p>"
+        },
+        "testingInformation":{
+          "shape":"TestingInformation",
+          "documentation":"<p> The steps to follow to determine if the control has been satisfied. </p>"
+        },
+        "actionPlanTitle":{
+          "shape":"ActionPlanTitle",
+          "documentation":"<p> The title of the action plan for remediating the control. </p>"
+        },
+        "actionPlanInstructions":{
+          "shape":"ActionPlanInstructions",
+          "documentation":"<p> The recommended actions to carry out if the control is not fulfilled. </p>"
+        },
+        "controlMappingSources":{
+          "shape":"CreateControlMappingSources",
+          "documentation":"<p> The data mapping sources for the specified control. </p>"
+        },
+        "tags":{
+          "shape":"TagMap",
+          "documentation":"<p> The tags associated with the control. </p>"
+        }
+      }
+    },
+    "CreateControlResponse":{
+      "type":"structure",
+      "members":{
+        "control":{
+          "shape":"Control",
+          "documentation":"<p> The new control returned by the <code>CreateControl</code> API. </p>"
+        }
+      }
+    },
+    "CreateDelegationRequest":{
+      "type":"structure",
+      "members":{
+        "comment":{
+          "shape":"DelegationComment",
+          "documentation":"<p> A comment related to the delegation request. </p>"
+        },
+        "controlSetId":{
+          "shape":"ControlSetId",
+          "documentation":"<p> The unique identifier for the control set. </p>"
+        },
+        "roleArn":{
+          "shape":"IamArn",
+          "documentation":"<p> The Amazon Resource Name (ARN) of the IAM role. </p>"
+        },
+        "roleType":{
+          "shape":"RoleType",
+          "documentation":"<p> The type of customer persona. </p> <note> <p>In <code>CreateAssessment</code>, <code>roleType</code> can only be <code>PROCESS_OWNER</code>. </p> <p>In <code>UpdateSettings</code>, <code>roleType</code> can only be <code>PROCESS_OWNER</code>.</p> <p>In <code>BatchCreateDelegationByAssessment</code>, <code>roleType</code> can only be <code>RESOURCE_OWNER</code>.</p> </note>"
+        }
+      },
+      "documentation":"<p> A collection of attributes used to create a delegation for an assessment in AWS Audit Manager. </p>"
+    },
+    "CreateDelegationRequests":{
+      "type":"list",
+      "member":{"shape":"CreateDelegationRequest"},
+      "max":50,
+      "min":1
+    },
+    "CreatedBy":{
+      "type":"string",
+      "max":100,
+      "min":1,
+      "pattern":"^[a-zA-Z0-9\\s-_()\\[\\]]+$"
+    },
+    "Delegation":{
+      "type":"structure",
+      "members":{
+        "id":{
+          "shape":"UUID",
+          "documentation":"<p> The unique identifier for the delegation. </p>"
+        },
+        "assessmentName":{
+          "shape":"AssessmentName",
+          "documentation":"<p> The name of the associated assessment. </p>"
+        },
+        "assessmentId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the associated assessment. </p>"
+        },
+        "status":{
+          "shape":"DelegationStatus",
+          "documentation":"<p> The status of the delegation. </p>"
+        },
+        "roleArn":{
+          "shape":"IamArn",
+          "documentation":"<p> The Amazon Resource Name (ARN) of the IAM role. </p>"
+        },
+        "roleType":{
+          "shape":"RoleType",
+          "documentation":"<p> The type of customer persona. </p> <note> <p>In <code>CreateAssessment</code>, <code>roleType</code> can only be <code>PROCESS_OWNER</code>. </p> <p>In <code>UpdateSettings</code>, <code>roleType</code> can only be <code>PROCESS_OWNER</code>.</p> <p>In <code>BatchCreateDelegationByAssessment</code>, <code>roleType</code> can only be <code>RESOURCE_OWNER</code>.</p> </note>"
+        },
+        "creationTime":{
+          "shape":"Timestamp",
+          "documentation":"<p> Specifies when the delegation was created. </p>"
+        },
+        "lastUpdated":{
+          "shape":"Timestamp",
+          "documentation":"<p> Specifies when the delegation was last updated. </p>"
+        },
+        "controlSetId":{
+          "shape":"ControlSetId",
+          "documentation":"<p> The identifier for the associated control set. </p>"
+        },
+        "comment":{
+          "shape":"DelegationComment",
+          "documentation":"<p> The comment related to the delegation. </p>"
+        },
+        "createdBy":{
+          "shape":"CreatedBy",
+          "documentation":"<p> The IAM user or role that created the delegation. </p>"
+        }
+      },
+      "documentation":"<p> The assignment of a control set to a delegate for review. </p>"
+    },
+    "DelegationComment":{
+      "type":"string",
+      "max":350,
+      "pattern":"^[\\w\\W\\s\\S]*$"
+    },
+    "DelegationIds":{
+      "type":"list",
+      "member":{"shape":"UUID"},
+      "max":50,
+      "min":1
+    },
+    "DelegationMetadata":{
+      "type":"structure",
+      "members":{
+        "id":{
+          "shape":"UUID",
+          "documentation":"<p> The unique identifier for the delegation. </p>"
+        },
+        "assessmentName":{
+          "shape":"AssessmentName",
+          "documentation":"<p> The name of the associated assessment. </p>"
+        },
+        "assessmentId":{
+          "shape":"UUID",
+          "documentation":"<p> The unique identifier for the specified assessment. </p>"
+        },
+        "status":{
+          "shape":"DelegationStatus",
+          "documentation":"<p> The current status of the delgation. </p>"
+        },
+        "roleArn":{
+          "shape":"IamArn",
+          "documentation":"<p> The Amazon Resource Name (ARN) of the IAM role. </p>"
+        },
+        "creationTime":{
+          "shape":"Timestamp",
+          "documentation":"<p> Specifies when the delegation was created. </p>"
+        },
+        "controlSetName":{
+          "shape":"NonEmptyString",
+          "documentation":"<p> Specifies the name of the control set delegated for review. </p>"
+        }
+      },
+      "documentation":"<p> The metadata associated with the specified delegation. </p>"
+    },
+    "DelegationMetadataList":{
+      "type":"list",
+      "member":{"shape":"DelegationMetadata"}
+    },
+    "DelegationStatus":{
+      "type":"string",
+      "enum":[
+        "IN_PROGRESS",
+        "UNDER_REVIEW",
+        "COMPLETE"
+      ]
+    },
+    "Delegations":{
+      "type":"list",
+      "member":{"shape":"Delegation"}
+    },
+    "DeleteAssessmentFrameworkRequest":{
+      "type":"structure",
+      "required":["frameworkId"],
+      "members":{
+        "frameworkId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified framework. </p>",
+          "location":"uri",
+          "locationName":"frameworkId"
+        }
+      }
+    },
+    "DeleteAssessmentFrameworkResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeleteAssessmentReportRequest":{
+      "type":"structure",
+      "required":[
+        "assessmentId",
+        "assessmentReportId"
+      ],
+      "members":{
+        "assessmentId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified assessment. </p>",
+          "location":"uri",
+          "locationName":"assessmentId"
+        },
+        "assessmentReportId":{
+          "shape":"UUID",
+          "documentation":"<p> The unique identifier for the assessment report. </p>",
+          "location":"uri",
+          "locationName":"assessmentReportId"
+        }
+      }
+    },
+    "DeleteAssessmentReportResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeleteAssessmentRequest":{
+      "type":"structure",
+      "required":["assessmentId"],
+      "members":{
+        "assessmentId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified assessment. </p>",
+          "location":"uri",
+          "locationName":"assessmentId"
+        }
+      }
+    },
+    "DeleteAssessmentResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeleteControlRequest":{
+      "type":"structure",
+      "required":["controlId"],
+      "members":{
+        "controlId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified control. </p>",
+          "location":"uri",
+          "locationName":"controlId"
+        }
+      }
+    },
+    "DeleteControlResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeregisterAccountRequest":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DeregisterAccountResponse":{
+      "type":"structure",
+      "members":{
+        "status":{
+          "shape":"AccountStatus",
+          "documentation":"<p> The registration status of the account. </p>"
+        }
+      }
+    },
+    "DeregisterOrganizationAdminAccountRequest":{
+      "type":"structure",
+      "members":{
+        "adminAccountId":{
+          "shape":"AccountId",
+          "documentation":"<p> The identifier for the specified administrator account. </p>"
+        }
+      }
+    },
+    "DeregisterOrganizationAdminAccountResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DisassociateAssessmentReportEvidenceFolderRequest":{
+      "type":"structure",
+      "required":[
+        "assessmentId",
+        "evidenceFolderId"
+      ],
+      "members":{
+        "assessmentId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified assessment. </p>",
+          "location":"uri",
+          "locationName":"assessmentId"
+        },
+        "evidenceFolderId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the folder in which evidence is stored. </p>"
+        }
+      }
+    },
+    "DisassociateAssessmentReportEvidenceFolderResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "EmailAddress":{
+      "type":"string",
+      "max":320,
+      "min":1,
+      "pattern":"^.*@.*$"
+    },
+    "ErrorCode":{
+      "type":"string",
+      "max":3,
+      "min":3,
+      "pattern":"[0-9]{3}"
+    },
+    "ErrorMessage":{
+      "type":"string",
+      "max":300,
+      "pattern":"^[\\w\\W\\s\\S]*$"
+    },
+    "EventName":{
+      "type":"string",
+      "max":100,
+      "pattern":"^[\\w\\W\\s\\S]*$"
+    },
+    "Evidence":{
+      "type":"structure",
+      "members":{
+        "dataSource":{
+          "shape":"String",
+          "documentation":"<p> The data source from which the specified evidence was collected. </p>"
+        },
+        "evidenceAwsAccountId":{
+          "shape":"AccountId",
+          "documentation":"<p> The identifier for the specified AWS account. </p>"
+        },
+        "time":{
+          "shape":"Timestamp",
+          "documentation":"<p> The timestamp that represents when the evidence was collected. </p>"
+        },
+        "eventSource":{
+          "shape":"AWSServiceName",
+          "documentation":"<p> The AWS service from which the evidence is collected. </p>"
+        },
+        "eventName":{
+          "shape":"EventName",
+          "documentation":"<p> The name of the specified evidence event. </p>"
+        },
+        "evidenceByType":{
+          "shape":"String",
+          "documentation":"<p> The type of automated evidence. </p>"
+        },
+        "resourcesIncluded":{
+          "shape":"Resources",
+          "documentation":"<p> The list of resources assessed to generate the evidence. </p>"
+        },
+        "attributes":{
+          "shape":"EvidenceAttributes",
+          "documentation":"<p> The names and values used by the evidence event, including an attribute name (such as <code>allowUsersToChangePassword</code>) and value (such as <code>true</code> or <code>false</code>). </p>"
+        },
+        "iamId":{
+          "shape":"IamArn",
+          "documentation":"<p> The unique identifier for the IAM user or role associated with the evidence. </p>"
+        },
+        "complianceCheck":{
+          "shape":"String",
+          "documentation":"<p> The evaluation status for evidence that falls under the compliance check category. For evidence collected from AWS Security Hub, a <i>Pass</i> or <i>Fail</i> result is shown. For evidence collected from AWS Config, a <i>Compliant</i> or <i>Noncompliant</i> result is shown. </p>"
+        },
+        "awsOrganization":{
+          "shape":"String",
+          "documentation":"<p> The AWS account from which the evidence is collected, and its AWS organization path. </p>"
+        },
+        "awsAccountId":{
+          "shape":"AccountId",
+          "documentation":"<p> The identifier for the specified AWS account. </p>"
+        },
+        "evidenceFolderId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the folder in which the evidence is stored. </p>"
+        },
+        "id":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the evidence. </p>"
+        },
+        "assessmentReportSelection":{
+          "shape":"String",
+          "documentation":"<p> Specifies whether the evidence is included in the assessment report. </p>"
+        }
+      },
+      "documentation":"<p> A record that contains the information needed to demonstrate compliance with the requirements specified by a control. Examples of evidence include change activity triggered by a user, or a system configuration snapshot. </p>"
+    },
+    "EvidenceAttributeKey":{
+      "type":"string",
+      "max":100,
+      "pattern":"^[\\w\\W\\s\\S]*$"
+    },
+    "EvidenceAttributeValue":{
+      "type":"string",
+      "max":200,
+      "pattern":"^[\\w\\W\\s\\S]*$"
+    },
+    "EvidenceAttributes":{
+      "type":"map",
+      "key":{"shape":"EvidenceAttributeKey"},
+      "value":{"shape":"EvidenceAttributeValue"}
+    },
+    "EvidenceIds":{
+      "type":"list",
+      "member":{"shape":"UUID"},
+      "max":50,
+      "min":0
+    },
+    "EvidenceList":{
+      "type":"list",
+      "member":{"shape":"Evidence"}
+    },
+    "EvidenceSources":{
+      "type":"list",
+      "member":{"shape":"NonEmptyString"}
+    },
+    "Filename":{
+      "type":"string",
+      "max":255,
+      "min":1,
+      "pattern":"^[\\w,\\s-]+\\.[A-Za-z]+$"
+    },
+    "Framework":{
+      "type":"structure",
+      "members":{
+        "arn":{
+          "shape":"AuditManagerArn",
+          "documentation":"<p> The Amazon Resource Name (ARN) of the specified framework. </p>"
+        },
+        "id":{
+          "shape":"UUID",
+          "documentation":"<p> The unique identifier for the specified framework. </p>"
+        },
+        "name":{
+          "shape":"FrameworkName",
+          "documentation":"<p> The name of the specified framework. </p>"
+        },
+        "type":{
+          "shape":"FrameworkType",
+          "documentation":"<p> The framework type, such as custom or standard. </p>"
+        },
+        "complianceType":{
+          "shape":"ComplianceType",
+          "documentation":"<p> The compliance type that the new custom framework supports, such as CIS or HIPAA. </p>"
+        },
+        "description":{
+          "shape":"FrameworkDescription",
+          "documentation":"<p> The description of the specified framework. </p>"
+        },
+        "logo":{
+          "shape":"Filename",
+          "documentation":"<p> The logo associated with the framework. </p>"
+        },
+        "controlSources":{
+          "shape":"ControlSources",
+          "documentation":"<p> The sources from which AWS Audit Manager collects evidence for the control. </p>"
+        },
+        "controlSets":{
+          "shape":"ControlSets",
+          "documentation":"<p> The control sets associated with the framework. </p>"
+        },
+        "createdAt":{
+          "shape":"Timestamp",
+          "documentation":"<p> Specifies when the framework was created. </p>"
+        },
+        "lastUpdatedAt":{
+          "shape":"Timestamp",
+          "documentation":"<p> Specifies when the framework was most recently updated. </p>"
+        },
+        "createdBy":{
+          "shape":"CreatedBy",
+          "documentation":"<p> The IAM user or role that created the framework. </p>"
+        },
+        "lastUpdatedBy":{
+          "shape":"LastUpdatedBy",
+          "documentation":"<p> The IAM user or role that most recently updated the framework. </p>"
+        },
+        "tags":{
+          "shape":"TagMap",
+          "documentation":"<p> The tags associated with the framework. </p>"
+        }
+      },
+      "documentation":"<p> The file used to structure and automate AWS Audit Manager assessments for a given compliance standard. </p>"
+    },
+    "FrameworkDescription":{
+      "type":"string",
+      "max":1000,
+      "min":1,
+      "pattern":"^[\\w\\W\\s\\S]*$"
+    },
+    "FrameworkMetadata":{
+      "type":"structure",
+      "members":{
+        "name":{
+          "shape":"AssessmentName",
+          "documentation":"<p> The name of the framework. </p>"
+        },
+        "description":{
+          "shape":"AssessmentFrameworkDescription",
+          "documentation":"<p> The description of the framework. </p>"
+        },
+        "logo":{
+          "shape":"Filename",
+          "documentation":"<p> The logo associated with the framework. </p>"
+        },
+        "complianceType":{
+          "shape":"ComplianceType",
+          "documentation":"<p> The compliance standard associated with the framework, such as PCI-DSS or HIPAA. </p>"
+        }
+      },
+      "documentation":"<p> The metadata of a framework, such as the name, ID, description, and so on. </p>"
+    },
+    "FrameworkMetadataList":{
+      "type":"list",
+      "member":{"shape":"AssessmentFrameworkMetadata"}
+    },
+    "FrameworkName":{
+      "type":"string",
+      "max":300,
+      "min":1,
+      "pattern":"^[^\\\\]*$"
+    },
+    "FrameworkType":{
+      "type":"string",
+      "enum":[
+        "Standard",
+        "Custom"
+      ]
+    },
+    "GenericArn":{
+      "type":"string",
+      "max":2048,
+      "min":20,
+      "pattern":"^arn:.*"
+    },
+    "GetAccountStatusRequest":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "GetAccountStatusResponse":{
+      "type":"structure",
+      "members":{
+        "status":{
+          "shape":"AccountStatus",
+          "documentation":"<p> The status of the specified AWS account. </p>"
+        }
+      }
+    },
+    "GetAssessmentFrameworkRequest":{
+      "type":"structure",
+      "required":["frameworkId"],
+      "members":{
+        "frameworkId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified framework. </p>",
+          "location":"uri",
+          "locationName":"frameworkId"
+        }
+      }
+    },
+    "GetAssessmentFrameworkResponse":{
+      "type":"structure",
+      "members":{
+        "framework":{
+          "shape":"Framework",
+          "documentation":"<p> The framework returned by the <code>GetAssessmentFramework</code> API. </p>"
+        }
+      }
+    },
+    "GetAssessmentReportUrlRequest":{
+      "type":"structure",
+      "required":[
+        "assessmentReportId",
+        "assessmentId"
+      ],
+      "members":{
+        "assessmentReportId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the assessment report. </p>",
+          "location":"uri",
+          "locationName":"assessmentReportId"
+        },
+        "assessmentId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified assessment. </p>",
+          "location":"uri",
+          "locationName":"assessmentId"
+        }
+      }
+    },
+    "GetAssessmentReportUrlResponse":{
+      "type":"structure",
+      "members":{
+        "preSignedUrl":{"shape":"URL"}
+      }
+    },
+    "GetAssessmentRequest":{
+      "type":"structure",
+      "required":["assessmentId"],
+      "members":{
+        "assessmentId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified assessment. </p>",
+          "location":"uri",
+          "locationName":"assessmentId"
+        }
+      }
+    },
+    "GetAssessmentResponse":{
+      "type":"structure",
+      "members":{
+        "assessment":{"shape":"Assessment"},
+        "userRole":{"shape":"Role"}
+      }
+    },
+    "GetChangeLogsRequest":{
+      "type":"structure",
+      "required":["assessmentId"],
+      "members":{
+        "assessmentId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified assessment. </p>",
+          "location":"uri",
+          "locationName":"assessmentId"
+        },
+        "controlSetId":{
+          "shape":"ControlSetId",
+          "documentation":"<p> The identifier for the specified control set. </p>",
+          "location":"querystring",
+          "locationName":"controlSetId"
+        },
+        "controlId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified control. </p>",
+          "location":"querystring",
+          "locationName":"controlId"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p> The pagination token used to fetch the next set of results. </p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "maxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p> Represents the maximum number of results per page, or per API request call. </p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        }
+      }
+    },
+    "GetChangeLogsResponse":{
+      "type":"structure",
+      "members":{
+        "changeLogs":{
+          "shape":"ChangeLogs",
+          "documentation":"<p> The list of user activity for the control. </p>"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p> The pagination token used to fetch the next set of results. </p>"
+        }
+      }
+    },
+    "GetControlRequest":{
+      "type":"structure",
+      "required":["controlId"],
+      "members":{
+        "controlId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified control. </p>",
+          "location":"uri",
+          "locationName":"controlId"
+        }
+      }
+    },
+    "GetControlResponse":{
+      "type":"structure",
+      "members":{
+        "control":{
+          "shape":"Control",
+          "documentation":"<p> The name of the control returned by the <code>GetControl</code> API. </p>"
+        }
+      }
+    },
+    "GetDelegationsRequest":{
+      "type":"structure",
+      "members":{
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p> The pagination token used to fetch the next set of results. </p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "maxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p> Represents the maximum number of results per page, or per API request call. </p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        }
+      }
+    },
+    "GetDelegationsResponse":{
+      "type":"structure",
+      "members":{
+        "delegations":{
+          "shape":"DelegationMetadataList",
+          "documentation":"<p> The list of delegations returned by the <code>GetDelegations</code> API. </p>"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p> The pagination token used to fetch the next set of results. </p>"
+        }
+      }
+    },
+    "GetEvidenceByEvidenceFolderRequest":{
+      "type":"structure",
+      "required":[
+        "assessmentId",
+        "controlSetId",
+        "evidenceFolderId"
+      ],
+      "members":{
+        "assessmentId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified assessment. </p>",
+          "location":"uri",
+          "locationName":"assessmentId"
+        },
+        "controlSetId":{
+          "shape":"ControlSetId",
+          "documentation":"<p> The identifier for the control set. </p>",
+          "location":"uri",
+          "locationName":"controlSetId"
+        },
+        "evidenceFolderId":{
+          "shape":"UUID",
+          "documentation":"<p> The unique identifier for the folder in which the evidence is stored. </p>",
+          "location":"uri",
+          "locationName":"evidenceFolderId"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p> The pagination token used to fetch the next set of results. </p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "maxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p> Represents the maximum number of results per page, or per API request call. </p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        }
+      }
+    },
+    "GetEvidenceByEvidenceFolderResponse":{
+      "type":"structure",
+      "members":{
+        "evidence":{
+          "shape":"EvidenceList",
+          "documentation":"<p> The list of evidence returned by the <code>GetEvidenceByEvidenceFolder</code> API. </p>"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p> The pagination token used to fetch the next set of results. </p>"
+        }
+      }
+    },
+    "GetEvidenceFolderRequest":{
+      "type":"structure",
+      "required":[
+        "assessmentId",
+        "controlSetId",
+        "evidenceFolderId"
+      ],
+      "members":{
+        "assessmentId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified assessment. </p>",
+          "location":"uri",
+          "locationName":"assessmentId"
+        },
+        "controlSetId":{
+          "shape":"ControlSetId",
+          "documentation":"<p> The identifier for the specified control set. </p>",
+          "location":"uri",
+          "locationName":"controlSetId"
+        },
+        "evidenceFolderId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the folder in which the evidence is stored. </p>",
+          "location":"uri",
+          "locationName":"evidenceFolderId"
+        }
+      }
+    },
+    "GetEvidenceFolderResponse":{
+      "type":"structure",
+      "members":{
+        "evidenceFolder":{
+          "shape":"AssessmentEvidenceFolder",
+          "documentation":"<p> The folder in which evidence is stored. </p>"
+        }
+      }
+    },
+    "GetEvidenceFoldersByAssessmentControlRequest":{
+      "type":"structure",
+      "required":[
+        "assessmentId",
+        "controlSetId",
+        "controlId"
+      ],
+      "members":{
+        "assessmentId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified assessment. </p>",
+          "location":"uri",
+          "locationName":"assessmentId"
+        },
+        "controlSetId":{
+          "shape":"ControlSetId",
+          "documentation":"<p> The identifier for the specified control set. </p>",
+          "location":"uri",
+          "locationName":"controlSetId"
+        },
+        "controlId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified control. </p>",
+          "location":"uri",
+          "locationName":"controlId"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p> The pagination token used to fetch the next set of results. </p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "maxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p> Represents the maximum number of results per page, or per API request call. </p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        }
+      }
+    },
+    "GetEvidenceFoldersByAssessmentControlResponse":{
+      "type":"structure",
+      "members":{
+        "evidenceFolders":{
+          "shape":"AssessmentEvidenceFolders",
+          "documentation":"<p> The list of evidence folders returned by the <code>GetEvidenceFoldersByAssessmentControl</code> API. </p>"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p> The pagination token used to fetch the next set of results. </p>"
+        }
+      }
+    },
+    "GetEvidenceFoldersByAssessmentRequest":{
+      "type":"structure",
+      "required":["assessmentId"],
+      "members":{
+        "assessmentId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified assessment. </p>",
+          "location":"uri",
+          "locationName":"assessmentId"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p> The pagination token used to fetch the next set of results. </p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "maxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p> Represents the maximum number of results per page, or per API request call. </p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        }
+      }
+    },
+    "GetEvidenceFoldersByAssessmentResponse":{
+      "type":"structure",
+      "members":{
+        "evidenceFolders":{
+          "shape":"AssessmentEvidenceFolders",
+          "documentation":"<p> The list of evidence folders returned by the <code>GetEvidenceFoldersByAssessment</code> API. </p>"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p> The pagination token used to fetch the next set of results. </p>"
+        }
+      }
+    },
+    "GetEvidenceRequest":{
+      "type":"structure",
+      "required":[
+        "assessmentId",
+        "controlSetId",
+        "evidenceFolderId",
+        "evidenceId"
+      ],
+      "members":{
+        "assessmentId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified assessment. </p>",
+          "location":"uri",
+          "locationName":"assessmentId"
+        },
+        "controlSetId":{
+          "shape":"ControlSetId",
+          "documentation":"<p> The identifier for the specified control set. </p>",
+          "location":"uri",
+          "locationName":"controlSetId"
+        },
+        "evidenceFolderId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the folder in which the evidence is stored. </p>",
+          "location":"uri",
+          "locationName":"evidenceFolderId"
+        },
+        "evidenceId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the evidence. </p>",
+          "location":"uri",
+          "locationName":"evidenceId"
+        }
+      }
+    },
+    "GetEvidenceResponse":{
+      "type":"structure",
+      "members":{
+        "evidence":{
+          "shape":"Evidence",
+          "documentation":"<p> The evidence returned by the <code>GetEvidenceResponse</code> API. </p>"
+        }
+      }
+    },
+    "GetOrganizationAdminAccountRequest":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "GetOrganizationAdminAccountResponse":{
+      "type":"structure",
+      "members":{
+        "adminAccountId":{
+          "shape":"AccountId",
+          "documentation":"<p> The identifier for the specified administrator account. </p>"
+        },
+        "organizationId":{
+          "shape":"organizationId",
+          "documentation":"<p> The identifier for the specified organization. </p>"
+        }
+      }
+    },
+    "GetServicesInScopeRequest":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "GetServicesInScopeResponse":{
+      "type":"structure",
+      "members":{
+        "serviceMetadata":{
+          "shape":"ServiceMetadataList",
+          "documentation":"<p> The metadata associated with the aAWS service. </p>"
+        }
+      }
+    },
+    "GetSettingsRequest":{
+      "type":"structure",
+      "required":["attribute"],
+      "members":{
+        "attribute":{
+          "shape":"SettingAttribute",
+          "documentation":"<p> The list of <code>SettingAttribute</code> enum values. </p>",
+          "location":"uri",
+          "locationName":"attribute"
+        }
+      }
+    },
+    "GetSettingsResponse":{
+      "type":"structure",
+      "members":{
+        "settings":{
+          "shape":"Settings",
+          "documentation":"<p> The settings object that holds all supported AWS Audit Manager settings. </p>"
+        }
+      }
+    },
+    "HyperlinkName":{
+      "type":"string",
+      "max":200,
+      "min":1,
+      "pattern":"^[\\w\\W\\s\\S]*$"
+    },
+    "IamArn":{
+      "type":"string",
+      "max":2048,
+      "min":20,
+      "pattern":"^arn:.*:iam:.*"
+    },
+    "Integer":{"type":"integer"},
+    "InternalServerException":{
+      "type":"structure",
+      "required":["message"],
+      "members":{
+        "message":{"shape":"String"}
+      },
+      "documentation":"<p> An internal service error occurred during the processing of your request. Try again later. </p>",
+      "error":{"httpStatusCode":500},
+      "exception":true,
+      "fault":true
+    },
+    "KeywordInputType":{
+      "type":"string",
+      "enum":["SELECT_FROM_LIST"]
+    },
+    "KeywordValue":{
+      "type":"string",
+      "max":100,
+      "min":1,
+      "pattern":"^[a-zA-Z_0-9-\\s().]+$"
+    },
+    "Keywords":{
+      "type":"list",
+      "member":{"shape":"KeywordValue"}
+    },
+    "KmsKey":{
+      "type":"string",
+      "max":2048,
+      "min":7,
+      "pattern":"^arn:.*:kms:.*|DEFAULT"
+    },
+    "LastUpdatedBy":{
+      "type":"string",
+      "max":100,
+      "min":1,
+      "pattern":"^[a-zA-Z0-9\\s-_()\\[\\]]+$"
+    },
+    "ListAssessmentFrameworksRequest":{
+      "type":"structure",
+      "required":["frameworkType"],
+      "members":{
+        "frameworkType":{
+          "shape":"FrameworkType",
+          "documentation":"<p> The type of framework, such as standard or custom. </p>",
+          "location":"querystring",
+          "locationName":"frameworkType"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p> The pagination token used to fetch the next set of results. </p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "maxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p> Represents the maximum number of results per page, or per API request call. </p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        }
+      }
+    },
+    "ListAssessmentFrameworksResponse":{
+      "type":"structure",
+      "members":{
+        "frameworkMetadataList":{
+          "shape":"FrameworkMetadataList",
+          "documentation":"<p> The list of metadata objects for the specified framework. </p>"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p> The pagination token used to fetch the next set of results. </p>"
+        }
+      }
+    },
+    "ListAssessmentMetadata":{
+      "type":"list",
+      "member":{"shape":"AssessmentMetadataItem"}
+    },
+    "ListAssessmentReportsRequest":{
+      "type":"structure",
+      "members":{
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p> The pagination token used to fetch the next set of results. </p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "maxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p> Represents the maximum number of results per page, or per API request call. </p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        }
+      }
+    },
+    "ListAssessmentReportsResponse":{
+      "type":"structure",
+      "members":{
+        "assessmentReports":{
+          "shape":"AssessmentReportsMetadata",
+          "documentation":"<p> The list of assessment reports returned by the <code>ListAssessmentReports</code> API. </p>"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p> The pagination token used to fetch the next set of results. </p>"
+        }
+      }
+    },
+    "ListAssessmentsRequest":{
+      "type":"structure",
+      "members":{
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p> The pagination token used to fetch the next set of results. </p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "maxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p> Represents the maximum number of results per page, or per API request call. </p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        }
+      }
+    },
+    "ListAssessmentsResponse":{
+      "type":"structure",
+      "members":{
+        "assessmentMetadata":{
+          "shape":"ListAssessmentMetadata",
+          "documentation":"<p> The metadata associated with the assessment. </p>"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p> The pagination token used to fetch the next set of results. </p>"
+        }
+      }
+    },
+    "ListControlsRequest":{
+      "type":"structure",
+      "required":["controlType"],
+      "members":{
+        "controlType":{
+          "shape":"ControlType",
+          "documentation":"<p> The type of control, such as standard or custom. </p>",
+          "location":"querystring",
+          "locationName":"controlType"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p> The pagination token used to fetch the next set of results. </p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "maxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p> Represents the maximum number of results per page, or per API request call. </p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        }
+      }
+    },
+    "ListControlsResponse":{
+      "type":"structure",
+      "members":{
+        "controlMetadataList":{
+          "shape":"ControlMetadataList",
+          "documentation":"<p> The list of control metadata objects returned by the <code>ListControls</code> API. </p>"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p> The pagination token used to fetch the next set of results. </p>"
+        }
+      }
+    },
+    "ListKeywordsForDataSourceRequest":{
+      "type":"structure",
+      "required":["source"],
+      "members":{
+        "source":{
+          "shape":"SourceType",
+          "documentation":"<p> The control mapping data source to which the keywords apply. </p>",
+          "location":"querystring",
+          "locationName":"source"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p> The pagination token used to fetch the next set of results. </p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "maxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p> Represents the maximum number of results per page, or per API request call. </p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        }
+      }
+    },
+    "ListKeywordsForDataSourceResponse":{
+      "type":"structure",
+      "members":{
+        "keywords":{
+          "shape":"Keywords",
+          "documentation":"<p> The list of keywords for the specified event mapping source. </p>"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p> The pagination token used to fetch the next set of results. </p>"
+        }
+      }
+    },
+    "ListNotificationsRequest":{
+      "type":"structure",
+      "members":{
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p> The pagination token used to fetch the next set of results. </p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "maxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p> Represents the maximum number of results per page, or per API request call. </p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        }
+      }
+    },
+    "ListNotificationsResponse":{
+      "type":"structure",
+      "members":{
+        "notifications":{
+          "shape":"Notifications",
+          "documentation":"<p> The returned list of notifications. </p>"
+        },
+        "nextToken":{
+          "shape":"Token",
+          "documentation":"<p> The pagination token used to fetch the next set of results. </p>"
+        }
+      }
+    },
+    "ListTagsForResourceRequest":{
+      "type":"structure",
+      "required":["resourceArn"],
+      "members":{
+        "resourceArn":{
+          "shape":"AuditManagerArn",
+          "documentation":"<p> The Amazon Resource Name (ARN) of the specified resource. </p>",
+          "location":"uri",
+          "locationName":"resourceArn"
+        }
+      }
+    },
+    "ListTagsForResourceResponse":{
+      "type":"structure",
+      "members":{
+        "tags":{
+          "shape":"TagMap",
+          "documentation":"<p> The list of tags returned by the <code>ListTagsForResource</code> API. </p>"
+        }
+      }
+    },
+    "ManualEvidence":{
+      "type":"structure",
+      "members":{
+        "s3ResourcePath":{
+          "shape":"S3Url",
+          "documentation":"<p> The Amazon S3 URL that points to a manual evidence object. </p>"
+        }
+      },
+      "documentation":"<p> Evidence that is uploaded to AWS Audit Manager manually. </p>"
+    },
+    "ManualEvidenceList":{
+      "type":"list",
+      "member":{"shape":"ManualEvidence"},
+      "max":50,
+      "min":1
+    },
+    "MaxResults":{
+      "type":"integer",
+      "documentation":"Max results in the page.",
+      "max":1000,
+      "min":1
+    },
+    "NonEmptyString":{
+      "type":"string",
+      "max":2048,
+      "min":1,
+      "pattern":".*\\S.*"
+    },
+    "Notification":{
+      "type":"structure",
+      "members":{
+        "id":{
+          "shape":"TimestampUUID",
+          "documentation":"<p> The unique identifier for the notification. </p>"
+        },
+        "assessmentId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified assessment. </p>"
+        },
+        "assessmentName":{
+          "shape":"AssessmentName",
+          "documentation":"<p> The name of the related assessment. </p>"
+        },
+        "controlSetId":{
+          "shape":"ControlSetId",
+          "documentation":"<p> The identifier for the specified control set. </p>"
+        },
+        "controlSetName":{
+          "shape":"NonEmptyString",
+          "documentation":"<p> Specifies the name of the control set that the notification is about. </p>"
+        },
+        "description":{
+          "shape":"NonEmptyString",
+          "documentation":"<p> The description of the notification. </p>"
+        },
+        "eventTime":{
+          "shape":"Timestamp",
+          "documentation":"<p> The time when the notification was sent. </p>"
+        },
+        "source":{
+          "shape":"NonEmptyString",
+          "documentation":"<p> The sender of the notification. </p>"
+        }
+      },
+      "documentation":"<p> The notification used to inform a user of an update in AWS Audit Manager. For example, this includes the notification that is sent when a control set is delegated for review. </p>"
+    },
+    "Notifications":{
+      "type":"list",
+      "member":{"shape":"Notification"}
+    },
+    "ObjectTypeEnum":{
+      "type":"string",
+      "enum":[
+        "ASSESSMENT",
+        "CONTROL_SET",
+        "CONTROL",
+        "DELEGATION",
+        "ASSESSMENT_REPORT"
+      ]
+    },
+    "RegisterAccountRequest":{
+      "type":"structure",
+      "members":{
+        "kmsKey":{
+          "shape":"KmsKey",
+          "documentation":"<p> The AWS KMS key details. </p>"
+        },
+        "delegatedAdminAccount":{
+          "shape":"AccountId",
+          "documentation":"<p> The delegated administrator account for AWS Audit Manager. </p>"
+        }
+      }
+    },
+    "RegisterAccountResponse":{
+      "type":"structure",
+      "members":{
+        "status":{
+          "shape":"AccountStatus",
+          "documentation":"<p> The status of the account registration request. </p>"
+        }
+      }
+    },
+    "RegisterOrganizationAdminAccountRequest":{
+      "type":"structure",
+      "required":["adminAccountId"],
+      "members":{
+        "adminAccountId":{
+          "shape":"AccountId",
+          "documentation":"<p> The identifier for the specified delegated administrator account. </p>"
+        }
+      }
+    },
+    "RegisterOrganizationAdminAccountResponse":{
+      "type":"structure",
+      "members":{
+        "adminAccountId":{
+          "shape":"AccountId",
+          "documentation":"<p> The identifier for the specified delegated administrator account. </p>"
+        },
+        "organizationId":{
+          "shape":"organizationId",
+          "documentation":"<p> The identifier for the specified AWS organization. </p>"
+        }
+      }
+    },
+    "Resource":{
+      "type":"structure",
+      "members":{
+        "arn":{
+          "shape":"GenericArn",
+          "documentation":"<p> The Amazon Resource Name (ARN) for the specified resource. </p>"
+        },
+        "value":{
+          "shape":"String",
+          "documentation":"<p> The value of the specified resource. </p>"
+        }
+      },
+      "documentation":"<p> A system asset that is evaluated in an AWS Audit Manager assessment. </p>"
+    },
+    "ResourceNotFoundException":{
+      "type":"structure",
+      "required":[
+        "message",
+        "resourceId",
+        "resourceType"
+      ],
+      "members":{
+        "message":{"shape":"String"},
+        "resourceId":{
+          "shape":"String",
+          "documentation":"<p> The unique identifier for the specified resource. </p>"
+        },
+        "resourceType":{
+          "shape":"String",
+          "documentation":"<p> The type of resource affected by the error. </p>"
+        }
+      },
+      "documentation":"<p> The resource specified in the request cannot be found. </p>",
+      "error":{"httpStatusCode":404},
+      "exception":true
+    },
+    "Resources":{
+      "type":"list",
+      "member":{"shape":"Resource"}
+    },
+    "Role":{
+      "type":"structure",
+      "members":{
+        "roleType":{
+          "shape":"RoleType",
+          "documentation":"<p> The type of customer persona. </p> <note> <p>In <code>CreateAssessment</code>, <code>roleType</code> can only be <code>PROCESS_OWNER</code>. </p> <p>In <code>UpdateSettings</code>, <code>roleType</code> can only be <code>PROCESS_OWNER</code>.</p> <p>In <code>BatchCreateDelegationByAssessment</code>, <code>roleType</code> can only be <code>RESOURCE_OWNER</code>.</p> </note>"
+        },
+        "roleArn":{
+          "shape":"IamArn",
+          "documentation":"<p> The Amazon Resource Name (ARN) of the IAM role. </p>"
+        }
+      },
+      "documentation":"<p> The wrapper that contains the AWS Audit Manager role information of the current user, such as the role type and IAM Amazon Resource Name (ARN). </p>"
+    },
+    "RoleType":{
+      "type":"string",
+      "enum":[
+        "PROCESS_OWNER",
+        "RESOURCE_OWNER"
+      ]
+    },
+    "Roles":{
+      "type":"list",
+      "member":{"shape":"Role"}
+    },
+    "S3Url":{
+      "type":"string",
+      "max":1024,
+      "min":1,
+      "pattern":"^(S|s)3:\\/\\/[a-zA-Z0-9-_\\/.]+$"
+    },
+    "SNSTopic":{
+      "type":"string",
+      "max":255,
+      "min":1,
+      "pattern":"^[a-zA-Z0-9-_\\(\\)\\[\\]]+$"
+    },
+    "Scope":{
+      "type":"structure",
+      "members":{
+        "awsAccounts":{
+          "shape":"AWSAccounts",
+          "documentation":"<p> The AWS accounts included in the scope of the assessment. </p>"
+        },
+        "awsServices":{
+          "shape":"AWSServices",
+          "documentation":"<p> The AWS services included in the scope of the assessment. </p>"
+        }
+      },
+      "documentation":"<p> The wrapper that contains the AWS accounts and AWS services in scope for the assessment. </p>"
+    },
+    "ServiceMetadata":{
+      "type":"structure",
+      "members":{
+        "name":{
+          "shape":"AWSServiceName",
+          "documentation":"<p> The name of the AWS service. </p>"
+        },
+        "displayName":{
+          "shape":"NonEmptyString",
+          "documentation":"<p> The display name of the AWS service. </p>"
+        },
+        "description":{
+          "shape":"NonEmptyString",
+          "documentation":"<p> The description of the specified AWS service. </p>"
+        },
+        "category":{
+          "shape":"NonEmptyString",
+          "documentation":"<p> The category in which the AWS service belongs, such as compute, storage, database, and so on. </p>"
+        }
+      },
+      "documentation":"<p> The metadata associated with the specified AWS service. </p>"
+    },
+    "ServiceMetadataList":{
+      "type":"list",
+      "member":{"shape":"ServiceMetadata"}
+    },
+    "SettingAttribute":{
+      "type":"string",
+      "enum":[
+        "ALL",
+        "IS_AWS_ORG_ENABLED",
+        "SNS_TOPIC",
+        "DEFAULT_ASSESSMENT_REPORTS_DESTINATION",
+        "DEFAULT_PROCESS_OWNERS"
+      ]
+    },
+    "Settings":{
+      "type":"structure",
+      "members":{
+        "isAwsOrgEnabled":{
+          "shape":"Boolean",
+          "documentation":"<p> Specifies whether AWS Organizations is enabled. </p>"
+        },
+        "snsTopic":{
+          "shape":"SNSTopic",
+          "documentation":"<p> The designated Amazon Simple Notification Service (Amazon SNS) topic. </p>"
+        },
+        "defaultAssessmentReportsDestination":{
+          "shape":"AssessmentReportsDestination",
+          "documentation":"<p> The default storage destination for assessment reports. </p>"
+        },
+        "defaultProcessOwners":{
+          "shape":"Roles",
+          "documentation":"<p> The designated default audit owners. </p>"
+        },
+        "kmsKey":{
+          "shape":"KmsKey",
+          "documentation":"<p> The AWS KMS key details. </p>"
+        }
+      },
+      "documentation":"<p> The settings object that holds all supported AWS Audit Manager settings. </p>"
+    },
+    "SnsArn":{
+      "type":"string",
+      "max":2048,
+      "min":20,
+      "pattern":"^arn:.*:sns:.*"
+    },
+    "SourceDescription":{
+      "type":"string",
+      "max":1000,
+      "pattern":"^[\\w\\W\\s\\S]*$"
+    },
+    "SourceFrequency":{
+      "type":"string",
+      "enum":[
+        "DAILY",
+        "WEEKLY",
+        "MONTHLY"
+      ]
+    },
+    "SourceKeyword":{
+      "type":"structure",
+      "members":{
+        "keywordInputType":{
+          "shape":"KeywordInputType",
+          "documentation":"<p> The method of input for the specified keyword. </p>"
+        },
+        "keywordValue":{
+          "shape":"KeywordValue",
+          "documentation":"<p> The value of the keyword used to search AWS CloudTrail logs, AWS Config rules, AWS Security Hub checks, and AWS API names when mapping a control data source. </p>"
+        }
+      },
+      "documentation":"<p> The keyword to search for in AWS CloudTrail logs, AWS Config rules, AWS Security Hub checks, and AWS API names. </p>"
+    },
+    "SourceName":{
+      "type":"string",
+      "max":100,
+      "min":1
+    },
+    "SourceSetUpOption":{
+      "type":"string",
+      "enum":[
+        "System_Controls_Mapping",
+        "Procedural_Controls_Mapping"
+      ]
+    },
+    "SourceType":{
+      "type":"string",
+      "enum":[
+        "AWS_Cloudtrail",
+        "AWS_Config",
+        "AWS_Security_Hub",
+        "AWS_API_Call",
+        "MANUAL"
+      ]
+    },
+    "String":{
+      "type":"string",
+      "max":2048,
+      "min":0,
+      "pattern":".*"
+    },
+    "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":0
+    },
+    "TagResourceRequest":{
+      "type":"structure",
+      "required":[
+        "resourceArn",
+        "tags"
+      ],
+      "members":{
+        "resourceArn":{
+          "shape":"AuditManagerArn",
+          "documentation":"<p> The Amazon Resource Name (ARN) of the specified resource. </p>",
+          "location":"uri",
+          "locationName":"resourceArn"
+        },
+        "tags":{
+          "shape":"TagMap",
+          "documentation":"<p> The tags to be associated with the resource. </p>"
+        }
+      }
+    },
+    "TagResourceResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "TagValue":{
+      "type":"string",
+      "max":256,
+      "min":0,
+      "pattern":".{0,255}"
+    },
+    "TestingInformation":{
+      "type":"string",
+      "max":1000,
+      "pattern":"^[\\w\\W\\s\\S]*$"
+    },
+    "Timestamp":{"type":"timestamp"},
+    "TimestampUUID":{
+      "type":"string",
+      "max":50,
+      "min":47,
+      "pattern":"^[0-9]{10,13}_[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$"
+    },
+    "Token":{
+      "type":"string",
+      "max":1000,
+      "min":1,
+      "pattern":"^[A-Za-z0-9+\\/=]*$"
+    },
+    "TroubleshootingText":{
+      "type":"string",
+      "max":1000,
+      "pattern":"^[\\w\\W\\s\\S]*$"
+    },
+    "URL":{
+      "type":"structure",
+      "members":{
+        "hyperlinkName":{
+          "shape":"HyperlinkName",
+          "documentation":"<p> The name or word used as a hyperlink to the URL. </p>"
+        },
+        "link":{
+          "shape":"UrlLink",
+          "documentation":"<p> The unique identifier for the internet resource. </p>"
+        }
+      },
+      "documentation":"<p> A uniform resource locator, used as a unique identifier to locate a resource on the internet. </p>"
+    },
+    "UUID":{
+      "type":"string",
+      "max":36,
+      "min":36,
+      "pattern":"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$"
+    },
+    "UntagResourceRequest":{
+      "type":"structure",
+      "required":[
+        "resourceArn",
+        "tagKeys"
+      ],
+      "members":{
+        "resourceArn":{
+          "shape":"AuditManagerArn",
+          "documentation":"<p> The Amazon Resource Name (ARN) of the specified resource. </p>",
+          "location":"uri",
+          "locationName":"resourceArn"
+        },
+        "tagKeys":{
+          "shape":"TagKeyList",
+          "documentation":"<p> The name or key of the tag. </p>",
+          "location":"querystring",
+          "locationName":"tagKeys"
+        }
+      }
+    },
+    "UntagResourceResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "UpdateAssessmentControlRequest":{
+      "type":"structure",
+      "required":[
+        "assessmentId",
+        "controlSetId",
+        "controlId"
+      ],
+      "members":{
+        "assessmentId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified assessment. </p>",
+          "location":"uri",
+          "locationName":"assessmentId"
+        },
+        "controlSetId":{
+          "shape":"ControlSetId",
+          "documentation":"<p> The identifier for the specified control set. </p>",
+          "location":"uri",
+          "locationName":"controlSetId"
+        },
+        "controlId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified control. </p>",
+          "location":"uri",
+          "locationName":"controlId"
+        },
+        "controlStatus":{
+          "shape":"ControlStatus",
+          "documentation":"<p> The status of the specified control. </p>"
+        },
+        "commentBody":{
+          "shape":"ControlCommentBody",
+          "documentation":"<p> The comment body text for the specified control. </p>"
+        }
+      }
+    },
+    "UpdateAssessmentControlResponse":{
+      "type":"structure",
+      "members":{
+        "control":{
+          "shape":"AssessmentControl",
+          "documentation":"<p> The name of the updated control set returned by the <code>UpdateAssessmentControl</code> API. </p>"
+        }
+      }
+    },
+    "UpdateAssessmentControlSetStatusRequest":{
+      "type":"structure",
+      "required":[
+        "assessmentId",
+        "controlSetId",
+        "status",
+        "comment"
+      ],
+      "members":{
+        "assessmentId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified assessment. </p>",
+          "location":"uri",
+          "locationName":"assessmentId"
+        },
+        "controlSetId":{
+          "shape":"String",
+          "documentation":"<p> The identifier for the specified control set. </p>",
+          "location":"uri",
+          "locationName":"controlSetId"
+        },
+        "status":{
+          "shape":"ControlSetStatus",
+          "documentation":"<p> The status of the control set that is being updated. </p>"
+        },
+        "comment":{
+          "shape":"DelegationComment",
+          "documentation":"<p> The comment related to the status update. </p>"
+        }
+      }
+    },
+    "UpdateAssessmentControlSetStatusResponse":{
+      "type":"structure",
+      "members":{
+        "controlSet":{
+          "shape":"AssessmentControlSet",
+          "documentation":"<p> The name of the updated control set returned by the <code>UpdateAssessmentControlSetStatus</code> API. </p>"
+        }
+      }
+    },
+    "UpdateAssessmentFrameworkControlSet":{
+      "type":"structure",
+      "required":["name"],
+      "members":{
+        "id":{
+          "shape":"ControlSetName",
+          "documentation":"<p> The unique identifier for the control set. </p>"
+        },
+        "name":{
+          "shape":"ControlSetName",
+          "documentation":"<p> The name of the control set. </p>"
+        },
+        "controls":{
+          "shape":"CreateAssessmentFrameworkControls",
+          "documentation":"<p> The list of controls contained within the control set. </p>"
+        }
+      },
+      "documentation":"<p> A <code>controlSet</code> entity that represents a collection of controls in AWS Audit Manager. This does not contain the control set ID. </p>"
+    },
+    "UpdateAssessmentFrameworkControlSets":{
+      "type":"list",
+      "member":{"shape":"UpdateAssessmentFrameworkControlSet"}
+    },
+    "UpdateAssessmentFrameworkRequest":{
+      "type":"structure",
+      "required":[
+        "frameworkId",
+        "name",
+        "controlSets"
+      ],
+      "members":{
+        "frameworkId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified framework. </p>",
+          "location":"uri",
+          "locationName":"frameworkId"
+        },
+        "name":{
+          "shape":"FrameworkName",
+          "documentation":"<p> The name of the framework to be updated. </p>"
+        },
+        "description":{
+          "shape":"FrameworkDescription",
+          "documentation":"<p> The description of the framework that is to be updated. </p>"
+        },
+        "complianceType":{
+          "shape":"ComplianceType",
+          "documentation":"<p> The compliance type that the new custom framework supports, such as CIS or HIPAA. </p>"
+        },
+        "controlSets":{
+          "shape":"UpdateAssessmentFrameworkControlSets",
+          "documentation":"<p> The control sets associated with the framework. </p>"
+        }
+      }
+    },
+    "UpdateAssessmentFrameworkResponse":{
+      "type":"structure",
+      "members":{
+        "framework":{
+          "shape":"Framework",
+          "documentation":"<p> The name of the specified framework. </p>"
+        }
+      }
+    },
+    "UpdateAssessmentRequest":{
+      "type":"structure",
+      "required":[
+        "assessmentId",
+        "scope"
+      ],
+      "members":{
+        "assessmentId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified assessment. </p>",
+          "location":"uri",
+          "locationName":"assessmentId"
+        },
+        "assessmentName":{
+          "shape":"AssessmentName",
+          "documentation":"<p> The name of the specified assessment to be updated. </p>"
+        },
+        "assessmentDescription":{
+          "shape":"AssessmentDescription",
+          "documentation":"<p> The description of the specified assessment. </p>"
+        },
+        "scope":{
+          "shape":"Scope",
+          "documentation":"<p> The scope of the specified assessment. </p>"
+        },
+        "assessmentReportsDestination":{
+          "shape":"AssessmentReportsDestination",
+          "documentation":"<p> The assessment report storage destination for the specified assessment that is being updated. </p>"
+        },
+        "roles":{
+          "shape":"Roles",
+          "documentation":"<p> The list of roles for the specified assessment. </p>"
+        }
+      }
+    },
+    "UpdateAssessmentResponse":{
+      "type":"structure",
+      "members":{
+        "assessment":{
+          "shape":"Assessment",
+          "documentation":"<p> The response object (name of the updated assessment) for the <code>UpdateAssessmentRequest</code> API. </p>"
+        }
+      }
+    },
+    "UpdateAssessmentStatusRequest":{
+      "type":"structure",
+      "required":[
+        "assessmentId",
+        "status"
+      ],
+      "members":{
+        "assessmentId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified assessment. </p>",
+          "location":"uri",
+          "locationName":"assessmentId"
+        },
+        "status":{
+          "shape":"AssessmentStatus",
+          "documentation":"<p> The current status of the specified assessment. </p>"
+        }
+      }
+    },
+    "UpdateAssessmentStatusResponse":{
+      "type":"structure",
+      "members":{
+        "assessment":{
+          "shape":"Assessment",
+          "documentation":"<p> The name of the updated assessment returned by the <code>UpdateAssessmentStatus</code> API. </p>"
+        }
+      }
+    },
+    "UpdateControlRequest":{
+      "type":"structure",
+      "required":[
+        "controlId",
+        "name",
+        "controlMappingSources"
+      ],
+      "members":{
+        "controlId":{
+          "shape":"UUID",
+          "documentation":"<p> The identifier for the specified control. </p>",
+          "location":"uri",
+          "locationName":"controlId"
+        },
+        "name":{
+          "shape":"ControlName",
+          "documentation":"<p> The name of the control to be updated. </p>"
+        },
+        "description":{
+          "shape":"ControlDescription",
+          "documentation":"<p> The optional description of the control. </p>"
+        },
+        "testingInformation":{
+          "shape":"TestingInformation",
+          "documentation":"<p> The steps that to follow to determine if the control has been satisfied. </p>"
+        },
+        "actionPlanTitle":{
+          "shape":"ActionPlanTitle",
+          "documentation":"<p> The title of the action plan for remediating the control. </p>"
+        },
+        "actionPlanInstructions":{
+          "shape":"ActionPlanInstructions",
+          "documentation":"<p> The recommended actions to carry out if the control is not fulfilled. </p>"
+        },
+        "controlMappingSources":{
+          "shape":"ControlMappingSources",
+          "documentation":"<p> The data mapping sources for the specified control. </p>"
+        }
+      }
+    },
+    "UpdateControlResponse":{
+      "type":"structure",
+      "members":{
+        "control":{
+          "shape":"Control",
+          "documentation":"<p> The name of the updated control set returned by the <code>UpdateControl</code> API. </p>"
+        }
+      }
+    },
+    "UpdateSettingsRequest":{
+      "type":"structure",
+      "members":{
+        "snsTopic":{
+          "shape":"SnsArn",
+          "documentation":"<p> The Amazon Simple Notification Service (Amazon SNS) topic to which AWS Audit Manager sends notifications. </p>"
+        },
+        "defaultAssessmentReportsDestination":{
+          "shape":"AssessmentReportsDestination",
+          "documentation":"<p> The default storage destination for assessment reports. </p>"
+        },
+        "defaultProcessOwners":{
+          "shape":"Roles",
+          "documentation":"<p> A list of the default audit owners. </p>"
+        },
+        "kmsKey":{
+          "shape":"KmsKey",
+          "documentation":"<p> The AWS KMS key details. </p>"
+        }
+      }
+    },
+    "UpdateSettingsResponse":{
+      "type":"structure",
+      "members":{
+        "settings":{
+          "shape":"Settings",
+          "documentation":"<p> The current list of settings. </p>"
+        }
+      }
+    },
+    "UrlLink":{
+      "type":"string",
+      "max":8192,
+      "min":1,
+      "pattern":"^(https?:\\/\\/)?(www\\.)?[a-zA-Z0-9-_]+([\\.]+[a-zA-Z]+)+[\\/\\w]*$"
+    },
+    "Username":{
+      "type":"string",
+      "max":128,
+      "min":1,
+      "pattern":"^[a-zA-Z0-9-_()\\s\\+=,.@]+$"
+    },
+    "ValidateAssessmentReportIntegrityRequest":{
+      "type":"structure",
+      "required":["s3RelativePath"],
+      "members":{
+        "s3RelativePath":{
+          "shape":"S3Url",
+          "documentation":"<p> The relative path of the specified Amazon S3 bucket in which the assessment report is stored. </p>"
+        }
+      }
+    },
+    "ValidateAssessmentReportIntegrityResponse":{
+      "type":"structure",
+      "members":{
+        "signatureValid":{
+          "shape":"Boolean",
+          "documentation":"<p> Specifies whether the signature key is valid. </p>"
+        },
+        "signatureAlgorithm":{
+          "shape":"String",
+          "documentation":"<p> The signature algorithm used to code sign the assessment report file. </p>"
+        },
+        "signatureDateTime":{
+          "shape":"String",
+          "documentation":"<p> The date and time signature that specifies when the assessment report was created. </p>"
+        },
+        "signatureKeyId":{
+          "shape":"String",
+          "documentation":"<p> The unique identifier for the validation signature key. </p>"
+        },
+        "validationErrors":{
+          "shape":"ValidationErrors",
+          "documentation":"<p> Represents any errors that occurred when validating the assessment report. </p>"
+        }
+      }
+    },
+    "ValidationErrors":{
+      "type":"list",
+      "member":{"shape":"NonEmptyString"}
+    },
+    "ValidationException":{
+      "type":"structure",
+      "required":["message"],
+      "members":{
+        "message":{"shape":"String"},
+        "reason":{
+          "shape":"ValidationExceptionReason",
+          "documentation":"<p> The reason the request failed validation. </p>"
+        },
+        "fields":{
+          "shape":"ValidationExceptionFieldList",
+          "documentation":"<p> The fields that caused the error, if applicable. </p>"
+        }
+      },
+      "documentation":"<p> The request has invalid or missing parameters. </p>",
+      "error":{"httpStatusCode":400},
+      "exception":true
+    },
+    "ValidationExceptionField":{
+      "type":"structure",
+      "required":[
+        "name",
+        "message"
+      ],
+      "members":{
+        "name":{
+          "shape":"String",
+          "documentation":"<p> The name of the validation error. </p>"
+        },
+        "message":{
+          "shape":"String",
+          "documentation":"<p> The body of the error message. </p>"
+        }
+      },
+      "documentation":"<p> Indicates that the request has invalid or missing parameters for the specified field. </p>"
+    },
+    "ValidationExceptionFieldList":{
+      "type":"list",
+      "member":{"shape":"ValidationExceptionField"}
+    },
+    "ValidationExceptionReason":{
+      "type":"string",
+      "enum":[
+        "unknownOperation",
+        "cannotParse",
+        "fieldValidationFailed",
+        "other"
+      ]
+    },
+    "organizationId":{
+      "type":"string",
+      "max":34,
+      "min":12,
+      "pattern":"o-[a-z0-9]{10,32}"
+    }
+  },
+  "documentation":"<p>Welcome to the AWS Audit Manager API reference. This guide is for developers who need detailed information about the AWS Audit Manager API operations, data types, and errors. </p> <p>AWS Audit Manager is a service that provides automated evidence collection so that you can continuously audit your AWS usage, and assess the effectiveness of your controls to better manage risk and simplify compliance.</p> <p>AWS Audit Manager provides pre-built frameworks that structure and automate assessments for a given compliance standard. Frameworks include a pre-built collection of controls with descriptions and testing procedures, which are grouped according to the requirements of the specified compliance standard or regulation. You can also customize frameworks and controls to support internal audits with unique requirements. </p> <p>Use the following links to get started with the AWS Audit Manager API:</p> <ul> <li> <p> <a href=\"https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_Operations.html\">Actions</a>: An alphabetical list of all AWS Audit Manager API operations.</p> </li> <li> <p> <a href=\"https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_Types.html\">Data types</a>: An alphabetical list of all AWS Audit Manager data types.</p> </li> <li> <p> <a href=\"https://docs.aws.amazon.com/audit-manager/latest/APIReference/CommonParameters.html\">Common parameters</a>: Parameters that all Query operations can use.</p> </li> <li> <p> <a href=\"https://docs.aws.amazon.com/audit-manager/latest/APIReference/CommonErrors.html\">Common errors</a>: Client and server errors that all operations can return.</p> </li> </ul> <p>If you're new to AWS Audit Manager, we recommend that you review the <a href=\"https://docs.aws.amazon.com/audit-manager/latest/userguide/what-is.html\"> AWS Audit Manager User Guide</a>.</p>"
+}

+ 5 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/autoscaling-plans/2018-01-06/examples-1.json

@@ -0,0 +1,5 @@
+{
+  "version": "1.0",
+  "examples": {
+  }
+}

+ 16 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/autoscaling-plans/2018-01-06/paginators-1.json

@@ -0,0 +1,16 @@
+{
+  "pagination": {
+    "DescribeScalingPlanResources": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "ScalingPlanResources"
+    },
+    "DescribeScalingPlans": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "ScalingPlans"
+    }
+  }
+}

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 199 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/autoscaling-plans/2018-01-06/service-2.json


+ 1538 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/autoscaling/2011-01-01/examples-1.json

@@ -0,0 +1,1538 @@
+{
+  "version": "1.0",
+  "examples": {
+    "AttachInstances": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "InstanceIds": [
+            "i-93633f9b"
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example attaches the specified instance to the specified Auto Scaling group.",
+        "id": "autoscaling-attach-instances-1",
+        "title": "To attach an instance to an Auto Scaling group"
+      }
+    ],
+    "AttachLoadBalancerTargetGroups": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "TargetGroupARNs": [
+            "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067"
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example attaches the specified target group to the specified Auto Scaling group.",
+        "id": "autoscaling-attach-load-balancer-target-groups-1",
+        "title": "To attach a target group to an Auto Scaling group"
+      }
+    ],
+    "AttachLoadBalancers": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "LoadBalancerNames": [
+            "my-load-balancer"
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example attaches the specified load balancer to the specified Auto Scaling group.",
+        "id": "autoscaling-attach-load-balancers-1",
+        "title": "To attach a load balancer to an Auto Scaling group"
+      }
+    ],
+    "CancelInstanceRefresh": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group"
+        },
+        "output": {
+          "InstanceRefreshId": "08b91cf7-8fa6-48af-b6a6-d227f40f1b9b"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example cancels an instance refresh operation in progress.",
+        "id": "to-cancel-an-instance-refresh-1592960979817",
+        "title": "To cancel an instance refresh"
+      }
+    ],
+    "CompleteLifecycleAction": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "LifecycleActionResult": "CONTINUE",
+          "LifecycleActionToken": "bcd2f1b8-9a78-44d3-8a7a-4dd07d7cf635",
+          "LifecycleHookName": "my-lifecycle-hook"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example notifies Auto Scaling that the specified lifecycle action is complete so that it can finish launching or terminating the instance.",
+        "id": "autoscaling-complete-lifecycle-action-1",
+        "title": "To complete the lifecycle action"
+      }
+    ],
+    "CreateAutoScalingGroup": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "LaunchTemplate": {
+            "LaunchTemplateId": "lt-0a20c965061f64abc",
+            "Version": "$Latest"
+          },
+          "MaxInstanceLifetime": 2592000,
+          "MaxSize": 3,
+          "MinSize": 1,
+          "VPCZoneIdentifier": "subnet-057fa0918fEXAMPLE"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example creates an Auto Scaling group.",
+        "id": "autoscaling-create-auto-scaling-group-1",
+        "title": "To create an Auto Scaling group"
+      },
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "HealthCheckGracePeriod": 300,
+          "HealthCheckType": "ELB",
+          "LaunchTemplate": {
+            "LaunchTemplateId": "lt-0a20c965061f64abc",
+            "Version": "$Default"
+          },
+          "MaxSize": 3,
+          "MinSize": 1,
+          "TargetGroupARNs": [
+            "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067"
+          ],
+          "VPCZoneIdentifier": "subnet-057fa0918fEXAMPLE, subnet-610acd08EXAMPLE"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example creates an Auto Scaling group and attaches the specified target group.",
+        "id": "autoscaling-create-auto-scaling-group-2",
+        "title": "To create an Auto Scaling group with an attached target group"
+      },
+      {
+        "input": {
+          "AutoScalingGroupName": "my-asg",
+          "DesiredCapacity": 3,
+          "MaxSize": 5,
+          "MinSize": 1,
+          "MixedInstancesPolicy": {
+            "InstancesDistribution": {
+              "OnDemandBaseCapacity": 1,
+              "OnDemandPercentageAboveBaseCapacity": 50,
+              "SpotAllocationStrategy": "capacity-optimized"
+            },
+            "LaunchTemplate": {
+              "LaunchTemplateSpecification": {
+                "LaunchTemplateName": "my-launch-template-for-x86",
+                "Version": "$Latest"
+              },
+              "Overrides": [
+                {
+                  "InstanceType": "c6g.large",
+                  "LaunchTemplateSpecification": {
+                    "LaunchTemplateName": "my-launch-template-for-arm",
+                    "Version": "$Latest"
+                  }
+                },
+                {
+                  "InstanceType": "c5.large"
+                },
+                {
+                  "InstanceType": "c5a.large"
+                }
+              ]
+            }
+          },
+          "VPCZoneIdentifier": "subnet-057fa0918fEXAMPLE, subnet-610acd08EXAMPLE"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example creates an Auto Scaling group with a mixed instances policy. It specifies the c5.large, c5a.large, and c6g.large instance types and defines a different launch template for the c6g.large instance type.",
+        "id": "to-create-an-auto-scaling-group-with-a-mixed-instances-policy-1617815269039",
+        "title": "To create an Auto Scaling group with a mixed instances policy"
+      }
+    ],
+    "CreateLaunchConfiguration": [
+      {
+        "input": {
+          "IamInstanceProfile": "my-iam-role",
+          "ImageId": "ami-12345678",
+          "InstanceType": "m3.medium",
+          "LaunchConfigurationName": "my-launch-config",
+          "SecurityGroups": [
+            "sg-eb2af88e"
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example creates a launch configuration.",
+        "id": "autoscaling-create-launch-configuration-1",
+        "title": "To create a launch configuration"
+      }
+    ],
+    "CreateOrUpdateTags": [
+      {
+        "input": {
+          "Tags": [
+            {
+              "Key": "Role",
+              "PropagateAtLaunch": true,
+              "ResourceId": "my-auto-scaling-group",
+              "ResourceType": "auto-scaling-group",
+              "Value": "WebServer"
+            },
+            {
+              "Key": "Dept",
+              "PropagateAtLaunch": true,
+              "ResourceId": "my-auto-scaling-group",
+              "ResourceType": "auto-scaling-group",
+              "Value": "Research"
+            }
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example adds two tags to the specified Auto Scaling group.",
+        "id": "autoscaling-create-or-update-tags-1",
+        "title": "To create or update tags for an Auto Scaling group"
+      }
+    ],
+    "DeleteAutoScalingGroup": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example deletes the specified Auto Scaling group.",
+        "id": "autoscaling-delete-auto-scaling-group-1",
+        "title": "To delete an Auto Scaling group"
+      },
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "ForceDelete": true
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example deletes the specified Auto Scaling group and all its instances.",
+        "id": "autoscaling-delete-auto-scaling-group-2",
+        "title": "To delete an Auto Scaling group and all its instances"
+      }
+    ],
+    "DeleteLaunchConfiguration": [
+      {
+        "input": {
+          "LaunchConfigurationName": "my-launch-config"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example deletes the specified launch configuration.",
+        "id": "autoscaling-delete-launch-configuration-1",
+        "title": "To delete a launch configuration"
+      }
+    ],
+    "DeleteLifecycleHook": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "LifecycleHookName": "my-lifecycle-hook"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example deletes the specified lifecycle hook.",
+        "id": "autoscaling-delete-lifecycle-hook-1",
+        "title": "To delete a lifecycle hook"
+      }
+    ],
+    "DeleteNotificationConfiguration": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "TopicARN": "arn:aws:sns:us-west-2:123456789012:my-sns-topic"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example deletes the specified notification from the specified Auto Scaling group.",
+        "id": "autoscaling-delete-notification-configuration-1",
+        "title": "To delete an Auto Scaling notification"
+      }
+    ],
+    "DeletePolicy": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "PolicyName": "my-step-scale-out-policy"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example deletes the specified Auto Scaling policy.",
+        "id": "autoscaling-delete-policy-1",
+        "title": "To delete an Auto Scaling policy"
+      }
+    ],
+    "DeleteScheduledAction": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "ScheduledActionName": "my-scheduled-action"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example deletes the specified scheduled action from the specified Auto Scaling group.",
+        "id": "autoscaling-delete-scheduled-action-1",
+        "title": "To delete a scheduled action from an Auto Scaling group"
+      }
+    ],
+    "DeleteTags": [
+      {
+        "input": {
+          "Tags": [
+            {
+              "Key": "Dept",
+              "ResourceId": "my-auto-scaling-group",
+              "ResourceType": "auto-scaling-group",
+              "Value": "Research"
+            }
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example deletes the specified tag from the specified Auto Scaling group.",
+        "id": "autoscaling-delete-tags-1",
+        "title": "To delete a tag from an Auto Scaling group"
+      }
+    ],
+    "DescribeAccountLimits": [
+      {
+        "output": {
+          "MaxNumberOfAutoScalingGroups": 20,
+          "MaxNumberOfLaunchConfigurations": 100,
+          "NumberOfAutoScalingGroups": 3,
+          "NumberOfLaunchConfigurations": 5
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example describes the Auto Scaling limits for your AWS account.",
+        "id": "autoscaling-describe-account-limits-1",
+        "title": "To describe your Auto Scaling account limits"
+      }
+    ],
+    "DescribeAdjustmentTypes": [
+      {
+        "output": {
+          "AdjustmentTypes": [
+            {
+              "AdjustmentType": "ChangeInCapacity"
+            },
+            {
+              "AdjustmentType": "ExactCapcity"
+            },
+            {
+              "AdjustmentType": "PercentChangeInCapacity"
+            }
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example describes the available adjustment types.",
+        "id": "autoscaling-describe-adjustment-types-1",
+        "title": "To describe the Amazon EC2 Auto Scaling adjustment types"
+      }
+    ],
+    "DescribeAutoScalingGroups": [
+      {
+        "input": {
+          "AutoScalingGroupNames": [
+            "my-auto-scaling-group"
+          ]
+        },
+        "output": {
+          "AutoScalingGroups": [
+            {
+              "AutoScalingGroupARN": "arn:aws:autoscaling:us-west-2:123456789012:autoScalingGroup:930d940e-891e-4781-a11a-7b0acd480f03:autoScalingGroupName/my-auto-scaling-group",
+              "AutoScalingGroupName": "my-auto-scaling-group",
+              "AvailabilityZones": [
+                "us-west-2c"
+              ],
+              "CreatedTime": "2013-08-19T20:53:25.584Z",
+              "DefaultCooldown": 300,
+              "DesiredCapacity": 1,
+              "EnabledMetrics": [
+
+              ],
+              "HealthCheckGracePeriod": 300,
+              "HealthCheckType": "EC2",
+              "Instances": [
+                {
+                  "AvailabilityZone": "us-west-2c",
+                  "HealthStatus": "Healthy",
+                  "InstanceId": "i-4ba0837f",
+                  "LaunchConfigurationName": "my-launch-config",
+                  "LifecycleState": "InService",
+                  "ProtectedFromScaleIn": false
+                }
+              ],
+              "LaunchConfigurationName": "my-launch-config",
+              "LoadBalancerNames": [
+
+              ],
+              "MaxSize": 1,
+              "MinSize": 0,
+              "NewInstancesProtectedFromScaleIn": false,
+              "SuspendedProcesses": [
+
+              ],
+              "Tags": [
+
+              ],
+              "TerminationPolicies": [
+                "Default"
+              ],
+              "VPCZoneIdentifier": "subnet-12345678"
+            }
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example describes the specified Auto Scaling group.",
+        "id": "autoscaling-describe-auto-scaling-groups-1",
+        "title": "To describe an Auto Scaling group"
+      }
+    ],
+    "DescribeAutoScalingInstances": [
+      {
+        "input": {
+          "InstanceIds": [
+            "i-4ba0837f"
+          ]
+        },
+        "output": {
+          "AutoScalingInstances": [
+            {
+              "AutoScalingGroupName": "my-auto-scaling-group",
+              "AvailabilityZone": "us-west-2c",
+              "HealthStatus": "HEALTHY",
+              "InstanceId": "i-4ba0837f",
+              "LaunchConfigurationName": "my-launch-config",
+              "LifecycleState": "InService",
+              "ProtectedFromScaleIn": false
+            }
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example describes the specified Auto Scaling instance.",
+        "id": "autoscaling-describe-auto-scaling-instances-1",
+        "title": "To describe one or more Auto Scaling instances"
+      }
+    ],
+    "DescribeAutoScalingNotificationTypes": [
+      {
+        "output": {
+          "AutoScalingNotificationTypes": [
+            "autoscaling:EC2_INSTANCE_LAUNCH",
+            "autoscaling:EC2_INSTANCE_LAUNCH_ERROR",
+            "autoscaling:EC2_INSTANCE_TERMINATE",
+            "autoscaling:EC2_INSTANCE_TERMINATE_ERROR",
+            "autoscaling:TEST_NOTIFICATION"
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example describes the available notification types.",
+        "id": "autoscaling-describe-auto-scaling-notification-types-1",
+        "title": "To describe the Auto Scaling notification types"
+      }
+    ],
+    "DescribeInstanceRefreshes": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group"
+        },
+        "output": {
+          "InstanceRefreshes": [
+            {
+              "AutoScalingGroupName": "my-auto-scaling-group",
+              "InstanceRefreshId": "08b91cf7-8fa6-48af-b6a6-d227f40f1b9b",
+              "InstancesToUpdate": 5,
+              "PercentageComplete": 0,
+              "StartTime": "2020-06-02T18:11:27Z",
+              "Status": "InProgress"
+            },
+            {
+              "AutoScalingGroupName": "my-auto-scaling-group",
+              "EndTime": "2020-06-02T16:53:37Z",
+              "InstanceRefreshId": "dd7728d0-5bc4-4575-96a3-1b2c52bf8bb1",
+              "InstancesToUpdate": 0,
+              "PercentageComplete": 100,
+              "StartTime": "2020-06-02T16:43:19Z",
+              "Status": "Successful"
+            }
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example describes the instance refreshes for the specified Auto Scaling group.",
+        "id": "to-list-instance-refreshes-1592959593746",
+        "title": "To list instance refreshes"
+      }
+    ],
+    "DescribeLaunchConfigurations": [
+      {
+        "input": {
+          "LaunchConfigurationNames": [
+            "my-launch-config"
+          ]
+        },
+        "output": {
+          "LaunchConfigurations": [
+            {
+              "AssociatePublicIpAddress": true,
+              "BlockDeviceMappings": [
+
+              ],
+              "CreatedTime": "2014-05-07T17:39:28.599Z",
+              "EbsOptimized": false,
+              "ImageId": "ami-043a5034",
+              "InstanceMonitoring": {
+                "Enabled": true
+              },
+              "InstanceType": "t1.micro",
+              "LaunchConfigurationARN": "arn:aws:autoscaling:us-west-2:123456789012:launchConfiguration:98d3b196-4cf9-4e88-8ca1-8547c24ced8b:launchConfigurationName/my-launch-config",
+              "LaunchConfigurationName": "my-launch-config",
+              "SecurityGroups": [
+                "sg-67ef0308"
+              ]
+            }
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example describes the specified launch configuration.",
+        "id": "autoscaling-describe-launch-configurations-1",
+        "title": "To describe Auto Scaling launch configurations"
+      }
+    ],
+    "DescribeLifecycleHookTypes": [
+      {
+        "output": {
+          "LifecycleHookTypes": [
+            "autoscaling:EC2_INSTANCE_LAUNCHING",
+            "autoscaling:EC2_INSTANCE_TERMINATING"
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example describes the available lifecycle hook types.",
+        "id": "autoscaling-describe-lifecycle-hook-types-1",
+        "title": "To describe the available types of lifecycle hooks"
+      }
+    ],
+    "DescribeLifecycleHooks": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group"
+        },
+        "output": {
+          "LifecycleHooks": [
+            {
+              "AutoScalingGroupName": "my-auto-scaling-group",
+              "DefaultResult": "ABANDON",
+              "GlobalTimeout": 172800,
+              "HeartbeatTimeout": 3600,
+              "LifecycleHookName": "my-lifecycle-hook",
+              "LifecycleTransition": "autoscaling:EC2_INSTANCE_LAUNCHING",
+              "NotificationTargetARN": "arn:aws:sns:us-west-2:123456789012:my-sns-topic",
+              "RoleARN": "arn:aws:iam::123456789012:role/my-auto-scaling-role"
+            }
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example describes the lifecycle hooks for the specified Auto Scaling group.",
+        "id": "autoscaling-describe-lifecycle-hooks-1",
+        "title": "To describe your lifecycle hooks"
+      }
+    ],
+    "DescribeLoadBalancerTargetGroups": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group"
+        },
+        "output": {
+          "LoadBalancerTargetGroups": [
+            {
+              "LoadBalancerTargetGroupARN": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067",
+              "State": "Added"
+            }
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example describes the target groups attached to the specified Auto Scaling group.",
+        "id": "autoscaling-describe-load-balancer-target-groups-1",
+        "title": "To describe the target groups for an Auto Scaling group"
+      }
+    ],
+    "DescribeLoadBalancers": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group"
+        },
+        "output": {
+          "LoadBalancers": [
+            {
+              "LoadBalancerName": "my-load-balancer",
+              "State": "Added"
+            }
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example describes the load balancers attached to the specified Auto Scaling group.",
+        "id": "autoscaling-describe-load-balancers-1",
+        "title": "To describe the load balancers for an Auto Scaling group"
+      }
+    ],
+    "DescribeMetricCollectionTypes": [
+      {
+        "output": {
+          "Granularities": [
+            {
+              "Granularity": "1Minute"
+            }
+          ],
+          "Metrics": [
+            {
+              "Metric": "GroupMinSize"
+            },
+            {
+              "Metric": "GroupMaxSize"
+            },
+            {
+              "Metric": "GroupDesiredCapacity"
+            },
+            {
+              "Metric": "GroupInServiceInstances"
+            },
+            {
+              "Metric": "GroupPendingInstances"
+            },
+            {
+              "Metric": "GroupTerminatingInstances"
+            },
+            {
+              "Metric": "GroupStandbyInstances"
+            },
+            {
+              "Metric": "GroupTotalInstances"
+            }
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example describes the available metric collection types.",
+        "id": "autoscaling-describe-metric-collection-types-1",
+        "title": "To describe the Auto Scaling metric collection types"
+      }
+    ],
+    "DescribeNotificationConfigurations": [
+      {
+        "input": {
+          "AutoScalingGroupNames": [
+            "my-auto-scaling-group"
+          ]
+        },
+        "output": {
+          "NotificationConfigurations": [
+            {
+              "AutoScalingGroupName": "my-auto-scaling-group",
+              "NotificationType": "autoscaling:TEST_NOTIFICATION",
+              "TopicARN": "arn:aws:sns:us-west-2:123456789012:my-sns-topic-2"
+            },
+            {
+              "AutoScalingGroupName": "my-auto-scaling-group",
+              "NotificationType": "autoscaling:TEST_NOTIFICATION",
+              "TopicARN": "arn:aws:sns:us-west-2:123456789012:my-sns-topic"
+            }
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example describes the notification configurations for the specified Auto Scaling group.",
+        "id": "autoscaling-describe-notification-configurations-1",
+        "title": "To describe Auto Scaling notification configurations"
+      }
+    ],
+    "DescribePolicies": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group"
+        },
+        "output": {
+          "ScalingPolicies": [
+            {
+              "AdjustmentType": "ChangeInCapacity",
+              "Alarms": [
+
+              ],
+              "AutoScalingGroupName": "my-auto-scaling-group",
+              "PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:2233f3d7-6290-403b-b632-93c553560106:autoScalingGroupName/my-auto-scaling-group:policyName/ScaleIn",
+              "PolicyName": "ScaleIn",
+              "ScalingAdjustment": -1
+            },
+            {
+              "AdjustmentType": "PercentChangeInCapacity",
+              "Alarms": [
+
+              ],
+              "AutoScalingGroupName": "my-auto-scaling-group",
+              "Cooldown": 60,
+              "MinAdjustmentStep": 2,
+              "PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:2b435159-cf77-4e89-8c0e-d63b497baad7:autoScalingGroupName/my-auto-scaling-group:policyName/ScalePercentChange",
+              "PolicyName": "ScalePercentChange",
+              "ScalingAdjustment": 25
+            }
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example describes the policies for the specified Auto Scaling group.",
+        "id": "autoscaling-describe-policies-1",
+        "title": "To describe scaling policies"
+      }
+    ],
+    "DescribeScalingActivities": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group"
+        },
+        "output": {
+          "Activities": [
+            {
+              "ActivityId": "f9f2d65b-f1f2-43e7-b46d-d86756459699",
+              "AutoScalingGroupName": "my-auto-scaling-group",
+              "Cause": "At 2013-08-19T20:53:25Z a user request created an AutoScalingGroup changing the desired capacity from 0 to 1.  At 2013-08-19T20:53:29Z an instance was started in response to a difference between desired and actual capacity, increasing the capacity from 0 to 1.",
+              "Description": "Launching a new EC2 instance: i-4ba0837f",
+              "Details": "details",
+              "EndTime": "2013-08-19T20:54:02Z",
+              "Progress": 100,
+              "StartTime": "2013-08-19T20:53:29.930Z",
+              "StatusCode": "Successful"
+            }
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example describes the scaling activities for the specified Auto Scaling group.",
+        "id": "autoscaling-describe-scaling-activities-1",
+        "title": "To describe the scaling activities for an Auto Scaling group"
+      }
+    ],
+    "DescribeScalingProcessTypes": [
+      {
+        "output": {
+          "Processes": [
+            {
+              "ProcessName": "AZRebalance"
+            },
+            {
+              "ProcessName": "AddToLoadBalancer"
+            },
+            {
+              "ProcessName": "AlarmNotification"
+            },
+            {
+              "ProcessName": "HealthCheck"
+            },
+            {
+              "ProcessName": "Launch"
+            },
+            {
+              "ProcessName": "ReplaceUnhealthy"
+            },
+            {
+              "ProcessName": "ScheduledActions"
+            },
+            {
+              "ProcessName": "Terminate"
+            }
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example describes the Auto Scaling process types.",
+        "id": "autoscaling-describe-scaling-process-types-1",
+        "title": "To describe the Auto Scaling process types"
+      }
+    ],
+    "DescribeScheduledActions": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group"
+        },
+        "output": {
+          "ScheduledUpdateGroupActions": [
+            {
+              "AutoScalingGroupName": "my-auto-scaling-group",
+              "DesiredCapacity": 4,
+              "MaxSize": 6,
+              "MinSize": 2,
+              "Recurrence": "30 0 1 12 0",
+              "ScheduledActionARN": "arn:aws:autoscaling:us-west-2:123456789012:scheduledUpdateGroupAction:8e86b655-b2e6-4410-8f29-b4f094d6871c:autoScalingGroupName/my-auto-scaling-group:scheduledActionName/my-scheduled-action",
+              "ScheduledActionName": "my-scheduled-action",
+              "StartTime": "2016-12-01T00:30:00Z",
+              "Time": "2016-12-01T00:30:00Z"
+            }
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example describes the scheduled actions for the specified Auto Scaling group.",
+        "id": "autoscaling-describe-scheduled-actions-1",
+        "title": "To describe scheduled actions"
+      }
+    ],
+    "DescribeTags": [
+      {
+        "input": {
+          "Filters": [
+            {
+              "Name": "auto-scaling-group",
+              "Values": [
+                "my-auto-scaling-group"
+              ]
+            }
+          ]
+        },
+        "output": {
+          "Tags": [
+            {
+              "Key": "Dept",
+              "PropagateAtLaunch": true,
+              "ResourceId": "my-auto-scaling-group",
+              "ResourceType": "auto-scaling-group",
+              "Value": "Research"
+            },
+            {
+              "Key": "Role",
+              "PropagateAtLaunch": true,
+              "ResourceId": "my-auto-scaling-group",
+              "ResourceType": "auto-scaling-group",
+              "Value": "WebServer"
+            }
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example describes the tags for the specified Auto Scaling group.",
+        "id": "autoscaling-describe-tags-1",
+        "title": "To describe tags"
+      }
+    ],
+    "DescribeTerminationPolicyTypes": [
+      {
+        "output": {
+          "TerminationPolicyTypes": [
+            "ClosestToNextInstanceHour",
+            "Default",
+            "NewestInstance",
+            "OldestInstance",
+            "OldestLaunchConfiguration"
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example describes the available termination policy types.",
+        "id": "autoscaling-describe-termination-policy-types-1",
+        "title": "To describe termination policy types"
+      }
+    ],
+    "DetachInstances": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "InstanceIds": [
+            "i-93633f9b"
+          ],
+          "ShouldDecrementDesiredCapacity": true
+        },
+        "output": {
+          "Activities": [
+            {
+              "ActivityId": "5091cb52-547a-47ce-a236-c9ccbc2cb2c9",
+              "AutoScalingGroupName": "my-auto-scaling-group",
+              "Cause": "At 2015-04-12T15:02:16Z instance i-93633f9b was detached in response to a user request, shrinking the capacity from 2 to 1.",
+              "Description": "Detaching EC2 instance: i-93633f9b",
+              "Details": "details",
+              "Progress": 50,
+              "StartTime": "2015-04-12T15:02:16.179Z",
+              "StatusCode": "InProgress"
+            }
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example detaches the specified instance from the specified Auto Scaling group.",
+        "id": "autoscaling-detach-instances-1",
+        "title": "To detach an instance from an Auto Scaling group"
+      }
+    ],
+    "DetachLoadBalancerTargetGroups": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "TargetGroupARNs": [
+            "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067"
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example detaches the specified target group from the specified Auto Scaling group",
+        "id": "autoscaling-detach-load-balancer-target-groups-1",
+        "title": "To detach a target group from an Auto Scaling group"
+      }
+    ],
+    "DetachLoadBalancers": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "LoadBalancerNames": [
+            "my-load-balancer"
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example detaches the specified load balancer from the specified Auto Scaling group.",
+        "id": "autoscaling-detach-load-balancers-1",
+        "title": "To detach a load balancer from an Auto Scaling group"
+      }
+    ],
+    "DisableMetricsCollection": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "Metrics": [
+            "GroupDesiredCapacity"
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example disables collecting data for the GroupDesiredCapacity metric for the specified Auto Scaling group.",
+        "id": "autoscaling-disable-metrics-collection-1",
+        "title": "To disable metrics collection for an Auto Scaling group"
+      }
+    ],
+    "EnableMetricsCollection": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "Granularity": "1Minute"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example enables data collection for the specified Auto Scaling group.",
+        "id": "autoscaling-enable-metrics-collection-1",
+        "title": "To enable metrics collection for an Auto Scaling group"
+      }
+    ],
+    "EnterStandby": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "InstanceIds": [
+            "i-93633f9b"
+          ],
+          "ShouldDecrementDesiredCapacity": true
+        },
+        "output": {
+          "Activities": [
+            {
+              "ActivityId": "ffa056b4-6ed3-41ba-ae7c-249dfae6eba1",
+              "AutoScalingGroupName": "my-auto-scaling-group",
+              "Cause": "At 2015-04-12T15:10:23Z instance i-93633f9b was moved to standby in response to a user request, shrinking the capacity from 2 to 1.",
+              "Description": "Moving EC2 instance to Standby: i-93633f9b",
+              "Details": "details",
+              "Progress": 50,
+              "StartTime": "2015-04-12T15:10:23.640Z",
+              "StatusCode": "InProgress"
+            }
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example puts the specified instance into standby mode.",
+        "id": "autoscaling-enter-standby-1",
+        "title": "To move instances into standby mode"
+      }
+    ],
+    "ExecutePolicy": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "BreachThreshold": 50.0,
+          "MetricValue": 59.0,
+          "PolicyName": "my-step-scale-out-policy"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example executes the specified policy.",
+        "id": "autoscaling-execute-policy-1",
+        "title": "To execute a scaling policy"
+      }
+    ],
+    "ExitStandby": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "InstanceIds": [
+            "i-93633f9b"
+          ]
+        },
+        "output": {
+          "Activities": [
+            {
+              "ActivityId": "142928e1-a2dc-453a-9b24-b85ad6735928",
+              "AutoScalingGroupName": "my-auto-scaling-group",
+              "Cause": "At 2015-04-12T15:14:29Z instance i-93633f9b was moved out of standby in response to a user request, increasing the capacity from 1 to 2.",
+              "Description": "Moving EC2 instance out of Standby: i-93633f9b",
+              "Details": "details",
+              "Progress": 30,
+              "StartTime": "2015-04-12T15:14:29.886Z",
+              "StatusCode": "PreInService"
+            }
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example moves the specified instance out of standby mode.",
+        "id": "autoscaling-exit-standby-1",
+        "title": "To move instances out of standby mode"
+      }
+    ],
+    "PutLifecycleHook": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "LifecycleHookName": "my-lifecycle-hook",
+          "LifecycleTransition": "autoscaling:EC2_INSTANCE_LAUNCHING",
+          "NotificationTargetARN": "arn:aws:sns:us-west-2:123456789012:my-sns-topic --role-arn",
+          "RoleARN": "arn:aws:iam::123456789012:role/my-auto-scaling-role"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example creates a lifecycle hook.",
+        "id": "autoscaling-put-lifecycle-hook-1",
+        "title": "To create a lifecycle hook"
+      }
+    ],
+    "PutNotificationConfiguration": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "NotificationTypes": [
+            "autoscaling:TEST_NOTIFICATION"
+          ],
+          "TopicARN": "arn:aws:sns:us-west-2:123456789012:my-sns-topic"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example adds the specified notification to the specified Auto Scaling group.",
+        "id": "autoscaling-put-notification-configuration-1",
+        "title": "To add an Auto Scaling notification"
+      }
+    ],
+    "PutScalingPolicy": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "PolicyName": "alb1000-target-tracking-scaling-policy",
+          "PolicyType": "TargetTrackingScaling",
+          "TargetTrackingConfiguration": {
+            "PredefinedMetricSpecification": {
+              "PredefinedMetricType": "ALBRequestCountPerTarget",
+              "ResourceLabel": "app/my-alb/778d41231b141a0f/targetgroup/my-alb-target-group/943f017f100becff"
+            },
+            "TargetValue": 1000.0
+          }
+        },
+        "output": {
+          "Alarms": [
+            {
+              "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e",
+              "AlarmName": "TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e"
+            },
+            {
+              "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2",
+              "AlarmName": "TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2"
+            }
+          ],
+          "PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:228f02c2-c665-4bfd-aaac-8b04080bea3c:autoScalingGroupName/my-auto-scaling-group:policyName/alb1000-target-tracking-scaling-policy"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example adds the specified policy to the specified Auto Scaling group.",
+        "id": "autoscaling-put-scaling-policy-1",
+        "title": "To add a scaling policy to an Auto Scaling group"
+      }
+    ],
+    "PutScheduledUpdateGroupAction": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "DesiredCapacity": 4,
+          "EndTime": "2014-05-12T08:00:00Z",
+          "MaxSize": 6,
+          "MinSize": 2,
+          "ScheduledActionName": "my-scheduled-action",
+          "StartTime": "2014-05-12T08:00:00Z"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example adds the specified scheduled action to the specified Auto Scaling group.",
+        "id": "autoscaling-put-scheduled-update-group-action-1",
+        "title": "To add a scheduled action to an Auto Scaling group"
+      }
+    ],
+    "PutWarmPool": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "MinSize": 30,
+          "PoolState": "Stopped"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example adds a warm pool to the specified Auto Scaling group.",
+        "id": "to-add-a-warm-pool-to-an-auto-scaling-group-1617818810383",
+        "title": "To add a warm pool to an Auto Scaling group"
+      }
+    ],
+    "RecordLifecycleActionHeartbeat": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "LifecycleActionToken": "bcd2f1b8-9a78-44d3-8a7a-4dd07d7cf635",
+          "LifecycleHookName": "my-lifecycle-hook"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example records a lifecycle action heartbeat to keep the instance in a pending state.",
+        "id": "autoscaling-record-lifecycle-action-heartbeat-1",
+        "title": "To record a lifecycle action heartbeat"
+      }
+    ],
+    "ResumeProcesses": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "ScalingProcesses": [
+            "AlarmNotification"
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example resumes the specified suspended scaling process for the specified Auto Scaling group.",
+        "id": "autoscaling-resume-processes-1",
+        "title": "To resume Auto Scaling processes"
+      }
+    ],
+    "SetDesiredCapacity": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "DesiredCapacity": 2,
+          "HonorCooldown": true
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example sets the desired capacity for the specified Auto Scaling group.",
+        "id": "autoscaling-set-desired-capacity-1",
+        "title": "To set the desired capacity for an Auto Scaling group"
+      }
+    ],
+    "SetInstanceHealth": [
+      {
+        "input": {
+          "HealthStatus": "Unhealthy",
+          "InstanceId": "i-93633f9b"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example sets the health status of the specified instance to Unhealthy.",
+        "id": "autoscaling-set-instance-health-1",
+        "title": "To set the health status of an instance"
+      }
+    ],
+    "SetInstanceProtection": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "InstanceIds": [
+            "i-93633f9b"
+          ],
+          "ProtectedFromScaleIn": true
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example enables instance protection for the specified instance.",
+        "id": "autoscaling-set-instance-protection-1",
+        "title": "To enable instance protection for an instance"
+      },
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "InstanceIds": [
+            "i-93633f9b"
+          ],
+          "ProtectedFromScaleIn": false
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example disables instance protection for the specified instance.",
+        "id": "autoscaling-set-instance-protection-2",
+        "title": "To disable instance protection for an instance"
+      }
+    ],
+    "StartInstanceRefresh": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "Preferences": {
+            "InstanceWarmup": 400,
+            "MinHealthyPercentage": 50
+          }
+        },
+        "output": {
+          "InstanceRefreshId": "08b91cf7-8fa6-48af-b6a6-d227f40f1b9b"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example starts an instance refresh for the specified Auto Scaling group.",
+        "id": "to-start-an-instance-refresh-1592957271522",
+        "title": "To start an instance refresh"
+      }
+    ],
+    "SuspendProcesses": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "ScalingProcesses": [
+            "AlarmNotification"
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example suspends the specified scaling process for the specified Auto Scaling group.",
+        "id": "autoscaling-suspend-processes-1",
+        "title": "To suspend Auto Scaling processes"
+      }
+    ],
+    "TerminateInstanceInAutoScalingGroup": [
+      {
+        "input": {
+          "InstanceId": "i-93633f9b",
+          "ShouldDecrementDesiredCapacity": false
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example terminates the specified instance from the specified Auto Scaling group without updating the size of the group. Auto Scaling launches a replacement instance after the specified instance terminates.",
+        "id": "autoscaling-terminate-instance-in-auto-scaling-group-1",
+        "title": "To terminate an instance in an Auto Scaling group"
+      }
+    ],
+    "UpdateAutoScalingGroup": [
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "LaunchConfigurationName": "new-launch-config"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example updates the launch configuration of the specified Auto Scaling group.",
+        "id": "autoscaling-update-auto-scaling-group-1",
+        "title": "To update the launch configuration"
+      },
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "MaxSize": 3,
+          "MinSize": 1
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example updates the minimum size and maximum size of the specified Auto Scaling group.",
+        "id": "autoscaling-update-auto-scaling-group-2",
+        "title": "To update the minimum and maximum size"
+      },
+      {
+        "input": {
+          "AutoScalingGroupName": "my-auto-scaling-group",
+          "NewInstancesProtectedFromScaleIn": true
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example enables instance protection for the specified Auto Scaling group.",
+        "id": "autoscaling-update-auto-scaling-group-3",
+        "title": "To enable instance protection"
+      }
+    ]
+  }
+}

+ 64 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/autoscaling/2011-01-01/paginators-1.json

@@ -0,0 +1,64 @@
+{
+  "pagination": {
+    "DescribeAutoScalingGroups": {
+      "input_token": "NextToken",
+      "output_token": "NextToken",
+      "limit_key": "MaxRecords",
+      "result_key": "AutoScalingGroups"
+    },
+    "DescribeAutoScalingInstances": {
+      "input_token": "NextToken",
+      "output_token": "NextToken",
+      "limit_key": "MaxRecords",
+      "result_key": "AutoScalingInstances"
+    },
+    "DescribeLaunchConfigurations": {
+      "input_token": "NextToken",
+      "output_token": "NextToken",
+      "limit_key": "MaxRecords",
+      "result_key": "LaunchConfigurations"
+    },
+    "DescribeNotificationConfigurations": {
+      "input_token": "NextToken",
+      "output_token": "NextToken",
+      "limit_key": "MaxRecords",
+      "result_key": "NotificationConfigurations"
+    },
+    "DescribePolicies": {
+      "input_token": "NextToken",
+      "output_token": "NextToken",
+      "limit_key": "MaxRecords",
+      "result_key": "ScalingPolicies"
+    },
+    "DescribeScalingActivities": {
+      "input_token": "NextToken",
+      "output_token": "NextToken",
+      "limit_key": "MaxRecords",
+      "result_key": "Activities"
+    },
+    "DescribeScheduledActions": {
+      "input_token": "NextToken",
+      "output_token": "NextToken",
+      "limit_key": "MaxRecords",
+      "result_key": "ScheduledUpdateGroupActions"
+    },
+    "DescribeTags": {
+      "input_token": "NextToken",
+      "output_token": "NextToken",
+      "limit_key": "MaxRecords",
+      "result_key": "Tags"
+    },
+    "DescribeLoadBalancerTargetGroups": {
+      "input_token": "NextToken",
+      "limit_key": "MaxRecords",
+      "output_token": "NextToken",
+      "result_key": "LoadBalancerTargetGroups"
+    },
+    "DescribeLoadBalancers": {
+      "input_token": "NextToken",
+      "limit_key": "MaxRecords",
+      "output_token": "NextToken",
+      "result_key": "LoadBalancers"
+    }
+  }
+}

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 953 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/autoscaling/2011-01-01/service-2.json


+ 3 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/backup/2018-11-15/paginators-1.json

@@ -0,0 +1,3 @@
+{
+  "pagination": {}
+}

+ 3770 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/backup/2018-11-15/service-2.json

@@ -0,0 +1,3770 @@
+{
+  "version":"2.0",
+  "metadata":{
+    "apiVersion":"2018-11-15",
+    "endpointPrefix":"backup",
+    "jsonVersion":"1.1",
+    "protocol":"rest-json",
+    "serviceFullName":"AWS Backup",
+    "serviceId":"Backup",
+    "signatureVersion":"v4",
+    "uid":"backup-2018-11-15"
+  },
+  "operations":{
+    "CreateBackupPlan":{
+      "name":"CreateBackupPlan",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/backup/plans/"
+      },
+      "input":{"shape":"CreateBackupPlanInput"},
+      "output":{"shape":"CreateBackupPlanOutput"},
+      "errors":[
+        {"shape":"LimitExceededException"},
+        {"shape":"AlreadyExistsException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Creates a backup plan using a backup plan name and backup rules. A backup plan is a document that contains information that AWS Backup uses to schedule tasks that create recovery points for resources.</p> <p>If you call <code>CreateBackupPlan</code> with a plan that already exists, an <code>AlreadyExistsException</code> is returned.</p>",
+      "idempotent":true
+    },
+    "CreateBackupSelection":{
+      "name":"CreateBackupSelection",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/backup/plans/{backupPlanId}/selections/"
+      },
+      "input":{"shape":"CreateBackupSelectionInput"},
+      "output":{"shape":"CreateBackupSelectionOutput"},
+      "errors":[
+        {"shape":"LimitExceededException"},
+        {"shape":"AlreadyExistsException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Creates a JSON document that specifies a set of resources to assign to a backup plan. Resources can be included by specifying patterns for a <code>ListOfTags</code> and selected <code>Resources</code>. </p> <p>For example, consider the following patterns:</p> <ul> <li> <p> <code>Resources: \"arn:aws:ec2:region:account-id:volume/volume-id\"</code> </p> </li> <li> <p> <code>ConditionKey:\"department\"</code> </p> <p> <code>ConditionValue:\"finance\"</code> </p> <p> <code>ConditionType:\"StringEquals\"</code> </p> </li> <li> <p> <code>ConditionKey:\"importance\"</code> </p> <p> <code>ConditionValue:\"critical\"</code> </p> <p> <code>ConditionType:\"StringEquals\"</code> </p> </li> </ul> <p>Using these patterns would back up all Amazon Elastic Block Store (Amazon EBS) volumes that are tagged as <code>\"department=finance\"</code>, <code>\"importance=critical\"</code>, in addition to an EBS volume with the specified volume ID.</p> <p>Resources and conditions are additive in that all resources that match the pattern are selected. This shouldn't be confused with a logical AND, where all conditions must match. The matching patterns are logically put together using the OR operator. In other words, all patterns that match are selected for backup.</p>",
+      "idempotent":true
+    },
+    "CreateBackupVault":{
+      "name":"CreateBackupVault",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/backup-vaults/{backupVaultName}"
+      },
+      "input":{"shape":"CreateBackupVaultInput"},
+      "output":{"shape":"CreateBackupVaultOutput"},
+      "errors":[
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"LimitExceededException"},
+        {"shape":"AlreadyExistsException"}
+      ],
+      "documentation":"<p>Creates a logical container where backups are stored. A <code>CreateBackupVault</code> request includes a name, optionally one or more resource tags, an encryption key, and a request ID.</p> <note> <p>Sensitive data, such as passport numbers, should not be included the name of a backup vault.</p> </note>",
+      "idempotent":true
+    },
+    "DeleteBackupPlan":{
+      "name":"DeleteBackupPlan",
+      "http":{
+        "method":"DELETE",
+        "requestUri":"/backup/plans/{backupPlanId}"
+      },
+      "input":{"shape":"DeleteBackupPlanInput"},
+      "output":{"shape":"DeleteBackupPlanOutput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Deletes a backup plan. A backup plan can only be deleted after all associated selections of resources have been deleted. Deleting a backup plan deletes the current version of a backup plan. Previous versions, if any, will still exist.</p>"
+    },
+    "DeleteBackupSelection":{
+      "name":"DeleteBackupSelection",
+      "http":{
+        "method":"DELETE",
+        "requestUri":"/backup/plans/{backupPlanId}/selections/{selectionId}"
+      },
+      "input":{"shape":"DeleteBackupSelectionInput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Deletes the resource selection associated with a backup plan that is specified by the <code>SelectionId</code>.</p>"
+    },
+    "DeleteBackupVault":{
+      "name":"DeleteBackupVault",
+      "http":{
+        "method":"DELETE",
+        "requestUri":"/backup-vaults/{backupVaultName}"
+      },
+      "input":{"shape":"DeleteBackupVaultInput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Deletes the backup vault identified by its name. A vault can be deleted only if it is empty.</p>"
+    },
+    "DeleteBackupVaultAccessPolicy":{
+      "name":"DeleteBackupVaultAccessPolicy",
+      "http":{
+        "method":"DELETE",
+        "requestUri":"/backup-vaults/{backupVaultName}/access-policy"
+      },
+      "input":{"shape":"DeleteBackupVaultAccessPolicyInput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Deletes the policy document that manages permissions on a backup vault.</p>",
+      "idempotent":true
+    },
+    "DeleteBackupVaultNotifications":{
+      "name":"DeleteBackupVaultNotifications",
+      "http":{
+        "method":"DELETE",
+        "requestUri":"/backup-vaults/{backupVaultName}/notification-configuration"
+      },
+      "input":{"shape":"DeleteBackupVaultNotificationsInput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Deletes event notifications for the specified backup vault.</p>",
+      "idempotent":true
+    },
+    "DeleteRecoveryPoint":{
+      "name":"DeleteRecoveryPoint",
+      "http":{
+        "method":"DELETE",
+        "requestUri":"/backup-vaults/{backupVaultName}/recovery-points/{recoveryPointArn}"
+      },
+      "input":{"shape":"DeleteRecoveryPointInput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"InvalidResourceStateException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Deletes the recovery point specified by a recovery point ID.</p> <p>If the recovery point ID belongs to a continuous backup, calling this endpoint deletes the existing continuous backup and stops future continuous backup.</p>",
+      "idempotent":true
+    },
+    "DescribeBackupJob":{
+      "name":"DescribeBackupJob",
+      "http":{
+        "method":"GET",
+        "requestUri":"/backup-jobs/{backupJobId}"
+      },
+      "input":{"shape":"DescribeBackupJobInput"},
+      "output":{"shape":"DescribeBackupJobOutput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"DependencyFailureException"}
+      ],
+      "documentation":"<p>Returns backup job details for the specified <code>BackupJobId</code>.</p>",
+      "idempotent":true
+    },
+    "DescribeBackupVault":{
+      "name":"DescribeBackupVault",
+      "http":{
+        "method":"GET",
+        "requestUri":"/backup-vaults/{backupVaultName}"
+      },
+      "input":{"shape":"DescribeBackupVaultInput"},
+      "output":{"shape":"DescribeBackupVaultOutput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Returns metadata about a backup vault specified by its name.</p>",
+      "idempotent":true
+    },
+    "DescribeCopyJob":{
+      "name":"DescribeCopyJob",
+      "http":{
+        "method":"GET",
+        "requestUri":"/copy-jobs/{copyJobId}"
+      },
+      "input":{"shape":"DescribeCopyJobInput"},
+      "output":{"shape":"DescribeCopyJobOutput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Returns metadata associated with creating a copy of a resource.</p>",
+      "idempotent":true
+    },
+    "DescribeGlobalSettings":{
+      "name":"DescribeGlobalSettings",
+      "http":{
+        "method":"GET",
+        "requestUri":"/global-settings"
+      },
+      "input":{"shape":"DescribeGlobalSettingsInput"},
+      "output":{"shape":"DescribeGlobalSettingsOutput"},
+      "errors":[
+        {"shape":"InvalidRequestException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Describes the global settings of the AWS account, including whether it is opted in to cross-account backup.</p>"
+    },
+    "DescribeProtectedResource":{
+      "name":"DescribeProtectedResource",
+      "http":{
+        "method":"GET",
+        "requestUri":"/resources/{resourceArn}"
+      },
+      "input":{"shape":"DescribeProtectedResourceInput"},
+      "output":{"shape":"DescribeProtectedResourceOutput"},
+      "errors":[
+        {"shape":"MissingParameterValueException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Returns information about a saved resource, including the last time it was backed up, its Amazon Resource Name (ARN), and the AWS service type of the saved resource.</p>",
+      "idempotent":true
+    },
+    "DescribeRecoveryPoint":{
+      "name":"DescribeRecoveryPoint",
+      "http":{
+        "method":"GET",
+        "requestUri":"/backup-vaults/{backupVaultName}/recovery-points/{recoveryPointArn}"
+      },
+      "input":{"shape":"DescribeRecoveryPointInput"},
+      "output":{"shape":"DescribeRecoveryPointOutput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Returns metadata associated with a recovery point, including ID, status, encryption, and lifecycle.</p>",
+      "idempotent":true
+    },
+    "DescribeRegionSettings":{
+      "name":"DescribeRegionSettings",
+      "http":{
+        "method":"GET",
+        "requestUri":"/account-settings"
+      },
+      "input":{"shape":"DescribeRegionSettingsInput"},
+      "output":{"shape":"DescribeRegionSettingsOutput"},
+      "errors":[
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Returns the current service opt-in settings for the Region. If service-opt-in is enabled for a service, AWS Backup tries to protect that service's resources in this Region, when the resource is included in an on-demand backup or scheduled backup plan. Otherwise, AWS Backup does not try to protect that service's resources in this Region, AWS Backup does not try to protect that service's resources in this Region.</p>"
+    },
+    "DescribeRestoreJob":{
+      "name":"DescribeRestoreJob",
+      "http":{
+        "method":"GET",
+        "requestUri":"/restore-jobs/{restoreJobId}"
+      },
+      "input":{"shape":"DescribeRestoreJobInput"},
+      "output":{"shape":"DescribeRestoreJobOutput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"DependencyFailureException"}
+      ],
+      "documentation":"<p>Returns metadata associated with a restore job that is specified by a job ID.</p>",
+      "idempotent":true
+    },
+    "DisassociateRecoveryPoint":{
+      "name":"DisassociateRecoveryPoint",
+      "http":{
+        "method":"POST",
+        "requestUri":"/backup-vaults/{backupVaultName}/recovery-points/{recoveryPointArn}/disassociate"
+      },
+      "input":{"shape":"DisassociateRecoveryPointInput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"InvalidResourceStateException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Deletes the specified continuous backup recovery point from AWS Backup and releases control of that continuous backup to the source service, such as Amazon RDS. The source service will continue to create and retain continuous backups using the lifecycle that you specified in your original backup plan.</p> <p>Does not support snapshot backup recovery points.</p>"
+    },
+    "ExportBackupPlanTemplate":{
+      "name":"ExportBackupPlanTemplate",
+      "http":{
+        "method":"GET",
+        "requestUri":"/backup/plans/{backupPlanId}/toTemplate/"
+      },
+      "input":{"shape":"ExportBackupPlanTemplateInput"},
+      "output":{"shape":"ExportBackupPlanTemplateOutput"},
+      "errors":[
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Returns the backup plan that is specified by the plan ID as a backup template.</p>"
+    },
+    "GetBackupPlan":{
+      "name":"GetBackupPlan",
+      "http":{
+        "method":"GET",
+        "requestUri":"/backup/plans/{backupPlanId}/"
+      },
+      "input":{"shape":"GetBackupPlanInput"},
+      "output":{"shape":"GetBackupPlanOutput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Returns <code>BackupPlan</code> details for the specified <code>BackupPlanId</code>. The details are the body of a backup plan in JSON format, in addition to plan metadata.</p>",
+      "idempotent":true
+    },
+    "GetBackupPlanFromJSON":{
+      "name":"GetBackupPlanFromJSON",
+      "http":{
+        "method":"POST",
+        "requestUri":"/backup/template/json/toPlan"
+      },
+      "input":{"shape":"GetBackupPlanFromJSONInput"},
+      "output":{"shape":"GetBackupPlanFromJSONOutput"},
+      "errors":[
+        {"shape":"LimitExceededException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Returns a valid JSON document specifying a backup plan or an error.</p>"
+    },
+    "GetBackupPlanFromTemplate":{
+      "name":"GetBackupPlanFromTemplate",
+      "http":{
+        "method":"GET",
+        "requestUri":"/backup/template/plans/{templateId}/toPlan"
+      },
+      "input":{"shape":"GetBackupPlanFromTemplateInput"},
+      "output":{"shape":"GetBackupPlanFromTemplateOutput"},
+      "errors":[
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Returns the template specified by its <code>templateId</code> as a backup plan.</p>"
+    },
+    "GetBackupSelection":{
+      "name":"GetBackupSelection",
+      "http":{
+        "method":"GET",
+        "requestUri":"/backup/plans/{backupPlanId}/selections/{selectionId}"
+      },
+      "input":{"shape":"GetBackupSelectionInput"},
+      "output":{"shape":"GetBackupSelectionOutput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Returns selection metadata and a document in JSON format that specifies a list of resources that are associated with a backup plan.</p>",
+      "idempotent":true
+    },
+    "GetBackupVaultAccessPolicy":{
+      "name":"GetBackupVaultAccessPolicy",
+      "http":{
+        "method":"GET",
+        "requestUri":"/backup-vaults/{backupVaultName}/access-policy"
+      },
+      "input":{"shape":"GetBackupVaultAccessPolicyInput"},
+      "output":{"shape":"GetBackupVaultAccessPolicyOutput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Returns the access policy document that is associated with the named backup vault.</p>",
+      "idempotent":true
+    },
+    "GetBackupVaultNotifications":{
+      "name":"GetBackupVaultNotifications",
+      "http":{
+        "method":"GET",
+        "requestUri":"/backup-vaults/{backupVaultName}/notification-configuration"
+      },
+      "input":{"shape":"GetBackupVaultNotificationsInput"},
+      "output":{"shape":"GetBackupVaultNotificationsOutput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Returns event notifications for the specified backup vault.</p>",
+      "idempotent":true
+    },
+    "GetRecoveryPointRestoreMetadata":{
+      "name":"GetRecoveryPointRestoreMetadata",
+      "http":{
+        "method":"GET",
+        "requestUri":"/backup-vaults/{backupVaultName}/recovery-points/{recoveryPointArn}/restore-metadata"
+      },
+      "input":{"shape":"GetRecoveryPointRestoreMetadataInput"},
+      "output":{"shape":"GetRecoveryPointRestoreMetadataOutput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Returns a set of metadata key-value pairs that were used to create the backup.</p>",
+      "idempotent":true
+    },
+    "GetSupportedResourceTypes":{
+      "name":"GetSupportedResourceTypes",
+      "http":{
+        "method":"GET",
+        "requestUri":"/supported-resource-types"
+      },
+      "output":{"shape":"GetSupportedResourceTypesOutput"},
+      "errors":[
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Returns the AWS resource types supported by AWS Backup.</p>"
+    },
+    "ListBackupJobs":{
+      "name":"ListBackupJobs",
+      "http":{
+        "method":"GET",
+        "requestUri":"/backup-jobs/"
+      },
+      "input":{"shape":"ListBackupJobsInput"},
+      "output":{"shape":"ListBackupJobsOutput"},
+      "errors":[
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Returns a list of existing backup jobs for an authenticated account for the last 30 days. For a longer period of time, consider using these <a href=\"https://docs.aws.amazon.com/aws-backup/latest/devguide/monitoring.html\">monitoring tools</a>.</p>",
+      "idempotent":true
+    },
+    "ListBackupPlanTemplates":{
+      "name":"ListBackupPlanTemplates",
+      "http":{
+        "method":"GET",
+        "requestUri":"/backup/template/plans"
+      },
+      "input":{"shape":"ListBackupPlanTemplatesInput"},
+      "output":{"shape":"ListBackupPlanTemplatesOutput"},
+      "errors":[
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"ResourceNotFoundException"}
+      ],
+      "documentation":"<p>Returns metadata of your saved backup plan templates, including the template ID, name, and the creation and deletion dates.</p>"
+    },
+    "ListBackupPlanVersions":{
+      "name":"ListBackupPlanVersions",
+      "http":{
+        "method":"GET",
+        "requestUri":"/backup/plans/{backupPlanId}/versions/"
+      },
+      "input":{"shape":"ListBackupPlanVersionsInput"},
+      "output":{"shape":"ListBackupPlanVersionsOutput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Returns version metadata of your backup plans, including Amazon Resource Names (ARNs), backup plan IDs, creation and deletion dates, plan names, and version IDs.</p>",
+      "idempotent":true
+    },
+    "ListBackupPlans":{
+      "name":"ListBackupPlans",
+      "http":{
+        "method":"GET",
+        "requestUri":"/backup/plans/"
+      },
+      "input":{"shape":"ListBackupPlansInput"},
+      "output":{"shape":"ListBackupPlansOutput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Returns a list of existing backup plans for an authenticated account. The list is populated only if the advanced option is set for the backup plan. The list contains information such as Amazon Resource Names (ARNs), plan IDs, creation and deletion dates, version IDs, plan names, and creator request IDs.</p>",
+      "idempotent":true
+    },
+    "ListBackupSelections":{
+      "name":"ListBackupSelections",
+      "http":{
+        "method":"GET",
+        "requestUri":"/backup/plans/{backupPlanId}/selections/"
+      },
+      "input":{"shape":"ListBackupSelectionsInput"},
+      "output":{"shape":"ListBackupSelectionsOutput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Returns an array containing metadata of the resources associated with the target backup plan.</p>",
+      "idempotent":true
+    },
+    "ListBackupVaults":{
+      "name":"ListBackupVaults",
+      "http":{
+        "method":"GET",
+        "requestUri":"/backup-vaults/"
+      },
+      "input":{"shape":"ListBackupVaultsInput"},
+      "output":{"shape":"ListBackupVaultsOutput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Returns a list of recovery point storage containers along with information about them.</p>",
+      "idempotent":true
+    },
+    "ListCopyJobs":{
+      "name":"ListCopyJobs",
+      "http":{
+        "method":"GET",
+        "requestUri":"/copy-jobs/"
+      },
+      "input":{"shape":"ListCopyJobsInput"},
+      "output":{"shape":"ListCopyJobsOutput"},
+      "errors":[
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Returns metadata about your copy jobs.</p>"
+    },
+    "ListProtectedResources":{
+      "name":"ListProtectedResources",
+      "http":{
+        "method":"GET",
+        "requestUri":"/resources/"
+      },
+      "input":{"shape":"ListProtectedResourcesInput"},
+      "output":{"shape":"ListProtectedResourcesOutput"},
+      "errors":[
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Returns an array of resources successfully backed up by AWS Backup, including the time the resource was saved, an Amazon Resource Name (ARN) of the resource, and a resource type.</p>",
+      "idempotent":true
+    },
+    "ListRecoveryPointsByBackupVault":{
+      "name":"ListRecoveryPointsByBackupVault",
+      "http":{
+        "method":"GET",
+        "requestUri":"/backup-vaults/{backupVaultName}/recovery-points/"
+      },
+      "input":{"shape":"ListRecoveryPointsByBackupVaultInput"},
+      "output":{"shape":"ListRecoveryPointsByBackupVaultOutput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Returns detailed information about the recovery points stored in a backup vault.</p>",
+      "idempotent":true
+    },
+    "ListRecoveryPointsByResource":{
+      "name":"ListRecoveryPointsByResource",
+      "http":{
+        "method":"GET",
+        "requestUri":"/resources/{resourceArn}/recovery-points/"
+      },
+      "input":{"shape":"ListRecoveryPointsByResourceInput"},
+      "output":{"shape":"ListRecoveryPointsByResourceOutput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Returns detailed information about recovery points of the type specified by a resource Amazon Resource Name (ARN).</p>",
+      "idempotent":true
+    },
+    "ListRestoreJobs":{
+      "name":"ListRestoreJobs",
+      "http":{
+        "method":"GET",
+        "requestUri":"/restore-jobs/"
+      },
+      "input":{"shape":"ListRestoreJobsInput"},
+      "output":{"shape":"ListRestoreJobsOutput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Returns a list of jobs that AWS Backup initiated to restore a saved resource, including metadata about the recovery process.</p>",
+      "idempotent":true
+    },
+    "ListTags":{
+      "name":"ListTags",
+      "http":{
+        "method":"GET",
+        "requestUri":"/tags/{resourceArn}/"
+      },
+      "input":{"shape":"ListTagsInput"},
+      "output":{"shape":"ListTagsOutput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Returns a list of key-value pairs assigned to a target recovery point, backup plan, or backup vault.</p> <note> <p> <code>ListTags</code> are currently only supported with Amazon EFS backups.</p> </note>",
+      "idempotent":true
+    },
+    "PutBackupVaultAccessPolicy":{
+      "name":"PutBackupVaultAccessPolicy",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/backup-vaults/{backupVaultName}/access-policy"
+      },
+      "input":{"shape":"PutBackupVaultAccessPolicyInput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Sets a resource-based policy that is used to manage access permissions on the target backup vault. Requires a backup vault name and an access policy document in JSON format.</p>",
+      "idempotent":true
+    },
+    "PutBackupVaultNotifications":{
+      "name":"PutBackupVaultNotifications",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/backup-vaults/{backupVaultName}/notification-configuration"
+      },
+      "input":{"shape":"PutBackupVaultNotificationsInput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Turns on notifications on a backup vault for the specified topic and events.</p>",
+      "idempotent":true
+    },
+    "StartBackupJob":{
+      "name":"StartBackupJob",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/backup-jobs"
+      },
+      "input":{"shape":"StartBackupJobInput"},
+      "output":{"shape":"StartBackupJobOutput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"InvalidRequestException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"LimitExceededException"}
+      ],
+      "documentation":"<p>Starts an on-demand backup job for the specified resource.</p>",
+      "idempotent":true
+    },
+    "StartCopyJob":{
+      "name":"StartCopyJob",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/copy-jobs"
+      },
+      "input":{"shape":"StartCopyJobInput"},
+      "output":{"shape":"StartCopyJobOutput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"LimitExceededException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Starts a job to create a one-time copy of the specified resource.</p> <p>Does not support continuous backups.</p>",
+      "idempotent":true
+    },
+    "StartRestoreJob":{
+      "name":"StartRestoreJob",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/restore-jobs"
+      },
+      "input":{"shape":"StartRestoreJobInput"},
+      "output":{"shape":"StartRestoreJobOutput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Recovers the saved resource identified by an Amazon Resource Name (ARN).</p>",
+      "idempotent":true
+    },
+    "StopBackupJob":{
+      "name":"StopBackupJob",
+      "http":{
+        "method":"POST",
+        "requestUri":"/backup-jobs/{backupJobId}"
+      },
+      "input":{"shape":"StopBackupJobInput"},
+      "errors":[
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"InvalidRequestException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Attempts to cancel a job to create a one-time backup of a resource.</p>"
+    },
+    "TagResource":{
+      "name":"TagResource",
+      "http":{
+        "method":"POST",
+        "requestUri":"/tags/{resourceArn}"
+      },
+      "input":{"shape":"TagResourceInput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"LimitExceededException"}
+      ],
+      "documentation":"<p>Assigns a set of key-value pairs to a recovery point, backup plan, or backup vault identified by an Amazon Resource Name (ARN).</p>",
+      "idempotent":true
+    },
+    "UntagResource":{
+      "name":"UntagResource",
+      "http":{
+        "method":"POST",
+        "requestUri":"/untag/{resourceArn}"
+      },
+      "input":{"shape":"UntagResourceInput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Removes a set of key-value pairs from a recovery point, backup plan, or backup vault identified by an Amazon Resource Name (ARN)</p>",
+      "idempotent":true
+    },
+    "UpdateBackupPlan":{
+      "name":"UpdateBackupPlan",
+      "http":{
+        "method":"POST",
+        "requestUri":"/backup/plans/{backupPlanId}"
+      },
+      "input":{"shape":"UpdateBackupPlanInput"},
+      "output":{"shape":"UpdateBackupPlanOutput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Updates an existing backup plan identified by its <code>backupPlanId</code> with the input document in JSON format. The new version is uniquely identified by a <code>VersionId</code>.</p>",
+      "idempotent":true
+    },
+    "UpdateGlobalSettings":{
+      "name":"UpdateGlobalSettings",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/global-settings"
+      },
+      "input":{"shape":"UpdateGlobalSettingsInput"},
+      "errors":[
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"InvalidRequestException"}
+      ],
+      "documentation":"<p>Updates the current global settings for the AWS account. Use the <code>DescribeGlobalSettings</code> API to determine the current settings.</p>"
+    },
+    "UpdateRecoveryPointLifecycle":{
+      "name":"UpdateRecoveryPointLifecycle",
+      "http":{
+        "method":"POST",
+        "requestUri":"/backup-vaults/{backupVaultName}/recovery-points/{recoveryPointArn}"
+      },
+      "input":{"shape":"UpdateRecoveryPointLifecycleInput"},
+      "output":{"shape":"UpdateRecoveryPointLifecycleOutput"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InvalidParameterValueException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"ServiceUnavailableException"}
+      ],
+      "documentation":"<p>Sets the transition lifecycle of a recovery point.</p> <p>The lifecycle defines when a protected resource is transitioned to cold storage and when it expires. AWS Backup transitions and expires backups automatically according to the lifecycle that you define.</p> <p>Backups transitioned to cold storage must be stored in cold storage for a minimum of 90 days. Therefore, the “expire after days” setting must be 90 days greater than the “transition to cold after days” setting. The “transition to cold after days” setting cannot be changed after a backup has been transitioned to cold.</p> <p>Only Amazon EFS file system backups can be transitioned to cold storage.</p> <p>Does not support continuous backups.</p>",
+      "idempotent":true
+    },
+    "UpdateRegionSettings":{
+      "name":"UpdateRegionSettings",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/account-settings"
+      },
+      "input":{"shape":"UpdateRegionSettingsInput"},
+      "errors":[
+        {"shape":"ServiceUnavailableException"},
+        {"shape":"MissingParameterValueException"},
+        {"shape":"InvalidParameterValueException"}
+      ],
+      "documentation":"<p>Updates the current service opt-in settings for the Region. If service-opt-in is enabled for a service, AWS Backup tries to protect that service's resources in this Region, when the resource is included in an on-demand backup or scheduled backup plan. Otherwise, AWS Backup does not try to protect that service's resources in this Region. Use the <code>DescribeRegionSettings</code> API to determine the resource types that are supported.</p>"
+    }
+  },
+  "shapes":{
+    "ARN":{"type":"string"},
+    "AccountId":{
+      "type":"string",
+      "pattern":"^[0-9]{12}$"
+    },
+    "AdvancedBackupSetting":{
+      "type":"structure",
+      "members":{
+        "ResourceType":{
+          "shape":"ResourceType",
+          "documentation":"<p>Specifies an object containing resource type and backup options. The only supported resource type is Amazon EC2 instances with Windows VSS. For an CloudFormation example, see the <a href=\"https://docs.aws.amazon.com/aws-backup/latest/devguide/integrate-cloudformation-with-aws-backup.html\">sample CloudFormation template to enable Windows VSS</a> in the <i>AWS Backup User Guide</i>.</p> <p>Valid values: <code>EC2</code>.</p>"
+        },
+        "BackupOptions":{
+          "shape":"BackupOptions",
+          "documentation":"<p>Specifies the backup option for a selected resource. This option is only available for Windows VSS backup jobs.</p> <p>Valid values: </p> <p>Set to <code>\"WindowsVSS\":\"enabled\"</code> to enable the WindowsVSS backup option and create a VSS Windows backup. </p> <p>Set to <code>\"WindowsVSS\":\"disabled\"</code> to create a regular backup. The WindowsVSS option is not enabled by default.</p> <p>If you specify an invalid option, you get an <code>InvalidParameterValueException</code> exception.</p> <p>For more information about Windows VSS backups, see <a href=\"https://docs.aws.amazon.com/aws-backup/latest/devguide/windows-backups.html\">Creating a VSS-Enabled Windows Backup</a>.</p>"
+        }
+      },
+      "documentation":"<p>A list of backup options for each resource type.</p>"
+    },
+    "AdvancedBackupSettings":{
+      "type":"list",
+      "member":{"shape":"AdvancedBackupSetting"}
+    },
+    "AlreadyExistsException":{
+      "type":"structure",
+      "members":{
+        "Code":{"shape":"string"},
+        "Message":{"shape":"string"},
+        "CreatorRequestId":{
+          "shape":"string",
+          "documentation":"<p/>"
+        },
+        "Arn":{
+          "shape":"string",
+          "documentation":"<p/>"
+        },
+        "Type":{
+          "shape":"string",
+          "documentation":"<p/>"
+        },
+        "Context":{
+          "shape":"string",
+          "documentation":"<p/>"
+        }
+      },
+      "documentation":"<p>The required resource already exists.</p>",
+      "exception":true
+    },
+    "BackupJob":{
+      "type":"structure",
+      "members":{
+        "AccountId":{
+          "shape":"AccountId",
+          "documentation":"<p>The account ID that owns the backup job.</p>"
+        },
+        "BackupJobId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a request to AWS Backup to back up a resource.</p>"
+        },
+        "BackupVaultName":{
+          "shape":"BackupVaultName",
+          "documentation":"<p>The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the AWS Region where they are created. They consist of lowercase letters, numbers, and hyphens.</p>"
+        },
+        "BackupVaultArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a backup vault; for example, <code>arn:aws:backup:us-east-1:123456789012:vault:aBackupVault</code>.</p>"
+        },
+        "RecoveryPointArn":{
+          "shape":"ARN",
+          "documentation":"<p>An ARN that uniquely identifies a recovery point; for example, <code>arn:aws:backup:us-east-1:123456789012:recovery-point:1EB3B5E7-9EB0-435A-A80B-108B488B0D45</code>.</p>"
+        },
+        "ResourceArn":{
+          "shape":"ARN",
+          "documentation":"<p>An ARN that uniquely identifies a resource. The format of the ARN depends on the resource type.</p>"
+        },
+        "CreationDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time a backup job is created, in Unix format and Coordinated Universal Time (UTC). The value of <code>CreationDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "CompletionDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time a job to create a backup job is completed, in Unix format and Coordinated Universal Time (UTC). The value of <code>CompletionDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "State":{
+          "shape":"BackupJobState",
+          "documentation":"<p>The current state of a resource recovery point.</p>"
+        },
+        "StatusMessage":{
+          "shape":"string",
+          "documentation":"<p>A detailed message explaining the status of the job to back up a resource.</p>"
+        },
+        "PercentDone":{
+          "shape":"string",
+          "documentation":"<p>Contains an estimated percentage complete of a job at the time the job status was queried.</p>"
+        },
+        "BackupSizeInBytes":{
+          "shape":"Long",
+          "documentation":"<p>The size, in bytes, of a backup.</p>"
+        },
+        "IamRoleArn":{
+          "shape":"IAMRoleArn",
+          "documentation":"<p>Specifies the IAM role ARN used to create the target recovery point. IAM roles other than the default role must include either <code>AWSBackup</code> or <code>AwsBackup</code> in the role name. For example, <code>arn:aws:iam::123456789012:role/AWSBackupRDSAccess</code>. Role names without those strings lack permissions to perform backup jobs.</p>"
+        },
+        "CreatedBy":{
+          "shape":"RecoveryPointCreator",
+          "documentation":"<p>Contains identifying information about the creation of a backup job, including the <code>BackupPlanArn</code>, <code>BackupPlanId</code>, <code>BackupPlanVersion</code>, and <code>BackupRuleId</code> of the backup plan used to create it.</p>"
+        },
+        "ExpectedCompletionDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time a job to back up resources is expected to be completed, in Unix format and Coordinated Universal Time (UTC). The value of <code>ExpectedCompletionDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "StartBy":{
+          "shape":"timestamp",
+          "documentation":"<p>Specifies the time in Unix format and Coordinated Universal Time (UTC) when a backup job must be started before it is canceled. The value is calculated by adding the start window to the scheduled time. So if the scheduled time were 6:00 PM and the start window is 2 hours, the <code>StartBy</code> time would be 8:00 PM on the date specified. The value of <code>StartBy</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "ResourceType":{
+          "shape":"ResourceType",
+          "documentation":"<p>The type of AWS resource to be backed up; for example, an Amazon Elastic Block Store (Amazon EBS) volume or an Amazon Relational Database Service (Amazon RDS) database. For VSS Windows backups, the only supported resource type is Amazon EC2.</p>"
+        },
+        "BytesTransferred":{
+          "shape":"Long",
+          "documentation":"<p>The size in bytes transferred to a backup vault at the time that the job status was queried.</p>"
+        },
+        "BackupOptions":{
+          "shape":"BackupOptions",
+          "documentation":"<p>Specifies the backup option for a selected resource. This option is only available for Windows VSS backup jobs.</p> <p>Valid values: Set to <code>\"WindowsVSS”:“enabled\"</code> to enable WindowsVSS backup option and create a VSS Windows backup. Set to “WindowsVSS”:”disabled” to create a regular backup. If you specify an invalid option, you get an <code>InvalidParameterValueException</code> exception.</p>"
+        },
+        "BackupType":{
+          "shape":"string",
+          "documentation":"<p>Represents the type of backup for a backup job.</p>"
+        }
+      },
+      "documentation":"<p>Contains detailed information about a backup job.</p>"
+    },
+    "BackupJobState":{
+      "type":"string",
+      "enum":[
+        "CREATED",
+        "PENDING",
+        "RUNNING",
+        "ABORTING",
+        "ABORTED",
+        "COMPLETED",
+        "FAILED",
+        "EXPIRED"
+      ]
+    },
+    "BackupJobsList":{
+      "type":"list",
+      "member":{"shape":"BackupJob"}
+    },
+    "BackupOptionKey":{
+      "type":"string",
+      "pattern":"^[a-zA-Z0-9\\-\\_\\.]{1,50}$"
+    },
+    "BackupOptionValue":{
+      "type":"string",
+      "pattern":"^[a-zA-Z0-9\\-\\_\\.]{1,50}$"
+    },
+    "BackupOptions":{
+      "type":"map",
+      "key":{"shape":"BackupOptionKey"},
+      "value":{"shape":"BackupOptionValue"}
+    },
+    "BackupPlan":{
+      "type":"structure",
+      "required":[
+        "BackupPlanName",
+        "Rules"
+      ],
+      "members":{
+        "BackupPlanName":{
+          "shape":"BackupPlanName",
+          "documentation":"<p>The display name of a backup plan.</p>"
+        },
+        "Rules":{
+          "shape":"BackupRules",
+          "documentation":"<p>An array of <code>BackupRule</code> objects, each of which specifies a scheduled task that is used to back up a selection of resources. </p>"
+        },
+        "AdvancedBackupSettings":{
+          "shape":"AdvancedBackupSettings",
+          "documentation":"<p>Contains a list of <code>BackupOptions</code> for each resource type.</p>"
+        }
+      },
+      "documentation":"<p>Contains an optional backup plan display name and an array of <code>BackupRule</code> objects, each of which specifies a backup rule. Each rule in a backup plan is a separate scheduled task and can back up a different selection of AWS resources.</p>"
+    },
+    "BackupPlanInput":{
+      "type":"structure",
+      "required":[
+        "BackupPlanName",
+        "Rules"
+      ],
+      "members":{
+        "BackupPlanName":{
+          "shape":"BackupPlanName",
+          "documentation":"<p>The optional display name of a backup plan.</p>"
+        },
+        "Rules":{
+          "shape":"BackupRulesInput",
+          "documentation":"<p>An array of <code>BackupRule</code> objects, each of which specifies a scheduled task that is used to back up a selection of resources.</p>"
+        },
+        "AdvancedBackupSettings":{
+          "shape":"AdvancedBackupSettings",
+          "documentation":"<p>Specifies a list of <code>BackupOptions</code> for each resource type. These settings are only available for Windows VSS backup jobs.</p>"
+        }
+      },
+      "documentation":"<p>Contains an optional backup plan display name and an array of <code>BackupRule</code> objects, each of which specifies a backup rule. Each rule in a backup plan is a separate scheduled task and can back up a different selection of AWS resources. </p>"
+    },
+    "BackupPlanName":{"type":"string"},
+    "BackupPlanTemplatesList":{
+      "type":"list",
+      "member":{"shape":"BackupPlanTemplatesListMember"}
+    },
+    "BackupPlanTemplatesListMember":{
+      "type":"structure",
+      "members":{
+        "BackupPlanTemplateId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a stored backup plan template.</p>"
+        },
+        "BackupPlanTemplateName":{
+          "shape":"string",
+          "documentation":"<p>The optional display name of a backup plan template.</p>"
+        }
+      },
+      "documentation":"<p>An object specifying metadata associated with a backup plan template.</p>"
+    },
+    "BackupPlanVersionsList":{
+      "type":"list",
+      "member":{"shape":"BackupPlansListMember"}
+    },
+    "BackupPlansList":{
+      "type":"list",
+      "member":{"shape":"BackupPlansListMember"}
+    },
+    "BackupPlansListMember":{
+      "type":"structure",
+      "members":{
+        "BackupPlanArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a backup plan; for example, <code>arn:aws:backup:us-east-1:123456789012:plan:8F81F553-3A74-4A3F-B93D-B3360DC80C50</code>.</p>"
+        },
+        "BackupPlanId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a backup plan.</p>"
+        },
+        "CreationDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time a resource backup plan is created, in Unix format and Coordinated Universal Time (UTC). The value of <code>CreationDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "DeletionDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time a backup plan is deleted, in Unix format and Coordinated Universal Time (UTC). The value of <code>DeletionDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "VersionId":{
+          "shape":"string",
+          "documentation":"<p>Unique, randomly generated, Unicode, UTF-8 encoded strings that are at most 1,024 bytes long. Version IDs cannot be edited.</p>"
+        },
+        "BackupPlanName":{
+          "shape":"BackupPlanName",
+          "documentation":"<p>The display name of a saved backup plan.</p>"
+        },
+        "CreatorRequestId":{
+          "shape":"string",
+          "documentation":"<p>A unique string that identifies the request and allows failed requests to be retried without the risk of running the operation twice.</p>"
+        },
+        "LastExecutionDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The last time a job to back up resources was run with this rule. A date and time, in Unix format and Coordinated Universal Time (UTC). The value of <code>LastExecutionDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "AdvancedBackupSettings":{
+          "shape":"AdvancedBackupSettings",
+          "documentation":"<p>Contains a list of <code>BackupOptions</code> for a resource type.</p>"
+        }
+      },
+      "documentation":"<p>Contains metadata about a backup plan.</p>"
+    },
+    "BackupRule":{
+      "type":"structure",
+      "required":[
+        "RuleName",
+        "TargetBackupVaultName"
+      ],
+      "members":{
+        "RuleName":{
+          "shape":"BackupRuleName",
+          "documentation":"<p>An optional display name for a backup rule.</p>"
+        },
+        "TargetBackupVaultName":{
+          "shape":"BackupVaultName",
+          "documentation":"<p>The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the AWS Region where they are created. They consist of lowercase letters, numbers, and hyphens.</p>"
+        },
+        "ScheduleExpression":{
+          "shape":"CronExpression",
+          "documentation":"<p>A CRON expression specifying when AWS Backup initiates a backup job. For more information about cron expressions, see <a href=\"https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html\">Schedule Expressions for Rules</a> in the <i>Amazon CloudWatch Events User Guide.</i>. Prior to specifying a value for this parameter, we recommend testing your cron expression using one of the many available cron generator and testing tools.</p>"
+        },
+        "StartWindowMinutes":{
+          "shape":"WindowMinutes",
+          "documentation":"<p>A value in minutes after a backup is scheduled before a job will be canceled if it doesn't start successfully. This value is optional.</p>"
+        },
+        "CompletionWindowMinutes":{
+          "shape":"WindowMinutes",
+          "documentation":"<p>A value in minutes after a backup job is successfully started before it must be completed or it will be canceled by AWS Backup. This value is optional.</p>"
+        },
+        "Lifecycle":{
+          "shape":"Lifecycle",
+          "documentation":"<p>The lifecycle defines when a protected resource is transitioned to cold storage and when it expires. AWS Backup transitions and expires backups automatically according to the lifecycle that you define. </p> <p>Backups transitioned to cold storage must be stored in cold storage for a minimum of 90 days. Therefore, the “expire after days” setting must be 90 days greater than the “transition to cold after days” setting. The “transition to cold after days” setting cannot be changed after a backup has been transitioned to cold. </p> <p>Only Amazon EFS file system backups can be transitioned to cold storage.</p>"
+        },
+        "RecoveryPointTags":{
+          "shape":"Tags",
+          "documentation":"<p>An array of key-value pair strings that are assigned to resources that are associated with this rule when restored from backup.</p>"
+        },
+        "RuleId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a rule that is used to schedule the backup of a selection of resources.</p>"
+        },
+        "CopyActions":{
+          "shape":"CopyActions",
+          "documentation":"<p>An array of <code>CopyAction</code> objects, which contains the details of the copy operation.</p>"
+        },
+        "EnableContinuousBackup":{
+          "shape":"Boolean",
+          "documentation":"<p>Specifies whether AWS Backup creates continuous backups. True causes AWS Backup to create continuous backups capable of point-in-time restore (PITR). False (or not specified) causes AWS Backup to create snapshot backups.</p>"
+        }
+      },
+      "documentation":"<p>Specifies a scheduled task used to back up a selection of resources.</p>"
+    },
+    "BackupRuleInput":{
+      "type":"structure",
+      "required":[
+        "RuleName",
+        "TargetBackupVaultName"
+      ],
+      "members":{
+        "RuleName":{
+          "shape":"BackupRuleName",
+          "documentation":"<p>An optional display name for a backup rule.</p>"
+        },
+        "TargetBackupVaultName":{
+          "shape":"BackupVaultName",
+          "documentation":"<p>The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the AWS Region where they are created. They consist of lowercase letters, numbers, and hyphens.</p>"
+        },
+        "ScheduleExpression":{
+          "shape":"CronExpression",
+          "documentation":"<p>A CRON expression specifying when AWS Backup initiates a backup job.</p>"
+        },
+        "StartWindowMinutes":{
+          "shape":"WindowMinutes",
+          "documentation":"<p>A value in minutes after a backup is scheduled before a job will be canceled if it doesn't start successfully. This value is optional.</p>"
+        },
+        "CompletionWindowMinutes":{
+          "shape":"WindowMinutes",
+          "documentation":"<p>A value in minutes after a backup job is successfully started before it must be completed or it will be canceled by AWS Backup. This value is optional.</p>"
+        },
+        "Lifecycle":{
+          "shape":"Lifecycle",
+          "documentation":"<p>The lifecycle defines when a protected resource is transitioned to cold storage and when it expires. AWS Backup will transition and expire backups automatically according to the lifecycle that you define. </p> <p>Backups transitioned to cold storage must be stored in cold storage for a minimum of 90 days. Therefore, the “expire after days” setting must be 90 days greater than the “transition to cold after days” setting. The “transition to cold after days” setting cannot be changed after a backup has been transitioned to cold. </p> <p>Only Amazon EFS file system backups can be transitioned to cold storage.</p>"
+        },
+        "RecoveryPointTags":{
+          "shape":"Tags",
+          "documentation":"<p>To help organize your resources, you can assign your own metadata to the resources that you create. Each tag is a key-value pair.</p>"
+        },
+        "CopyActions":{
+          "shape":"CopyActions",
+          "documentation":"<p>An array of <code>CopyAction</code> objects, which contains the details of the copy operation.</p>"
+        },
+        "EnableContinuousBackup":{
+          "shape":"Boolean",
+          "documentation":"<p>Specifies whether AWS Backup creates continuous backups. True causes AWS Backup to create continuous backups capable of point-in-time restore (PITR). False (or not specified) causes AWS Backup to create snapshot backups.</p>"
+        }
+      },
+      "documentation":"<p>Specifies a scheduled task used to back up a selection of resources.</p>"
+    },
+    "BackupRuleName":{
+      "type":"string",
+      "pattern":"^[a-zA-Z0-9\\-\\_\\.]{1,50}$"
+    },
+    "BackupRules":{
+      "type":"list",
+      "member":{"shape":"BackupRule"}
+    },
+    "BackupRulesInput":{
+      "type":"list",
+      "member":{"shape":"BackupRuleInput"}
+    },
+    "BackupSelection":{
+      "type":"structure",
+      "required":[
+        "SelectionName",
+        "IamRoleArn"
+      ],
+      "members":{
+        "SelectionName":{
+          "shape":"BackupSelectionName",
+          "documentation":"<p>The display name of a resource selection document.</p>"
+        },
+        "IamRoleArn":{
+          "shape":"IAMRoleArn",
+          "documentation":"<p>The ARN of the IAM role that AWS Backup uses to authenticate when backing up the target resource; for example, <code>arn:aws:iam::123456789012:role/S3Access</code>.</p>"
+        },
+        "Resources":{
+          "shape":"ResourceArns",
+          "documentation":"<p>An array of strings that contain Amazon Resource Names (ARNs) of resources to assign to a backup plan.</p>"
+        },
+        "ListOfTags":{
+          "shape":"ListOfTags",
+          "documentation":"<p>An array of conditions used to specify a set of resources to assign to a backup plan; for example, <code>\"StringEquals\": {\"ec2:ResourceTag/Department\": \"accounting\"</code>. Assigns the backup plan to every resource with at least one matching tag.</p>"
+        }
+      },
+      "documentation":"<p>Used to specify a set of resources to a backup plan.</p>"
+    },
+    "BackupSelectionName":{
+      "type":"string",
+      "pattern":"^[a-zA-Z0-9\\-\\_\\.]{1,50}$"
+    },
+    "BackupSelectionsList":{
+      "type":"list",
+      "member":{"shape":"BackupSelectionsListMember"}
+    },
+    "BackupSelectionsListMember":{
+      "type":"structure",
+      "members":{
+        "SelectionId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a request to assign a set of resources to a backup plan.</p>"
+        },
+        "SelectionName":{
+          "shape":"BackupSelectionName",
+          "documentation":"<p>The display name of a resource selection document.</p>"
+        },
+        "BackupPlanId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a backup plan.</p>"
+        },
+        "CreationDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time a backup plan is created, in Unix format and Coordinated Universal Time (UTC). The value of <code>CreationDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "CreatorRequestId":{
+          "shape":"string",
+          "documentation":"<p>A unique string that identifies the request and allows failed requests to be retried without the risk of running the operation twice.</p>"
+        },
+        "IamRoleArn":{
+          "shape":"IAMRoleArn",
+          "documentation":"<p>Specifies the IAM role Amazon Resource Name (ARN) to create the target recovery point; for example, <code>arn:aws:iam::123456789012:role/S3Access</code>.</p>"
+        }
+      },
+      "documentation":"<p>Contains metadata about a <code>BackupSelection</code> object.</p>"
+    },
+    "BackupVaultEvent":{
+      "type":"string",
+      "enum":[
+        "BACKUP_JOB_STARTED",
+        "BACKUP_JOB_COMPLETED",
+        "BACKUP_JOB_SUCCESSFUL",
+        "BACKUP_JOB_FAILED",
+        "BACKUP_JOB_EXPIRED",
+        "RESTORE_JOB_STARTED",
+        "RESTORE_JOB_COMPLETED",
+        "RESTORE_JOB_SUCCESSFUL",
+        "RESTORE_JOB_FAILED",
+        "COPY_JOB_STARTED",
+        "COPY_JOB_SUCCESSFUL",
+        "COPY_JOB_FAILED",
+        "RECOVERY_POINT_MODIFIED",
+        "BACKUP_PLAN_CREATED",
+        "BACKUP_PLAN_MODIFIED"
+      ]
+    },
+    "BackupVaultEvents":{
+      "type":"list",
+      "member":{"shape":"BackupVaultEvent"}
+    },
+    "BackupVaultList":{
+      "type":"list",
+      "member":{"shape":"BackupVaultListMember"}
+    },
+    "BackupVaultListMember":{
+      "type":"structure",
+      "members":{
+        "BackupVaultName":{
+          "shape":"BackupVaultName",
+          "documentation":"<p>The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the AWS Region where they are created. They consist of lowercase letters, numbers, and hyphens.</p>"
+        },
+        "BackupVaultArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a backup vault; for example, <code>arn:aws:backup:us-east-1:123456789012:vault:aBackupVault</code>.</p>"
+        },
+        "CreationDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time a resource backup is created, in Unix format and Coordinated Universal Time (UTC). The value of <code>CreationDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "EncryptionKeyArn":{
+          "shape":"ARN",
+          "documentation":"<p>The server-side encryption key that is used to protect your backups; for example, <code>arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab</code>.</p>"
+        },
+        "CreatorRequestId":{
+          "shape":"string",
+          "documentation":"<p>A unique string that identifies the request and allows failed requests to be retried without the risk of running the operation twice.</p>"
+        },
+        "NumberOfRecoveryPoints":{
+          "shape":"long",
+          "documentation":"<p>The number of recovery points that are stored in a backup vault.</p>"
+        }
+      },
+      "documentation":"<p>Contains metadata about a backup vault.</p>"
+    },
+    "BackupVaultName":{
+      "type":"string",
+      "pattern":"^[a-zA-Z0-9\\-\\_]{2,50}$"
+    },
+    "Boolean":{"type":"boolean"},
+    "CalculatedLifecycle":{
+      "type":"structure",
+      "members":{
+        "MoveToColdStorageAt":{
+          "shape":"timestamp",
+          "documentation":"<p>A timestamp that specifies when to transition a recovery point to cold storage.</p>"
+        },
+        "DeleteAt":{
+          "shape":"timestamp",
+          "documentation":"<p>A timestamp that specifies when to delete a recovery point.</p>"
+        }
+      },
+      "documentation":"<p>Contains <code>DeleteAt</code> and <code>MoveToColdStorageAt</code> timestamps, which are used to specify a lifecycle for a recovery point.</p> <p>The lifecycle defines when a protected resource is transitioned to cold storage and when it expires. AWS Backup transitions and expires backups automatically according to the lifecycle that you define.</p> <p>Backups transitioned to cold storage must be stored in cold storage for a minimum of 90 days. Therefore, the “expire after days” setting must be 90 days greater than the “transition to cold after days” setting. The “transition to cold after days” setting cannot be changed after a backup has been transitioned to cold.</p> <p>Only Amazon EFS file system backups can be transitioned to cold storage.</p>"
+    },
+    "Condition":{
+      "type":"structure",
+      "required":[
+        "ConditionType",
+        "ConditionKey",
+        "ConditionValue"
+      ],
+      "members":{
+        "ConditionType":{
+          "shape":"ConditionType",
+          "documentation":"<p>An operation, such as <code>StringEquals</code>, that is applied to a key-value pair used to filter resources in a selection.</p>"
+        },
+        "ConditionKey":{
+          "shape":"ConditionKey",
+          "documentation":"<p>The key in a key-value pair. For example, in <code>\"ec2:ResourceTag/Department\": \"accounting\"</code>, <code>\"ec2:ResourceTag/Department\"</code> is the key.</p>"
+        },
+        "ConditionValue":{
+          "shape":"ConditionValue",
+          "documentation":"<p>The value in a key-value pair. For example, in <code>\"ec2:ResourceTag/Department\": \"accounting\"</code>, <code>\"accounting\"</code> is the value.</p>"
+        }
+      },
+      "documentation":"<p>Contains an array of triplets made up of a condition type (such as <code>StringEquals</code>), a key, and a value. Conditions are used to filter resources in a selection that is assigned to a backup plan.</p>"
+    },
+    "ConditionKey":{"type":"string"},
+    "ConditionType":{
+      "type":"string",
+      "enum":["STRINGEQUALS"]
+    },
+    "ConditionValue":{"type":"string"},
+    "CopyAction":{
+      "type":"structure",
+      "required":["DestinationBackupVaultArn"],
+      "members":{
+        "Lifecycle":{"shape":"Lifecycle"},
+        "DestinationBackupVaultArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies the destination backup vault for the copied backup. For example, <code>arn:aws:backup:us-east-1:123456789012:vault:aBackupVault</code>.</p>"
+        }
+      },
+      "documentation":"<p>The details of the copy operation.</p>"
+    },
+    "CopyActions":{
+      "type":"list",
+      "member":{"shape":"CopyAction"}
+    },
+    "CopyJob":{
+      "type":"structure",
+      "members":{
+        "AccountId":{
+          "shape":"AccountId",
+          "documentation":"<p>The account ID that owns the copy job.</p>"
+        },
+        "CopyJobId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a copy job.</p>"
+        },
+        "SourceBackupVaultArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a source copy vault; for example, <code>arn:aws:backup:us-east-1:123456789012:vault:aBackupVault</code>. </p>"
+        },
+        "SourceRecoveryPointArn":{
+          "shape":"ARN",
+          "documentation":"<p>An ARN that uniquely identifies a source recovery point; for example, <code>arn:aws:backup:us-east-1:123456789012:recovery-point:1EB3B5E7-9EB0-435A-A80B-108B488B0D45</code>.</p>"
+        },
+        "DestinationBackupVaultArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a destination copy vault; for example, <code>arn:aws:backup:us-east-1:123456789012:vault:aBackupVault</code>.</p>"
+        },
+        "DestinationRecoveryPointArn":{
+          "shape":"ARN",
+          "documentation":"<p>An ARN that uniquely identifies a destination recovery point; for example, <code>arn:aws:backup:us-east-1:123456789012:recovery-point:1EB3B5E7-9EB0-435A-A80B-108B488B0D45</code>.</p>"
+        },
+        "ResourceArn":{
+          "shape":"ARN",
+          "documentation":"<p>The AWS resource to be copied; for example, an Amazon Elastic Block Store (Amazon EBS) volume or an Amazon Relational Database Service (Amazon RDS) database.</p>"
+        },
+        "CreationDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time a copy job is created, in Unix format and Coordinated Universal Time (UTC). The value of <code>CreationDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "CompletionDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time a copy job is completed, in Unix format and Coordinated Universal Time (UTC). The value of <code>CompletionDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "State":{
+          "shape":"CopyJobState",
+          "documentation":"<p>The current state of a copy job.</p>"
+        },
+        "StatusMessage":{
+          "shape":"string",
+          "documentation":"<p>A detailed message explaining the status of the job to copy a resource.</p>"
+        },
+        "BackupSizeInBytes":{
+          "shape":"Long",
+          "documentation":"<p>The size, in bytes, of a copy job.</p>"
+        },
+        "IamRoleArn":{
+          "shape":"IAMRoleArn",
+          "documentation":"<p>Specifies the IAM role ARN used to copy the target recovery point; for example, <code>arn:aws:iam::123456789012:role/S3Access</code>.</p>"
+        },
+        "CreatedBy":{"shape":"RecoveryPointCreator"},
+        "ResourceType":{
+          "shape":"ResourceType",
+          "documentation":"<p>The type of AWS resource to be copied; for example, an Amazon Elastic Block Store (Amazon EBS) volume or an Amazon Relational Database Service (Amazon RDS) database.</p>"
+        }
+      },
+      "documentation":"<p>Contains detailed information about a copy job.</p>"
+    },
+    "CopyJobState":{
+      "type":"string",
+      "enum":[
+        "CREATED",
+        "RUNNING",
+        "COMPLETED",
+        "FAILED"
+      ]
+    },
+    "CopyJobsList":{
+      "type":"list",
+      "member":{"shape":"CopyJob"}
+    },
+    "CreateBackupPlanInput":{
+      "type":"structure",
+      "required":["BackupPlan"],
+      "members":{
+        "BackupPlan":{
+          "shape":"BackupPlanInput",
+          "documentation":"<p>Specifies the body of a backup plan. Includes a <code>BackupPlanName</code> and one or more sets of <code>Rules</code>.</p>"
+        },
+        "BackupPlanTags":{
+          "shape":"Tags",
+          "documentation":"<p>To help organize your resources, you can assign your own metadata to the resources that you create. Each tag is a key-value pair. The specified tags are assigned to all backups created with this plan.</p>"
+        },
+        "CreatorRequestId":{
+          "shape":"string",
+          "documentation":"<p>Identifies the request and allows failed requests to be retried without the risk of running the operation twice. If the request includes a <code>CreatorRequestId</code> that matches an existing backup plan, that plan is returned. This parameter is optional.</p>"
+        }
+      }
+    },
+    "CreateBackupPlanOutput":{
+      "type":"structure",
+      "members":{
+        "BackupPlanId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a backup plan.</p>"
+        },
+        "BackupPlanArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a backup plan; for example, <code>arn:aws:backup:us-east-1:123456789012:plan:8F81F553-3A74-4A3F-B93D-B3360DC80C50</code>.</p>"
+        },
+        "CreationDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time that a backup plan is created, in Unix format and Coordinated Universal Time (UTC). The value of <code>CreationDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "VersionId":{
+          "shape":"string",
+          "documentation":"<p>Unique, randomly generated, Unicode, UTF-8 encoded strings that are at most 1,024 bytes long. They cannot be edited.</p>"
+        },
+        "AdvancedBackupSettings":{
+          "shape":"AdvancedBackupSettings",
+          "documentation":"<p>A list of <code>BackupOptions</code> settings for a resource type. This option is only available for Windows VSS backup jobs.</p>"
+        }
+      }
+    },
+    "CreateBackupSelectionInput":{
+      "type":"structure",
+      "required":[
+        "BackupPlanId",
+        "BackupSelection"
+      ],
+      "members":{
+        "BackupPlanId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies the backup plan to be associated with the selection of resources.</p>",
+          "location":"uri",
+          "locationName":"backupPlanId"
+        },
+        "BackupSelection":{
+          "shape":"BackupSelection",
+          "documentation":"<p>Specifies the body of a request to assign a set of resources to a backup plan.</p>"
+        },
+        "CreatorRequestId":{
+          "shape":"string",
+          "documentation":"<p>A unique string that identifies the request and allows failed requests to be retried without the risk of running the operation twice.</p>"
+        }
+      }
+    },
+    "CreateBackupSelectionOutput":{
+      "type":"structure",
+      "members":{
+        "SelectionId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies the body of a request to assign a set of resources to a backup plan.</p>"
+        },
+        "BackupPlanId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a backup plan.</p>"
+        },
+        "CreationDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time a backup selection is created, in Unix format and Coordinated Universal Time (UTC). The value of <code>CreationDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        }
+      }
+    },
+    "CreateBackupVaultInput":{
+      "type":"structure",
+      "required":["BackupVaultName"],
+      "members":{
+        "BackupVaultName":{
+          "shape":"BackupVaultName",
+          "documentation":"<p>The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the AWS Region where they are created. They consist of letters, numbers, and hyphens.</p>",
+          "location":"uri",
+          "locationName":"backupVaultName"
+        },
+        "BackupVaultTags":{
+          "shape":"Tags",
+          "documentation":"<p>Metadata that you can assign to help organize the resources that you create. Each tag is a key-value pair.</p>"
+        },
+        "EncryptionKeyArn":{
+          "shape":"ARN",
+          "documentation":"<p>The server-side encryption key that is used to protect your backups; for example, <code>arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab</code>.</p>"
+        },
+        "CreatorRequestId":{
+          "shape":"string",
+          "documentation":"<p>A unique string that identifies the request and allows failed requests to be retried without the risk of running the operation twice.</p>"
+        }
+      }
+    },
+    "CreateBackupVaultOutput":{
+      "type":"structure",
+      "members":{
+        "BackupVaultName":{
+          "shape":"BackupVaultName",
+          "documentation":"<p>The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the Region where they are created. They consist of lowercase letters, numbers, and hyphens.</p>"
+        },
+        "BackupVaultArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a backup vault; for example, <code>arn:aws:backup:us-east-1:123456789012:vault:aBackupVault</code>.</p>"
+        },
+        "CreationDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time a backup vault is created, in Unix format and Coordinated Universal Time (UTC). The value of <code>CreationDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        }
+      }
+    },
+    "CronExpression":{"type":"string"},
+    "DeleteBackupPlanInput":{
+      "type":"structure",
+      "required":["BackupPlanId"],
+      "members":{
+        "BackupPlanId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a backup plan.</p>",
+          "location":"uri",
+          "locationName":"backupPlanId"
+        }
+      }
+    },
+    "DeleteBackupPlanOutput":{
+      "type":"structure",
+      "members":{
+        "BackupPlanId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a backup plan.</p>"
+        },
+        "BackupPlanArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a backup plan; for example, <code>arn:aws:backup:us-east-1:123456789012:plan:8F81F553-3A74-4A3F-B93D-B3360DC80C50</code>.</p>"
+        },
+        "DeletionDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time a backup plan is deleted, in Unix format and Coordinated Universal Time (UTC). The value of <code>DeletionDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "VersionId":{
+          "shape":"string",
+          "documentation":"<p>Unique, randomly generated, Unicode, UTF-8 encoded strings that are at most 1,024 bytes long. Version IDs cannot be edited.</p>"
+        }
+      }
+    },
+    "DeleteBackupSelectionInput":{
+      "type":"structure",
+      "required":[
+        "BackupPlanId",
+        "SelectionId"
+      ],
+      "members":{
+        "BackupPlanId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a backup plan.</p>",
+          "location":"uri",
+          "locationName":"backupPlanId"
+        },
+        "SelectionId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies the body of a request to assign a set of resources to a backup plan.</p>",
+          "location":"uri",
+          "locationName":"selectionId"
+        }
+      }
+    },
+    "DeleteBackupVaultAccessPolicyInput":{
+      "type":"structure",
+      "required":["BackupVaultName"],
+      "members":{
+        "BackupVaultName":{
+          "shape":"BackupVaultName",
+          "documentation":"<p>The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the AWS Region where they are created. They consist of lowercase letters, numbers, and hyphens.</p>",
+          "location":"uri",
+          "locationName":"backupVaultName"
+        }
+      }
+    },
+    "DeleteBackupVaultInput":{
+      "type":"structure",
+      "required":["BackupVaultName"],
+      "members":{
+        "BackupVaultName":{
+          "shape":"string",
+          "documentation":"<p>The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the AWS Region where they are created. They consist of lowercase letters, numbers, and hyphens.</p>",
+          "location":"uri",
+          "locationName":"backupVaultName"
+        }
+      }
+    },
+    "DeleteBackupVaultNotificationsInput":{
+      "type":"structure",
+      "required":["BackupVaultName"],
+      "members":{
+        "BackupVaultName":{
+          "shape":"BackupVaultName",
+          "documentation":"<p>The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the Region where they are created. They consist of lowercase letters, numbers, and hyphens.</p>",
+          "location":"uri",
+          "locationName":"backupVaultName"
+        }
+      }
+    },
+    "DeleteRecoveryPointInput":{
+      "type":"structure",
+      "required":[
+        "BackupVaultName",
+        "RecoveryPointArn"
+      ],
+      "members":{
+        "BackupVaultName":{
+          "shape":"BackupVaultName",
+          "documentation":"<p>The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the AWS Region where they are created. They consist of lowercase letters, numbers, and hyphens.</p>",
+          "location":"uri",
+          "locationName":"backupVaultName"
+        },
+        "RecoveryPointArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a recovery point; for example, <code>arn:aws:backup:us-east-1:123456789012:recovery-point:1EB3B5E7-9EB0-435A-A80B-108B488B0D45</code>.</p>",
+          "location":"uri",
+          "locationName":"recoveryPointArn"
+        }
+      }
+    },
+    "DependencyFailureException":{
+      "type":"structure",
+      "members":{
+        "Code":{"shape":"string"},
+        "Message":{"shape":"string"},
+        "Type":{
+          "shape":"string",
+          "documentation":"<p/>"
+        },
+        "Context":{
+          "shape":"string",
+          "documentation":"<p/>"
+        }
+      },
+      "documentation":"<p>A dependent AWS service or resource returned an error to the AWS Backup service, and the action cannot be completed.</p>",
+      "exception":true,
+      "fault":true
+    },
+    "DescribeBackupJobInput":{
+      "type":"structure",
+      "required":["BackupJobId"],
+      "members":{
+        "BackupJobId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a request to AWS Backup to back up a resource.</p>",
+          "location":"uri",
+          "locationName":"backupJobId"
+        }
+      }
+    },
+    "DescribeBackupJobOutput":{
+      "type":"structure",
+      "members":{
+        "AccountId":{
+          "shape":"AccountId",
+          "documentation":"<p>Returns the account ID that owns the backup job.</p>"
+        },
+        "BackupJobId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a request to AWS Backup to back up a resource.</p>"
+        },
+        "BackupVaultName":{
+          "shape":"BackupVaultName",
+          "documentation":"<p>The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the AWS Region where they are created. They consist of lowercase letters, numbers, and hyphens.</p>"
+        },
+        "BackupVaultArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a backup vault; for example, <code>arn:aws:backup:us-east-1:123456789012:vault:aBackupVault</code>.</p>"
+        },
+        "RecoveryPointArn":{
+          "shape":"ARN",
+          "documentation":"<p>An ARN that uniquely identifies a recovery point; for example, <code>arn:aws:backup:us-east-1:123456789012:recovery-point:1EB3B5E7-9EB0-435A-A80B-108B488B0D45</code>.</p>"
+        },
+        "ResourceArn":{
+          "shape":"ARN",
+          "documentation":"<p>An ARN that uniquely identifies a saved resource. The format of the ARN depends on the resource type.</p>"
+        },
+        "CreationDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time that a backup job is created, in Unix format and Coordinated Universal Time (UTC). The value of <code>CreationDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "CompletionDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time that a job to create a backup job is completed, in Unix format and Coordinated Universal Time (UTC). The value of <code>CompletionDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "State":{
+          "shape":"BackupJobState",
+          "documentation":"<p>The current state of a resource recovery point.</p>"
+        },
+        "StatusMessage":{
+          "shape":"string",
+          "documentation":"<p>A detailed message explaining the status of the job to back up a resource.</p>"
+        },
+        "PercentDone":{
+          "shape":"string",
+          "documentation":"<p>Contains an estimated percentage that is complete of a job at the time the job status was queried.</p>"
+        },
+        "BackupSizeInBytes":{
+          "shape":"Long",
+          "documentation":"<p>The size, in bytes, of a backup.</p>"
+        },
+        "IamRoleArn":{
+          "shape":"IAMRoleArn",
+          "documentation":"<p>Specifies the IAM role ARN used to create the target recovery point; for example, <code>arn:aws:iam::123456789012:role/S3Access</code>.</p>"
+        },
+        "CreatedBy":{
+          "shape":"RecoveryPointCreator",
+          "documentation":"<p>Contains identifying information about the creation of a backup job, including the <code>BackupPlanArn</code>, <code>BackupPlanId</code>, <code>BackupPlanVersion</code>, and <code>BackupRuleId</code> of the backup plan that is used to create it.</p>"
+        },
+        "ResourceType":{
+          "shape":"ResourceType",
+          "documentation":"<p>The type of AWS resource to be backed up; for example, an Amazon Elastic Block Store (Amazon EBS) volume or an Amazon Relational Database Service (Amazon RDS) database.</p>"
+        },
+        "BytesTransferred":{
+          "shape":"Long",
+          "documentation":"<p>The size in bytes transferred to a backup vault at the time that the job status was queried.</p>"
+        },
+        "ExpectedCompletionDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time that a job to back up resources is expected to be completed, in Unix format and Coordinated Universal Time (UTC). The value of <code>ExpectedCompletionDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "StartBy":{
+          "shape":"timestamp",
+          "documentation":"<p>Specifies the time in Unix format and Coordinated Universal Time (UTC) when a backup job must be started before it is canceled. The value is calculated by adding the start window to the scheduled time. So if the scheduled time were 6:00 PM and the start window is 2 hours, the <code>StartBy</code> time would be 8:00 PM on the date specified. The value of <code>StartBy</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "BackupOptions":{
+          "shape":"BackupOptions",
+          "documentation":"<p>Represents the options specified as part of backup plan or on-demand backup job.</p>"
+        },
+        "BackupType":{
+          "shape":"string",
+          "documentation":"<p>Represents the actual backup type selected for a backup job. For example, if a successful WindowsVSS backup was taken, <code>BackupType</code> returns \"WindowsVSS\". If <code>BackupType</code> is empty, then the backup type that was is a regular backup.</p>"
+        }
+      }
+    },
+    "DescribeBackupVaultInput":{
+      "type":"structure",
+      "required":["BackupVaultName"],
+      "members":{
+        "BackupVaultName":{
+          "shape":"string",
+          "documentation":"<p>The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the AWS Region where they are created. They consist of lowercase letters, numbers, and hyphens.</p>",
+          "location":"uri",
+          "locationName":"backupVaultName"
+        }
+      }
+    },
+    "DescribeBackupVaultOutput":{
+      "type":"structure",
+      "members":{
+        "BackupVaultName":{
+          "shape":"string",
+          "documentation":"<p>The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the Region where they are created. They consist of lowercase letters, numbers, and hyphens.</p>"
+        },
+        "BackupVaultArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a backup vault; for example, <code>arn:aws:backup:us-east-1:123456789012:vault:aBackupVault</code>.</p>"
+        },
+        "EncryptionKeyArn":{
+          "shape":"ARN",
+          "documentation":"<p>The server-side encryption key that is used to protect your backups; for example, <code>arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab</code>.</p>"
+        },
+        "CreationDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time that a backup vault is created, in Unix format and Coordinated Universal Time (UTC). The value of <code>CreationDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "CreatorRequestId":{
+          "shape":"string",
+          "documentation":"<p>A unique string that identifies the request and allows failed requests to be retried without the risk of running the operation twice.</p>"
+        },
+        "NumberOfRecoveryPoints":{
+          "shape":"long",
+          "documentation":"<p>The number of recovery points that are stored in a backup vault.</p>"
+        }
+      }
+    },
+    "DescribeCopyJobInput":{
+      "type":"structure",
+      "required":["CopyJobId"],
+      "members":{
+        "CopyJobId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a copy job.</p>",
+          "location":"uri",
+          "locationName":"copyJobId"
+        }
+      }
+    },
+    "DescribeCopyJobOutput":{
+      "type":"structure",
+      "members":{
+        "CopyJob":{
+          "shape":"CopyJob",
+          "documentation":"<p>Contains detailed information about a copy job.</p>"
+        }
+      }
+    },
+    "DescribeGlobalSettingsInput":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DescribeGlobalSettingsOutput":{
+      "type":"structure",
+      "members":{
+        "GlobalSettings":{
+          "shape":"GlobalSettings",
+          "documentation":"<p>A list of resources along with the opt-in preferences for the account.</p>"
+        },
+        "LastUpdateTime":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time that the global settings were last updated. This update is in Unix format and Coordinated Universal Time (UTC). The value of <code>LastUpdateTime</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        }
+      }
+    },
+    "DescribeProtectedResourceInput":{
+      "type":"structure",
+      "required":["ResourceArn"],
+      "members":{
+        "ResourceArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a resource. The format of the ARN depends on the resource type.</p>",
+          "location":"uri",
+          "locationName":"resourceArn"
+        }
+      }
+    },
+    "DescribeProtectedResourceOutput":{
+      "type":"structure",
+      "members":{
+        "ResourceArn":{
+          "shape":"ARN",
+          "documentation":"<p>An ARN that uniquely identifies a resource. The format of the ARN depends on the resource type.</p>"
+        },
+        "ResourceType":{
+          "shape":"ResourceType",
+          "documentation":"<p>The type of AWS resource saved as a recovery point; for example, an EBS volume or an Amazon RDS database.</p>"
+        },
+        "LastBackupTime":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time that a resource was last backed up, in Unix format and Coordinated Universal Time (UTC). The value of <code>LastBackupTime</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        }
+      }
+    },
+    "DescribeRecoveryPointInput":{
+      "type":"structure",
+      "required":[
+        "BackupVaultName",
+        "RecoveryPointArn"
+      ],
+      "members":{
+        "BackupVaultName":{
+          "shape":"BackupVaultName",
+          "documentation":"<p>The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the AWS Region where they are created. They consist of lowercase letters, numbers, and hyphens.</p>",
+          "location":"uri",
+          "locationName":"backupVaultName"
+        },
+        "RecoveryPointArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a recovery point; for example, <code>arn:aws:backup:us-east-1:123456789012:recovery-point:1EB3B5E7-9EB0-435A-A80B-108B488B0D45</code>.</p>",
+          "location":"uri",
+          "locationName":"recoveryPointArn"
+        }
+      }
+    },
+    "DescribeRecoveryPointOutput":{
+      "type":"structure",
+      "members":{
+        "RecoveryPointArn":{
+          "shape":"ARN",
+          "documentation":"<p>An ARN that uniquely identifies a recovery point; for example, <code>arn:aws:backup:us-east-1:123456789012:recovery-point:1EB3B5E7-9EB0-435A-A80B-108B488B0D45</code>.</p>"
+        },
+        "BackupVaultName":{
+          "shape":"BackupVaultName",
+          "documentation":"<p>The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the Region where they are created. They consist of lowercase letters, numbers, and hyphens.</p>"
+        },
+        "BackupVaultArn":{
+          "shape":"ARN",
+          "documentation":"<p>An ARN that uniquely identifies a backup vault; for example, <code>arn:aws:backup:us-east-1:123456789012:vault:aBackupVault</code>.</p>"
+        },
+        "SourceBackupVaultArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies the source vault where the resource was originally backed up in; for example, <code>arn:aws:backup:us-east-1:123456789012:vault:BackupVault</code>. If the recovery is restored to the same AWS account or Region, this value will be <code>null</code>.</p>"
+        },
+        "ResourceArn":{
+          "shape":"ARN",
+          "documentation":"<p>An ARN that uniquely identifies a saved resource. The format of the ARN depends on the resource type.</p>"
+        },
+        "ResourceType":{
+          "shape":"ResourceType",
+          "documentation":"<p>The type of AWS resource to save as a recovery point; for example, an Amazon Elastic Block Store (Amazon EBS) volume or an Amazon Relational Database Service (Amazon RDS) database.</p>"
+        },
+        "CreatedBy":{
+          "shape":"RecoveryPointCreator",
+          "documentation":"<p>Contains identifying information about the creation of a recovery point, including the <code>BackupPlanArn</code>, <code>BackupPlanId</code>, <code>BackupPlanVersion</code>, and <code>BackupRuleId</code> of the backup plan used to create it.</p>"
+        },
+        "IamRoleArn":{
+          "shape":"IAMRoleArn",
+          "documentation":"<p>Specifies the IAM role ARN used to create the target recovery point; for example, <code>arn:aws:iam::123456789012:role/S3Access</code>.</p>"
+        },
+        "Status":{
+          "shape":"RecoveryPointStatus",
+          "documentation":"<p>A status code specifying the state of the recovery point.</p> <note> <p>A partial status indicates that the recovery point was not successfully re-created and must be retried.</p> </note>"
+        },
+        "CreationDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time that a recovery point is created, in Unix format and Coordinated Universal Time (UTC). The value of <code>CreationDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "CompletionDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time that a job to create a recovery point is completed, in Unix format and Coordinated Universal Time (UTC). The value of <code>CompletionDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "BackupSizeInBytes":{
+          "shape":"Long",
+          "documentation":"<p>The size, in bytes, of a backup.</p>"
+        },
+        "CalculatedLifecycle":{
+          "shape":"CalculatedLifecycle",
+          "documentation":"<p>A <code>CalculatedLifecycle</code> object containing <code>DeleteAt</code> and <code>MoveToColdStorageAt</code> timestamps.</p>"
+        },
+        "Lifecycle":{
+          "shape":"Lifecycle",
+          "documentation":"<p>The lifecycle defines when a protected resource is transitioned to cold storage and when it expires. AWS Backup transitions and expires backups automatically according to the lifecycle that you define. </p> <p>Backups that are transitioned to cold storage must be stored in cold storage for a minimum of 90 days. Therefore, the “expire after days” setting must be 90 days greater than the “transition to cold after days” setting. The “transition to cold after days” setting cannot be changed after a backup has been transitioned to cold. </p> <p>Only Amazon EFS file system backups can be transitioned to cold storage.</p>"
+        },
+        "EncryptionKeyArn":{
+          "shape":"ARN",
+          "documentation":"<p>The server-side encryption key used to protect your backups; for example, <code>arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab</code>.</p>"
+        },
+        "IsEncrypted":{
+          "shape":"boolean",
+          "documentation":"<p>A Boolean value that is returned as <code>TRUE</code> if the specified recovery point is encrypted, or <code>FALSE</code> if the recovery point is not encrypted.</p>"
+        },
+        "StorageClass":{
+          "shape":"StorageClass",
+          "documentation":"<p>Specifies the storage class of the recovery point. Valid values are <code>WARM</code> or <code>COLD</code>.</p>"
+        },
+        "LastRestoreTime":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time that a recovery point was last restored, in Unix format and Coordinated Universal Time (UTC). The value of <code>LastRestoreTime</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        }
+      }
+    },
+    "DescribeRegionSettingsInput":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "DescribeRegionSettingsOutput":{
+      "type":"structure",
+      "members":{
+        "ResourceTypeOptInPreference":{
+          "shape":"ResourceTypeOptInPreference",
+          "documentation":"<p>Returns a list of all services along with the opt-in preferences in the Region.</p>"
+        }
+      }
+    },
+    "DescribeRestoreJobInput":{
+      "type":"structure",
+      "required":["RestoreJobId"],
+      "members":{
+        "RestoreJobId":{
+          "shape":"RestoreJobId",
+          "documentation":"<p>Uniquely identifies the job that restores a recovery point.</p>",
+          "location":"uri",
+          "locationName":"restoreJobId"
+        }
+      }
+    },
+    "DescribeRestoreJobOutput":{
+      "type":"structure",
+      "members":{
+        "AccountId":{
+          "shape":"AccountId",
+          "documentation":"<p>Returns the account ID that owns the restore job.</p>"
+        },
+        "RestoreJobId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies the job that restores a recovery point.</p>"
+        },
+        "RecoveryPointArn":{
+          "shape":"ARN",
+          "documentation":"<p>An ARN that uniquely identifies a recovery point; for example, <code>arn:aws:backup:us-east-1:123456789012:recovery-point:1EB3B5E7-9EB0-435A-A80B-108B488B0D45</code>.</p>"
+        },
+        "CreationDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time that a restore job is created, in Unix format and Coordinated Universal Time (UTC). The value of <code>CreationDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "CompletionDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time that a job to restore a recovery point is completed, in Unix format and Coordinated Universal Time (UTC). The value of <code>CompletionDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "Status":{
+          "shape":"RestoreJobStatus",
+          "documentation":"<p>Status code specifying the state of the job that is initiated by AWS Backup to restore a recovery point.</p>"
+        },
+        "StatusMessage":{
+          "shape":"string",
+          "documentation":"<p>A message showing the status of a job to restore a recovery point.</p>"
+        },
+        "PercentDone":{
+          "shape":"string",
+          "documentation":"<p>Contains an estimated percentage that is complete of a job at the time the job status was queried.</p>"
+        },
+        "BackupSizeInBytes":{
+          "shape":"Long",
+          "documentation":"<p>The size, in bytes, of the restored resource.</p>"
+        },
+        "IamRoleArn":{
+          "shape":"IAMRoleArn",
+          "documentation":"<p>Specifies the IAM role ARN used to create the target recovery point; for example, <code>arn:aws:iam::123456789012:role/S3Access</code>.</p>"
+        },
+        "ExpectedCompletionTimeMinutes":{
+          "shape":"Long",
+          "documentation":"<p>The amount of time in minutes that a job restoring a recovery point is expected to take.</p>"
+        },
+        "CreatedResourceArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a resource whose recovery point is being restored. The format of the ARN depends on the resource type of the backed-up resource.</p>"
+        },
+        "ResourceType":{
+          "shape":"ResourceType",
+          "documentation":"<p>Returns metadata associated with a restore job listed by resource type.</p>"
+        }
+      }
+    },
+    "DisassociateRecoveryPointInput":{
+      "type":"structure",
+      "required":[
+        "BackupVaultName",
+        "RecoveryPointArn"
+      ],
+      "members":{
+        "BackupVaultName":{
+          "shape":"BackupVaultName",
+          "documentation":"<p>The unique name of an AWS Backup vault. Required.</p>",
+          "location":"uri",
+          "locationName":"backupVaultName"
+        },
+        "RecoveryPointArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies an AWS Backup recovery point. Required.</p>",
+          "location":"uri",
+          "locationName":"recoveryPointArn"
+        }
+      }
+    },
+    "ExportBackupPlanTemplateInput":{
+      "type":"structure",
+      "required":["BackupPlanId"],
+      "members":{
+        "BackupPlanId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a backup plan.</p>",
+          "location":"uri",
+          "locationName":"backupPlanId"
+        }
+      }
+    },
+    "ExportBackupPlanTemplateOutput":{
+      "type":"structure",
+      "members":{
+        "BackupPlanTemplateJson":{
+          "shape":"string",
+          "documentation":"<p>The body of a backup plan template in JSON format.</p> <note> <p>This is a signed JSON document that cannot be modified before being passed to <code>GetBackupPlanFromJSON.</code> </p> </note>"
+        }
+      }
+    },
+    "GetBackupPlanFromJSONInput":{
+      "type":"structure",
+      "required":["BackupPlanTemplateJson"],
+      "members":{
+        "BackupPlanTemplateJson":{
+          "shape":"string",
+          "documentation":"<p>A customer-supplied backup plan document in JSON format.</p>"
+        }
+      }
+    },
+    "GetBackupPlanFromJSONOutput":{
+      "type":"structure",
+      "members":{
+        "BackupPlan":{
+          "shape":"BackupPlan",
+          "documentation":"<p>Specifies the body of a backup plan. Includes a <code>BackupPlanName</code> and one or more sets of <code>Rules</code>.</p>"
+        }
+      }
+    },
+    "GetBackupPlanFromTemplateInput":{
+      "type":"structure",
+      "required":["BackupPlanTemplateId"],
+      "members":{
+        "BackupPlanTemplateId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a stored backup plan template.</p>",
+          "location":"uri",
+          "locationName":"templateId"
+        }
+      }
+    },
+    "GetBackupPlanFromTemplateOutput":{
+      "type":"structure",
+      "members":{
+        "BackupPlanDocument":{
+          "shape":"BackupPlan",
+          "documentation":"<p>Returns the body of a backup plan based on the target template, including the name, rules, and backup vault of the plan.</p>"
+        }
+      }
+    },
+    "GetBackupPlanInput":{
+      "type":"structure",
+      "required":["BackupPlanId"],
+      "members":{
+        "BackupPlanId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a backup plan.</p>",
+          "location":"uri",
+          "locationName":"backupPlanId"
+        },
+        "VersionId":{
+          "shape":"string",
+          "documentation":"<p>Unique, randomly generated, Unicode, UTF-8 encoded strings that are at most 1,024 bytes long. Version IDs cannot be edited.</p>",
+          "location":"querystring",
+          "locationName":"versionId"
+        }
+      }
+    },
+    "GetBackupPlanOutput":{
+      "type":"structure",
+      "members":{
+        "BackupPlan":{
+          "shape":"BackupPlan",
+          "documentation":"<p>Specifies the body of a backup plan. Includes a <code>BackupPlanName</code> and one or more sets of <code>Rules</code>.</p>"
+        },
+        "BackupPlanId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a backup plan.</p>"
+        },
+        "BackupPlanArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a backup plan; for example, <code>arn:aws:backup:us-east-1:123456789012:plan:8F81F553-3A74-4A3F-B93D-B3360DC80C50</code>.</p>"
+        },
+        "VersionId":{
+          "shape":"string",
+          "documentation":"<p>Unique, randomly generated, Unicode, UTF-8 encoded strings that are at most 1,024 bytes long. Version IDs cannot be edited.</p>"
+        },
+        "CreatorRequestId":{
+          "shape":"string",
+          "documentation":"<p>A unique string that identifies the request and allows failed requests to be retried without the risk of running the operation twice.</p>"
+        },
+        "CreationDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time that a backup plan is created, in Unix format and Coordinated Universal Time (UTC). The value of <code>CreationDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "DeletionDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time that a backup plan is deleted, in Unix format and Coordinated Universal Time (UTC). The value of <code>DeletionDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "LastExecutionDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The last time a job to back up resources was run with this backup plan. A date and time, in Unix format and Coordinated Universal Time (UTC). The value of <code>LastExecutionDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "AdvancedBackupSettings":{
+          "shape":"AdvancedBackupSettings",
+          "documentation":"<p>Contains a list of <code>BackupOptions</code> for each resource type. The list is populated only if the advanced option is set for the backup plan.</p>"
+        }
+      }
+    },
+    "GetBackupSelectionInput":{
+      "type":"structure",
+      "required":[
+        "BackupPlanId",
+        "SelectionId"
+      ],
+      "members":{
+        "BackupPlanId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a backup plan.</p>",
+          "location":"uri",
+          "locationName":"backupPlanId"
+        },
+        "SelectionId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies the body of a request to assign a set of resources to a backup plan.</p>",
+          "location":"uri",
+          "locationName":"selectionId"
+        }
+      }
+    },
+    "GetBackupSelectionOutput":{
+      "type":"structure",
+      "members":{
+        "BackupSelection":{
+          "shape":"BackupSelection",
+          "documentation":"<p>Specifies the body of a request to assign a set of resources to a backup plan.</p>"
+        },
+        "SelectionId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies the body of a request to assign a set of resources to a backup plan.</p>"
+        },
+        "BackupPlanId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a backup plan.</p>"
+        },
+        "CreationDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time a backup selection is created, in Unix format and Coordinated Universal Time (UTC). The value of <code>CreationDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "CreatorRequestId":{
+          "shape":"string",
+          "documentation":"<p>A unique string that identifies the request and allows failed requests to be retried without the risk of running the operation twice.</p>"
+        }
+      }
+    },
+    "GetBackupVaultAccessPolicyInput":{
+      "type":"structure",
+      "required":["BackupVaultName"],
+      "members":{
+        "BackupVaultName":{
+          "shape":"BackupVaultName",
+          "documentation":"<p>The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the AWS Region where they are created. They consist of lowercase letters, numbers, and hyphens.</p>",
+          "location":"uri",
+          "locationName":"backupVaultName"
+        }
+      }
+    },
+    "GetBackupVaultAccessPolicyOutput":{
+      "type":"structure",
+      "members":{
+        "BackupVaultName":{
+          "shape":"BackupVaultName",
+          "documentation":"<p>The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the Region where they are created. They consist of lowercase letters, numbers, and hyphens.</p>"
+        },
+        "BackupVaultArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a backup vault; for example, <code>arn:aws:backup:us-east-1:123456789012:vault:aBackupVault</code>.</p>"
+        },
+        "Policy":{
+          "shape":"IAMPolicy",
+          "documentation":"<p>The backup vault access policy document in JSON format.</p>"
+        }
+      }
+    },
+    "GetBackupVaultNotificationsInput":{
+      "type":"structure",
+      "required":["BackupVaultName"],
+      "members":{
+        "BackupVaultName":{
+          "shape":"BackupVaultName",
+          "documentation":"<p>The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the AWS Region where they are created. They consist of lowercase letters, numbers, and hyphens.</p>",
+          "location":"uri",
+          "locationName":"backupVaultName"
+        }
+      }
+    },
+    "GetBackupVaultNotificationsOutput":{
+      "type":"structure",
+      "members":{
+        "BackupVaultName":{
+          "shape":"BackupVaultName",
+          "documentation":"<p>The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the Region where they are created. They consist of lowercase letters, numbers, and hyphens.</p>"
+        },
+        "BackupVaultArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a backup vault; for example, <code>arn:aws:backup:us-east-1:123456789012:vault:aBackupVault</code>.</p>"
+        },
+        "SNSTopicArn":{
+          "shape":"ARN",
+          "documentation":"<p>An ARN that uniquely identifies an Amazon Simple Notification Service (Amazon SNS) topic; for example, <code>arn:aws:sns:us-west-2:111122223333:MyTopic</code>.</p>"
+        },
+        "BackupVaultEvents":{
+          "shape":"BackupVaultEvents",
+          "documentation":"<p>An array of events that indicate the status of jobs to back up resources to the backup vault.</p>"
+        }
+      }
+    },
+    "GetRecoveryPointRestoreMetadataInput":{
+      "type":"structure",
+      "required":[
+        "BackupVaultName",
+        "RecoveryPointArn"
+      ],
+      "members":{
+        "BackupVaultName":{
+          "shape":"BackupVaultName",
+          "documentation":"<p>The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the AWS Region where they are created. They consist of lowercase letters, numbers, and hyphens.</p>",
+          "location":"uri",
+          "locationName":"backupVaultName"
+        },
+        "RecoveryPointArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a recovery point; for example, <code>arn:aws:backup:us-east-1:123456789012:recovery-point:1EB3B5E7-9EB0-435A-A80B-108B488B0D45</code>.</p>",
+          "location":"uri",
+          "locationName":"recoveryPointArn"
+        }
+      }
+    },
+    "GetRecoveryPointRestoreMetadataOutput":{
+      "type":"structure",
+      "members":{
+        "BackupVaultArn":{
+          "shape":"ARN",
+          "documentation":"<p>An ARN that uniquely identifies a backup vault; for example, <code>arn:aws:backup:us-east-1:123456789012:vault:aBackupVault</code>.</p>"
+        },
+        "RecoveryPointArn":{
+          "shape":"ARN",
+          "documentation":"<p>An ARN that uniquely identifies a recovery point; for example, <code>arn:aws:backup:us-east-1:123456789012:recovery-point:1EB3B5E7-9EB0-435A-A80B-108B488B0D45</code>.</p>"
+        },
+        "RestoreMetadata":{
+          "shape":"Metadata",
+          "documentation":"<p>The set of metadata key-value pairs that describe the original configuration of the backed-up resource. These values vary depending on the service that is being restored.</p>"
+        }
+      }
+    },
+    "GetSupportedResourceTypesOutput":{
+      "type":"structure",
+      "members":{
+        "ResourceTypes":{
+          "shape":"ResourceTypes",
+          "documentation":"<p>Contains a string with the supported AWS resource types:</p> <ul> <li> <p> <code>DynamoDB</code> for Amazon DynamoDB</p> </li> <li> <p> <code>EBS</code> for Amazon Elastic Block Store</p> </li> <li> <p> <code>EC2</code> for Amazon Elastic Compute Cloud</p> </li> <li> <p> <code>EFS</code> for Amazon Elastic File System</p> </li> <li> <p> <code>RDS</code> for Amazon Relational Database Service</p> </li> <li> <p> <code>Aurora</code> for Amazon Aurora</p> </li> <li> <p> <code>Storage Gateway</code> for AWS Storage Gateway</p> </li> </ul>"
+        }
+      }
+    },
+    "GlobalSettings":{
+      "type":"map",
+      "key":{"shape":"GlobalSettingsName"},
+      "value":{"shape":"GlobalSettingsValue"}
+    },
+    "GlobalSettingsName":{"type":"string"},
+    "GlobalSettingsValue":{"type":"string"},
+    "IAMPolicy":{"type":"string"},
+    "IAMRoleArn":{"type":"string"},
+    "InvalidParameterValueException":{
+      "type":"structure",
+      "members":{
+        "Code":{"shape":"string"},
+        "Message":{"shape":"string"},
+        "Type":{
+          "shape":"string",
+          "documentation":"<p/>"
+        },
+        "Context":{
+          "shape":"string",
+          "documentation":"<p/>"
+        }
+      },
+      "documentation":"<p>Indicates that something is wrong with a parameter's value. For example, the value is out of range.</p>",
+      "exception":true
+    },
+    "InvalidRequestException":{
+      "type":"structure",
+      "members":{
+        "Code":{"shape":"string"},
+        "Message":{"shape":"string"},
+        "Type":{
+          "shape":"string",
+          "documentation":"<p/>"
+        },
+        "Context":{
+          "shape":"string",
+          "documentation":"<p/>"
+        }
+      },
+      "documentation":"<p>Indicates that something is wrong with the input to the request. For example, a parameter is of the wrong type.</p>",
+      "exception":true
+    },
+    "InvalidResourceStateException":{
+      "type":"structure",
+      "members":{
+        "Code":{"shape":"string"},
+        "Message":{"shape":"string"},
+        "Type":{
+          "shape":"string",
+          "documentation":"<p/>"
+        },
+        "Context":{
+          "shape":"string",
+          "documentation":"<p/>"
+        }
+      },
+      "documentation":"<p>AWS Backup is already performing an action on this recovery point. It can't perform the action you requested until the first action finishes. Try again later.</p>",
+      "exception":true
+    },
+    "IsEnabled":{"type":"boolean"},
+    "Lifecycle":{
+      "type":"structure",
+      "members":{
+        "MoveToColdStorageAfterDays":{
+          "shape":"Long",
+          "documentation":"<p>Specifies the number of days after creation that a recovery point is moved to cold storage.</p>"
+        },
+        "DeleteAfterDays":{
+          "shape":"Long",
+          "documentation":"<p>Specifies the number of days after creation that a recovery point is deleted. Must be greater than 90 days plus <code>MoveToColdStorageAfterDays</code>.</p>"
+        }
+      },
+      "documentation":"<p>Contains an array of <code>Transition</code> objects specifying how long in days before a recovery point transitions to cold storage or is deleted.</p> <p>Backups transitioned to cold storage must be stored in cold storage for a minimum of 90 days. Therefore, on the console, the “expire after days” setting must be 90 days greater than the “transition to cold after days” setting. The “transition to cold after days” setting cannot be changed after a backup has been transitioned to cold.</p> <p>Only Amazon EFS file system backups can be transitioned to cold storage.</p>"
+    },
+    "LimitExceededException":{
+      "type":"structure",
+      "members":{
+        "Code":{"shape":"string"},
+        "Message":{"shape":"string"},
+        "Type":{
+          "shape":"string",
+          "documentation":"<p/>"
+        },
+        "Context":{
+          "shape":"string",
+          "documentation":"<p/>"
+        }
+      },
+      "documentation":"<p>A limit in the request has been exceeded; for example, a maximum number of items allowed in a request.</p>",
+      "exception":true
+    },
+    "ListBackupJobsInput":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"string",
+          "documentation":"<p>The next item following a partial list of returned items. For example, if a request is made to return <code>maxResults</code> number of items, <code>NextToken</code> allows you to return more items in your list starting at the location pointed to by the next token.</p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of items to be returned.</p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        },
+        "ByResourceArn":{
+          "shape":"ARN",
+          "documentation":"<p>Returns only backup jobs that match the specified resource Amazon Resource Name (ARN).</p>",
+          "location":"querystring",
+          "locationName":"resourceArn"
+        },
+        "ByState":{
+          "shape":"BackupJobState",
+          "documentation":"<p>Returns only backup jobs that are in the specified state.</p>",
+          "location":"querystring",
+          "locationName":"state"
+        },
+        "ByBackupVaultName":{
+          "shape":"BackupVaultName",
+          "documentation":"<p>Returns only backup jobs that will be stored in the specified backup vault. Backup vaults are identified by names that are unique to the account used to create them and the AWS Region where they are created. They consist of lowercase letters, numbers, and hyphens.</p>",
+          "location":"querystring",
+          "locationName":"backupVaultName"
+        },
+        "ByCreatedBefore":{
+          "shape":"timestamp",
+          "documentation":"<p>Returns only backup jobs that were created before the specified date.</p>",
+          "location":"querystring",
+          "locationName":"createdBefore"
+        },
+        "ByCreatedAfter":{
+          "shape":"timestamp",
+          "documentation":"<p>Returns only backup jobs that were created after the specified date.</p>",
+          "location":"querystring",
+          "locationName":"createdAfter"
+        },
+        "ByResourceType":{
+          "shape":"ResourceType",
+          "documentation":"<p>Returns only backup jobs for the specified resources:</p> <ul> <li> <p> <code>DynamoDB</code> for Amazon DynamoDB</p> </li> <li> <p> <code>EBS</code> for Amazon Elastic Block Store</p> </li> <li> <p> <code>EC2</code> for Amazon Elastic Compute Cloud</p> </li> <li> <p> <code>EFS</code> for Amazon Elastic File System</p> </li> <li> <p> <code>RDS</code> for Amazon Relational Database Service</p> </li> <li> <p> <code>Aurora</code> for Amazon Aurora</p> </li> <li> <p> <code>Storage Gateway</code> for AWS Storage Gateway</p> </li> </ul>",
+          "location":"querystring",
+          "locationName":"resourceType"
+        },
+        "ByAccountId":{
+          "shape":"AccountId",
+          "documentation":"<p>The account ID to list the jobs from. Returns only backup jobs associated with the specified account ID.</p> <p>If used from an AWS Organizations management account, passing <code>*</code> returns all jobs across the organization.</p>",
+          "location":"querystring",
+          "locationName":"accountId"
+        }
+      }
+    },
+    "ListBackupJobsOutput":{
+      "type":"structure",
+      "members":{
+        "BackupJobs":{
+          "shape":"BackupJobsList",
+          "documentation":"<p>An array of structures containing metadata about your backup jobs returned in JSON format.</p>"
+        },
+        "NextToken":{
+          "shape":"string",
+          "documentation":"<p>The next item following a partial list of returned items. For example, if a request is made to return <code>maxResults</code> number of items, <code>NextToken</code> allows you to return more items in your list starting at the location pointed to by the next token.</p>"
+        }
+      }
+    },
+    "ListBackupPlanTemplatesInput":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"string",
+          "documentation":"<p>The next item following a partial list of returned items. For example, if a request is made to return <code>maxResults</code> number of items, <code>NextToken</code> allows you to return more items in your list starting at the location pointed to by the next token.</p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of items to be returned.</p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        }
+      }
+    },
+    "ListBackupPlanTemplatesOutput":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"string",
+          "documentation":"<p>The next item following a partial list of returned items. For example, if a request is made to return <code>maxResults</code> number of items, <code>NextToken</code> allows you to return more items in your list starting at the location pointed to by the next token.</p>"
+        },
+        "BackupPlanTemplatesList":{
+          "shape":"BackupPlanTemplatesList",
+          "documentation":"<p>An array of template list items containing metadata about your saved templates.</p>"
+        }
+      }
+    },
+    "ListBackupPlanVersionsInput":{
+      "type":"structure",
+      "required":["BackupPlanId"],
+      "members":{
+        "BackupPlanId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a backup plan.</p>",
+          "location":"uri",
+          "locationName":"backupPlanId"
+        },
+        "NextToken":{
+          "shape":"string",
+          "documentation":"<p>The next item following a partial list of returned items. For example, if a request is made to return <code>maxResults</code> number of items, <code>NextToken</code> allows you to return more items in your list starting at the location pointed to by the next token.</p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of items to be returned.</p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        }
+      }
+    },
+    "ListBackupPlanVersionsOutput":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"string",
+          "documentation":"<p>The next item following a partial list of returned items. For example, if a request is made to return <code>maxResults</code> number of items, <code>NextToken</code> allows you to return more items in your list starting at the location pointed to by the next token.</p>"
+        },
+        "BackupPlanVersionsList":{
+          "shape":"BackupPlanVersionsList",
+          "documentation":"<p>An array of version list items containing metadata about your backup plans.</p>"
+        }
+      }
+    },
+    "ListBackupPlansInput":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"string",
+          "documentation":"<p>The next item following a partial list of returned items. For example, if a request is made to return <code>maxResults</code> number of items, <code>NextToken</code> allows you to return more items in your list starting at the location pointed to by the next token.</p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of items to be returned.</p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        },
+        "IncludeDeleted":{
+          "shape":"Boolean",
+          "documentation":"<p>A Boolean value with a default value of <code>FALSE</code> that returns deleted backup plans when set to <code>TRUE</code>.</p>",
+          "location":"querystring",
+          "locationName":"includeDeleted"
+        }
+      }
+    },
+    "ListBackupPlansOutput":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"string",
+          "documentation":"<p>The next item following a partial list of returned items. For example, if a request is made to return <code>maxResults</code> number of items, <code>NextToken</code> allows you to return more items in your list starting at the location pointed to by the next token.</p>"
+        },
+        "BackupPlansList":{
+          "shape":"BackupPlansList",
+          "documentation":"<p>An array of backup plan list items containing metadata about your saved backup plans.</p>"
+        }
+      }
+    },
+    "ListBackupSelectionsInput":{
+      "type":"structure",
+      "required":["BackupPlanId"],
+      "members":{
+        "BackupPlanId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a backup plan.</p>",
+          "location":"uri",
+          "locationName":"backupPlanId"
+        },
+        "NextToken":{
+          "shape":"string",
+          "documentation":"<p>The next item following a partial list of returned items. For example, if a request is made to return <code>maxResults</code> number of items, <code>NextToken</code> allows you to return more items in your list starting at the location pointed to by the next token.</p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of items to be returned.</p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        }
+      }
+    },
+    "ListBackupSelectionsOutput":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"string",
+          "documentation":"<p>The next item following a partial list of returned items. For example, if a request is made to return <code>maxResults</code> number of items, <code>NextToken</code> allows you to return more items in your list starting at the location pointed to by the next token.</p>"
+        },
+        "BackupSelectionsList":{
+          "shape":"BackupSelectionsList",
+          "documentation":"<p>An array of backup selection list items containing metadata about each resource in the list.</p>"
+        }
+      }
+    },
+    "ListBackupVaultsInput":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"string",
+          "documentation":"<p>The next item following a partial list of returned items. For example, if a request is made to return <code>maxResults</code> number of items, <code>NextToken</code> allows you to return more items in your list starting at the location pointed to by the next token.</p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of items to be returned.</p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        }
+      }
+    },
+    "ListBackupVaultsOutput":{
+      "type":"structure",
+      "members":{
+        "BackupVaultList":{
+          "shape":"BackupVaultList",
+          "documentation":"<p>An array of backup vault list members containing vault metadata, including Amazon Resource Name (ARN), display name, creation date, number of saved recovery points, and encryption information if the resources saved in the backup vault are encrypted.</p>"
+        },
+        "NextToken":{
+          "shape":"string",
+          "documentation":"<p>The next item following a partial list of returned items. For example, if a request is made to return <code>maxResults</code> number of items, <code>NextToken</code> allows you to return more items in your list starting at the location pointed to by the next token.</p>"
+        }
+      }
+    },
+    "ListCopyJobsInput":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"string",
+          "documentation":"<p>The next item following a partial list of returned items. For example, if a request is made to return maxResults number of items, NextToken allows you to return more items in your list starting at the location pointed to by the next token. </p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of items to be returned.</p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        },
+        "ByResourceArn":{
+          "shape":"ARN",
+          "documentation":"<p>Returns only copy jobs that match the specified resource Amazon Resource Name (ARN). </p>",
+          "location":"querystring",
+          "locationName":"resourceArn"
+        },
+        "ByState":{
+          "shape":"CopyJobState",
+          "documentation":"<p>Returns only copy jobs that are in the specified state.</p>",
+          "location":"querystring",
+          "locationName":"state"
+        },
+        "ByCreatedBefore":{
+          "shape":"timestamp",
+          "documentation":"<p>Returns only copy jobs that were created before the specified date.</p>",
+          "location":"querystring",
+          "locationName":"createdBefore"
+        },
+        "ByCreatedAfter":{
+          "shape":"timestamp",
+          "documentation":"<p>Returns only copy jobs that were created after the specified date.</p>",
+          "location":"querystring",
+          "locationName":"createdAfter"
+        },
+        "ByResourceType":{
+          "shape":"ResourceType",
+          "documentation":"<p>Returns only backup jobs for the specified resources:</p> <ul> <li> <p> <code>DynamoDB</code> for Amazon DynamoDB</p> </li> <li> <p> <code>EBS</code> for Amazon Elastic Block Store</p> </li> <li> <p> <code>EC2</code> for Amazon Elastic Compute Cloud</p> </li> <li> <p> <code>EFS</code> for Amazon Elastic File System</p> </li> <li> <p> <code>RDS</code> for Amazon Relational Database Service</p> </li> <li> <p> <code>Aurora</code> for Amazon Aurora</p> </li> <li> <p> <code>Storage Gateway</code> for AWS Storage Gateway</p> </li> </ul>",
+          "location":"querystring",
+          "locationName":"resourceType"
+        },
+        "ByDestinationVaultArn":{
+          "shape":"string",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a source backup vault to copy from; for example, <code>arn:aws:backup:us-east-1:123456789012:vault:aBackupVault</code>. </p>",
+          "location":"querystring",
+          "locationName":"destinationVaultArn"
+        },
+        "ByAccountId":{
+          "shape":"AccountId",
+          "documentation":"<p>The account ID to list the jobs from. Returns only copy jobs associated with the specified account ID.</p>",
+          "location":"querystring",
+          "locationName":"accountId"
+        }
+      }
+    },
+    "ListCopyJobsOutput":{
+      "type":"structure",
+      "members":{
+        "CopyJobs":{
+          "shape":"CopyJobsList",
+          "documentation":"<p>An array of structures containing metadata about your copy jobs returned in JSON format. </p>"
+        },
+        "NextToken":{
+          "shape":"string",
+          "documentation":"<p>The next item following a partial list of returned items. For example, if a request is made to return maxResults number of items, NextToken allows you to return more items in your list starting at the location pointed to by the next token. </p>"
+        }
+      }
+    },
+    "ListOfTags":{
+      "type":"list",
+      "member":{"shape":"Condition"}
+    },
+    "ListProtectedResourcesInput":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"string",
+          "documentation":"<p>The next item following a partial list of returned items. For example, if a request is made to return <code>maxResults</code> number of items, <code>NextToken</code> allows you to return more items in your list starting at the location pointed to by the next token.</p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of items to be returned.</p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        }
+      }
+    },
+    "ListProtectedResourcesOutput":{
+      "type":"structure",
+      "members":{
+        "Results":{
+          "shape":"ProtectedResourcesList",
+          "documentation":"<p>An array of resources successfully backed up by AWS Backup including the time the resource was saved, an Amazon Resource Name (ARN) of the resource, and a resource type.</p>"
+        },
+        "NextToken":{
+          "shape":"string",
+          "documentation":"<p>The next item following a partial list of returned items. For example, if a request is made to return <code>maxResults</code> number of items, <code>NextToken</code> allows you to return more items in your list starting at the location pointed to by the next token.</p>"
+        }
+      }
+    },
+    "ListRecoveryPointsByBackupVaultInput":{
+      "type":"structure",
+      "required":["BackupVaultName"],
+      "members":{
+        "BackupVaultName":{
+          "shape":"BackupVaultName",
+          "documentation":"<p>The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the AWS Region where they are created. They consist of lowercase letters, numbers, and hyphens.</p>",
+          "location":"uri",
+          "locationName":"backupVaultName"
+        },
+        "NextToken":{
+          "shape":"string",
+          "documentation":"<p>The next item following a partial list of returned items. For example, if a request is made to return <code>maxResults</code> number of items, <code>NextToken</code> allows you to return more items in your list starting at the location pointed to by the next token.</p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of items to be returned.</p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        },
+        "ByResourceArn":{
+          "shape":"ARN",
+          "documentation":"<p>Returns only recovery points that match the specified resource Amazon Resource Name (ARN).</p>",
+          "location":"querystring",
+          "locationName":"resourceArn"
+        },
+        "ByResourceType":{
+          "shape":"ResourceType",
+          "documentation":"<p>Returns only recovery points that match the specified resource type.</p>",
+          "location":"querystring",
+          "locationName":"resourceType"
+        },
+        "ByBackupPlanId":{
+          "shape":"string",
+          "documentation":"<p>Returns only recovery points that match the specified backup plan ID.</p>",
+          "location":"querystring",
+          "locationName":"backupPlanId"
+        },
+        "ByCreatedBefore":{
+          "shape":"timestamp",
+          "documentation":"<p>Returns only recovery points that were created before the specified timestamp.</p>",
+          "location":"querystring",
+          "locationName":"createdBefore"
+        },
+        "ByCreatedAfter":{
+          "shape":"timestamp",
+          "documentation":"<p>Returns only recovery points that were created after the specified timestamp.</p>",
+          "location":"querystring",
+          "locationName":"createdAfter"
+        }
+      }
+    },
+    "ListRecoveryPointsByBackupVaultOutput":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"string",
+          "documentation":"<p>The next item following a partial list of returned items. For example, if a request is made to return <code>maxResults</code> number of items, <code>NextToken</code> allows you to return more items in your list starting at the location pointed to by the next token.</p>"
+        },
+        "RecoveryPoints":{
+          "shape":"RecoveryPointByBackupVaultList",
+          "documentation":"<p>An array of objects that contain detailed information about recovery points saved in a backup vault.</p>"
+        }
+      }
+    },
+    "ListRecoveryPointsByResourceInput":{
+      "type":"structure",
+      "required":["ResourceArn"],
+      "members":{
+        "ResourceArn":{
+          "shape":"ARN",
+          "documentation":"<p>An ARN that uniquely identifies a resource. The format of the ARN depends on the resource type.</p>",
+          "location":"uri",
+          "locationName":"resourceArn"
+        },
+        "NextToken":{
+          "shape":"string",
+          "documentation":"<p>The next item following a partial list of returned items. For example, if a request is made to return <code>maxResults</code> number of items, <code>NextToken</code> allows you to return more items in your list starting at the location pointed to by the next token.</p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of items to be returned.</p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        }
+      }
+    },
+    "ListRecoveryPointsByResourceOutput":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"string",
+          "documentation":"<p>The next item following a partial list of returned items. For example, if a request is made to return <code>maxResults</code> number of items, <code>NextToken</code> allows you to return more items in your list starting at the location pointed to by the next token.</p>"
+        },
+        "RecoveryPoints":{
+          "shape":"RecoveryPointByResourceList",
+          "documentation":"<p>An array of objects that contain detailed information about recovery points of the specified resource type.</p>"
+        }
+      }
+    },
+    "ListRestoreJobsInput":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"string",
+          "documentation":"<p>The next item following a partial list of returned items. For example, if a request is made to return <code>maxResults</code> number of items, <code>NextToken</code> allows you to return more items in your list starting at the location pointed to by the next token.</p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of items to be returned.</p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        },
+        "ByAccountId":{
+          "shape":"AccountId",
+          "documentation":"<p>The account ID to list the jobs from. Returns only restore jobs associated with the specified account ID.</p>",
+          "location":"querystring",
+          "locationName":"accountId"
+        },
+        "ByCreatedBefore":{
+          "shape":"timestamp",
+          "documentation":"<p>Returns only restore jobs that were created before the specified date.</p>",
+          "location":"querystring",
+          "locationName":"createdBefore"
+        },
+        "ByCreatedAfter":{
+          "shape":"timestamp",
+          "documentation":"<p>Returns only restore jobs that were created after the specified date.</p>",
+          "location":"querystring",
+          "locationName":"createdAfter"
+        },
+        "ByStatus":{
+          "shape":"RestoreJobStatus",
+          "documentation":"<p>Returns only restore jobs associated with the specified job status.</p>",
+          "location":"querystring",
+          "locationName":"status"
+        }
+      }
+    },
+    "ListRestoreJobsOutput":{
+      "type":"structure",
+      "members":{
+        "RestoreJobs":{
+          "shape":"RestoreJobsList",
+          "documentation":"<p>An array of objects that contain detailed information about jobs to restore saved resources.</p>"
+        },
+        "NextToken":{
+          "shape":"string",
+          "documentation":"<p>The next item following a partial list of returned items. For example, if a request is made to return <code>maxResults</code> number of items, <code>NextToken</code> allows you to return more items in your list starting at the location pointed to by the next token.</p>"
+        }
+      }
+    },
+    "ListTagsInput":{
+      "type":"structure",
+      "required":["ResourceArn"],
+      "members":{
+        "ResourceArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a resource. The format of the ARN depends on the type of resource. Valid targets for <code>ListTags</code> are recovery points, backup plans, and backup vaults.</p>",
+          "location":"uri",
+          "locationName":"resourceArn"
+        },
+        "NextToken":{
+          "shape":"string",
+          "documentation":"<p>The next item following a partial list of returned items. For example, if a request is made to return <code>maxResults</code> number of items, <code>NextToken</code> allows you to return more items in your list starting at the location pointed to by the next token.</p>",
+          "location":"querystring",
+          "locationName":"nextToken"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>The maximum number of items to be returned.</p>",
+          "location":"querystring",
+          "locationName":"maxResults"
+        }
+      }
+    },
+    "ListTagsOutput":{
+      "type":"structure",
+      "members":{
+        "NextToken":{
+          "shape":"string",
+          "documentation":"<p>The next item following a partial list of returned items. For example, if a request is made to return <code>maxResults</code> number of items, <code>NextToken</code> allows you to return more items in your list starting at the location pointed to by the next token.</p>"
+        },
+        "Tags":{
+          "shape":"Tags",
+          "documentation":"<p>To help organize your resources, you can assign your own metadata to the resources you create. Each tag is a key-value pair.</p>"
+        }
+      }
+    },
+    "Long":{"type":"long"},
+    "MaxResults":{
+      "type":"integer",
+      "max":1000,
+      "min":1
+    },
+    "Metadata":{
+      "type":"map",
+      "key":{"shape":"MetadataKey"},
+      "value":{"shape":"MetadataValue"},
+      "sensitive":true
+    },
+    "MetadataKey":{"type":"string"},
+    "MetadataValue":{"type":"string"},
+    "MissingParameterValueException":{
+      "type":"structure",
+      "members":{
+        "Code":{"shape":"string"},
+        "Message":{"shape":"string"},
+        "Type":{
+          "shape":"string",
+          "documentation":"<p/>"
+        },
+        "Context":{
+          "shape":"string",
+          "documentation":"<p/>"
+        }
+      },
+      "documentation":"<p>Indicates that a required parameter is missing.</p>",
+      "exception":true
+    },
+    "ProtectedResource":{
+      "type":"structure",
+      "members":{
+        "ResourceArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a resource. The format of the ARN depends on the resource type.</p>"
+        },
+        "ResourceType":{
+          "shape":"ResourceType",
+          "documentation":"<p>The type of AWS resource; for example, an Amazon Elastic Block Store (Amazon EBS) volume or an Amazon Relational Database Service (Amazon RDS) database. For VSS Windows backups, the only supported resource type is Amazon EC2.</p>"
+        },
+        "LastBackupTime":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time a resource was last backed up, in Unix format and Coordinated Universal Time (UTC). The value of <code>LastBackupTime</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        }
+      },
+      "documentation":"<p>A structure that contains information about a backed-up resource.</p>"
+    },
+    "ProtectedResourcesList":{
+      "type":"list",
+      "member":{"shape":"ProtectedResource"}
+    },
+    "PutBackupVaultAccessPolicyInput":{
+      "type":"structure",
+      "required":["BackupVaultName"],
+      "members":{
+        "BackupVaultName":{
+          "shape":"BackupVaultName",
+          "documentation":"<p>The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the AWS Region where they are created. They consist of lowercase letters, numbers, and hyphens.</p>",
+          "location":"uri",
+          "locationName":"backupVaultName"
+        },
+        "Policy":{
+          "shape":"IAMPolicy",
+          "documentation":"<p>The backup vault access policy document in JSON format.</p>"
+        }
+      }
+    },
+    "PutBackupVaultNotificationsInput":{
+      "type":"structure",
+      "required":[
+        "BackupVaultName",
+        "SNSTopicArn",
+        "BackupVaultEvents"
+      ],
+      "members":{
+        "BackupVaultName":{
+          "shape":"BackupVaultName",
+          "documentation":"<p>The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the AWS Region where they are created. They consist of lowercase letters, numbers, and hyphens.</p>",
+          "location":"uri",
+          "locationName":"backupVaultName"
+        },
+        "SNSTopicArn":{
+          "shape":"ARN",
+          "documentation":"<p>The Amazon Resource Name (ARN) that specifies the topic for a backup vault’s events; for example, <code>arn:aws:sns:us-west-2:111122223333:MyVaultTopic</code>.</p>"
+        },
+        "BackupVaultEvents":{
+          "shape":"BackupVaultEvents",
+          "documentation":"<p>An array of events that indicate the status of jobs to back up resources to the backup vault.</p>"
+        }
+      }
+    },
+    "RecoveryPointByBackupVault":{
+      "type":"structure",
+      "members":{
+        "RecoveryPointArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a recovery point; for example, <code>arn:aws:backup:us-east-1:123456789012:recovery-point:1EB3B5E7-9EB0-435A-A80B-108B488B0D45</code>.</p>"
+        },
+        "BackupVaultName":{
+          "shape":"BackupVaultName",
+          "documentation":"<p>The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the AWS Region where they are created. They consist of lowercase letters, numbers, and hyphens.</p>"
+        },
+        "BackupVaultArn":{
+          "shape":"ARN",
+          "documentation":"<p>An ARN that uniquely identifies a backup vault; for example, <code>arn:aws:backup:us-east-1:123456789012:vault:aBackupVault</code>.</p>"
+        },
+        "SourceBackupVaultArn":{
+          "shape":"ARN",
+          "documentation":"<p>The backup vault where the recovery point was originally copied from. If the recovery point is restored to the same account this value will be <code>null</code>.</p>"
+        },
+        "ResourceArn":{
+          "shape":"ARN",
+          "documentation":"<p>An ARN that uniquely identifies a resource. The format of the ARN depends on the resource type.</p>"
+        },
+        "ResourceType":{
+          "shape":"ResourceType",
+          "documentation":"<p>The type of AWS resource saved as a recovery point; for example, an Amazon Elastic Block Store (Amazon EBS) volume or an Amazon Relational Database Service (Amazon RDS) database. For VSS Windows backups, the only supported resource type is Amazon EC2.</p>"
+        },
+        "CreatedBy":{
+          "shape":"RecoveryPointCreator",
+          "documentation":"<p>Contains identifying information about the creation of a recovery point, including the <code>BackupPlanArn</code>, <code>BackupPlanId</code>, <code>BackupPlanVersion</code>, and <code>BackupRuleId</code> of the backup plan that is used to create it.</p>"
+        },
+        "IamRoleArn":{
+          "shape":"IAMRoleArn",
+          "documentation":"<p>Specifies the IAM role ARN used to create the target recovery point; for example, <code>arn:aws:iam::123456789012:role/S3Access</code>.</p>"
+        },
+        "Status":{
+          "shape":"RecoveryPointStatus",
+          "documentation":"<p>A status code specifying the state of the recovery point.</p>"
+        },
+        "CreationDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time a recovery point is created, in Unix format and Coordinated Universal Time (UTC). The value of <code>CreationDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "CompletionDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time a job to restore a recovery point is completed, in Unix format and Coordinated Universal Time (UTC). The value of <code>CompletionDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "BackupSizeInBytes":{
+          "shape":"Long",
+          "documentation":"<p>The size, in bytes, of a backup.</p>"
+        },
+        "CalculatedLifecycle":{
+          "shape":"CalculatedLifecycle",
+          "documentation":"<p>A <code>CalculatedLifecycle</code> object containing <code>DeleteAt</code> and <code>MoveToColdStorageAt</code> timestamps.</p>"
+        },
+        "Lifecycle":{
+          "shape":"Lifecycle",
+          "documentation":"<p>The lifecycle defines when a protected resource is transitioned to cold storage and when it expires. AWS Backup transitions and expires backups automatically according to the lifecycle that you define. </p> <p>Backups transitioned to cold storage must be stored in cold storage for a minimum of 90 days. Therefore, the “expire after days” setting must be 90 days greater than the “transition to cold after days” setting. The “transition to cold after days” setting cannot be changed after a backup has been transitioned to cold. </p> <p>Only Amazon EFS file system backups can be transitioned to cold storage.</p>"
+        },
+        "EncryptionKeyArn":{
+          "shape":"ARN",
+          "documentation":"<p>The server-side encryption key that is used to protect your backups; for example, <code>arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab</code>.</p>"
+        },
+        "IsEncrypted":{
+          "shape":"boolean",
+          "documentation":"<p>A Boolean value that is returned as <code>TRUE</code> if the specified recovery point is encrypted, or <code>FALSE</code> if the recovery point is not encrypted.</p>"
+        },
+        "LastRestoreTime":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time a recovery point was last restored, in Unix format and Coordinated Universal Time (UTC). The value of <code>LastRestoreTime</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        }
+      },
+      "documentation":"<p>Contains detailed information about the recovery points stored in a backup vault.</p>"
+    },
+    "RecoveryPointByBackupVaultList":{
+      "type":"list",
+      "member":{"shape":"RecoveryPointByBackupVault"}
+    },
+    "RecoveryPointByResource":{
+      "type":"structure",
+      "members":{
+        "RecoveryPointArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a recovery point; for example, <code>arn:aws:backup:us-east-1:123456789012:recovery-point:1EB3B5E7-9EB0-435A-A80B-108B488B0D45</code>.</p>"
+        },
+        "CreationDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time a recovery point is created, in Unix format and Coordinated Universal Time (UTC). The value of <code>CreationDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "Status":{
+          "shape":"RecoveryPointStatus",
+          "documentation":"<p>A status code specifying the state of the recovery point.</p>"
+        },
+        "EncryptionKeyArn":{
+          "shape":"ARN",
+          "documentation":"<p>The server-side encryption key that is used to protect your backups; for example, <code>arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab</code>.</p>"
+        },
+        "BackupSizeBytes":{
+          "shape":"Long",
+          "documentation":"<p>The size, in bytes, of a backup.</p>"
+        },
+        "BackupVaultName":{
+          "shape":"BackupVaultName",
+          "documentation":"<p>The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the AWS Region where they are created. They consist of lowercase letters, numbers, and hyphens.</p>"
+        }
+      },
+      "documentation":"<p>Contains detailed information about a saved recovery point.</p>"
+    },
+    "RecoveryPointByResourceList":{
+      "type":"list",
+      "member":{"shape":"RecoveryPointByResource"}
+    },
+    "RecoveryPointCreator":{
+      "type":"structure",
+      "members":{
+        "BackupPlanId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a backup plan.</p>"
+        },
+        "BackupPlanArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a backup plan; for example, <code>arn:aws:backup:us-east-1:123456789012:plan:8F81F553-3A74-4A3F-B93D-B3360DC80C50</code>.</p>"
+        },
+        "BackupPlanVersion":{
+          "shape":"string",
+          "documentation":"<p>Version IDs are unique, randomly generated, Unicode, UTF-8 encoded strings that are at most 1,024 bytes long. They cannot be edited.</p>"
+        },
+        "BackupRuleId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a rule used to schedule the backup of a selection of resources.</p>"
+        }
+      },
+      "documentation":"<p>Contains information about the backup plan and rule that AWS Backup used to initiate the recovery point backup.</p>"
+    },
+    "RecoveryPointStatus":{
+      "type":"string",
+      "enum":[
+        "COMPLETED",
+        "PARTIAL",
+        "DELETING",
+        "EXPIRED"
+      ]
+    },
+    "ResourceArns":{
+      "type":"list",
+      "member":{"shape":"ARN"}
+    },
+    "ResourceNotFoundException":{
+      "type":"structure",
+      "members":{
+        "Code":{"shape":"string"},
+        "Message":{"shape":"string"},
+        "Type":{
+          "shape":"string",
+          "documentation":"<p/>"
+        },
+        "Context":{
+          "shape":"string",
+          "documentation":"<p/>"
+        }
+      },
+      "documentation":"<p>A resource that is required for the action doesn't exist.</p>",
+      "exception":true
+    },
+    "ResourceType":{
+      "type":"string",
+      "pattern":"^[a-zA-Z0-9\\-\\_\\.]{1,50}$"
+    },
+    "ResourceTypeOptInPreference":{
+      "type":"map",
+      "key":{"shape":"ResourceType"},
+      "value":{"shape":"IsEnabled"}
+    },
+    "ResourceTypes":{
+      "type":"list",
+      "member":{"shape":"ResourceType"}
+    },
+    "RestoreJobId":{"type":"string"},
+    "RestoreJobStatus":{
+      "type":"string",
+      "enum":[
+        "PENDING",
+        "RUNNING",
+        "COMPLETED",
+        "ABORTED",
+        "FAILED"
+      ]
+    },
+    "RestoreJobsList":{
+      "type":"list",
+      "member":{"shape":"RestoreJobsListMember"}
+    },
+    "RestoreJobsListMember":{
+      "type":"structure",
+      "members":{
+        "AccountId":{
+          "shape":"AccountId",
+          "documentation":"<p>The account ID that owns the restore job.</p>"
+        },
+        "RestoreJobId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies the job that restores a recovery point.</p>"
+        },
+        "RecoveryPointArn":{
+          "shape":"ARN",
+          "documentation":"<p>An ARN that uniquely identifies a recovery point; for example, <code>arn:aws:backup:us-east-1:123456789012:recovery-point:1EB3B5E7-9EB0-435A-A80B-108B488B0D45</code>.</p>"
+        },
+        "CreationDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time a restore job is created, in Unix format and Coordinated Universal Time (UTC). The value of <code>CreationDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "CompletionDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time a job to restore a recovery point is completed, in Unix format and Coordinated Universal Time (UTC). The value of <code>CompletionDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "Status":{
+          "shape":"RestoreJobStatus",
+          "documentation":"<p>A status code specifying the state of the job initiated by AWS Backup to restore a recovery point.</p>"
+        },
+        "StatusMessage":{
+          "shape":"string",
+          "documentation":"<p>A detailed message explaining the status of the job to restore a recovery point.</p>"
+        },
+        "PercentDone":{
+          "shape":"string",
+          "documentation":"<p>Contains an estimated percentage complete of a job at the time the job status was queried.</p>"
+        },
+        "BackupSizeInBytes":{
+          "shape":"Long",
+          "documentation":"<p>The size, in bytes, of the restored resource.</p>"
+        },
+        "IamRoleArn":{
+          "shape":"IAMRoleArn",
+          "documentation":"<p>Specifies the IAM role ARN used to create the target recovery point; for example, <code>arn:aws:iam::123456789012:role/S3Access</code>.</p>"
+        },
+        "ExpectedCompletionTimeMinutes":{
+          "shape":"Long",
+          "documentation":"<p>The amount of time in minutes that a job restoring a recovery point is expected to take.</p>"
+        },
+        "CreatedResourceArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a resource. The format of the ARN depends on the resource type.</p>"
+        },
+        "ResourceType":{
+          "shape":"ResourceType",
+          "documentation":"<p>The resource type of the listed restore jobs; for example, an Amazon Elastic Block Store (Amazon EBS) volume or an Amazon Relational Database Service (Amazon RDS) database. For VSS Windows backups, the only supported resource type is Amazon EC2.</p>"
+        }
+      },
+      "documentation":"<p>Contains metadata about a restore job.</p>"
+    },
+    "ServiceUnavailableException":{
+      "type":"structure",
+      "members":{
+        "Code":{"shape":"string"},
+        "Message":{"shape":"string"},
+        "Type":{
+          "shape":"string",
+          "documentation":"<p/>"
+        },
+        "Context":{
+          "shape":"string",
+          "documentation":"<p/>"
+        }
+      },
+      "documentation":"<p>The request failed due to a temporary failure of the server.</p>",
+      "exception":true,
+      "fault":true
+    },
+    "StartBackupJobInput":{
+      "type":"structure",
+      "required":[
+        "BackupVaultName",
+        "ResourceArn",
+        "IamRoleArn"
+      ],
+      "members":{
+        "BackupVaultName":{
+          "shape":"BackupVaultName",
+          "documentation":"<p>The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the AWS Region where they are created. They consist of lowercase letters, numbers, and hyphens.</p>"
+        },
+        "ResourceArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a resource. The format of the ARN depends on the resource type.</p>"
+        },
+        "IamRoleArn":{
+          "shape":"IAMRoleArn",
+          "documentation":"<p>Specifies the IAM role ARN used to create the target recovery point; for example, <code>arn:aws:iam::123456789012:role/S3Access</code>.</p>"
+        },
+        "IdempotencyToken":{
+          "shape":"string",
+          "documentation":"<p>A customer chosen string that can be used to distinguish between calls to <code>StartBackupJob</code>.</p>"
+        },
+        "StartWindowMinutes":{
+          "shape":"WindowMinutes",
+          "documentation":"<p>A value in minutes after a backup is scheduled before a job will be canceled if it doesn't start successfully. This value is optional, and the default is 8 hours.</p>"
+        },
+        "CompleteWindowMinutes":{
+          "shape":"WindowMinutes",
+          "documentation":"<p>A value in minutes during which a successfully started backup must complete, or else AWS Backup will cancel the job. This value is optional. This value begins counting down from when the backup was scheduled. It does not add additional time for <code>StartWindowMinutes</code>, or if the backup started later than scheduled.</p>"
+        },
+        "Lifecycle":{
+          "shape":"Lifecycle",
+          "documentation":"<p>The lifecycle defines when a protected resource is transitioned to cold storage and when it expires. AWS Backup will transition and expire backups automatically according to the lifecycle that you define. </p> <p>Backups transitioned to cold storage must be stored in cold storage for a minimum of 90 days. Therefore, the “expire after days” setting must be 90 days greater than the “transition to cold after days” setting. The “transition to cold after days” setting cannot be changed after a backup has been transitioned to cold. </p> <p>Only Amazon EFS file system backups can be transitioned to cold storage.</p>"
+        },
+        "RecoveryPointTags":{
+          "shape":"Tags",
+          "documentation":"<p>To help organize your resources, you can assign your own metadata to the resources that you create. Each tag is a key-value pair.</p>"
+        },
+        "BackupOptions":{
+          "shape":"BackupOptions",
+          "documentation":"<p>Specifies the backup option for a selected resource. This option is only available for Windows VSS backup jobs.</p> <p>Valid values: Set to <code>\"WindowsVSS”:“enabled\"</code> to enable WindowsVSS backup option and create a VSS Windows backup. Set to “WindowsVSS”:”disabled” to create a regular backup. The WindowsVSS option is not enabled by default.</p>"
+        }
+      }
+    },
+    "StartBackupJobOutput":{
+      "type":"structure",
+      "members":{
+        "BackupJobId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a request to AWS Backup to back up a resource.</p>"
+        },
+        "RecoveryPointArn":{
+          "shape":"ARN",
+          "documentation":"<p>An ARN that uniquely identifies a recovery point; for example, <code>arn:aws:backup:us-east-1:123456789012:recovery-point:1EB3B5E7-9EB0-435A-A80B-108B488B0D45</code>.</p>"
+        },
+        "CreationDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time that a backup job is created, in Unix format and Coordinated Universal Time (UTC). The value of <code>CreationDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        }
+      }
+    },
+    "StartCopyJobInput":{
+      "type":"structure",
+      "required":[
+        "RecoveryPointArn",
+        "SourceBackupVaultName",
+        "DestinationBackupVaultArn",
+        "IamRoleArn"
+      ],
+      "members":{
+        "RecoveryPointArn":{
+          "shape":"ARN",
+          "documentation":"<p>An ARN that uniquely identifies a recovery point to use for the copy job; for example, arn:aws:backup:us-east-1:123456789012:recovery-point:1EB3B5E7-9EB0-435A-A80B-108B488B0D45. </p>"
+        },
+        "SourceBackupVaultName":{
+          "shape":"BackupVaultName",
+          "documentation":"<p>The name of a logical source container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the AWS Region where they are created. They consist of lowercase letters, numbers, and hyphens.</p>"
+        },
+        "DestinationBackupVaultArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a destination backup vault to copy to; for example, <code>arn:aws:backup:us-east-1:123456789012:vault:aBackupVault</code>.</p>"
+        },
+        "IamRoleArn":{
+          "shape":"IAMRoleArn",
+          "documentation":"<p>Specifies the IAM role ARN used to copy the target recovery point; for example, <code>arn:aws:iam::123456789012:role/S3Access</code>.</p>"
+        },
+        "IdempotencyToken":{
+          "shape":"string",
+          "documentation":"<p>A customer chosen string that can be used to distinguish between calls to <code>StartCopyJob</code>.</p>"
+        },
+        "Lifecycle":{"shape":"Lifecycle"}
+      }
+    },
+    "StartCopyJobOutput":{
+      "type":"structure",
+      "members":{
+        "CopyJobId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a copy job.</p>"
+        },
+        "CreationDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time that a copy job is created, in Unix format and Coordinated Universal Time (UTC). The value of <code>CreationDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        }
+      }
+    },
+    "StartRestoreJobInput":{
+      "type":"structure",
+      "required":[
+        "RecoveryPointArn",
+        "Metadata",
+        "IamRoleArn"
+      ],
+      "members":{
+        "RecoveryPointArn":{
+          "shape":"ARN",
+          "documentation":"<p>An ARN that uniquely identifies a recovery point; for example, <code>arn:aws:backup:us-east-1:123456789012:recovery-point:1EB3B5E7-9EB0-435A-A80B-108B488B0D45</code>.</p>"
+        },
+        "Metadata":{
+          "shape":"Metadata",
+          "documentation":"<p>A set of metadata key-value pairs. Contains information, such as a resource name, required to restore a recovery point.</p> <p> You can get configuration metadata about a resource at the time it was backed up by calling <code>GetRecoveryPointRestoreMetadata</code>. However, values in addition to those provided by <code>GetRecoveryPointRestoreMetadata</code> might be required to restore a resource. For example, you might need to provide a new resource name if the original already exists.</p> <p>You need to specify specific metadata to restore an Amazon Elastic File System (Amazon EFS) instance:</p> <ul> <li> <p> <code>file-system-id</code>: The ID of the Amazon EFS file system that is backed up by AWS Backup. Returned in <code>GetRecoveryPointRestoreMetadata</code>.</p> </li> <li> <p> <code>Encrypted</code>: A Boolean value that, if true, specifies that the file system is encrypted. If <code>KmsKeyId</code> is specified, <code>Encrypted</code> must be set to <code>true</code>.</p> </li> <li> <p> <code>KmsKeyId</code>: Specifies the AWS KMS key that is used to encrypt the restored file system. You can specify a key from another AWS account provided that key it is properly shared with your account via AWS KMS.</p> </li> <li> <p> <code>PerformanceMode</code>: Specifies the throughput mode of the file system.</p> </li> <li> <p> <code>CreationToken</code>: A user-supplied value that ensures the uniqueness (idempotency) of the request.</p> </li> <li> <p> <code>newFileSystem</code>: A Boolean value that, if true, specifies that the recovery point is restored to a new Amazon EFS file system.</p> </li> <li> <p> <code>ItemsToRestore </code>: An array of one to five strings where each string is a file path. Use <code>ItemsToRestore</code> to restore specific files or directories rather than the entire file system. This parameter is optional. For example, <code>\"itemsToRestore\":\"[\\\"/my.test\\\"]\"</code>.</p> </li> </ul>"
+        },
+        "IamRoleArn":{
+          "shape":"IAMRoleArn",
+          "documentation":"<p>The Amazon Resource Name (ARN) of the IAM role that AWS Backup uses to create the target recovery point; for example, <code>arn:aws:iam::123456789012:role/S3Access</code>.</p>"
+        },
+        "IdempotencyToken":{
+          "shape":"string",
+          "documentation":"<p>A customer chosen string that can be used to distinguish between calls to <code>StartRestoreJob</code>.</p>"
+        },
+        "ResourceType":{
+          "shape":"ResourceType",
+          "documentation":"<p>Starts a job to restore a recovery point for one of the following resources:</p> <ul> <li> <p> <code>DynamoDB</code> for Amazon DynamoDB</p> </li> <li> <p> <code>EBS</code> for Amazon Elastic Block Store</p> </li> <li> <p> <code>EC2</code> for Amazon Elastic Compute Cloud</p> </li> <li> <p> <code>EFS</code> for Amazon Elastic File System</p> </li> <li> <p> <code>RDS</code> for Amazon Relational Database Service</p> </li> <li> <p> <code>Aurora</code> for Amazon Aurora</p> </li> <li> <p> <code>Storage Gateway</code> for AWS Storage Gateway</p> </li> </ul>"
+        }
+      }
+    },
+    "StartRestoreJobOutput":{
+      "type":"structure",
+      "members":{
+        "RestoreJobId":{
+          "shape":"RestoreJobId",
+          "documentation":"<p>Uniquely identifies the job that restores a recovery point.</p>"
+        }
+      }
+    },
+    "StopBackupJobInput":{
+      "type":"structure",
+      "required":["BackupJobId"],
+      "members":{
+        "BackupJobId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a request to AWS Backup to back up a resource.</p>",
+          "location":"uri",
+          "locationName":"backupJobId"
+        }
+      }
+    },
+    "StorageClass":{
+      "type":"string",
+      "enum":[
+        "WARM",
+        "COLD",
+        "DELETED"
+      ]
+    },
+    "TagKey":{"type":"string"},
+    "TagKeyList":{
+      "type":"list",
+      "member":{"shape":"string"},
+      "sensitive":true
+    },
+    "TagResourceInput":{
+      "type":"structure",
+      "required":[
+        "ResourceArn",
+        "Tags"
+      ],
+      "members":{
+        "ResourceArn":{
+          "shape":"ARN",
+          "documentation":"<p>An ARN that uniquely identifies a resource. The format of the ARN depends on the type of the tagged resource.</p>",
+          "location":"uri",
+          "locationName":"resourceArn"
+        },
+        "Tags":{
+          "shape":"Tags",
+          "documentation":"<p>Key-value pairs that are used to help organize your resources. You can assign your own metadata to the resources you create.</p>"
+        }
+      }
+    },
+    "TagValue":{"type":"string"},
+    "Tags":{
+      "type":"map",
+      "key":{"shape":"TagKey"},
+      "value":{"shape":"TagValue"},
+      "sensitive":true
+    },
+    "UntagResourceInput":{
+      "type":"structure",
+      "required":[
+        "ResourceArn",
+        "TagKeyList"
+      ],
+      "members":{
+        "ResourceArn":{
+          "shape":"ARN",
+          "documentation":"<p>An ARN that uniquely identifies a resource. The format of the ARN depends on the type of the tagged resource.</p>",
+          "location":"uri",
+          "locationName":"resourceArn"
+        },
+        "TagKeyList":{
+          "shape":"TagKeyList",
+          "documentation":"<p>A list of keys to identify which key-value tags to remove from a resource.</p>"
+        }
+      }
+    },
+    "UpdateBackupPlanInput":{
+      "type":"structure",
+      "required":[
+        "BackupPlanId",
+        "BackupPlan"
+      ],
+      "members":{
+        "BackupPlanId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a backup plan.</p>",
+          "location":"uri",
+          "locationName":"backupPlanId"
+        },
+        "BackupPlan":{
+          "shape":"BackupPlanInput",
+          "documentation":"<p>Specifies the body of a backup plan. Includes a <code>BackupPlanName</code> and one or more sets of <code>Rules</code>.</p>"
+        }
+      }
+    },
+    "UpdateBackupPlanOutput":{
+      "type":"structure",
+      "members":{
+        "BackupPlanId":{
+          "shape":"string",
+          "documentation":"<p>Uniquely identifies a backup plan.</p>"
+        },
+        "BackupPlanArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a backup plan; for example, <code>arn:aws:backup:us-east-1:123456789012:plan:8F81F553-3A74-4A3F-B93D-B3360DC80C50</code>.</p>"
+        },
+        "CreationDate":{
+          "shape":"timestamp",
+          "documentation":"<p>The date and time a backup plan is updated, in Unix format and Coordinated Universal Time (UTC). The value of <code>CreationDate</code> is accurate to milliseconds. For example, the value 1516925490.087 represents Friday, January 26, 2018 12:11:30.087 AM.</p>"
+        },
+        "VersionId":{
+          "shape":"string",
+          "documentation":"<p>Unique, randomly generated, Unicode, UTF-8 encoded strings that are at most 1,024 bytes long. Version Ids cannot be edited.</p>"
+        },
+        "AdvancedBackupSettings":{
+          "shape":"AdvancedBackupSettings",
+          "documentation":"<p>Contains a list of <code>BackupOptions</code> for each resource type.</p>"
+        }
+      }
+    },
+    "UpdateGlobalSettingsInput":{
+      "type":"structure",
+      "members":{
+        "GlobalSettings":{
+          "shape":"GlobalSettings",
+          "documentation":"<p>A list of resources along with the opt-in preferences for the account.</p>"
+        }
+      }
+    },
+    "UpdateRecoveryPointLifecycleInput":{
+      "type":"structure",
+      "required":[
+        "BackupVaultName",
+        "RecoveryPointArn"
+      ],
+      "members":{
+        "BackupVaultName":{
+          "shape":"BackupVaultName",
+          "documentation":"<p>The name of a logical container where backups are stored. Backup vaults are identified by names that are unique to the account used to create them and the AWS Region where they are created. They consist of lowercase letters, numbers, and hyphens.</p>",
+          "location":"uri",
+          "locationName":"backupVaultName"
+        },
+        "RecoveryPointArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a recovery point; for example, <code>arn:aws:backup:us-east-1:123456789012:recovery-point:1EB3B5E7-9EB0-435A-A80B-108B488B0D45</code>.</p>",
+          "location":"uri",
+          "locationName":"recoveryPointArn"
+        },
+        "Lifecycle":{
+          "shape":"Lifecycle",
+          "documentation":"<p>The lifecycle defines when a protected resource is transitioned to cold storage and when it expires. AWS Backup transitions and expires backups automatically according to the lifecycle that you define. </p> <p>Backups transitioned to cold storage must be stored in cold storage for a minimum of 90 days. Therefore, the “expire after days” setting must be 90 days greater than the “transition to cold after days” setting. The “transition to cold after days” setting cannot be changed after a backup has been transitioned to cold. </p>"
+        }
+      }
+    },
+    "UpdateRecoveryPointLifecycleOutput":{
+      "type":"structure",
+      "members":{
+        "BackupVaultArn":{
+          "shape":"ARN",
+          "documentation":"<p>An ARN that uniquely identifies a backup vault; for example, <code>arn:aws:backup:us-east-1:123456789012:vault:aBackupVault</code>.</p>"
+        },
+        "RecoveryPointArn":{
+          "shape":"ARN",
+          "documentation":"<p>An Amazon Resource Name (ARN) that uniquely identifies a recovery point; for example, <code>arn:aws:backup:us-east-1:123456789012:recovery-point:1EB3B5E7-9EB0-435A-A80B-108B488B0D45</code>.</p>"
+        },
+        "Lifecycle":{
+          "shape":"Lifecycle",
+          "documentation":"<p>The lifecycle defines when a protected resource is transitioned to cold storage and when it expires. AWS Backup transitions and expires backups automatically according to the lifecycle that you define. </p> <p>Backups transitioned to cold storage must be stored in cold storage for a minimum of 90 days. Therefore, the “expire after days” setting must be 90 days greater than the “transition to cold after days” setting. The “transition to cold after days” setting cannot be changed after a backup has been transitioned to cold. </p> <p>Only Amazon EFS file system backups can be transitioned to cold storage.</p>"
+        },
+        "CalculatedLifecycle":{
+          "shape":"CalculatedLifecycle",
+          "documentation":"<p>A <code>CalculatedLifecycle</code> object containing <code>DeleteAt</code> and <code>MoveToColdStorageAt</code> timestamps.</p>"
+        }
+      }
+    },
+    "UpdateRegionSettingsInput":{
+      "type":"structure",
+      "members":{
+        "ResourceTypeOptInPreference":{
+          "shape":"ResourceTypeOptInPreference",
+          "documentation":"<p>Updates the list of services along with the opt-in preferences for the Region.</p>"
+        }
+      }
+    },
+    "WindowMinutes":{"type":"long"},
+    "boolean":{"type":"boolean"},
+    "long":{"type":"long"},
+    "string":{"type":"string"},
+    "timestamp":{"type":"timestamp"}
+  },
+  "documentation":"<fullname>AWS Backup</fullname> <p>AWS Backup is a unified backup service designed to protect AWS services and their associated data. AWS Backup simplifies the creation, migration, restoration, and deletion of backups, while also providing reporting and auditing.</p>"
+}

+ 589 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/batch/2016-08-10/examples-1.json

@@ -0,0 +1,589 @@
+{
+  "version": "1.0",
+  "examples": {
+    "CancelJob": [
+      {
+        "input": {
+          "jobId": "1d828f65-7a4d-42e8-996d-3b900ed59dc4",
+          "reason": "Cancelling job."
+        },
+        "output": {
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example cancels a job with the specified job ID.",
+        "id": "to-cancel-a-job-1481152314733",
+        "title": "To cancel a job"
+      }
+    ],
+    "CreateComputeEnvironment": [
+      {
+        "input": {
+          "type": "MANAGED",
+          "computeEnvironmentName": "C4OnDemand",
+          "computeResources": {
+            "type": "EC2",
+            "desiredvCpus": 48,
+            "ec2KeyPair": "id_rsa",
+            "instanceRole": "ecsInstanceRole",
+            "instanceTypes": [
+              "c4.large",
+              "c4.xlarge",
+              "c4.2xlarge",
+              "c4.4xlarge",
+              "c4.8xlarge"
+            ],
+            "maxvCpus": 128,
+            "minvCpus": 0,
+            "securityGroupIds": [
+              "sg-cf5093b2"
+            ],
+            "subnets": [
+              "subnet-220c0e0a",
+              "subnet-1a95556d",
+              "subnet-978f6dce"
+            ],
+            "tags": {
+              "Name": "Batch Instance - C4OnDemand"
+            }
+          },
+          "serviceRole": "arn:aws:iam::012345678910:role/AWSBatchServiceRole",
+          "state": "ENABLED"
+        },
+        "output": {
+          "computeEnvironmentArn": "arn:aws:batch:us-east-1:012345678910:compute-environment/C4OnDemand",
+          "computeEnvironmentName": "C4OnDemand"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example creates a managed compute environment with specific C4 instance types that are launched on demand. The compute environment is called C4OnDemand.",
+        "id": "to-create-a-managed-ec2-compute-environment-1481152600017",
+        "title": "To create a managed EC2 compute environment"
+      },
+      {
+        "input": {
+          "type": "MANAGED",
+          "computeEnvironmentName": "M4Spot",
+          "computeResources": {
+            "type": "SPOT",
+            "bidPercentage": 20,
+            "desiredvCpus": 4,
+            "ec2KeyPair": "id_rsa",
+            "instanceRole": "ecsInstanceRole",
+            "instanceTypes": [
+              "m4"
+            ],
+            "maxvCpus": 128,
+            "minvCpus": 0,
+            "securityGroupIds": [
+              "sg-cf5093b2"
+            ],
+            "spotIamFleetRole": "arn:aws:iam::012345678910:role/aws-ec2-spot-fleet-role",
+            "subnets": [
+              "subnet-220c0e0a",
+              "subnet-1a95556d",
+              "subnet-978f6dce"
+            ],
+            "tags": {
+              "Name": "Batch Instance - M4Spot"
+            }
+          },
+          "serviceRole": "arn:aws:iam::012345678910:role/AWSBatchServiceRole",
+          "state": "ENABLED"
+        },
+        "output": {
+          "computeEnvironmentArn": "arn:aws:batch:us-east-1:012345678910:compute-environment/M4Spot",
+          "computeEnvironmentName": "M4Spot"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example creates a managed compute environment with the M4 instance type that is launched when the Spot bid price is at or below 20% of the On-Demand price for the instance type. The compute environment is called M4Spot.",
+        "id": "to-create-a-managed-ec2-spot-compute-environment-1481152844190",
+        "title": "To create a managed EC2 Spot compute environment"
+      }
+    ],
+    "CreateJobQueue": [
+      {
+        "input": {
+          "computeEnvironmentOrder": [
+            {
+              "computeEnvironment": "M4Spot",
+              "order": 1
+            }
+          ],
+          "jobQueueName": "LowPriority",
+          "priority": 1,
+          "state": "ENABLED"
+        },
+        "output": {
+          "jobQueueArn": "arn:aws:batch:us-east-1:012345678910:job-queue/LowPriority",
+          "jobQueueName": "LowPriority"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example creates a job queue called LowPriority that uses the M4Spot compute environment.",
+        "id": "to-create-a-job-queue-with-a-single-compute-environment-1481152967946",
+        "title": "To create a job queue with a single compute environment"
+      },
+      {
+        "input": {
+          "computeEnvironmentOrder": [
+            {
+              "computeEnvironment": "C4OnDemand",
+              "order": 1
+            },
+            {
+              "computeEnvironment": "M4Spot",
+              "order": 2
+            }
+          ],
+          "jobQueueName": "HighPriority",
+          "priority": 10,
+          "state": "ENABLED"
+        },
+        "output": {
+          "jobQueueArn": "arn:aws:batch:us-east-1:012345678910:job-queue/HighPriority",
+          "jobQueueName": "HighPriority"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example creates a job queue called HighPriority that uses the C4OnDemand compute environment with an order of 1 and the M4Spot compute environment with an order of 2.",
+        "id": "to-create-a-job-queue-with-multiple-compute-environments-1481153027051",
+        "title": "To create a job queue with multiple compute environments"
+      }
+    ],
+    "DeleteComputeEnvironment": [
+      {
+        "input": {
+          "computeEnvironment": "P2OnDemand"
+        },
+        "output": {
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example deletes the P2OnDemand compute environment.",
+        "id": "to-delete-a-compute-environment-1481153105644",
+        "title": "To delete a compute environment"
+      }
+    ],
+    "DeleteJobQueue": [
+      {
+        "input": {
+          "jobQueue": "GPGPU"
+        },
+        "output": {
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example deletes the GPGPU job queue.",
+        "id": "to-delete-a-job-queue-1481153508134",
+        "title": "To delete a job queue"
+      }
+    ],
+    "DeregisterJobDefinition": [
+      {
+        "input": {
+          "jobDefinition": "sleep10"
+        },
+        "output": {
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example deregisters a job definition called sleep10.",
+        "id": "to-deregister-a-job-definition-1481153579565",
+        "title": "To deregister a job definition"
+      }
+    ],
+    "DescribeComputeEnvironments": [
+      {
+        "input": {
+          "computeEnvironments": [
+            "P2OnDemand"
+          ]
+        },
+        "output": {
+          "computeEnvironments": [
+            {
+              "type": "MANAGED",
+              "computeEnvironmentArn": "arn:aws:batch:us-east-1:012345678910:compute-environment/P2OnDemand",
+              "computeEnvironmentName": "P2OnDemand",
+              "computeResources": {
+                "type": "EC2",
+                "desiredvCpus": 48,
+                "ec2KeyPair": "id_rsa",
+                "instanceRole": "ecsInstanceRole",
+                "instanceTypes": [
+                  "p2"
+                ],
+                "maxvCpus": 128,
+                "minvCpus": 0,
+                "securityGroupIds": [
+                  "sg-cf5093b2"
+                ],
+                "subnets": [
+                  "subnet-220c0e0a",
+                  "subnet-1a95556d",
+                  "subnet-978f6dce"
+                ],
+                "tags": {
+                  "Name": "Batch Instance - P2OnDemand"
+                }
+              },
+              "ecsClusterArn": "arn:aws:ecs:us-east-1:012345678910:cluster/P2OnDemand_Batch_2c06f29d-d1fe-3a49-879d-42394c86effc",
+              "serviceRole": "arn:aws:iam::012345678910:role/AWSBatchServiceRole",
+              "state": "ENABLED",
+              "status": "VALID",
+              "statusReason": "ComputeEnvironment Healthy"
+            }
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example describes the P2OnDemand compute environment.",
+        "id": "to-describe-a-compute-environment-1481153713334",
+        "title": "To describe a compute environment"
+      }
+    ],
+    "DescribeJobDefinitions": [
+      {
+        "input": {
+          "status": "ACTIVE"
+        },
+        "output": {
+          "jobDefinitions": [
+            {
+              "type": "container",
+              "containerProperties": {
+                "command": [
+                  "sleep",
+                  "60"
+                ],
+                "environment": [
+
+                ],
+                "image": "busybox",
+                "memory": 128,
+                "mountPoints": [
+
+                ],
+                "ulimits": [
+
+                ],
+                "vcpus": 1,
+                "volumes": [
+
+                ]
+              },
+              "jobDefinitionArn": "arn:aws:batch:us-east-1:012345678910:job-definition/sleep60:1",
+              "jobDefinitionName": "sleep60",
+              "revision": 1,
+              "status": "ACTIVE"
+            }
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example describes all of your active job definitions.",
+        "id": "to-describe-active-job-definitions-1481153895831",
+        "title": "To describe active job definitions"
+      }
+    ],
+    "DescribeJobQueues": [
+      {
+        "input": {
+          "jobQueues": [
+            "HighPriority"
+          ]
+        },
+        "output": {
+          "jobQueues": [
+            {
+              "computeEnvironmentOrder": [
+                {
+                  "computeEnvironment": "arn:aws:batch:us-east-1:012345678910:compute-environment/C4OnDemand",
+                  "order": 1
+                }
+              ],
+              "jobQueueArn": "arn:aws:batch:us-east-1:012345678910:job-queue/HighPriority",
+              "jobQueueName": "HighPriority",
+              "priority": 1,
+              "state": "ENABLED",
+              "status": "VALID",
+              "statusReason": "JobQueue Healthy"
+            }
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example describes the HighPriority job queue.",
+        "id": "to-describe-a-job-queue-1481153995804",
+        "title": "To describe a job queue"
+      }
+    ],
+    "DescribeJobs": [
+      {
+        "input": {
+          "jobs": [
+            "24fa2d7a-64c4-49d2-8b47-f8da4fbde8e9"
+          ]
+        },
+        "output": {
+          "jobs": [
+            {
+              "container": {
+                "command": [
+                  "sleep",
+                  "60"
+                ],
+                "containerInstanceArn": "arn:aws:ecs:us-east-1:012345678910:container-instance/5406d7cd-58bd-4b8f-9936-48d7c6b1526c",
+                "environment": [
+
+                ],
+                "exitCode": 0,
+                "image": "busybox",
+                "memory": 128,
+                "mountPoints": [
+
+                ],
+                "ulimits": [
+
+                ],
+                "vcpus": 1,
+                "volumes": [
+
+                ]
+              },
+              "createdAt": 1480460782010,
+              "dependsOn": [
+
+              ],
+              "jobDefinition": "sleep60",
+              "jobId": "24fa2d7a-64c4-49d2-8b47-f8da4fbde8e9",
+              "jobName": "example",
+              "jobQueue": "arn:aws:batch:us-east-1:012345678910:job-queue/HighPriority",
+              "parameters": {
+              },
+              "startedAt": 1480460816500,
+              "status": "SUCCEEDED",
+              "stoppedAt": 1480460880699
+            }
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example describes a job with the specified job ID.",
+        "id": "to-describe-a-specific-job-1481154090490",
+        "title": "To describe a specific job"
+      }
+    ],
+    "ListJobs": [
+      {
+        "input": {
+          "jobQueue": "HighPriority"
+        },
+        "output": {
+          "jobSummaryList": [
+            {
+              "jobId": "e66ff5fd-a1ff-4640-b1a2-0b0a142f49bb",
+              "jobName": "example"
+            }
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example lists the running jobs in the HighPriority job queue.",
+        "id": "to-list-running-jobs-1481154202164",
+        "title": "To list running jobs"
+      },
+      {
+        "input": {
+          "jobQueue": "HighPriority",
+          "jobStatus": "SUBMITTED"
+        },
+        "output": {
+          "jobSummaryList": [
+            {
+              "jobId": "68f0c163-fbd4-44e6-9fd1-25b14a434786",
+              "jobName": "example"
+            }
+          ]
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example lists jobs in the HighPriority job queue that are in the SUBMITTED job status.",
+        "id": "to-list-submitted-jobs-1481154251623",
+        "title": "To list submitted jobs"
+      }
+    ],
+    "RegisterJobDefinition": [
+      {
+        "input": {
+          "type": "container",
+          "containerProperties": {
+            "command": [
+              "sleep",
+              "10"
+            ],
+            "image": "busybox",
+            "memory": 128,
+            "vcpus": 1
+          },
+          "jobDefinitionName": "sleep10"
+        },
+        "output": {
+          "jobDefinitionArn": "arn:aws:batch:us-east-1:012345678910:job-definition/sleep10:1",
+          "jobDefinitionName": "sleep10",
+          "revision": 1
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example registers a job definition for a simple container job.",
+        "id": "to-register-a-job-definition-1481154325325",
+        "title": "To register a job definition"
+      }
+    ],
+    "SubmitJob": [
+      {
+        "input": {
+          "jobDefinition": "sleep60",
+          "jobName": "example",
+          "jobQueue": "HighPriority"
+        },
+        "output": {
+          "jobId": "876da822-4198-45f2-a252-6cea32512ea8",
+          "jobName": "example"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example submits a simple container job called example to the HighPriority job queue.",
+        "id": "to-submit-a-job-to-a-queue-1481154481673",
+        "title": "To submit a job to a queue"
+      }
+    ],
+    "TerminateJob": [
+      {
+        "input": {
+          "jobId": "61e743ed-35e4-48da-b2de-5c8333821c84",
+          "reason": "Terminating job."
+        },
+        "output": {
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example terminates a job with the specified job ID.",
+        "id": "to-terminate-a-job-1481154558276",
+        "title": "To terminate a job"
+      }
+    ],
+    "UpdateComputeEnvironment": [
+      {
+        "input": {
+          "computeEnvironment": "P2OnDemand",
+          "state": "DISABLED"
+        },
+        "output": {
+          "computeEnvironmentArn": "arn:aws:batch:us-east-1:012345678910:compute-environment/P2OnDemand",
+          "computeEnvironmentName": "P2OnDemand"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example disables the P2OnDemand compute environment so it can be deleted.",
+        "id": "to-update-a-compute-environment-1481154702731",
+        "title": "To update a compute environment"
+      }
+    ],
+    "UpdateJobQueue": [
+      {
+        "input": {
+          "jobQueue": "GPGPU",
+          "state": "DISABLED"
+        },
+        "output": {
+          "jobQueueArn": "arn:aws:batch:us-east-1:012345678910:job-queue/GPGPU",
+          "jobQueueName": "GPGPU"
+        },
+        "comments": {
+          "input": {
+          },
+          "output": {
+          }
+        },
+        "description": "This example disables a job queue so that it can be deleted.",
+        "id": "to-update-a-job-queue-1481154806981",
+        "title": "To update a job queue"
+      }
+    ]
+  }
+}

+ 28 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/batch/2016-08-10/paginators-1.json

@@ -0,0 +1,28 @@
+{
+  "pagination": {
+    "DescribeComputeEnvironments": {
+      "input_token": "nextToken",
+      "limit_key": "maxResults",
+      "output_token": "nextToken",
+      "result_key": "computeEnvironments"
+    },
+    "DescribeJobDefinitions": {
+      "input_token": "nextToken",
+      "limit_key": "maxResults",
+      "output_token": "nextToken",
+      "result_key": "jobDefinitions"
+    },
+    "DescribeJobQueues": {
+      "input_token": "nextToken",
+      "limit_key": "maxResults",
+      "output_token": "nextToken",
+      "result_key": "jobQueues"
+    },
+    "ListJobs": {
+      "input_token": "nextToken",
+      "limit_key": "maxResults",
+      "output_token": "nextToken",
+      "result_key": "jobSummaryList"
+    }
+  }
+}

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 40 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/batch/2016-08-10/service-2.json


+ 16 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/braket/2019-09-01/paginators-1.json

@@ -0,0 +1,16 @@
+{
+  "pagination": {
+    "SearchDevices": {
+      "input_token": "nextToken",
+      "output_token": "nextToken",
+      "limit_key": "maxResults",
+      "result_key": "devices"
+    },
+    "SearchQuantumTasks": {
+      "input_token": "nextToken",
+      "output_token": "nextToken",
+      "limit_key": "maxResults",
+      "result_key": "quantumTasks"
+    }
+  }
+}

+ 915 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/braket/2019-09-01/service-2.json

@@ -0,0 +1,915 @@
+{
+  "version":"2.0",
+  "metadata":{
+    "apiVersion":"2019-09-01",
+    "endpointPrefix":"braket",
+    "jsonVersion":"1.1",
+    "protocol":"rest-json",
+    "serviceFullName":"Braket",
+    "serviceId":"Braket",
+    "signatureVersion":"v4",
+    "signingName":"braket",
+    "uid":"braket-2019-09-01"
+  },
+  "operations":{
+    "CancelQuantumTask":{
+      "name":"CancelQuantumTask",
+      "http":{
+        "method":"PUT",
+        "requestUri":"/quantum-task/{quantumTaskArn}/cancel",
+        "responseCode":200
+      },
+      "input":{"shape":"CancelQuantumTaskRequest"},
+      "output":{"shape":"CancelQuantumTaskResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"ConflictException"},
+        {"shape":"ThrottlingException"},
+        {"shape":"InternalServiceException"},
+        {"shape":"ValidationException"}
+      ],
+      "documentation":"<p>Cancels the specified task.</p>",
+      "idempotent":true
+    },
+    "CreateQuantumTask":{
+      "name":"CreateQuantumTask",
+      "http":{
+        "method":"POST",
+        "requestUri":"/quantum-task",
+        "responseCode":201
+      },
+      "input":{"shape":"CreateQuantumTaskRequest"},
+      "output":{"shape":"CreateQuantumTaskResponse"},
+      "errors":[
+        {"shape":"AccessDeniedException"},
+        {"shape":"ThrottlingException"},
+        {"shape":"DeviceOfflineException"},
+        {"shape":"InternalServiceException"},
+        {"shape":"ServiceQuotaExceededException"},
+        {"shape":"ValidationException"}
+      ],
+      "documentation":"<p>Creates a quantum task.</p>"
+    },
+    "GetDevice":{
+      "name":"GetDevice",
+      "http":{
+        "method":"GET",
+        "requestUri":"/device/{deviceArn}",
+        "responseCode":200
+      },
+      "input":{"shape":"GetDeviceRequest"},
+      "output":{"shape":"GetDeviceResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"ThrottlingException"},
+        {"shape":"DeviceOfflineException"},
+        {"shape":"DeviceRetiredException"},
+        {"shape":"InternalServiceException"},
+        {"shape":"ValidationException"}
+      ],
+      "documentation":"<p>Retrieves the devices available in Amazon Braket.</p>"
+    },
+    "GetQuantumTask":{
+      "name":"GetQuantumTask",
+      "http":{
+        "method":"GET",
+        "requestUri":"/quantum-task/{quantumTaskArn}",
+        "responseCode":200
+      },
+      "input":{"shape":"GetQuantumTaskRequest"},
+      "output":{"shape":"GetQuantumTaskResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"ThrottlingException"},
+        {"shape":"InternalServiceException"},
+        {"shape":"ValidationException"}
+      ],
+      "documentation":"<p>Retrieves the specified quantum task.</p>"
+    },
+    "ListTagsForResource":{
+      "name":"ListTagsForResource",
+      "http":{
+        "method":"GET",
+        "requestUri":"/tags/{resourceArn}",
+        "responseCode":200
+      },
+      "input":{"shape":"ListTagsForResourceRequest"},
+      "output":{"shape":"ListTagsForResourceResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InternalServiceException"},
+        {"shape":"ValidationException"}
+      ],
+      "documentation":"<p>Shows the tags associated with this resource.</p>"
+    },
+    "SearchDevices":{
+      "name":"SearchDevices",
+      "http":{
+        "method":"POST",
+        "requestUri":"/devices",
+        "responseCode":200
+      },
+      "input":{"shape":"SearchDevicesRequest"},
+      "output":{"shape":"SearchDevicesResponse"},
+      "errors":[
+        {"shape":"AccessDeniedException"},
+        {"shape":"ThrottlingException"},
+        {"shape":"InternalServiceException"},
+        {"shape":"ValidationException"}
+      ],
+      "documentation":"<p>Searches for devices using the specified filters.</p>"
+    },
+    "SearchQuantumTasks":{
+      "name":"SearchQuantumTasks",
+      "http":{
+        "method":"POST",
+        "requestUri":"/quantum-tasks",
+        "responseCode":200
+      },
+      "input":{"shape":"SearchQuantumTasksRequest"},
+      "output":{"shape":"SearchQuantumTasksResponse"},
+      "errors":[
+        {"shape":"AccessDeniedException"},
+        {"shape":"ThrottlingException"},
+        {"shape":"InternalServiceException"},
+        {"shape":"ValidationException"}
+      ],
+      "documentation":"<p>Searches for tasks that match the specified filter values.</p>"
+    },
+    "TagResource":{
+      "name":"TagResource",
+      "http":{
+        "method":"POST",
+        "requestUri":"/tags/{resourceArn}",
+        "responseCode":200
+      },
+      "input":{"shape":"TagResourceRequest"},
+      "output":{"shape":"TagResourceResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InternalServiceException"},
+        {"shape":"ValidationException"}
+      ],
+      "documentation":"<p>Add a tag to the specified resource.</p>"
+    },
+    "UntagResource":{
+      "name":"UntagResource",
+      "http":{
+        "method":"DELETE",
+        "requestUri":"/tags/{resourceArn}",
+        "responseCode":200
+      },
+      "input":{"shape":"UntagResourceRequest"},
+      "output":{"shape":"UntagResourceResponse"},
+      "errors":[
+        {"shape":"ResourceNotFoundException"},
+        {"shape":"InternalServiceException"},
+        {"shape":"ValidationException"}
+      ],
+      "documentation":"<p>Remove tags from a resource.</p>",
+      "idempotent":true
+    }
+  },
+  "shapes":{
+    "AccessDeniedException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"String"}
+      },
+      "documentation":"<p>You do not have sufficient access to perform this action.</p>",
+      "error":{
+        "httpStatusCode":403,
+        "senderFault":true
+      },
+      "exception":true
+    },
+    "CancelQuantumTaskRequest":{
+      "type":"structure",
+      "required":[
+        "clientToken",
+        "quantumTaskArn"
+      ],
+      "members":{
+        "clientToken":{
+          "shape":"String64",
+          "documentation":"<p>The client token associated with the request.</p>",
+          "idempotencyToken":true
+        },
+        "quantumTaskArn":{
+          "shape":"QuantumTaskArn",
+          "documentation":"<p>The ARN of the task to cancel.</p>",
+          "location":"uri",
+          "locationName":"quantumTaskArn"
+        }
+      }
+    },
+    "CancelQuantumTaskResponse":{
+      "type":"structure",
+      "required":[
+        "cancellationStatus",
+        "quantumTaskArn"
+      ],
+      "members":{
+        "cancellationStatus":{
+          "shape":"CancellationStatus",
+          "documentation":"<p>The status of the cancellation request.</p>"
+        },
+        "quantumTaskArn":{
+          "shape":"QuantumTaskArn",
+          "documentation":"<p>The ARN of the task.</p>"
+        }
+      }
+    },
+    "CancellationStatus":{
+      "type":"string",
+      "enum":[
+        "CANCELLING",
+        "CANCELLED"
+      ]
+    },
+    "ConflictException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"String"}
+      },
+      "documentation":"<p>An error occurred due to a conflict.</p>",
+      "error":{
+        "httpStatusCode":409,
+        "senderFault":true
+      },
+      "exception":true
+    },
+    "CreateQuantumTaskRequest":{
+      "type":"structure",
+      "required":[
+        "action",
+        "clientToken",
+        "deviceArn",
+        "outputS3Bucket",
+        "outputS3KeyPrefix",
+        "shots"
+      ],
+      "members":{
+        "action":{
+          "shape":"JsonValue",
+          "documentation":"<p>The action associated with the task.</p>",
+          "jsonvalue":true
+        },
+        "clientToken":{
+          "shape":"String64",
+          "documentation":"<p>The client token associated with the request.</p>",
+          "idempotencyToken":true
+        },
+        "deviceArn":{
+          "shape":"DeviceArn",
+          "documentation":"<p>The ARN of the device to run the task on.</p>"
+        },
+        "deviceParameters":{
+          "shape":"CreateQuantumTaskRequestDeviceParametersString",
+          "documentation":"<p>The parameters for the device to run the task on.</p>",
+          "jsonvalue":true
+        },
+        "outputS3Bucket":{
+          "shape":"CreateQuantumTaskRequestOutputS3BucketString",
+          "documentation":"<p>The S3 bucket to store task result files in.</p>"
+        },
+        "outputS3KeyPrefix":{
+          "shape":"CreateQuantumTaskRequestOutputS3KeyPrefixString",
+          "documentation":"<p>The key prefix for the location in the S3 bucket to store task results in.</p>"
+        },
+        "shots":{
+          "shape":"CreateQuantumTaskRequestShotsLong",
+          "documentation":"<p>The number of shots to use for the task.</p>"
+        },
+        "tags":{
+          "shape":"TagsMap",
+          "documentation":"<p>Tags to be added to the quantum task you're creating.</p>"
+        }
+      }
+    },
+    "CreateQuantumTaskRequestDeviceParametersString":{
+      "type":"string",
+      "max":48000,
+      "min":1
+    },
+    "CreateQuantumTaskRequestOutputS3BucketString":{
+      "type":"string",
+      "max":63,
+      "min":3
+    },
+    "CreateQuantumTaskRequestOutputS3KeyPrefixString":{
+      "type":"string",
+      "max":1024,
+      "min":1
+    },
+    "CreateQuantumTaskRequestShotsLong":{
+      "type":"long",
+      "box":true,
+      "min":0
+    },
+    "CreateQuantumTaskResponse":{
+      "type":"structure",
+      "required":["quantumTaskArn"],
+      "members":{
+        "quantumTaskArn":{
+          "shape":"QuantumTaskArn",
+          "documentation":"<p>The ARN of the task created by the request.</p>"
+        }
+      }
+    },
+    "DeviceArn":{
+      "type":"string",
+      "max":256,
+      "min":1
+    },
+    "DeviceOfflineException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"String"}
+      },
+      "documentation":"<p>The specified device is currently offline.</p>",
+      "error":{
+        "httpStatusCode":424,
+        "senderFault":true
+      },
+      "exception":true
+    },
+    "DeviceRetiredException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"String"}
+      },
+      "documentation":"<p>The specified device has been retired.</p>",
+      "error":{
+        "httpStatusCode":410,
+        "senderFault":true
+      },
+      "exception":true
+    },
+    "DeviceStatus":{
+      "type":"string",
+      "enum":[
+        "ONLINE",
+        "OFFLINE",
+        "RETIRED"
+      ]
+    },
+    "DeviceSummary":{
+      "type":"structure",
+      "required":[
+        "deviceArn",
+        "deviceName",
+        "deviceStatus",
+        "deviceType",
+        "providerName"
+      ],
+      "members":{
+        "deviceArn":{
+          "shape":"DeviceArn",
+          "documentation":"<p>The ARN of the device.</p>"
+        },
+        "deviceName":{
+          "shape":"String",
+          "documentation":"<p>The name of the device.</p>"
+        },
+        "deviceStatus":{
+          "shape":"DeviceStatus",
+          "documentation":"<p>The status of the device.</p>"
+        },
+        "deviceType":{
+          "shape":"DeviceType",
+          "documentation":"<p>The type of the device.</p>"
+        },
+        "providerName":{
+          "shape":"String",
+          "documentation":"<p>The provider of the device.</p>"
+        }
+      },
+      "documentation":"<p>Includes information about the device.</p>"
+    },
+    "DeviceSummaryList":{
+      "type":"list",
+      "member":{"shape":"DeviceSummary"}
+    },
+    "DeviceType":{
+      "type":"string",
+      "enum":[
+        "QPU",
+        "SIMULATOR"
+      ]
+    },
+    "GetDeviceRequest":{
+      "type":"structure",
+      "required":["deviceArn"],
+      "members":{
+        "deviceArn":{
+          "shape":"DeviceArn",
+          "documentation":"<p>The ARN of the device to retrieve.</p>",
+          "location":"uri",
+          "locationName":"deviceArn"
+        }
+      }
+    },
+    "GetDeviceResponse":{
+      "type":"structure",
+      "required":[
+        "deviceArn",
+        "deviceCapabilities",
+        "deviceName",
+        "deviceStatus",
+        "deviceType",
+        "providerName"
+      ],
+      "members":{
+        "deviceArn":{
+          "shape":"DeviceArn",
+          "documentation":"<p>The ARN of the device.</p>"
+        },
+        "deviceCapabilities":{
+          "shape":"JsonValue",
+          "documentation":"<p>Details about the capabilities of the device.</p>",
+          "jsonvalue":true
+        },
+        "deviceName":{
+          "shape":"String",
+          "documentation":"<p>The name of the device.</p>"
+        },
+        "deviceStatus":{
+          "shape":"DeviceStatus",
+          "documentation":"<p>The status of the device.</p>"
+        },
+        "deviceType":{
+          "shape":"DeviceType",
+          "documentation":"<p>The type of the device.</p>"
+        },
+        "providerName":{
+          "shape":"String",
+          "documentation":"<p>The name of the partner company for the device.</p>"
+        }
+      }
+    },
+    "GetQuantumTaskRequest":{
+      "type":"structure",
+      "required":["quantumTaskArn"],
+      "members":{
+        "quantumTaskArn":{
+          "shape":"QuantumTaskArn",
+          "documentation":"<p>the ARN of the task to retrieve.</p>",
+          "location":"uri",
+          "locationName":"quantumTaskArn"
+        }
+      }
+    },
+    "GetQuantumTaskResponse":{
+      "type":"structure",
+      "required":[
+        "createdAt",
+        "deviceArn",
+        "deviceParameters",
+        "outputS3Bucket",
+        "outputS3Directory",
+        "quantumTaskArn",
+        "shots",
+        "status"
+      ],
+      "members":{
+        "createdAt":{
+          "shape":"SyntheticTimestamp_date_time",
+          "documentation":"<p>The time at which the task was created.</p>"
+        },
+        "deviceArn":{
+          "shape":"DeviceArn",
+          "documentation":"<p>The ARN of the device the task was run on.</p>"
+        },
+        "deviceParameters":{
+          "shape":"JsonValue",
+          "documentation":"<p>The parameters for the device on which the task ran.</p>",
+          "jsonvalue":true
+        },
+        "endedAt":{
+          "shape":"SyntheticTimestamp_date_time",
+          "documentation":"<p>The time at which the task ended.</p>"
+        },
+        "failureReason":{
+          "shape":"String",
+          "documentation":"<p>The reason that a task failed.</p>"
+        },
+        "outputS3Bucket":{
+          "shape":"String",
+          "documentation":"<p>The S3 bucket where task results are stored.</p>"
+        },
+        "outputS3Directory":{
+          "shape":"String",
+          "documentation":"<p>The folder in the S3 bucket where task results are stored.</p>"
+        },
+        "quantumTaskArn":{
+          "shape":"QuantumTaskArn",
+          "documentation":"<p>The ARN of the task.</p>"
+        },
+        "shots":{
+          "shape":"Long",
+          "documentation":"<p>The number of shots used in the task.</p>"
+        },
+        "status":{
+          "shape":"QuantumTaskStatus",
+          "documentation":"<p>The status of the task.</p>"
+        },
+        "tags":{
+          "shape":"TagsMap",
+          "documentation":"<p>The tags that belong to this task.</p>"
+        }
+      }
+    },
+    "InternalServiceException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"String"}
+      },
+      "documentation":"<p>The request processing has failed because of an unknown error, exception, or failure.</p>",
+      "error":{"httpStatusCode":500},
+      "exception":true,
+      "fault":true
+    },
+    "JsonValue":{"type":"string"},
+    "ListTagsForResourceRequest":{
+      "type":"structure",
+      "required":["resourceArn"],
+      "members":{
+        "resourceArn":{
+          "shape":"String",
+          "documentation":"<p>Specify the <code>resourceArn</code> for the resource whose tags to display.</p>",
+          "location":"uri",
+          "locationName":"resourceArn"
+        }
+      }
+    },
+    "ListTagsForResourceResponse":{
+      "type":"structure",
+      "members":{
+        "tags":{
+          "shape":"TagsMap",
+          "documentation":"<p>Displays the key, value pairs of tags associated with this resource.</p>"
+        }
+      }
+    },
+    "Long":{
+      "type":"long",
+      "box":true
+    },
+    "QuantumTaskArn":{
+      "type":"string",
+      "max":256,
+      "min":1
+    },
+    "QuantumTaskStatus":{
+      "type":"string",
+      "enum":[
+        "CREATED",
+        "QUEUED",
+        "RUNNING",
+        "COMPLETED",
+        "FAILED",
+        "CANCELLING",
+        "CANCELLED"
+      ]
+    },
+    "QuantumTaskSummary":{
+      "type":"structure",
+      "required":[
+        "createdAt",
+        "deviceArn",
+        "outputS3Bucket",
+        "outputS3Directory",
+        "quantumTaskArn",
+        "shots",
+        "status"
+      ],
+      "members":{
+        "createdAt":{
+          "shape":"SyntheticTimestamp_date_time",
+          "documentation":"<p>The time at which the task was created.</p>"
+        },
+        "deviceArn":{
+          "shape":"DeviceArn",
+          "documentation":"<p>The ARN of the device the task ran on.</p>"
+        },
+        "endedAt":{
+          "shape":"SyntheticTimestamp_date_time",
+          "documentation":"<p>The time at which the task finished.</p>"
+        },
+        "outputS3Bucket":{
+          "shape":"String",
+          "documentation":"<p>The S3 bucket where the task result file is stored..</p>"
+        },
+        "outputS3Directory":{
+          "shape":"String",
+          "documentation":"<p>The folder in the S3 bucket where the task result file is stored.</p>"
+        },
+        "quantumTaskArn":{
+          "shape":"QuantumTaskArn",
+          "documentation":"<p>The ARN of the task.</p>"
+        },
+        "shots":{
+          "shape":"Long",
+          "documentation":"<p>The shots used for the task.</p>"
+        },
+        "status":{
+          "shape":"QuantumTaskStatus",
+          "documentation":"<p>The status of the task.</p>"
+        },
+        "tags":{
+          "shape":"TagsMap",
+          "documentation":"<p>Displays the key, value pairs of tags associated with this quantum task.</p>"
+        }
+      },
+      "documentation":"<p>Includes information about a quantum task.</p>"
+    },
+    "QuantumTaskSummaryList":{
+      "type":"list",
+      "member":{"shape":"QuantumTaskSummary"}
+    },
+    "ResourceNotFoundException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"String"}
+      },
+      "documentation":"<p>The specified resource was not found.</p>",
+      "error":{
+        "httpStatusCode":404,
+        "senderFault":true
+      },
+      "exception":true
+    },
+    "SearchDevicesFilter":{
+      "type":"structure",
+      "required":[
+        "name",
+        "values"
+      ],
+      "members":{
+        "name":{
+          "shape":"SearchDevicesFilterNameString",
+          "documentation":"<p>The name to use to filter results.</p>"
+        },
+        "values":{
+          "shape":"SearchDevicesFilterValuesList",
+          "documentation":"<p>The values to use to filter results.</p>"
+        }
+      },
+      "documentation":"<p>The filter to use for searching devices.</p>"
+    },
+    "SearchDevicesFilterNameString":{
+      "type":"string",
+      "max":64,
+      "min":1
+    },
+    "SearchDevicesFilterValuesList":{
+      "type":"list",
+      "member":{"shape":"String256"},
+      "max":10,
+      "min":1
+    },
+    "SearchDevicesRequest":{
+      "type":"structure",
+      "required":["filters"],
+      "members":{
+        "filters":{
+          "shape":"SearchDevicesRequestFiltersList",
+          "documentation":"<p>The filter values to use to search for a device.</p>"
+        },
+        "maxResults":{
+          "shape":"SearchDevicesRequestMaxResultsInteger",
+          "documentation":"<p>The maximum number of results to return in the response.</p>"
+        },
+        "nextToken":{
+          "shape":"String",
+          "documentation":"<p>A token used for pagination of results returned in the response. Use the token returned from the previous request continue results where the previous request ended.</p>"
+        }
+      }
+    },
+    "SearchDevicesRequestFiltersList":{
+      "type":"list",
+      "member":{"shape":"SearchDevicesFilter"},
+      "max":10,
+      "min":0
+    },
+    "SearchDevicesRequestMaxResultsInteger":{
+      "type":"integer",
+      "box":true,
+      "max":100,
+      "min":1
+    },
+    "SearchDevicesResponse":{
+      "type":"structure",
+      "required":["devices"],
+      "members":{
+        "devices":{
+          "shape":"DeviceSummaryList",
+          "documentation":"<p>An array of <code>DeviceSummary</code> objects for devices that match the specified filter values.</p>"
+        },
+        "nextToken":{
+          "shape":"String",
+          "documentation":"<p>A token used for pagination of results, or null if there are no additional results. Use the token value in a subsequent request to continue results where the previous request ended.</p>"
+        }
+      }
+    },
+    "SearchQuantumTasksFilter":{
+      "type":"structure",
+      "required":[
+        "name",
+        "operator",
+        "values"
+      ],
+      "members":{
+        "name":{
+          "shape":"String64",
+          "documentation":"<p>The name of the device used for the task.</p>"
+        },
+        "operator":{
+          "shape":"SearchQuantumTasksFilterOperator",
+          "documentation":"<p>An operator to use in the filter.</p>"
+        },
+        "values":{
+          "shape":"SearchQuantumTasksFilterValuesList",
+          "documentation":"<p>The values to use for the filter.</p>"
+        }
+      },
+      "documentation":"<p>A filter to use to search for tasks.</p>"
+    },
+    "SearchQuantumTasksFilterOperator":{
+      "type":"string",
+      "enum":[
+        "LT",
+        "LTE",
+        "EQUAL",
+        "GT",
+        "GTE",
+        "BETWEEN"
+      ]
+    },
+    "SearchQuantumTasksFilterValuesList":{
+      "type":"list",
+      "member":{"shape":"String256"},
+      "max":10,
+      "min":1
+    },
+    "SearchQuantumTasksRequest":{
+      "type":"structure",
+      "required":["filters"],
+      "members":{
+        "filters":{
+          "shape":"SearchQuantumTasksRequestFiltersList",
+          "documentation":"<p>Array of <code>SearchQuantumTasksFilter</code> objects.</p>"
+        },
+        "maxResults":{
+          "shape":"SearchQuantumTasksRequestMaxResultsInteger",
+          "documentation":"<p>Maximum number of results to return in the response.</p>"
+        },
+        "nextToken":{
+          "shape":"String",
+          "documentation":"<p>A token used for pagination of results returned in the response. Use the token returned from the previous request continue results where the previous request ended.</p>"
+        }
+      }
+    },
+    "SearchQuantumTasksRequestFiltersList":{
+      "type":"list",
+      "member":{"shape":"SearchQuantumTasksFilter"},
+      "max":10,
+      "min":0
+    },
+    "SearchQuantumTasksRequestMaxResultsInteger":{
+      "type":"integer",
+      "box":true,
+      "max":100,
+      "min":1
+    },
+    "SearchQuantumTasksResponse":{
+      "type":"structure",
+      "required":["quantumTasks"],
+      "members":{
+        "nextToken":{
+          "shape":"String",
+          "documentation":"<p>A token used for pagination of results, or null if there are no additional results. Use the token value in a subsequent request to continue results where the previous request ended.</p>"
+        },
+        "quantumTasks":{
+          "shape":"QuantumTaskSummaryList",
+          "documentation":"<p>An array of <code>QuantumTaskSummary</code> objects for tasks that match the specified filters.</p>"
+        }
+      }
+    },
+    "ServiceQuotaExceededException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"String"}
+      },
+      "documentation":"<p>The request failed because a service quota is exceeded.</p>",
+      "error":{
+        "httpStatusCode":402,
+        "senderFault":true
+      },
+      "exception":true
+    },
+    "String":{"type":"string"},
+    "String256":{
+      "type":"string",
+      "max":256,
+      "min":1
+    },
+    "String64":{
+      "type":"string",
+      "max":64,
+      "min":1
+    },
+    "SyntheticTimestamp_date_time":{
+      "type":"timestamp",
+      "timestampFormat":"iso8601"
+    },
+    "TagKeys":{
+      "type":"list",
+      "member":{"shape":"String"}
+    },
+    "TagResourceRequest":{
+      "type":"structure",
+      "required":[
+        "resourceArn",
+        "tags"
+      ],
+      "members":{
+        "resourceArn":{
+          "shape":"String",
+          "documentation":"<p>Specify the <code>resourceArn</code> of the resource to which a tag will be added.</p>",
+          "location":"uri",
+          "locationName":"resourceArn"
+        },
+        "tags":{
+          "shape":"TagsMap",
+          "documentation":"<p>Specify the tags to add to the resource.</p>"
+        }
+      }
+    },
+    "TagResourceResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "TagsMap":{
+      "type":"map",
+      "key":{"shape":"String"},
+      "value":{"shape":"String"}
+    },
+    "ThrottlingException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"String"}
+      },
+      "documentation":"<p>The throttling rate limit is met.</p>",
+      "error":{
+        "httpStatusCode":429,
+        "senderFault":true
+      },
+      "exception":true
+    },
+    "UntagResourceRequest":{
+      "type":"structure",
+      "required":[
+        "resourceArn",
+        "tagKeys"
+      ],
+      "members":{
+        "resourceArn":{
+          "shape":"String",
+          "documentation":"<p>Specify the <code>resourceArn</code> for the resource from which to remove the tags.</p>",
+          "location":"uri",
+          "locationName":"resourceArn"
+        },
+        "tagKeys":{
+          "shape":"TagKeys",
+          "documentation":"<p>Specify the keys for the tags to remove from the resource.</p>",
+          "location":"querystring",
+          "locationName":"tagKeys"
+        }
+      }
+    },
+    "UntagResourceResponse":{
+      "type":"structure",
+      "members":{
+      }
+    },
+    "ValidationException":{
+      "type":"structure",
+      "members":{
+        "message":{"shape":"String"}
+      },
+      "documentation":"<p>The input fails to satisfy the constraints specified by an AWS service.</p>",
+      "error":{
+        "httpStatusCode":400,
+        "senderFault":true
+      },
+      "exception":true
+    }
+  },
+  "documentation":"<p>The Amazon Braket API Reference provides information about the operations and structures supported in Amazon Braket.</p>"
+}

+ 5 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/budgets/2016-10-20/examples-1.json

@@ -0,0 +1,5 @@
+{
+  "version": "1.0",
+  "examples": {
+  }
+}

+ 46 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/budgets/2016-10-20/paginators-1.json

@@ -0,0 +1,46 @@
+{
+  "pagination": {
+    "DescribeBudgets": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "Budgets"
+    },
+    "DescribeNotificationsForBudget": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "Notifications"
+    },
+    "DescribeSubscribersForNotification": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "Subscribers"
+    },
+    "DescribeBudgetPerformanceHistory": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "BudgetPerformanceHistory"
+    },
+    "DescribeBudgetActionHistories": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "ActionHistories"
+    },
+    "DescribeBudgetActionsForAccount": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "Actions"
+    },
+    "DescribeBudgetActionsForBudget": {
+      "input_token": "NextToken",
+      "limit_key": "MaxResults",
+      "output_token": "NextToken",
+      "result_key": "Actions"
+    }
+  }
+}

+ 1962 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/budgets/2016-10-20/service-2.json

@@ -0,0 +1,1962 @@
+{
+  "version":"2.0",
+  "metadata":{
+    "apiVersion":"2016-10-20",
+    "endpointPrefix":"budgets",
+    "jsonVersion":"1.1",
+    "protocol":"json",
+    "serviceAbbreviation":"AWSBudgets",
+    "serviceFullName":"AWS Budgets",
+    "serviceId":"Budgets",
+    "signatureVersion":"v4",
+    "targetPrefix":"AWSBudgetServiceGateway",
+    "uid":"budgets-2016-10-20"
+  },
+  "operations":{
+    "CreateBudget":{
+      "name":"CreateBudget",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateBudgetRequest"},
+      "output":{"shape":"CreateBudgetResponse"},
+      "errors":[
+        {"shape":"InvalidParameterException"},
+        {"shape":"InternalErrorException"},
+        {"shape":"CreationLimitExceededException"},
+        {"shape":"DuplicateRecordException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Creates a budget and, if included, notifications and subscribers. </p> <important> <p>Only one of <code>BudgetLimit</code> or <code>PlannedBudgetLimits</code> can be present in the syntax at one time. Use the syntax that matches your case. The Request Syntax section shows the <code>BudgetLimit</code> syntax. For <code>PlannedBudgetLimits</code>, see the <a href=\"https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_budgets_CreateBudget.html#API_CreateBudget_Examples\">Examples</a> section. </p> </important>"
+    },
+    "CreateBudgetAction":{
+      "name":"CreateBudgetAction",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateBudgetActionRequest"},
+      "output":{"shape":"CreateBudgetActionResponse"},
+      "errors":[
+        {"shape":"InvalidParameterException"},
+        {"shape":"InternalErrorException"},
+        {"shape":"CreationLimitExceededException"},
+        {"shape":"DuplicateRecordException"},
+        {"shape":"NotFoundException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p> Creates a budget action. </p>"
+    },
+    "CreateNotification":{
+      "name":"CreateNotification",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateNotificationRequest"},
+      "output":{"shape":"CreateNotificationResponse"},
+      "errors":[
+        {"shape":"InternalErrorException"},
+        {"shape":"InvalidParameterException"},
+        {"shape":"NotFoundException"},
+        {"shape":"CreationLimitExceededException"},
+        {"shape":"DuplicateRecordException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Creates a notification. You must create the budget before you create the associated notification.</p>"
+    },
+    "CreateSubscriber":{
+      "name":"CreateSubscriber",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"CreateSubscriberRequest"},
+      "output":{"shape":"CreateSubscriberResponse"},
+      "errors":[
+        {"shape":"InternalErrorException"},
+        {"shape":"InvalidParameterException"},
+        {"shape":"CreationLimitExceededException"},
+        {"shape":"DuplicateRecordException"},
+        {"shape":"NotFoundException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Creates a subscriber. You must create the associated budget and notification before you create the subscriber.</p>"
+    },
+    "DeleteBudget":{
+      "name":"DeleteBudget",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteBudgetRequest"},
+      "output":{"shape":"DeleteBudgetResponse"},
+      "errors":[
+        {"shape":"InternalErrorException"},
+        {"shape":"InvalidParameterException"},
+        {"shape":"NotFoundException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Deletes a budget. You can delete your budget at any time.</p> <important> <p>Deleting a budget also deletes the notifications and subscribers that are associated with that budget.</p> </important>"
+    },
+    "DeleteBudgetAction":{
+      "name":"DeleteBudgetAction",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteBudgetActionRequest"},
+      "output":{"shape":"DeleteBudgetActionResponse"},
+      "errors":[
+        {"shape":"InternalErrorException"},
+        {"shape":"InvalidParameterException"},
+        {"shape":"NotFoundException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"ResourceLockedException"}
+      ],
+      "documentation":"<p> Deletes a budget action. </p>"
+    },
+    "DeleteNotification":{
+      "name":"DeleteNotification",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteNotificationRequest"},
+      "output":{"shape":"DeleteNotificationResponse"},
+      "errors":[
+        {"shape":"InvalidParameterException"},
+        {"shape":"InternalErrorException"},
+        {"shape":"NotFoundException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Deletes a notification.</p> <important> <p>Deleting a notification also deletes the subscribers that are associated with the notification.</p> </important>"
+    },
+    "DeleteSubscriber":{
+      "name":"DeleteSubscriber",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeleteSubscriberRequest"},
+      "output":{"shape":"DeleteSubscriberResponse"},
+      "errors":[
+        {"shape":"InternalErrorException"},
+        {"shape":"InvalidParameterException"},
+        {"shape":"NotFoundException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Deletes a subscriber.</p> <important> <p>Deleting the last subscriber to a notification also deletes the notification.</p> </important>"
+    },
+    "DescribeBudget":{
+      "name":"DescribeBudget",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeBudgetRequest"},
+      "output":{"shape":"DescribeBudgetResponse"},
+      "errors":[
+        {"shape":"InternalErrorException"},
+        {"shape":"InvalidParameterException"},
+        {"shape":"NotFoundException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Describes a budget.</p> <important> <p>The Request Syntax section shows the <code>BudgetLimit</code> syntax. For <code>PlannedBudgetLimits</code>, see the <a href=\"https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_budgets_DescribeBudget.html#API_DescribeBudget_Examples\">Examples</a> section. </p> </important>"
+    },
+    "DescribeBudgetAction":{
+      "name":"DescribeBudgetAction",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeBudgetActionRequest"},
+      "output":{"shape":"DescribeBudgetActionResponse"},
+      "errors":[
+        {"shape":"InternalErrorException"},
+        {"shape":"InvalidParameterException"},
+        {"shape":"NotFoundException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p> Describes a budget action detail. </p>"
+    },
+    "DescribeBudgetActionHistories":{
+      "name":"DescribeBudgetActionHistories",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeBudgetActionHistoriesRequest"},
+      "output":{"shape":"DescribeBudgetActionHistoriesResponse"},
+      "errors":[
+        {"shape":"InternalErrorException"},
+        {"shape":"InvalidParameterException"},
+        {"shape":"NotFoundException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InvalidNextTokenException"}
+      ],
+      "documentation":"<p> Describes a budget action history detail. </p>"
+    },
+    "DescribeBudgetActionsForAccount":{
+      "name":"DescribeBudgetActionsForAccount",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeBudgetActionsForAccountRequest"},
+      "output":{"shape":"DescribeBudgetActionsForAccountResponse"},
+      "errors":[
+        {"shape":"InternalErrorException"},
+        {"shape":"InvalidParameterException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InvalidNextTokenException"}
+      ],
+      "documentation":"<p> Describes all of the budget actions for an account. </p>"
+    },
+    "DescribeBudgetActionsForBudget":{
+      "name":"DescribeBudgetActionsForBudget",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeBudgetActionsForBudgetRequest"},
+      "output":{"shape":"DescribeBudgetActionsForBudgetResponse"},
+      "errors":[
+        {"shape":"InternalErrorException"},
+        {"shape":"InvalidParameterException"},
+        {"shape":"NotFoundException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"InvalidNextTokenException"}
+      ],
+      "documentation":"<p> Describes all of the budget actions for a budget. </p>"
+    },
+    "DescribeBudgetPerformanceHistory":{
+      "name":"DescribeBudgetPerformanceHistory",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeBudgetPerformanceHistoryRequest"},
+      "output":{"shape":"DescribeBudgetPerformanceHistoryResponse"},
+      "errors":[
+        {"shape":"InternalErrorException"},
+        {"shape":"InvalidParameterException"},
+        {"shape":"NotFoundException"},
+        {"shape":"InvalidNextTokenException"},
+        {"shape":"ExpiredNextTokenException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Describes the history for <code>DAILY</code>, <code>MONTHLY</code>, and <code>QUARTERLY</code> budgets. Budget history isn't available for <code>ANNUAL</code> budgets.</p>"
+    },
+    "DescribeBudgets":{
+      "name":"DescribeBudgets",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeBudgetsRequest"},
+      "output":{"shape":"DescribeBudgetsResponse"},
+      "errors":[
+        {"shape":"InternalErrorException"},
+        {"shape":"InvalidParameterException"},
+        {"shape":"NotFoundException"},
+        {"shape":"InvalidNextTokenException"},
+        {"shape":"ExpiredNextTokenException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Lists the budgets that are associated with an account.</p> <important> <p>The Request Syntax section shows the <code>BudgetLimit</code> syntax. For <code>PlannedBudgetLimits</code>, see the <a href=\"https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_budgets_DescribeBudgets.html#API_DescribeBudgets_Examples\">Examples</a> section. </p> </important>"
+    },
+    "DescribeNotificationsForBudget":{
+      "name":"DescribeNotificationsForBudget",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeNotificationsForBudgetRequest"},
+      "output":{"shape":"DescribeNotificationsForBudgetResponse"},
+      "errors":[
+        {"shape":"InternalErrorException"},
+        {"shape":"InvalidParameterException"},
+        {"shape":"NotFoundException"},
+        {"shape":"InvalidNextTokenException"},
+        {"shape":"ExpiredNextTokenException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Lists the notifications that are associated with a budget.</p>"
+    },
+    "DescribeSubscribersForNotification":{
+      "name":"DescribeSubscribersForNotification",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeSubscribersForNotificationRequest"},
+      "output":{"shape":"DescribeSubscribersForNotificationResponse"},
+      "errors":[
+        {"shape":"InternalErrorException"},
+        {"shape":"NotFoundException"},
+        {"shape":"InvalidParameterException"},
+        {"shape":"InvalidNextTokenException"},
+        {"shape":"ExpiredNextTokenException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Lists the subscribers that are associated with a notification.</p>"
+    },
+    "ExecuteBudgetAction":{
+      "name":"ExecuteBudgetAction",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"ExecuteBudgetActionRequest"},
+      "output":{"shape":"ExecuteBudgetActionResponse"},
+      "errors":[
+        {"shape":"InternalErrorException"},
+        {"shape":"InvalidParameterException"},
+        {"shape":"NotFoundException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"ResourceLockedException"}
+      ],
+      "documentation":"<p> Executes a budget action. </p>"
+    },
+    "UpdateBudget":{
+      "name":"UpdateBudget",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UpdateBudgetRequest"},
+      "output":{"shape":"UpdateBudgetResponse"},
+      "errors":[
+        {"shape":"InternalErrorException"},
+        {"shape":"InvalidParameterException"},
+        {"shape":"NotFoundException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Updates a budget. You can change every part of a budget except for the <code>budgetName</code> and the <code>calculatedSpend</code>. When you modify a budget, the <code>calculatedSpend</code> drops to zero until AWS has new usage data to use for forecasting.</p> <important> <p>Only one of <code>BudgetLimit</code> or <code>PlannedBudgetLimits</code> can be present in the syntax at one time. Use the syntax that matches your case. The Request Syntax section shows the <code>BudgetLimit</code> syntax. For <code>PlannedBudgetLimits</code>, see the <a href=\"https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_budgets_UpdateBudget.html#API_UpdateBudget_Examples\">Examples</a> section. </p> </important>"
+    },
+    "UpdateBudgetAction":{
+      "name":"UpdateBudgetAction",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UpdateBudgetActionRequest"},
+      "output":{"shape":"UpdateBudgetActionResponse"},
+      "errors":[
+        {"shape":"InternalErrorException"},
+        {"shape":"InvalidParameterException"},
+        {"shape":"NotFoundException"},
+        {"shape":"AccessDeniedException"},
+        {"shape":"ResourceLockedException"}
+      ],
+      "documentation":"<p> Updates a budget action. </p>"
+    },
+    "UpdateNotification":{
+      "name":"UpdateNotification",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UpdateNotificationRequest"},
+      "output":{"shape":"UpdateNotificationResponse"},
+      "errors":[
+        {"shape":"InternalErrorException"},
+        {"shape":"InvalidParameterException"},
+        {"shape":"NotFoundException"},
+        {"shape":"DuplicateRecordException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Updates a notification.</p>"
+    },
+    "UpdateSubscriber":{
+      "name":"UpdateSubscriber",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"UpdateSubscriberRequest"},
+      "output":{"shape":"UpdateSubscriberResponse"},
+      "errors":[
+        {"shape":"InternalErrorException"},
+        {"shape":"InvalidParameterException"},
+        {"shape":"NotFoundException"},
+        {"shape":"DuplicateRecordException"},
+        {"shape":"AccessDeniedException"}
+      ],
+      "documentation":"<p>Updates a subscriber.</p>"
+    }
+  },
+  "shapes":{
+    "AccessDeniedException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"errorMessage"}
+      },
+      "documentation":"<p>You are not authorized to use this operation with the given parameters.</p>",
+      "exception":true
+    },
+    "AccountId":{
+      "type":"string",
+      "documentation":"<p>The account ID of the user. It should be a 12-digit number.</p>",
+      "max":12,
+      "min":12,
+      "pattern":"\\d{12}"
+    },
+    "Action":{
+      "type":"structure",
+      "required":[
+        "ActionId",
+        "BudgetName",
+        "NotificationType",
+        "ActionType",
+        "ActionThreshold",
+        "Definition",
+        "ExecutionRoleArn",
+        "ApprovalModel",
+        "Status",
+        "Subscribers"
+      ],
+      "members":{
+        "ActionId":{
+          "shape":"ActionId",
+          "documentation":"<p> A system-generated universally unique identifier (UUID) for the action. </p>"
+        },
+        "BudgetName":{"shape":"BudgetName"},
+        "NotificationType":{"shape":"NotificationType"},
+        "ActionType":{
+          "shape":"ActionType",
+          "documentation":"<p> The type of action. This defines the type of tasks that can be carried out by this action. This field also determines the format for definition. </p>"
+        },
+        "ActionThreshold":{
+          "shape":"ActionThreshold",
+          "documentation":"<p> The trigger threshold of the action. </p>"
+        },
+        "Definition":{
+          "shape":"Definition",
+          "documentation":"<p> Where you specify all of the type-specific parameters. </p>"
+        },
+        "ExecutionRoleArn":{
+          "shape":"RoleArn",
+          "documentation":"<p> The role passed for action execution and reversion. Roles and actions must be in the same account. </p>"
+        },
+        "ApprovalModel":{
+          "shape":"ApprovalModel",
+          "documentation":"<p> This specifies if the action needs manual or automatic approval. </p>"
+        },
+        "Status":{
+          "shape":"ActionStatus",
+          "documentation":"<p> The status of action. </p>"
+        },
+        "Subscribers":{"shape":"Subscribers"}
+      },
+      "documentation":"<p> A budget action resource. </p>"
+    },
+    "ActionHistories":{
+      "type":"list",
+      "member":{"shape":"ActionHistory"},
+      "max":100,
+      "min":0
+    },
+    "ActionHistory":{
+      "type":"structure",
+      "required":[
+        "Timestamp",
+        "Status",
+        "EventType",
+        "ActionHistoryDetails"
+      ],
+      "members":{
+        "Timestamp":{"shape":"GenericTimestamp"},
+        "Status":{
+          "shape":"ActionStatus",
+          "documentation":"<p> The status of action at the time of the event. </p>"
+        },
+        "EventType":{
+          "shape":"EventType",
+          "documentation":"<p> This distinguishes between whether the events are triggered by the user or generated by the system. </p>"
+        },
+        "ActionHistoryDetails":{
+          "shape":"ActionHistoryDetails",
+          "documentation":"<p> The description of details of the event. </p>"
+        }
+      },
+      "documentation":"<p> The historical records for a budget action. </p>"
+    },
+    "ActionHistoryDetails":{
+      "type":"structure",
+      "required":[
+        "Message",
+        "Action"
+      ],
+      "members":{
+        "Message":{"shape":"GenericString"},
+        "Action":{
+          "shape":"Action",
+          "documentation":"<p> The budget action resource. </p>"
+        }
+      },
+      "documentation":"<p> The description of details of the event. </p>"
+    },
+    "ActionId":{
+      "type":"string",
+      "max":36,
+      "min":36,
+      "pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
+    },
+    "ActionStatus":{
+      "type":"string",
+      "enum":[
+        "STANDBY",
+        "PENDING",
+        "EXECUTION_IN_PROGRESS",
+        "EXECUTION_SUCCESS",
+        "EXECUTION_FAILURE",
+        "REVERSE_IN_PROGRESS",
+        "REVERSE_SUCCESS",
+        "REVERSE_FAILURE",
+        "RESET_IN_PROGRESS",
+        "RESET_FAILURE"
+      ]
+    },
+    "ActionSubType":{
+      "type":"string",
+      "enum":[
+        "STOP_EC2_INSTANCES",
+        "STOP_RDS_INSTANCES"
+      ]
+    },
+    "ActionThreshold":{
+      "type":"structure",
+      "required":[
+        "ActionThresholdValue",
+        "ActionThresholdType"
+      ],
+      "members":{
+        "ActionThresholdValue":{"shape":"NotificationThreshold"},
+        "ActionThresholdType":{"shape":"ThresholdType"}
+      },
+      "documentation":"<p> The trigger threshold of the action. </p>"
+    },
+    "ActionType":{
+      "type":"string",
+      "enum":[
+        "APPLY_IAM_POLICY",
+        "APPLY_SCP_POLICY",
+        "RUN_SSM_DOCUMENTS"
+      ]
+    },
+    "Actions":{
+      "type":"list",
+      "member":{"shape":"Action"},
+      "max":100,
+      "min":0
+    },
+    "ApprovalModel":{
+      "type":"string",
+      "enum":[
+        "AUTOMATIC",
+        "MANUAL"
+      ]
+    },
+    "Budget":{
+      "type":"structure",
+      "required":[
+        "BudgetName",
+        "TimeUnit",
+        "BudgetType"
+      ],
+      "members":{
+        "BudgetName":{
+          "shape":"BudgetName",
+          "documentation":"<p>The name of a budget. The name must be unique within an account. The <code>:</code> and <code>\\</code> characters aren't allowed in <code>BudgetName</code>.</p>"
+        },
+        "BudgetLimit":{
+          "shape":"Spend",
+          "documentation":"<p>The total amount of cost, usage, RI utilization, RI coverage, Savings Plans utilization, or Savings Plans coverage that you want to track with your budget.</p> <p> <code>BudgetLimit</code> is required for cost or usage budgets, but optional for RI or Savings Plans utilization or coverage budgets. RI and Savings Plans utilization or coverage budgets default to <code>100</code>, which is the only valid value for RI or Savings Plans utilization or coverage budgets. You can't use <code>BudgetLimit</code> with <code>PlannedBudgetLimits</code> for <code>CreateBudget</code> and <code>UpdateBudget</code> actions. </p>"
+        },
+        "PlannedBudgetLimits":{
+          "shape":"PlannedBudgetLimits",
+          "documentation":"<p>A map containing multiple <code>BudgetLimit</code>, including current or future limits.</p> <p> <code>PlannedBudgetLimits</code> is available for cost or usage budget and supports monthly and quarterly <code>TimeUnit</code>. </p> <p>For monthly budgets, provide 12 months of <code>PlannedBudgetLimits</code> values. This must start from the current month and include the next 11 months. The <code>key</code> is the start of the month, <code>UTC</code> in epoch seconds. </p> <p>For quarterly budgets, provide 4 quarters of <code>PlannedBudgetLimits</code> value entries in standard calendar quarter increments. This must start from the current quarter and include the next 3 quarters. The <code>key</code> is the start of the quarter, <code>UTC</code> in epoch seconds. </p> <p>If the planned budget expires before 12 months for monthly or 4 quarters for quarterly, provide the <code>PlannedBudgetLimits</code> values only for the remaining periods.</p> <p>If the budget begins at a date in the future, provide <code>PlannedBudgetLimits</code> values from the start date of the budget. </p> <p>After all of the <code>BudgetLimit</code> values in <code>PlannedBudgetLimits</code> are used, the budget continues to use the last limit as the <code>BudgetLimit</code>. At that point, the planned budget provides the same experience as a fixed budget. </p> <p> <code>DescribeBudget</code> and <code>DescribeBudgets</code> response along with <code>PlannedBudgetLimits</code> will also contain <code>BudgetLimit</code> representing the current month or quarter limit present in <code>PlannedBudgetLimits</code>. This only applies to budgets created with <code>PlannedBudgetLimits</code>. Budgets created without <code>PlannedBudgetLimits</code> will only contain <code>BudgetLimit</code>, and no <code>PlannedBudgetLimits</code>.</p>"
+        },
+        "CostFilters":{
+          "shape":"CostFilters",
+          "documentation":"<p>The cost filters, such as service or tag, that are applied to a budget.</p> <p>AWS Budgets supports the following services as a filter for RI budgets:</p> <ul> <li> <p>Amazon Elastic Compute Cloud - Compute</p> </li> <li> <p>Amazon Redshift</p> </li> <li> <p>Amazon Relational Database Service</p> </li> <li> <p>Amazon ElastiCache</p> </li> <li> <p>Amazon Elasticsearch Service</p> </li> </ul>"
+        },
+        "CostTypes":{
+          "shape":"CostTypes",
+          "documentation":"<p>The types of costs that are included in this <code>COST</code> budget.</p> <p> <code>USAGE</code>, <code>RI_UTILIZATION</code>, <code>RI_COVERAGE</code>, <code>SAVINGS_PLANS_UTILIZATION</code>, and <code>SAVINGS_PLANS_COVERAGE</code> budgets do not have <code>CostTypes</code>.</p>"
+        },
+        "TimeUnit":{
+          "shape":"TimeUnit",
+          "documentation":"<p>The length of time until a budget resets the actual and forecasted spend.</p>"
+        },
+        "TimePeriod":{
+          "shape":"TimePeriod",
+          "documentation":"<p>The period of time that is covered by a budget. The period has a start date and an end date. The start date must come before the end date. The end date must come before <code>06/15/87 00:00 UTC</code>. </p> <p>If you create your budget and don't specify a start date, AWS defaults to the start of your chosen time period (DAILY, MONTHLY, QUARTERLY, or ANNUALLY). For example, if you created your budget on January 24, 2018, chose <code>DAILY</code>, and didn't set a start date, AWS set your start date to <code>01/24/18 00:00 UTC</code>. If you chose <code>MONTHLY</code>, AWS set your start date to <code>01/01/18 00:00 UTC</code>. If you didn't specify an end date, AWS set your end date to <code>06/15/87 00:00 UTC</code>. The defaults are the same for the AWS Billing and Cost Management console and the API. </p> <p>You can change either date with the <code>UpdateBudget</code> operation.</p> <p>After the end date, AWS deletes the budget and all associated notifications and subscribers.</p>"
+        },
+        "CalculatedSpend":{
+          "shape":"CalculatedSpend",
+          "documentation":"<p>The actual and forecasted cost or usage that the budget tracks.</p>"
+        },
+        "BudgetType":{
+          "shape":"BudgetType",
+          "documentation":"<p>Whether this budget tracks costs, usage, RI utilization, RI coverage, Savings Plans utilization, or Savings Plans coverage.</p>"
+        },
+        "LastUpdatedTime":{
+          "shape":"GenericTimestamp",
+          "documentation":"<p>The last time that you updated this budget.</p>"
+        }
+      },
+      "documentation":"<p>Represents the output of the <code>CreateBudget</code> operation. The content consists of the detailed metadata and data file information, and the current status of the <code>budget</code> object.</p> <p>This is the ARN pattern for a budget: </p> <p> <code>arn:aws:budgets::AccountId:budget/budgetName</code> </p>"
+    },
+    "BudgetName":{
+      "type":"string",
+      "documentation":"<p> A string that represents the budget name. The \":\" and \"\\\" characters aren't allowed.</p>",
+      "max":100,
+      "min":1,
+      "pattern":"[^:\\\\]+"
+    },
+    "BudgetPerformanceHistory":{
+      "type":"structure",
+      "members":{
+        "BudgetName":{"shape":"BudgetName"},
+        "BudgetType":{"shape":"BudgetType"},
+        "CostFilters":{
+          "shape":"CostFilters",
+          "documentation":"<p>The history of the cost filters for a budget during the specified time period.</p>"
+        },
+        "CostTypes":{
+          "shape":"CostTypes",
+          "documentation":"<p>The history of the cost types for a budget during the specified time period.</p>"
+        },
+        "TimeUnit":{"shape":"TimeUnit"},
+        "BudgetedAndActualAmountsList":{
+          "shape":"BudgetedAndActualAmountsList",
+          "documentation":"<p>A list of amounts of cost or usage that you created budgets for, compared to your actual costs or usage.</p>"
+        }
+      },
+      "documentation":"<p>A history of the state of a budget at the end of the budget's specified time period.</p>"
+    },
+    "BudgetType":{
+      "type":"string",
+      "documentation":"<p> The type of a budget. It must be one of the following types: </p> <p> <code>COST</code>, <code>USAGE</code>, <code>RI_UTILIZATION</code>, <code>RI_COVERAGE</code>, <code>SAVINGS_PLANS_UTILIZATION</code>, or <code>SAVINGS_PLANS_COVERAGE</code>.</p>",
+      "enum":[
+        "USAGE",
+        "COST",
+        "RI_UTILIZATION",
+        "RI_COVERAGE",
+        "SAVINGS_PLANS_UTILIZATION",
+        "SAVINGS_PLANS_COVERAGE"
+      ]
+    },
+    "BudgetedAndActualAmounts":{
+      "type":"structure",
+      "members":{
+        "BudgetedAmount":{
+          "shape":"Spend",
+          "documentation":"<p>The amount of cost or usage that you created the budget for.</p>"
+        },
+        "ActualAmount":{
+          "shape":"Spend",
+          "documentation":"<p>Your actual costs or usage for a budget period.</p>"
+        },
+        "TimePeriod":{
+          "shape":"TimePeriod",
+          "documentation":"<p>The time period covered by this budget comparison.</p>"
+        }
+      },
+      "documentation":"<p>The amount of cost or usage that you created the budget for, compared to your actual costs or usage.</p>"
+    },
+    "BudgetedAndActualAmountsList":{
+      "type":"list",
+      "member":{"shape":"BudgetedAndActualAmounts"}
+    },
+    "Budgets":{
+      "type":"list",
+      "member":{"shape":"Budget"},
+      "documentation":"<p> A list of budgets.</p>"
+    },
+    "CalculatedSpend":{
+      "type":"structure",
+      "required":["ActualSpend"],
+      "members":{
+        "ActualSpend":{
+          "shape":"Spend",
+          "documentation":"<p>The amount of cost, usage, RI units, or Savings Plans units that you have used.</p>"
+        },
+        "ForecastedSpend":{
+          "shape":"Spend",
+          "documentation":"<p>The amount of cost, usage, RI units, or Savings Plans units that you are forecasted to use.</p>"
+        }
+      },
+      "documentation":"<p>The spend objects that are associated with this budget. The <code>actualSpend</code> tracks how much you've used, cost, usage, RI units, or Savings Plans units and the <code>forecastedSpend</code> tracks how much you are predicted to spend based on your historical usage profile.</p> <p>For example, if it is the 20th of the month and you have spent <code>50</code> dollars on Amazon EC2, your <code>actualSpend</code> is <code>50 USD</code>, and your <code>forecastedSpend</code> is <code>75 USD</code>.</p>"
+    },
+    "ComparisonOperator":{
+      "type":"string",
+      "documentation":"<p> The comparison operator of a notification. Currently the service supports the following operators:</p> <p> <code>GREATER_THAN</code>, <code>LESS_THAN</code>, <code>EQUAL_TO</code> </p>",
+      "enum":[
+        "GREATER_THAN",
+        "LESS_THAN",
+        "EQUAL_TO"
+      ]
+    },
+    "CostFilters":{
+      "type":"map",
+      "key":{"shape":"GenericString"},
+      "value":{"shape":"DimensionValues"},
+      "documentation":"<p> A map that represents the cost filters that are applied to the budget.</p>"
+    },
+    "CostTypes":{
+      "type":"structure",
+      "members":{
+        "IncludeTax":{
+          "shape":"NullableBoolean",
+          "documentation":"<p>Specifies whether a budget includes taxes.</p> <p>The default value is <code>true</code>.</p>"
+        },
+        "IncludeSubscription":{
+          "shape":"NullableBoolean",
+          "documentation":"<p>Specifies whether a budget includes subscriptions.</p> <p>The default value is <code>true</code>.</p>"
+        },
+        "UseBlended":{
+          "shape":"NullableBoolean",
+          "documentation":"<p>Specifies whether a budget uses a blended rate.</p> <p>The default value is <code>false</code>.</p>"
+        },
+        "IncludeRefund":{
+          "shape":"NullableBoolean",
+          "documentation":"<p>Specifies whether a budget includes refunds.</p> <p>The default value is <code>true</code>.</p>"
+        },
+        "IncludeCredit":{
+          "shape":"NullableBoolean",
+          "documentation":"<p>Specifies whether a budget includes credits.</p> <p>The default value is <code>true</code>.</p>"
+        },
+        "IncludeUpfront":{
+          "shape":"NullableBoolean",
+          "documentation":"<p>Specifies whether a budget includes upfront RI costs.</p> <p>The default value is <code>true</code>.</p>"
+        },
+        "IncludeRecurring":{
+          "shape":"NullableBoolean",
+          "documentation":"<p>Specifies whether a budget includes recurring fees such as monthly RI fees.</p> <p>The default value is <code>true</code>.</p>"
+        },
+        "IncludeOtherSubscription":{
+          "shape":"NullableBoolean",
+          "documentation":"<p>Specifies whether a budget includes non-RI subscription costs.</p> <p>The default value is <code>true</code>.</p>"
+        },
+        "IncludeSupport":{
+          "shape":"NullableBoolean",
+          "documentation":"<p>Specifies whether a budget includes support subscription fees.</p> <p>The default value is <code>true</code>.</p>"
+        },
+        "IncludeDiscount":{
+          "shape":"NullableBoolean",
+          "documentation":"<p>Specifies whether a budget includes discounts.</p> <p>The default value is <code>true</code>.</p>"
+        },
+        "UseAmortized":{
+          "shape":"NullableBoolean",
+          "documentation":"<p>Specifies whether a budget uses the amortized rate.</p> <p>The default value is <code>false</code>.</p>"
+        }
+      },
+      "documentation":"<p>The types of cost that are included in a <code>COST</code> budget, such as tax and subscriptions.</p> <p> <code>USAGE</code>, <code>RI_UTILIZATION</code>, <code>RI_COVERAGE</code>, <code>SAVINGS_PLANS_UTILIZATION</code>, and <code>SAVINGS_PLANS_COVERAGE</code> budgets do not have <code>CostTypes</code>.</p>"
+    },
+    "CreateBudgetActionRequest":{
+      "type":"structure",
+      "required":[
+        "AccountId",
+        "BudgetName",
+        "NotificationType",
+        "ActionType",
+        "ActionThreshold",
+        "Definition",
+        "ExecutionRoleArn",
+        "ApprovalModel",
+        "Subscribers"
+      ],
+      "members":{
+        "AccountId":{"shape":"AccountId"},
+        "BudgetName":{"shape":"BudgetName"},
+        "NotificationType":{"shape":"NotificationType"},
+        "ActionType":{
+          "shape":"ActionType",
+          "documentation":"<p> The type of action. This defines the type of tasks that can be carried out by this action. This field also determines the format for definition. </p>"
+        },
+        "ActionThreshold":{"shape":"ActionThreshold"},
+        "Definition":{"shape":"Definition"},
+        "ExecutionRoleArn":{
+          "shape":"RoleArn",
+          "documentation":"<p> The role passed for action execution and reversion. Roles and actions must be in the same account. </p>"
+        },
+        "ApprovalModel":{
+          "shape":"ApprovalModel",
+          "documentation":"<p> This specifies if the action needs manual or automatic approval. </p>"
+        },
+        "Subscribers":{"shape":"Subscribers"}
+      }
+    },
+    "CreateBudgetActionResponse":{
+      "type":"structure",
+      "required":[
+        "AccountId",
+        "BudgetName",
+        "ActionId"
+      ],
+      "members":{
+        "AccountId":{"shape":"AccountId"},
+        "BudgetName":{"shape":"BudgetName"},
+        "ActionId":{
+          "shape":"ActionId",
+          "documentation":"<p> A system-generated universally unique identifier (UUID) for the action. </p>"
+        }
+      }
+    },
+    "CreateBudgetRequest":{
+      "type":"structure",
+      "required":[
+        "AccountId",
+        "Budget"
+      ],
+      "members":{
+        "AccountId":{
+          "shape":"AccountId",
+          "documentation":"<p>The <code>accountId</code> that is associated with the budget.</p>"
+        },
+        "Budget":{
+          "shape":"Budget",
+          "documentation":"<p>The budget object that you want to create.</p>"
+        },
+        "NotificationsWithSubscribers":{
+          "shape":"NotificationWithSubscribersList",
+          "documentation":"<p>A notification that you want to associate with a budget. A budget can have up to five notifications, and each notification can have one SNS subscriber and up to 10 email subscribers. If you include notifications and subscribers in your <code>CreateBudget</code> call, AWS creates the notifications and subscribers for you.</p>"
+        }
+      },
+      "documentation":"<p> Request of CreateBudget </p>"
+    },
+    "CreateBudgetResponse":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> Response of CreateBudget </p>"
+    },
+    "CreateNotificationRequest":{
+      "type":"structure",
+      "required":[
+        "AccountId",
+        "BudgetName",
+        "Notification",
+        "Subscribers"
+      ],
+      "members":{
+        "AccountId":{
+          "shape":"AccountId",
+          "documentation":"<p>The <code>accountId</code> that is associated with the budget that you want to create a notification for.</p>"
+        },
+        "BudgetName":{
+          "shape":"BudgetName",
+          "documentation":"<p>The name of the budget that you want AWS to notify you about. Budget names must be unique within an account.</p>"
+        },
+        "Notification":{
+          "shape":"Notification",
+          "documentation":"<p>The notification that you want to create.</p>"
+        },
+        "Subscribers":{
+          "shape":"Subscribers",
+          "documentation":"<p>A list of subscribers that you want to associate with the notification. Each notification can have one SNS subscriber and up to 10 email subscribers.</p>"
+        }
+      },
+      "documentation":"<p> Request of CreateNotification </p>"
+    },
+    "CreateNotificationResponse":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> Response of CreateNotification </p>"
+    },
+    "CreateSubscriberRequest":{
+      "type":"structure",
+      "required":[
+        "AccountId",
+        "BudgetName",
+        "Notification",
+        "Subscriber"
+      ],
+      "members":{
+        "AccountId":{
+          "shape":"AccountId",
+          "documentation":"<p>The <code>accountId</code> that is associated with the budget that you want to create a subscriber for.</p>"
+        },
+        "BudgetName":{
+          "shape":"BudgetName",
+          "documentation":"<p>The name of the budget that you want to subscribe to. Budget names must be unique within an account.</p>"
+        },
+        "Notification":{
+          "shape":"Notification",
+          "documentation":"<p>The notification that you want to create a subscriber for.</p>"
+        },
+        "Subscriber":{
+          "shape":"Subscriber",
+          "documentation":"<p>The subscriber that you want to associate with a budget notification.</p>"
+        }
+      },
+      "documentation":"<p> Request of CreateSubscriber </p>"
+    },
+    "CreateSubscriberResponse":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> Response of CreateSubscriber </p>"
+    },
+    "CreationLimitExceededException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"errorMessage"}
+      },
+      "documentation":"<p>You've exceeded the notification or subscriber limit.</p>",
+      "exception":true
+    },
+    "Definition":{
+      "type":"structure",
+      "members":{
+        "IamActionDefinition":{
+          "shape":"IamActionDefinition",
+          "documentation":"<p> The AWS Identity and Access Management (IAM) action definition details. </p>"
+        },
+        "ScpActionDefinition":{
+          "shape":"ScpActionDefinition",
+          "documentation":"<p> The service control policies (SCPs) action definition details. </p>"
+        },
+        "SsmActionDefinition":{
+          "shape":"SsmActionDefinition",
+          "documentation":"<p> The AWS Systems Manager (SSM) action definition details. </p>"
+        }
+      },
+      "documentation":"<p> Specifies all of the type-specific parameters. </p>"
+    },
+    "DeleteBudgetActionRequest":{
+      "type":"structure",
+      "required":[
+        "AccountId",
+        "BudgetName",
+        "ActionId"
+      ],
+      "members":{
+        "AccountId":{"shape":"AccountId"},
+        "BudgetName":{"shape":"BudgetName"},
+        "ActionId":{
+          "shape":"ActionId",
+          "documentation":"<p> A system-generated universally unique identifier (UUID) for the action. </p>"
+        }
+      }
+    },
+    "DeleteBudgetActionResponse":{
+      "type":"structure",
+      "required":[
+        "AccountId",
+        "BudgetName",
+        "Action"
+      ],
+      "members":{
+        "AccountId":{"shape":"AccountId"},
+        "BudgetName":{"shape":"BudgetName"},
+        "Action":{"shape":"Action"}
+      }
+    },
+    "DeleteBudgetRequest":{
+      "type":"structure",
+      "required":[
+        "AccountId",
+        "BudgetName"
+      ],
+      "members":{
+        "AccountId":{
+          "shape":"AccountId",
+          "documentation":"<p>The <code>accountId</code> that is associated with the budget that you want to delete.</p>"
+        },
+        "BudgetName":{
+          "shape":"BudgetName",
+          "documentation":"<p>The name of the budget that you want to delete.</p>"
+        }
+      },
+      "documentation":"<p> Request of DeleteBudget </p>"
+    },
+    "DeleteBudgetResponse":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> Response of DeleteBudget </p>"
+    },
+    "DeleteNotificationRequest":{
+      "type":"structure",
+      "required":[
+        "AccountId",
+        "BudgetName",
+        "Notification"
+      ],
+      "members":{
+        "AccountId":{
+          "shape":"AccountId",
+          "documentation":"<p>The <code>accountId</code> that is associated with the budget whose notification you want to delete.</p>"
+        },
+        "BudgetName":{
+          "shape":"BudgetName",
+          "documentation":"<p>The name of the budget whose notification you want to delete.</p>"
+        },
+        "Notification":{
+          "shape":"Notification",
+          "documentation":"<p>The notification that you want to delete.</p>"
+        }
+      },
+      "documentation":"<p> Request of DeleteNotification </p>"
+    },
+    "DeleteNotificationResponse":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> Response of DeleteNotification </p>"
+    },
+    "DeleteSubscriberRequest":{
+      "type":"structure",
+      "required":[
+        "AccountId",
+        "BudgetName",
+        "Notification",
+        "Subscriber"
+      ],
+      "members":{
+        "AccountId":{
+          "shape":"AccountId",
+          "documentation":"<p>The <code>accountId</code> that is associated with the budget whose subscriber you want to delete.</p>"
+        },
+        "BudgetName":{
+          "shape":"BudgetName",
+          "documentation":"<p>The name of the budget whose subscriber you want to delete.</p>"
+        },
+        "Notification":{
+          "shape":"Notification",
+          "documentation":"<p>The notification whose subscriber you want to delete.</p>"
+        },
+        "Subscriber":{
+          "shape":"Subscriber",
+          "documentation":"<p>The subscriber that you want to delete.</p>"
+        }
+      },
+      "documentation":"<p> Request of DeleteSubscriber </p>"
+    },
+    "DeleteSubscriberResponse":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> Response of DeleteSubscriber </p>"
+    },
+    "DescribeBudgetActionHistoriesRequest":{
+      "type":"structure",
+      "required":[
+        "AccountId",
+        "BudgetName",
+        "ActionId"
+      ],
+      "members":{
+        "AccountId":{"shape":"AccountId"},
+        "BudgetName":{"shape":"BudgetName"},
+        "ActionId":{
+          "shape":"ActionId",
+          "documentation":"<p> A system-generated universally unique identifier (UUID) for the action. </p>"
+        },
+        "TimePeriod":{"shape":"TimePeriod"},
+        "MaxResults":{"shape":"MaxResults"},
+        "NextToken":{"shape":"GenericString"}
+      }
+    },
+    "DescribeBudgetActionHistoriesResponse":{
+      "type":"structure",
+      "required":["ActionHistories"],
+      "members":{
+        "ActionHistories":{
+          "shape":"ActionHistories",
+          "documentation":"<p> The historical record of the budget action resource. </p>"
+        },
+        "NextToken":{"shape":"GenericString"}
+      }
+    },
+    "DescribeBudgetActionRequest":{
+      "type":"structure",
+      "required":[
+        "AccountId",
+        "BudgetName",
+        "ActionId"
+      ],
+      "members":{
+        "AccountId":{"shape":"AccountId"},
+        "BudgetName":{"shape":"BudgetName"},
+        "ActionId":{
+          "shape":"ActionId",
+          "documentation":"<p> A system-generated universally unique identifier (UUID) for the action. </p>"
+        }
+      }
+    },
+    "DescribeBudgetActionResponse":{
+      "type":"structure",
+      "required":[
+        "AccountId",
+        "BudgetName",
+        "Action"
+      ],
+      "members":{
+        "AccountId":{"shape":"AccountId"},
+        "BudgetName":{"shape":"BudgetName"},
+        "Action":{
+          "shape":"Action",
+          "documentation":"<p> A budget action resource. </p>"
+        }
+      }
+    },
+    "DescribeBudgetActionsForAccountRequest":{
+      "type":"structure",
+      "required":["AccountId"],
+      "members":{
+        "AccountId":{"shape":"AccountId"},
+        "MaxResults":{"shape":"MaxResults"},
+        "NextToken":{"shape":"GenericString"}
+      }
+    },
+    "DescribeBudgetActionsForAccountResponse":{
+      "type":"structure",
+      "required":["Actions"],
+      "members":{
+        "Actions":{
+          "shape":"Actions",
+          "documentation":"<p> A list of the budget action resources information. </p>"
+        },
+        "NextToken":{"shape":"GenericString"}
+      }
+    },
+    "DescribeBudgetActionsForBudgetRequest":{
+      "type":"structure",
+      "required":[
+        "AccountId",
+        "BudgetName"
+      ],
+      "members":{
+        "AccountId":{"shape":"AccountId"},
+        "BudgetName":{"shape":"BudgetName"},
+        "MaxResults":{"shape":"MaxResults"},
+        "NextToken":{"shape":"GenericString"}
+      }
+    },
+    "DescribeBudgetActionsForBudgetResponse":{
+      "type":"structure",
+      "required":["Actions"],
+      "members":{
+        "Actions":{
+          "shape":"Actions",
+          "documentation":"<p> A list of the budget action resources information. </p>"
+        },
+        "NextToken":{"shape":"GenericString"}
+      }
+    },
+    "DescribeBudgetPerformanceHistoryRequest":{
+      "type":"structure",
+      "required":[
+        "AccountId",
+        "BudgetName"
+      ],
+      "members":{
+        "AccountId":{"shape":"AccountId"},
+        "BudgetName":{"shape":"BudgetName"},
+        "TimePeriod":{
+          "shape":"TimePeriod",
+          "documentation":"<p>Retrieves how often the budget went into an <code>ALARM</code> state for the specified time period.</p>"
+        },
+        "MaxResults":{"shape":"MaxResults"},
+        "NextToken":{"shape":"GenericString"}
+      }
+    },
+    "DescribeBudgetPerformanceHistoryResponse":{
+      "type":"structure",
+      "members":{
+        "BudgetPerformanceHistory":{
+          "shape":"BudgetPerformanceHistory",
+          "documentation":"<p>The history of how often the budget has gone into an <code>ALARM</code> state.</p> <p>For <code>DAILY</code> budgets, the history saves the state of the budget for the last 60 days. For <code>MONTHLY</code> budgets, the history saves the state of the budget for the current month plus the last 12 months. For <code>QUARTERLY</code> budgets, the history saves the state of the budget for the last four quarters.</p>"
+        },
+        "NextToken":{"shape":"GenericString"}
+      }
+    },
+    "DescribeBudgetRequest":{
+      "type":"structure",
+      "required":[
+        "AccountId",
+        "BudgetName"
+      ],
+      "members":{
+        "AccountId":{
+          "shape":"AccountId",
+          "documentation":"<p>The <code>accountId</code> that is associated with the budget that you want a description of.</p>"
+        },
+        "BudgetName":{
+          "shape":"BudgetName",
+          "documentation":"<p>The name of the budget that you want a description of.</p>"
+        }
+      },
+      "documentation":"<p> Request of DescribeBudget </p>"
+    },
+    "DescribeBudgetResponse":{
+      "type":"structure",
+      "members":{
+        "Budget":{
+          "shape":"Budget",
+          "documentation":"<p>The description of the budget.</p>"
+        }
+      },
+      "documentation":"<p> Response of DescribeBudget </p>"
+    },
+    "DescribeBudgetsRequest":{
+      "type":"structure",
+      "required":["AccountId"],
+      "members":{
+        "AccountId":{
+          "shape":"AccountId",
+          "documentation":"<p>The <code>accountId</code> that is associated with the budgets that you want descriptions of.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>An optional integer that represents how many entries a paginated response contains. The maximum is 100.</p>"
+        },
+        "NextToken":{
+          "shape":"GenericString",
+          "documentation":"<p>The pagination token that you include in your request to indicate the next set of results that you want to retrieve.</p>"
+        }
+      },
+      "documentation":"<p> Request of DescribeBudgets </p>"
+    },
+    "DescribeBudgetsResponse":{
+      "type":"structure",
+      "members":{
+        "Budgets":{
+          "shape":"Budgets",
+          "documentation":"<p>A list of budgets.</p>"
+        },
+        "NextToken":{
+          "shape":"GenericString",
+          "documentation":"<p>The pagination token in the service response that indicates the next set of results that you can retrieve.</p>"
+        }
+      },
+      "documentation":"<p> Response of DescribeBudgets </p>"
+    },
+    "DescribeNotificationsForBudgetRequest":{
+      "type":"structure",
+      "required":[
+        "AccountId",
+        "BudgetName"
+      ],
+      "members":{
+        "AccountId":{
+          "shape":"AccountId",
+          "documentation":"<p>The <code>accountId</code> that is associated with the budget whose notifications you want descriptions of.</p>"
+        },
+        "BudgetName":{
+          "shape":"BudgetName",
+          "documentation":"<p>The name of the budget whose notifications you want descriptions of.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>An optional integer that represents how many entries a paginated response contains. The maximum is 100.</p>"
+        },
+        "NextToken":{
+          "shape":"GenericString",
+          "documentation":"<p>The pagination token that you include in your request to indicate the next set of results that you want to retrieve.</p>"
+        }
+      },
+      "documentation":"<p> Request of DescribeNotificationsForBudget </p>"
+    },
+    "DescribeNotificationsForBudgetResponse":{
+      "type":"structure",
+      "members":{
+        "Notifications":{
+          "shape":"Notifications",
+          "documentation":"<p>A list of notifications that are associated with a budget.</p>"
+        },
+        "NextToken":{
+          "shape":"GenericString",
+          "documentation":"<p>The pagination token in the service response that indicates the next set of results that you can retrieve.</p>"
+        }
+      },
+      "documentation":"<p> Response of GetNotificationsForBudget </p>"
+    },
+    "DescribeSubscribersForNotificationRequest":{
+      "type":"structure",
+      "required":[
+        "AccountId",
+        "BudgetName",
+        "Notification"
+      ],
+      "members":{
+        "AccountId":{
+          "shape":"AccountId",
+          "documentation":"<p>The <code>accountId</code> that is associated with the budget whose subscribers you want descriptions of.</p>"
+        },
+        "BudgetName":{
+          "shape":"BudgetName",
+          "documentation":"<p>The name of the budget whose subscribers you want descriptions of.</p>"
+        },
+        "Notification":{
+          "shape":"Notification",
+          "documentation":"<p>The notification whose subscribers you want to list.</p>"
+        },
+        "MaxResults":{
+          "shape":"MaxResults",
+          "documentation":"<p>An optional integer that represents how many entries a paginated response contains. The maximum is 100.</p>"
+        },
+        "NextToken":{
+          "shape":"GenericString",
+          "documentation":"<p>The pagination token that you include in your request to indicate the next set of results that you want to retrieve.</p>"
+        }
+      },
+      "documentation":"<p> Request of DescribeSubscribersForNotification </p>"
+    },
+    "DescribeSubscribersForNotificationResponse":{
+      "type":"structure",
+      "members":{
+        "Subscribers":{
+          "shape":"Subscribers",
+          "documentation":"<p>A list of subscribers that are associated with a notification.</p>"
+        },
+        "NextToken":{
+          "shape":"GenericString",
+          "documentation":"<p>The pagination token in the service response that indicates the next set of results that you can retrieve.</p>"
+        }
+      },
+      "documentation":"<p> Response of DescribeSubscribersForNotification </p>"
+    },
+    "DimensionValues":{
+      "type":"list",
+      "member":{"shape":"GenericString"}
+    },
+    "DuplicateRecordException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"errorMessage"}
+      },
+      "documentation":"<p>The budget name already exists. Budget names must be unique within an account.</p>",
+      "exception":true
+    },
+    "EventType":{
+      "type":"string",
+      "enum":[
+        "SYSTEM",
+        "CREATE_ACTION",
+        "DELETE_ACTION",
+        "UPDATE_ACTION",
+        "EXECUTE_ACTION"
+      ]
+    },
+    "ExecuteBudgetActionRequest":{
+      "type":"structure",
+      "required":[
+        "AccountId",
+        "BudgetName",
+        "ActionId",
+        "ExecutionType"
+      ],
+      "members":{
+        "AccountId":{"shape":"AccountId"},
+        "BudgetName":{"shape":"BudgetName"},
+        "ActionId":{
+          "shape":"ActionId",
+          "documentation":"<p> A system-generated universally unique identifier (UUID) for the action. </p>"
+        },
+        "ExecutionType":{
+          "shape":"ExecutionType",
+          "documentation":"<p> The type of execution. </p>"
+        }
+      }
+    },
+    "ExecuteBudgetActionResponse":{
+      "type":"structure",
+      "required":[
+        "AccountId",
+        "BudgetName",
+        "ActionId",
+        "ExecutionType"
+      ],
+      "members":{
+        "AccountId":{"shape":"AccountId"},
+        "BudgetName":{"shape":"BudgetName"},
+        "ActionId":{
+          "shape":"ActionId",
+          "documentation":"<p> A system-generated universally unique identifier (UUID) for the action. </p>"
+        },
+        "ExecutionType":{
+          "shape":"ExecutionType",
+          "documentation":"<p> The type of execution. </p>"
+        }
+      }
+    },
+    "ExecutionType":{
+      "type":"string",
+      "enum":[
+        "APPROVE_BUDGET_ACTION",
+        "RETRY_BUDGET_ACTION",
+        "REVERSE_BUDGET_ACTION",
+        "RESET_BUDGET_ACTION"
+      ]
+    },
+    "ExpiredNextTokenException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"errorMessage"}
+      },
+      "documentation":"<p>The pagination token expired.</p>",
+      "exception":true
+    },
+    "GenericString":{
+      "type":"string",
+      "documentation":"<p> A generic string.</p>",
+      "max":2147483647,
+      "min":0,
+      "pattern":".*"
+    },
+    "GenericTimestamp":{
+      "type":"timestamp",
+      "documentation":"<p> A generic time stamp. In Java, it is transformed to a <code>Date</code> object.</p>"
+    },
+    "Group":{
+      "type":"string",
+      "max":640,
+      "min":1,
+      "pattern":"^([\\u0021-\\u007F]+\\u002F)?[\\w+=,.@-]+$"
+    },
+    "Groups":{
+      "type":"list",
+      "member":{"shape":"Group"},
+      "max":100,
+      "min":1
+    },
+    "IamActionDefinition":{
+      "type":"structure",
+      "required":["PolicyArn"],
+      "members":{
+        "PolicyArn":{
+          "shape":"PolicyArn",
+          "documentation":"<p> The Amazon Resource Name (ARN) of the policy to be attached. </p>"
+        },
+        "Roles":{
+          "shape":"Roles",
+          "documentation":"<p> A list of roles to be attached. There must be at least one role. </p>"
+        },
+        "Groups":{
+          "shape":"Groups",
+          "documentation":"<p> A list of groups to be attached. There must be at least one group. </p>"
+        },
+        "Users":{
+          "shape":"Users",
+          "documentation":"<p> A list of users to be attached. There must be at least one user. </p>"
+        }
+      },
+      "documentation":"<p> The AWS Identity and Access Management (IAM) action definition details. </p>"
+    },
+    "InstanceId":{
+      "type":"string",
+      "max":63,
+      "min":1,
+      "pattern":"^i-(\\w{8}|\\w{17})$|^[a-zA-Z]([\\w-]{0,61}\\w)?$"
+    },
+    "InstanceIds":{
+      "type":"list",
+      "member":{"shape":"InstanceId"},
+      "max":100,
+      "min":1
+    },
+    "InternalErrorException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"errorMessage"}
+      },
+      "documentation":"<p>An error on the server occurred during the processing of your request. Try again later.</p>",
+      "exception":true
+    },
+    "InvalidNextTokenException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"errorMessage"}
+      },
+      "documentation":"<p>The pagination token is invalid.</p>",
+      "exception":true
+    },
+    "InvalidParameterException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"errorMessage"}
+      },
+      "documentation":"<p>An error on the client occurred. Typically, the cause is an invalid input value.</p>",
+      "exception":true
+    },
+    "MaxResults":{
+      "type":"integer",
+      "documentation":"<p> An integer that represents how many entries a paginated response contains. The maximum is 100.</p>",
+      "box":true,
+      "max":100,
+      "min":1
+    },
+    "NotFoundException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"errorMessage"}
+      },
+      "documentation":"<p>We can’t locate the resource that you specified.</p>",
+      "exception":true
+    },
+    "Notification":{
+      "type":"structure",
+      "required":[
+        "NotificationType",
+        "ComparisonOperator",
+        "Threshold"
+      ],
+      "members":{
+        "NotificationType":{
+          "shape":"NotificationType",
+          "documentation":"<p>Whether the notification is for how much you have spent (<code>ACTUAL</code>) or for how much you're forecasted to spend (<code>FORECASTED</code>).</p>"
+        },
+        "ComparisonOperator":{
+          "shape":"ComparisonOperator",
+          "documentation":"<p>The comparison that is used for this notification.</p>"
+        },
+        "Threshold":{
+          "shape":"NotificationThreshold",
+          "documentation":"<p>The threshold that is associated with a notification. Thresholds are always a percentage, and many customers find value being alerted between 50% - 200% of the budgeted amount. The maximum limit for your threshold is 1,000,000% above the budgeted amount.</p>"
+        },
+        "ThresholdType":{
+          "shape":"ThresholdType",
+          "documentation":"<p>The type of threshold for a notification. For <code>ABSOLUTE_VALUE</code> thresholds, AWS notifies you when you go over or are forecasted to go over your total cost threshold. For <code>PERCENTAGE</code> thresholds, AWS notifies you when you go over or are forecasted to go over a certain percentage of your forecasted spend. For example, if you have a budget for 200 dollars and you have a <code>PERCENTAGE</code> threshold of 80%, AWS notifies you when you go over 160 dollars.</p>"
+        },
+        "NotificationState":{
+          "shape":"NotificationState",
+          "documentation":"<p>Whether this notification is in alarm. If a budget notification is in the <code>ALARM</code> state, you have passed the set threshold for the budget.</p>"
+        }
+      },
+      "documentation":"<p>A notification that is associated with a budget. A budget can have up to ten notifications. </p> <p>Each notification must have at least one subscriber. A notification can have one SNS subscriber and up to 10 email subscribers, for a total of 11 subscribers.</p> <p>For example, if you have a budget for 200 dollars and you want to be notified when you go over 160 dollars, create a notification with the following parameters:</p> <ul> <li> <p>A notificationType of <code>ACTUAL</code> </p> </li> <li> <p>A <code>thresholdType</code> of <code>PERCENTAGE</code> </p> </li> <li> <p>A <code>comparisonOperator</code> of <code>GREATER_THAN</code> </p> </li> <li> <p>A notification <code>threshold</code> of <code>80</code> </p> </li> </ul>"
+    },
+    "NotificationState":{
+      "type":"string",
+      "enum":[
+        "OK",
+        "ALARM"
+      ]
+    },
+    "NotificationThreshold":{
+      "type":"double",
+      "documentation":"<p> The threshold of a notification.</p>",
+      "max":40000000000,
+      "min":0
+    },
+    "NotificationType":{
+      "type":"string",
+      "documentation":"<p> The type of a notification. It must be ACTUAL or FORECASTED.</p>",
+      "enum":[
+        "ACTUAL",
+        "FORECASTED"
+      ]
+    },
+    "NotificationWithSubscribers":{
+      "type":"structure",
+      "required":[
+        "Notification",
+        "Subscribers"
+      ],
+      "members":{
+        "Notification":{
+          "shape":"Notification",
+          "documentation":"<p>The notification that is associated with a budget.</p>"
+        },
+        "Subscribers":{
+          "shape":"Subscribers",
+          "documentation":"<p>A list of subscribers who are subscribed to this notification.</p>"
+        }
+      },
+      "documentation":"<p>A notification with subscribers. A notification can have one SNS subscriber and up to 10 email subscribers, for a total of 11 subscribers.</p>"
+    },
+    "NotificationWithSubscribersList":{
+      "type":"list",
+      "member":{"shape":"NotificationWithSubscribers"},
+      "documentation":"<p> A list of notifications, each with a list of subscribers.</p>",
+      "max":10
+    },
+    "Notifications":{
+      "type":"list",
+      "member":{"shape":"Notification"},
+      "documentation":"<p> A list of notifications.</p>"
+    },
+    "NullableBoolean":{
+      "type":"boolean",
+      "box":true
+    },
+    "NumericValue":{
+      "type":"string",
+      "documentation":"<p> A string that represents a numeric value.</p>",
+      "max":2147483647,
+      "min":1,
+      "pattern":"([0-9]*\\.)?[0-9]+"
+    },
+    "PlannedBudgetLimits":{
+      "type":"map",
+      "key":{"shape":"GenericString"},
+      "value":{"shape":"Spend"}
+    },
+    "PolicyArn":{
+      "type":"string",
+      "max":684,
+      "min":25,
+      "pattern":"^arn:(aws|aws-cn|aws-us-gov|us-iso-east-1|us-isob-east-1):iam::(\\d{12}|aws):policy(\\u002F[\\u0021-\\u007F]+\\u002F|\\u002F)[\\w+=,.@-]+$"
+    },
+    "PolicyId":{
+      "type":"string",
+      "max":130,
+      "min":10,
+      "pattern":"^p-[0-9a-zA-Z_]{8,128}$"
+    },
+    "Region":{
+      "type":"string",
+      "max":20,
+      "min":9,
+      "pattern":"^\\w{2}-\\w+(-\\w+)?-\\d$"
+    },
+    "ResourceLockedException":{
+      "type":"structure",
+      "members":{
+        "Message":{"shape":"errorMessage"}
+      },
+      "documentation":"<p> The request was received and recognized by the server, but the server rejected that particular method for the requested resource. </p>",
+      "exception":true
+    },
+    "Role":{
+      "type":"string",
+      "max":576,
+      "min":1,
+      "pattern":"^([\\u0021-\\u007F]+\\u002F)?[\\w+=,.@-]+$"
+    },
+    "RoleArn":{
+      "type":"string",
+      "max":618,
+      "min":32,
+      "pattern":"^arn:(aws|aws-cn|aws-us-gov|us-iso-east-1|us-isob-east-1):iam::\\d{12}:role(\\u002F[\\u0021-\\u007F]+\\u002F|\\u002F)[\\w+=,.@-]+$"
+    },
+    "Roles":{
+      "type":"list",
+      "member":{"shape":"Role"},
+      "max":100,
+      "min":1
+    },
+    "ScpActionDefinition":{
+      "type":"structure",
+      "required":[
+        "PolicyId",
+        "TargetIds"
+      ],
+      "members":{
+        "PolicyId":{
+          "shape":"PolicyId",
+          "documentation":"<p> The policy ID attached. </p>"
+        },
+        "TargetIds":{
+          "shape":"TargetIds",
+          "documentation":"<p> A list of target IDs. </p>"
+        }
+      },
+      "documentation":"<p> The service control policies (SCP) action definition details. </p>"
+    },
+    "Spend":{
+      "type":"structure",
+      "required":[
+        "Amount",
+        "Unit"
+      ],
+      "members":{
+        "Amount":{
+          "shape":"NumericValue",
+          "documentation":"<p>The cost or usage amount that is associated with a budget forecast, actual spend, or budget threshold.</p>"
+        },
+        "Unit":{
+          "shape":"UnitValue",
+          "documentation":"<p>The unit of measurement that is used for the budget forecast, actual spend, or budget threshold, such as dollars or GB.</p>"
+        }
+      },
+      "documentation":"<p>The amount of cost or usage that is measured for a budget.</p> <p>For example, a <code>Spend</code> for <code>3 GB</code> of S3 usage would have the following parameters:</p> <ul> <li> <p>An <code>Amount</code> of <code>3</code> </p> </li> <li> <p>A <code>unit</code> of <code>GB</code> </p> </li> </ul>"
+    },
+    "SsmActionDefinition":{
+      "type":"structure",
+      "required":[
+        "ActionSubType",
+        "Region",
+        "InstanceIds"
+      ],
+      "members":{
+        "ActionSubType":{
+          "shape":"ActionSubType",
+          "documentation":"<p> The action subType. </p>"
+        },
+        "Region":{
+          "shape":"Region",
+          "documentation":"<p> The Region to run the SSM document. </p>"
+        },
+        "InstanceIds":{
+          "shape":"InstanceIds",
+          "documentation":"<p> The EC2 and RDS instance IDs. </p>"
+        }
+      },
+      "documentation":"<p> The AWS Systems Manager (SSM) action definition details. </p>"
+    },
+    "Subscriber":{
+      "type":"structure",
+      "required":[
+        "SubscriptionType",
+        "Address"
+      ],
+      "members":{
+        "SubscriptionType":{
+          "shape":"SubscriptionType",
+          "documentation":"<p>The type of notification that AWS sends to a subscriber.</p>"
+        },
+        "Address":{
+          "shape":"SubscriberAddress",
+          "documentation":"<p>The address that AWS sends budget notifications to, either an SNS topic or an email.</p> <p>When you create a subscriber, the value of <code>Address</code> can't contain line breaks.</p>"
+        }
+      },
+      "documentation":"<p>The subscriber to a budget notification. The subscriber consists of a subscription type and either an Amazon SNS topic or an email address.</p> <p>For example, an email subscriber would have the following parameters:</p> <ul> <li> <p>A <code>subscriptionType</code> of <code>EMAIL</code> </p> </li> <li> <p>An <code>address</code> of <code>example@example.com</code> </p> </li> </ul>"
+    },
+    "SubscriberAddress":{
+      "type":"string",
+      "documentation":"<p> A string that contains an email address or SNS topic for the subscriber's address.</p>",
+      "max":2147483647,
+      "min":1,
+      "pattern":"(.*[\\n\\r\\t\\f\\ ]?)*",
+      "sensitive":true
+    },
+    "Subscribers":{
+      "type":"list",
+      "member":{"shape":"Subscriber"},
+      "documentation":"<p> A list of subscribers.</p>",
+      "max":11,
+      "min":1
+    },
+    "SubscriptionType":{
+      "type":"string",
+      "documentation":"<p> The subscription type of the subscriber. It can be SMS or EMAIL.</p>",
+      "enum":[
+        "SNS",
+        "EMAIL"
+      ]
+    },
+    "TargetId":{
+      "type":"string",
+      "max":68,
+      "min":12,
+      "pattern":"^(ou-[0-9a-z]{4,32}-[a-z0-9]{8,32}$)|(\\d{12})"
+    },
+    "TargetIds":{
+      "type":"list",
+      "member":{"shape":"TargetId"},
+      "max":100,
+      "min":1
+    },
+    "ThresholdType":{
+      "type":"string",
+      "documentation":"<p> The type of threshold for a notification.</p>",
+      "enum":[
+        "PERCENTAGE",
+        "ABSOLUTE_VALUE"
+      ]
+    },
+    "TimePeriod":{
+      "type":"structure",
+      "members":{
+        "Start":{
+          "shape":"GenericTimestamp",
+          "documentation":"<p>The start date for a budget. If you created your budget and didn't specify a start date, AWS defaults to the start of your chosen time period (DAILY, MONTHLY, QUARTERLY, or ANNUALLY). For example, if you created your budget on January 24, 2018, chose <code>DAILY</code>, and didn't set a start date, AWS set your start date to <code>01/24/18 00:00 UTC</code>. If you chose <code>MONTHLY</code>, AWS set your start date to <code>01/01/18 00:00 UTC</code>. The defaults are the same for the AWS Billing and Cost Management console and the API.</p> <p>You can change your start date with the <code>UpdateBudget</code> operation.</p>"
+        },
+        "End":{
+          "shape":"GenericTimestamp",
+          "documentation":"<p>The end date for a budget. If you didn't specify an end date, AWS set your end date to <code>06/15/87 00:00 UTC</code>. The defaults are the same for the AWS Billing and Cost Management console and the API.</p> <p>After the end date, AWS deletes the budget and all associated notifications and subscribers. You can change your end date with the <code>UpdateBudget</code> operation.</p>"
+        }
+      },
+      "documentation":"<p>The period of time that is covered by a budget. The period has a start date and an end date. The start date must come before the end date. There are no restrictions on the end date. </p>"
+    },
+    "TimeUnit":{
+      "type":"string",
+      "documentation":"<p> The time unit of the budget, such as MONTHLY or QUARTERLY.</p>",
+      "enum":[
+        "DAILY",
+        "MONTHLY",
+        "QUARTERLY",
+        "ANNUALLY"
+      ]
+    },
+    "UnitValue":{
+      "type":"string",
+      "documentation":"<p> A string that represents the spend unit of a budget. It can't be null or empty.</p>",
+      "max":2147483647,
+      "min":1,
+      "pattern":".*"
+    },
+    "UpdateBudgetActionRequest":{
+      "type":"structure",
+      "required":[
+        "AccountId",
+        "BudgetName",
+        "ActionId"
+      ],
+      "members":{
+        "AccountId":{"shape":"AccountId"},
+        "BudgetName":{"shape":"BudgetName"},
+        "ActionId":{
+          "shape":"ActionId",
+          "documentation":"<p> A system-generated universally unique identifier (UUID) for the action. </p>"
+        },
+        "NotificationType":{"shape":"NotificationType"},
+        "ActionThreshold":{"shape":"ActionThreshold"},
+        "Definition":{"shape":"Definition"},
+        "ExecutionRoleArn":{
+          "shape":"RoleArn",
+          "documentation":"<p> The role passed for action execution and reversion. Roles and actions must be in the same account. </p>"
+        },
+        "ApprovalModel":{
+          "shape":"ApprovalModel",
+          "documentation":"<p> This specifies if the action needs manual or automatic approval. </p>"
+        },
+        "Subscribers":{"shape":"Subscribers"}
+      }
+    },
+    "UpdateBudgetActionResponse":{
+      "type":"structure",
+      "required":[
+        "AccountId",
+        "BudgetName",
+        "OldAction",
+        "NewAction"
+      ],
+      "members":{
+        "AccountId":{"shape":"AccountId"},
+        "BudgetName":{"shape":"BudgetName"},
+        "OldAction":{
+          "shape":"Action",
+          "documentation":"<p> The previous action resource information. </p>"
+        },
+        "NewAction":{
+          "shape":"Action",
+          "documentation":"<p> The updated action resource information. </p>"
+        }
+      }
+    },
+    "UpdateBudgetRequest":{
+      "type":"structure",
+      "required":[
+        "AccountId",
+        "NewBudget"
+      ],
+      "members":{
+        "AccountId":{
+          "shape":"AccountId",
+          "documentation":"<p>The <code>accountId</code> that is associated with the budget that you want to update.</p>"
+        },
+        "NewBudget":{
+          "shape":"Budget",
+          "documentation":"<p>The budget that you want to update your budget to.</p>"
+        }
+      },
+      "documentation":"<p> Request of UpdateBudget </p>"
+    },
+    "UpdateBudgetResponse":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> Response of UpdateBudget </p>"
+    },
+    "UpdateNotificationRequest":{
+      "type":"structure",
+      "required":[
+        "AccountId",
+        "BudgetName",
+        "OldNotification",
+        "NewNotification"
+      ],
+      "members":{
+        "AccountId":{
+          "shape":"AccountId",
+          "documentation":"<p>The <code>accountId</code> that is associated with the budget whose notification you want to update.</p>"
+        },
+        "BudgetName":{
+          "shape":"BudgetName",
+          "documentation":"<p>The name of the budget whose notification you want to update.</p>"
+        },
+        "OldNotification":{
+          "shape":"Notification",
+          "documentation":"<p>The previous notification that is associated with a budget.</p>"
+        },
+        "NewNotification":{
+          "shape":"Notification",
+          "documentation":"<p>The updated notification to be associated with a budget.</p>"
+        }
+      },
+      "documentation":"<p> Request of UpdateNotification </p>"
+    },
+    "UpdateNotificationResponse":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> Response of UpdateNotification </p>"
+    },
+    "UpdateSubscriberRequest":{
+      "type":"structure",
+      "required":[
+        "AccountId",
+        "BudgetName",
+        "Notification",
+        "OldSubscriber",
+        "NewSubscriber"
+      ],
+      "members":{
+        "AccountId":{
+          "shape":"AccountId",
+          "documentation":"<p>The <code>accountId</code> that is associated with the budget whose subscriber you want to update.</p>"
+        },
+        "BudgetName":{
+          "shape":"BudgetName",
+          "documentation":"<p>The name of the budget whose subscriber you want to update.</p>"
+        },
+        "Notification":{
+          "shape":"Notification",
+          "documentation":"<p>The notification whose subscriber you want to update.</p>"
+        },
+        "OldSubscriber":{
+          "shape":"Subscriber",
+          "documentation":"<p>The previous subscriber that is associated with a budget notification.</p>"
+        },
+        "NewSubscriber":{
+          "shape":"Subscriber",
+          "documentation":"<p>The updated subscriber that is associated with a budget notification.</p>"
+        }
+      },
+      "documentation":"<p> Request of UpdateSubscriber </p>"
+    },
+    "UpdateSubscriberResponse":{
+      "type":"structure",
+      "members":{
+      },
+      "documentation":"<p> Response of UpdateSubscriber </p>"
+    },
+    "User":{
+      "type":"string",
+      "max":576,
+      "min":1,
+      "pattern":"^([\\u0021-\\u007F]+\\u002F)?[\\w+=,.@-]+$"
+    },
+    "Users":{
+      "type":"list",
+      "member":{"shape":"User"},
+      "max":100,
+      "min":1
+    },
+    "errorMessage":{
+      "type":"string",
+      "documentation":"<p>The error message the exception carries.</p>"
+    }
+  },
+  "documentation":"<p>The AWS Budgets API enables you to use AWS Budgets to plan your service usage, service costs, and instance reservations. The API reference provides descriptions, syntax, and usage examples for each of the actions and data types for AWS Budgets. </p> <p>Budgets provide you with a way to see the following information:</p> <ul> <li> <p>How close your plan is to your budgeted amount or to the free tier limits</p> </li> <li> <p>Your usage-to-date, including how much you've used of your Reserved Instances (RIs)</p> </li> <li> <p>Your current estimated charges from AWS, and how much your predicted usage will accrue in charges by the end of the month</p> </li> <li> <p>How much of your budget has been used</p> </li> </ul> <p>AWS updates your budget status several times a day. Budgets track your unblended costs, subscriptions, refunds, and RIs. You can create the following types of budgets:</p> <ul> <li> <p> <b>Cost budgets</b> - Plan how much you want to spend on a service.</p> </li> <li> <p> <b>Usage budgets</b> - Plan how much you want to use one or more services.</p> </li> <li> <p> <b>RI utilization budgets</b> - Define a utilization threshold, and receive alerts when your RI usage falls below that threshold. This lets you see if your RIs are unused or under-utilized.</p> </li> <li> <p> <b>RI coverage budgets</b> - Define a coverage threshold, and receive alerts when the number of your instance hours that are covered by RIs fall below that threshold. This lets you see how much of your instance usage is covered by a reservation.</p> </li> </ul> <p>Service Endpoint</p> <p>The AWS Budgets API provides the following endpoint:</p> <ul> <li> <p>https://budgets.amazonaws.com</p> </li> </ul> <p>For information about costs that are associated with the AWS Budgets API, see <a href=\"https://aws.amazon.com/aws-cost-management/pricing/\">AWS Cost Management Pricing</a>.</p>"
+}

+ 5 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/ce/2017-10-25/examples-1.json

@@ -0,0 +1,5 @@
+{
+  "version": "1.0",
+  "examples": {
+  }
+}

+ 3 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/ce/2017-10-25/paginators-1.json

@@ -0,0 +1,3 @@
+{
+  "pagination": {}
+}

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1530 - 0
ambt-anoicos-lambda-for-exe-sagemaker/.aws-sam/build/ambtiparktowerrawtoprepbucketlambda/botocore/data/ce/2017-10-25/service-2.json


Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov