1{
2  "version":"2.0",
3  "metadata":{
4    "apiVersion":"2020-11-30",
5    "endpointPrefix":"greengrass",
6    "jsonVersion":"1.1",
7    "protocol":"rest-json",
8    "serviceAbbreviation":"AWS GreengrassV2",
9    "serviceFullName":"AWS IoT Greengrass V2",
10    "serviceId":"GreengrassV2",
11    "signatureVersion":"v4",
12    "uid":"greengrassv2-2020-11-30"
13  },
14  "operations":{
15    "CancelDeployment":{
16      "name":"CancelDeployment",
17      "http":{
18        "method":"POST",
19        "requestUri":"/greengrass/v2/deployments/{deploymentId}/cancel"
20      },
21      "input":{"shape":"CancelDeploymentRequest"},
22      "output":{"shape":"CancelDeploymentResponse"},
23      "errors":[
24        {"shape":"ResourceNotFoundException"},
25        {"shape":"ValidationException"},
26        {"shape":"AccessDeniedException"},
27        {"shape":"InternalServerException"},
28        {"shape":"ConflictException"},
29        {"shape":"ThrottlingException"}
30      ]
31    },
32    "CreateComponentVersion":{
33      "name":"CreateComponentVersion",
34      "http":{
35        "method":"POST",
36        "requestUri":"/greengrass/v2/createComponentVersion",
37        "responseCode":201
38      },
39      "input":{"shape":"CreateComponentVersionRequest"},
40      "output":{"shape":"CreateComponentVersionResponse"},
41      "errors":[
42        {"shape":"ValidationException"},
43        {"shape":"ServiceQuotaExceededException"},
44        {"shape":"AccessDeniedException"},
45        {"shape":"ConflictException"},
46        {"shape":"ThrottlingException"},
47        {"shape":"InternalServerException"}
48      ]
49    },
50    "CreateDeployment":{
51      "name":"CreateDeployment",
52      "http":{
53        "method":"POST",
54        "requestUri":"/greengrass/v2/deployments",
55        "responseCode":201
56      },
57      "input":{"shape":"CreateDeploymentRequest"},
58      "output":{"shape":"CreateDeploymentResponse"},
59      "errors":[
60        {"shape":"ResourceNotFoundException"},
61        {"shape":"ValidationException"},
62        {"shape":"AccessDeniedException"},
63        {"shape":"ThrottlingException"},
64        {"shape":"InternalServerException"}
65      ]
66    },
67    "DeleteComponent":{
68      "name":"DeleteComponent",
69      "http":{
70        "method":"DELETE",
71        "requestUri":"/greengrass/v2/components/{arn}",
72        "responseCode":204
73      },
74      "input":{"shape":"DeleteComponentRequest"},
75      "errors":[
76        {"shape":"ValidationException"},
77        {"shape":"AccessDeniedException"},
78        {"shape":"ConflictException"},
79        {"shape":"ResourceNotFoundException"},
80        {"shape":"ThrottlingException"},
81        {"shape":"InternalServerException"}
82      ]
83    },
84    "DeleteCoreDevice":{
85      "name":"DeleteCoreDevice",
86      "http":{
87        "method":"DELETE",
88        "requestUri":"/greengrass/v2/coreDevices/{coreDeviceThingName}",
89        "responseCode":204
90      },
91      "input":{"shape":"DeleteCoreDeviceRequest"},
92      "errors":[
93        {"shape":"ValidationException"},
94        {"shape":"ResourceNotFoundException"},
95        {"shape":"AccessDeniedException"},
96        {"shape":"InternalServerException"},
97        {"shape":"ThrottlingException"},
98        {"shape":"ConflictException"}
99      ]
100    },
101    "DescribeComponent":{
102      "name":"DescribeComponent",
103      "http":{
104        "method":"GET",
105        "requestUri":"/greengrass/v2/components/{arn}/metadata"
106      },
107      "input":{"shape":"DescribeComponentRequest"},
108      "output":{"shape":"DescribeComponentResponse"},
109      "errors":[
110        {"shape":"ValidationException"},
111        {"shape":"AccessDeniedException"},
112        {"shape":"ResourceNotFoundException"},
113        {"shape":"ThrottlingException"},
114        {"shape":"InternalServerException"}
115      ]
116    },
117    "GetComponent":{
118      "name":"GetComponent",
119      "http":{
120        "method":"GET",
121        "requestUri":"/greengrass/v2/components/{arn}"
122      },
123      "input":{"shape":"GetComponentRequest"},
124      "output":{"shape":"GetComponentResponse"},
125      "errors":[
126        {"shape":"ValidationException"},
127        {"shape":"AccessDeniedException"},
128        {"shape":"ResourceNotFoundException"},
129        {"shape":"ThrottlingException"},
130        {"shape":"InternalServerException"}
131      ]
132    },
133    "GetComponentVersionArtifact":{
134      "name":"GetComponentVersionArtifact",
135      "http":{
136        "method":"GET",
137        "requestUri":"/greengrass/v2/components/{arn}/artifacts/{artifactName+}"
138      },
139      "input":{"shape":"GetComponentVersionArtifactRequest"},
140      "output":{"shape":"GetComponentVersionArtifactResponse"},
141      "errors":[
142        {"shape":"ValidationException"},
143        {"shape":"AccessDeniedException"},
144        {"shape":"ResourceNotFoundException"},
145        {"shape":"ThrottlingException"},
146        {"shape":"InternalServerException"}
147      ]
148    },
149    "GetCoreDevice":{
150      "name":"GetCoreDevice",
151      "http":{
152        "method":"GET",
153        "requestUri":"/greengrass/v2/coreDevices/{coreDeviceThingName}"
154      },
155      "input":{"shape":"GetCoreDeviceRequest"},
156      "output":{"shape":"GetCoreDeviceResponse"},
157      "errors":[
158        {"shape":"ValidationException"},
159        {"shape":"ResourceNotFoundException"},
160        {"shape":"AccessDeniedException"},
161        {"shape":"InternalServerException"},
162        {"shape":"ThrottlingException"}
163      ]
164    },
165    "GetDeployment":{
166      "name":"GetDeployment",
167      "http":{
168        "method":"GET",
169        "requestUri":"/greengrass/v2/deployments/{deploymentId}"
170      },
171      "input":{"shape":"GetDeploymentRequest"},
172      "output":{"shape":"GetDeploymentResponse"},
173      "errors":[
174        {"shape":"ValidationException"},
175        {"shape":"ResourceNotFoundException"},
176        {"shape":"AccessDeniedException"},
177        {"shape":"InternalServerException"},
178        {"shape":"ThrottlingException"}
179      ]
180    },
181    "ListComponentVersions":{
182      "name":"ListComponentVersions",
183      "http":{
184        "method":"GET",
185        "requestUri":"/greengrass/v2/components/{arn}/versions"
186      },
187      "input":{"shape":"ListComponentVersionsRequest"},
188      "output":{"shape":"ListComponentVersionsResponse"},
189      "errors":[
190        {"shape":"ValidationException"},
191        {"shape":"AccessDeniedException"},
192        {"shape":"ResourceNotFoundException"},
193        {"shape":"ThrottlingException"},
194        {"shape":"InternalServerException"}
195      ]
196    },
197    "ListComponents":{
198      "name":"ListComponents",
199      "http":{
200        "method":"GET",
201        "requestUri":"/greengrass/v2/components"
202      },
203      "input":{"shape":"ListComponentsRequest"},
204      "output":{"shape":"ListComponentsResponse"},
205      "errors":[
206        {"shape":"ValidationException"},
207        {"shape":"AccessDeniedException"},
208        {"shape":"ThrottlingException"},
209        {"shape":"InternalServerException"}
210      ]
211    },
212    "ListCoreDevices":{
213      "name":"ListCoreDevices",
214      "http":{
215        "method":"GET",
216        "requestUri":"/greengrass/v2/coreDevices"
217      },
218      "input":{"shape":"ListCoreDevicesRequest"},
219      "output":{"shape":"ListCoreDevicesResponse"},
220      "errors":[
221        {"shape":"ValidationException"},
222        {"shape":"AccessDeniedException"},
223        {"shape":"InternalServerException"},
224        {"shape":"ThrottlingException"}
225      ]
226    },
227    "ListDeployments":{
228      "name":"ListDeployments",
229      "http":{
230        "method":"GET",
231        "requestUri":"/greengrass/v2/deployments"
232      },
233      "input":{"shape":"ListDeploymentsRequest"},
234      "output":{"shape":"ListDeploymentsResponse"},
235      "errors":[
236        {"shape":"ValidationException"},
237        {"shape":"AccessDeniedException"},
238        {"shape":"InternalServerException"},
239        {"shape":"ThrottlingException"}
240      ]
241    },
242    "ListEffectiveDeployments":{
243      "name":"ListEffectiveDeployments",
244      "http":{
245        "method":"GET",
246        "requestUri":"/greengrass/v2/coreDevices/{coreDeviceThingName}/effectiveDeployments"
247      },
248      "input":{"shape":"ListEffectiveDeploymentsRequest"},
249      "output":{"shape":"ListEffectiveDeploymentsResponse"},
250      "errors":[
251        {"shape":"ValidationException"},
252        {"shape":"ResourceNotFoundException"},
253        {"shape":"AccessDeniedException"},
254        {"shape":"InternalServerException"},
255        {"shape":"ThrottlingException"}
256      ]
257    },
258    "ListInstalledComponents":{
259      "name":"ListInstalledComponents",
260      "http":{
261        "method":"GET",
262        "requestUri":"/greengrass/v2/coreDevices/{coreDeviceThingName}/installedComponents"
263      },
264      "input":{"shape":"ListInstalledComponentsRequest"},
265      "output":{"shape":"ListInstalledComponentsResponse"},
266      "errors":[
267        {"shape":"ValidationException"},
268        {"shape":"ResourceNotFoundException"},
269        {"shape":"AccessDeniedException"},
270        {"shape":"InternalServerException"},
271        {"shape":"ThrottlingException"}
272      ]
273    },
274    "ListTagsForResource":{
275      "name":"ListTagsForResource",
276      "http":{
277        "method":"GET",
278        "requestUri":"/tags/{resourceArn}"
279      },
280      "input":{"shape":"ListTagsForResourceRequest"},
281      "output":{"shape":"ListTagsForResourceResponse"},
282      "errors":[
283        {"shape":"InternalServerException"},
284        {"shape":"ValidationException"},
285        {"shape":"ResourceNotFoundException"}
286      ]
287    },
288    "ResolveComponentCandidates":{
289      "name":"ResolveComponentCandidates",
290      "http":{
291        "method":"POST",
292        "requestUri":"/greengrass/v2/resolveComponentCandidates"
293      },
294      "input":{"shape":"ResolveComponentCandidatesRequest"},
295      "output":{"shape":"ResolveComponentCandidatesResponse"},
296      "errors":[
297        {"shape":"ValidationException"},
298        {"shape":"AccessDeniedException"},
299        {"shape":"ResourceNotFoundException"},
300        {"shape":"ThrottlingException"},
301        {"shape":"InternalServerException"},
302        {"shape":"ConflictException"}
303      ]
304    },
305    "TagResource":{
306      "name":"TagResource",
307      "http":{
308        "method":"POST",
309        "requestUri":"/tags/{resourceArn}"
310      },
311      "input":{"shape":"TagResourceRequest"},
312      "output":{"shape":"TagResourceResponse"},
313      "errors":[
314        {"shape":"InternalServerException"},
315        {"shape":"ValidationException"},
316        {"shape":"ResourceNotFoundException"}
317      ]
318    },
319    "UntagResource":{
320      "name":"UntagResource",
321      "http":{
322        "method":"DELETE",
323        "requestUri":"/tags/{resourceArn}"
324      },
325      "input":{"shape":"UntagResourceRequest"},
326      "output":{"shape":"UntagResourceResponse"},
327      "errors":[
328        {"shape":"InternalServerException"},
329        {"shape":"ValidationException"},
330        {"shape":"ResourceNotFoundException"}
331      ]
332    }
333  },
334  "shapes":{
335    "AccessDeniedException":{
336      "type":"structure",
337      "required":["message"],
338      "members":{
339        "message":{"shape":"String"}
340      },
341      "error":{"httpStatusCode":403},
342      "exception":true
343    },
344    "CancelDeploymentRequest":{
345      "type":"structure",
346      "required":["deploymentId"],
347      "members":{
348        "deploymentId":{
349          "shape":"NonEmptyString",
350          "location":"uri",
351          "locationName":"deploymentId"
352        }
353      }
354    },
355    "CancelDeploymentResponse":{
356      "type":"structure",
357      "members":{
358        "message":{"shape":"NonEmptyString"}
359      }
360    },
361    "CloudComponentState":{
362      "type":"string",
363      "enum":[
364        "REQUESTED",
365        "INITIATED",
366        "DEPLOYABLE",
367        "FAILED",
368        "DEPRECATED"
369      ]
370    },
371    "CloudComponentStatus":{
372      "type":"structure",
373      "members":{
374        "componentState":{"shape":"CloudComponentState"},
375        "message":{"shape":"NonEmptyString"},
376        "errors":{"shape":"StringMap"}
377      }
378    },
379    "Component":{
380      "type":"structure",
381      "members":{
382        "arn":{"shape":"ComponentARN"},
383        "componentName":{"shape":"ComponentNameString"},
384        "latestVersion":{"shape":"ComponentLatestVersion"}
385      }
386    },
387    "ComponentARN":{
388      "type":"string",
389      "pattern":"arn:aws(-cn|-us-gov)?:greengrass:[^:]+:(aws|[0-9]+):components:[^:]+"
390    },
391    "ComponentCandidate":{
392      "type":"structure",
393      "members":{
394        "componentName":{"shape":"ComponentNameString"},
395        "componentVersion":{"shape":"ComponentVersionString"},
396        "versionRequirements":{"shape":"ComponentVersionRequirementMap"}
397      }
398    },
399    "ComponentCandidateList":{
400      "type":"list",
401      "member":{"shape":"ComponentCandidate"}
402    },
403    "ComponentConfigurationPath":{
404      "type":"string",
405      "max":256,
406      "min":0
407    },
408    "ComponentConfigurationPathList":{
409      "type":"list",
410      "member":{"shape":"ComponentConfigurationPath"}
411    },
412    "ComponentConfigurationString":{
413      "type":"string",
414      "max":65536,
415      "min":1
416    },
417    "ComponentConfigurationUpdate":{
418      "type":"structure",
419      "members":{
420        "merge":{"shape":"ComponentConfigurationString"},
421        "reset":{"shape":"ComponentConfigurationPathList"}
422      }
423    },
424    "ComponentDependencyMap":{
425      "type":"map",
426      "key":{"shape":"NonEmptyString"},
427      "value":{"shape":"ComponentDependencyRequirement"}
428    },
429    "ComponentDependencyRequirement":{
430      "type":"structure",
431      "members":{
432        "versionRequirement":{"shape":"NonEmptyString"},
433        "dependencyType":{"shape":"ComponentDependencyType"}
434      }
435    },
436    "ComponentDependencyType":{
437      "type":"string",
438      "enum":[
439        "HARD",
440        "SOFT"
441      ]
442    },
443    "ComponentDeploymentSpecification":{
444      "type":"structure",
445      "members":{
446        "componentVersion":{"shape":"ComponentVersionString"},
447        "configurationUpdate":{"shape":"ComponentConfigurationUpdate"},
448        "runWith":{"shape":"ComponentRunWith"}
449      }
450    },
451    "ComponentDeploymentSpecifications":{
452      "type":"map",
453      "key":{"shape":"NonEmptyString"},
454      "value":{"shape":"ComponentDeploymentSpecification"}
455    },
456    "ComponentLatestVersion":{
457      "type":"structure",
458      "members":{
459        "arn":{"shape":"ComponentVersionARN"},
460        "componentVersion":{"shape":"ComponentVersionString"},
461        "creationTimestamp":{"shape":"Timestamp"},
462        "description":{"shape":"NonEmptyString"},
463        "publisher":{"shape":"NonEmptyString"},
464        "platforms":{"shape":"ComponentPlatformList"}
465      }
466    },
467    "ComponentList":{
468      "type":"list",
469      "member":{"shape":"Component"}
470    },
471    "ComponentNameString":{
472      "type":"string",
473      "max":128,
474      "min":1,
475      "pattern":"[a-zA-Z0-9-_.]+"
476    },
477    "ComponentPlatform":{
478      "type":"structure",
479      "members":{
480        "name":{"shape":"NonEmptyString"},
481        "attributes":{"shape":"PlatformAttributesMap"}
482      }
483    },
484    "ComponentPlatformList":{
485      "type":"list",
486      "member":{"shape":"ComponentPlatform"}
487    },
488    "ComponentRunWith":{
489      "type":"structure",
490      "members":{
491        "posixUser":{"shape":"NonEmptyString"}
492      }
493    },
494    "ComponentVersionARN":{
495      "type":"string",
496      "pattern":"arn:aws(-cn|-us-gov)?:greengrass:[^:]+:(aws|[0-9]+):components:[^:]+:versions:[^:]+"
497    },
498    "ComponentVersionList":{
499      "type":"list",
500      "member":{"shape":"ComponentVersionListItem"}
501    },
502    "ComponentVersionListItem":{
503      "type":"structure",
504      "members":{
505        "componentName":{"shape":"ComponentNameString"},
506        "componentVersion":{"shape":"ComponentVersionString"},
507        "arn":{"shape":"NonEmptyString"}
508      }
509    },
510    "ComponentVersionRequirementMap":{
511      "type":"map",
512      "key":{"shape":"NonEmptyString"},
513      "value":{"shape":"NonEmptyString"}
514    },
515    "ComponentVersionString":{
516      "type":"string",
517      "max":64,
518      "min":1,
519      "pattern":"[0-9a-zA-Z-.+]+"
520    },
521    "ComponentVisibilityScope":{
522      "type":"string",
523      "enum":[
524        "PRIVATE",
525        "PUBLIC"
526      ]
527    },
528    "ConflictException":{
529      "type":"structure",
530      "required":[
531        "message",
532        "resourceId",
533        "resourceType"
534      ],
535      "members":{
536        "message":{"shape":"String"},
537        "resourceId":{"shape":"String"},
538        "resourceType":{"shape":"String"}
539      },
540      "error":{"httpStatusCode":409},
541      "exception":true
542    },
543    "CoreDevice":{
544      "type":"structure",
545      "members":{
546        "coreDeviceThingName":{"shape":"CoreDeviceThingName"},
547        "status":{"shape":"CoreDeviceStatus"},
548        "lastStatusUpdateTimestamp":{"shape":"Timestamp"}
549      }
550    },
551    "CoreDeviceArchitectureString":{
552      "type":"string",
553      "max":255,
554      "min":1
555    },
556    "CoreDevicePlatformString":{
557      "type":"string",
558      "max":255,
559      "min":1
560    },
561    "CoreDeviceStatus":{
562      "type":"string",
563      "enum":[
564        "HEALTHY",
565        "UNHEALTHY"
566      ]
567    },
568    "CoreDeviceThingName":{
569      "type":"string",
570      "max":128,
571      "min":1
572    },
573    "CoreDevicesList":{
574      "type":"list",
575      "member":{"shape":"CoreDevice"}
576    },
577    "CreateComponentVersionRequest":{
578      "type":"structure",
579      "members":{
580        "inlineRecipe":{"shape":"RecipeBlob"},
581        "lambdaFunction":{"shape":"LambdaFunctionRecipeSource"},
582        "tags":{"shape":"TagMap"}
583      }
584    },
585    "CreateComponentVersionResponse":{
586      "type":"structure",
587      "required":[
588        "componentName",
589        "componentVersion",
590        "creationTimestamp",
591        "status"
592      ],
593      "members":{
594        "arn":{"shape":"ComponentVersionARN"},
595        "componentName":{"shape":"ComponentNameString"},
596        "componentVersion":{"shape":"ComponentVersionString"},
597        "creationTimestamp":{"shape":"Timestamp"},
598        "status":{"shape":"CloudComponentStatus"}
599      }
600    },
601    "CreateDeploymentRequest":{
602      "type":"structure",
603      "required":["targetArn"],
604      "members":{
605        "targetArn":{"shape":"TargetARN"},
606        "deploymentName":{"shape":"NonEmptyString"},
607        "components":{"shape":"ComponentDeploymentSpecifications"},
608        "iotJobConfiguration":{"shape":"DeploymentIoTJobConfiguration"},
609        "deploymentPolicies":{"shape":"DeploymentPolicies"},
610        "tags":{"shape":"TagMap"}
611      }
612    },
613    "CreateDeploymentResponse":{
614      "type":"structure",
615      "members":{
616        "deploymentId":{"shape":"NonEmptyString"},
617        "iotJobId":{"shape":"NonEmptyString"},
618        "iotJobArn":{"shape":"IoTJobARN"}
619      }
620    },
621    "DefaultMaxResults":{
622      "type":"integer",
623      "max":100,
624      "min":1
625    },
626    "DeleteComponentRequest":{
627      "type":"structure",
628      "required":["arn"],
629      "members":{
630        "arn":{
631          "shape":"ComponentVersionARN",
632          "location":"uri",
633          "locationName":"arn"
634        }
635      }
636    },
637    "DeleteCoreDeviceRequest":{
638      "type":"structure",
639      "required":["coreDeviceThingName"],
640      "members":{
641        "coreDeviceThingName":{
642          "shape":"CoreDeviceThingName",
643          "location":"uri",
644          "locationName":"coreDeviceThingName"
645        }
646      }
647    },
648    "Deployment":{
649      "type":"structure",
650      "members":{
651        "targetArn":{"shape":"TargetARN"},
652        "revisionId":{"shape":"NonEmptyString"},
653        "deploymentId":{"shape":"NonEmptyString"},
654        "deploymentName":{"shape":"NonEmptyString"},
655        "creationTimestamp":{"shape":"Timestamp"},
656        "deploymentStatus":{"shape":"DeploymentStatus"},
657        "isLatestForTarget":{"shape":"IsLatestForTarget"}
658      }
659    },
660    "DeploymentComponentUpdatePolicy":{
661      "type":"structure",
662      "members":{
663        "timeoutInSeconds":{
664          "shape":"OptionalInteger",
665          "box":true
666        },
667        "action":{"shape":"DeploymentComponentUpdatePolicyAction"}
668      }
669    },
670    "DeploymentComponentUpdatePolicyAction":{
671      "type":"string",
672      "enum":[
673        "NOTIFY_COMPONENTS",
674        "SKIP_NOTIFY_COMPONENTS"
675      ]
676    },
677    "DeploymentConfigurationValidationPolicy":{
678      "type":"structure",
679      "members":{
680        "timeoutInSeconds":{
681          "shape":"OptionalInteger",
682          "box":true
683        }
684      }
685    },
686    "DeploymentFailureHandlingPolicy":{
687      "type":"string",
688      "enum":[
689        "ROLLBACK",
690        "DO_NOTHING"
691      ]
692    },
693    "DeploymentHistoryFilter":{
694      "type":"string",
695      "enum":[
696        "ALL",
697        "LATEST_ONLY"
698      ]
699    },
700    "DeploymentID":{"type":"string"},
701    "DeploymentIoTJobConfiguration":{
702      "type":"structure",
703      "members":{
704        "jobExecutionsRolloutConfig":{"shape":"IoTJobExecutionsRolloutConfig"},
705        "abortConfig":{"shape":"IoTJobAbortConfig"},
706        "timeoutConfig":{"shape":"IoTJobTimeoutConfig"}
707      }
708    },
709    "DeploymentList":{
710      "type":"list",
711      "member":{"shape":"Deployment"}
712    },
713    "DeploymentName":{"type":"string"},
714    "DeploymentPolicies":{
715      "type":"structure",
716      "members":{
717        "failureHandlingPolicy":{"shape":"DeploymentFailureHandlingPolicy"},
718        "componentUpdatePolicy":{"shape":"DeploymentComponentUpdatePolicy"},
719        "configurationValidationPolicy":{"shape":"DeploymentConfigurationValidationPolicy"}
720      }
721    },
722    "DeploymentStatus":{
723      "type":"string",
724      "enum":[
725        "ACTIVE",
726        "COMPLETED",
727        "CANCELED",
728        "FAILED",
729        "INACTIVE"
730      ]
731    },
732    "DescribeComponentRequest":{
733      "type":"structure",
734      "required":["arn"],
735      "members":{
736        "arn":{
737          "shape":"ComponentVersionARN",
738          "location":"uri",
739          "locationName":"arn"
740        }
741      }
742    },
743    "DescribeComponentResponse":{
744      "type":"structure",
745      "members":{
746        "arn":{"shape":"ComponentVersionARN"},
747        "componentName":{"shape":"ComponentNameString"},
748        "componentVersion":{"shape":"ComponentVersionString"},
749        "creationTimestamp":{"shape":"Timestamp"},
750        "publisher":{"shape":"PublisherString"},
751        "description":{"shape":"DescriptionString"},
752        "status":{"shape":"CloudComponentStatus"},
753        "platforms":{"shape":"ComponentPlatformList"},
754        "tags":{"shape":"TagMap"}
755      }
756    },
757    "Description":{
758      "type":"string",
759      "max":500,
760      "min":1
761    },
762    "DescriptionString":{"type":"string"},
763    "EffectiveDeployment":{
764      "type":"structure",
765      "required":[
766        "deploymentId",
767        "deploymentName",
768        "targetArn",
769        "coreDeviceExecutionStatus",
770        "creationTimestamp",
771        "modifiedTimestamp"
772      ],
773      "members":{
774        "deploymentId":{"shape":"DeploymentID"},
775        "deploymentName":{"shape":"DeploymentName"},
776        "iotJobId":{"shape":"IoTJobId"},
777        "iotJobArn":{"shape":"IoTJobARN"},
778        "description":{"shape":"Description"},
779        "targetArn":{"shape":"TargetARN"},
780        "coreDeviceExecutionStatus":{"shape":"EffectiveDeploymentExecutionStatus"},
781        "reason":{"shape":"Reason"},
782        "creationTimestamp":{"shape":"Timestamp"},
783        "modifiedTimestamp":{"shape":"Timestamp"}
784      }
785    },
786    "EffectiveDeploymentExecutionStatus":{
787      "type":"string",
788      "enum":[
789        "IN_PROGRESS",
790        "QUEUED",
791        "FAILED",
792        "COMPLETED",
793        "TIMED_OUT",
794        "CANCELED",
795        "REJECTED"
796      ]
797    },
798    "EffectiveDeploymentsList":{
799      "type":"list",
800      "member":{"shape":"EffectiveDeployment"}
801    },
802    "FileSystemPath":{"type":"string"},
803    "GGCVersion":{
804      "type":"string",
805      "max":255,
806      "min":1
807    },
808    "GenericV2ARN":{
809      "type":"string",
810      "pattern":"arn:aws(-cn|-us-gov)?:greengrass:[^:]+:(aws|[0-9]+):(components|deployments|coreDevices):.+"
811    },
812    "GetComponentRequest":{
813      "type":"structure",
814      "required":["arn"],
815      "members":{
816        "recipeOutputFormat":{
817          "shape":"RecipeOutputFormat",
818          "location":"querystring",
819          "locationName":"recipeOutputFormat"
820        },
821        "arn":{
822          "shape":"ComponentVersionARN",
823          "location":"uri",
824          "locationName":"arn"
825        }
826      }
827    },
828    "GetComponentResponse":{
829      "type":"structure",
830      "required":[
831        "recipeOutputFormat",
832        "recipe"
833      ],
834      "members":{
835        "recipeOutputFormat":{"shape":"RecipeOutputFormat"},
836        "recipe":{"shape":"RecipeBlob"},
837        "tags":{"shape":"TagMap"}
838      }
839    },
840    "GetComponentVersionArtifactRequest":{
841      "type":"structure",
842      "required":[
843        "arn",
844        "artifactName"
845      ],
846      "members":{
847        "arn":{
848          "shape":"ComponentVersionARN",
849          "location":"uri",
850          "locationName":"arn"
851        },
852        "artifactName":{
853          "shape":"NonEmptyString",
854          "location":"uri",
855          "locationName":"artifactName"
856        }
857      }
858    },
859    "GetComponentVersionArtifactResponse":{
860      "type":"structure",
861      "required":["preSignedUrl"],
862      "members":{
863        "preSignedUrl":{"shape":"NonEmptyString"}
864      }
865    },
866    "GetCoreDeviceRequest":{
867      "type":"structure",
868      "required":["coreDeviceThingName"],
869      "members":{
870        "coreDeviceThingName":{
871          "shape":"CoreDeviceThingName",
872          "location":"uri",
873          "locationName":"coreDeviceThingName"
874        }
875      }
876    },
877    "GetCoreDeviceResponse":{
878      "type":"structure",
879      "members":{
880        "coreDeviceThingName":{"shape":"CoreDeviceThingName"},
881        "coreVersion":{"shape":"GGCVersion"},
882        "platform":{"shape":"CoreDevicePlatformString"},
883        "architecture":{"shape":"CoreDeviceArchitectureString"},
884        "status":{"shape":"CoreDeviceStatus"},
885        "lastStatusUpdateTimestamp":{"shape":"Timestamp"},
886        "tags":{"shape":"TagMap"}
887      }
888    },
889    "GetDeploymentRequest":{
890      "type":"structure",
891      "required":["deploymentId"],
892      "members":{
893        "deploymentId":{
894          "shape":"NonEmptyString",
895          "location":"uri",
896          "locationName":"deploymentId"
897        }
898      }
899    },
900    "GetDeploymentResponse":{
901      "type":"structure",
902      "members":{
903        "targetArn":{"shape":"TargetARN"},
904        "revisionId":{"shape":"NonEmptyString"},
905        "deploymentId":{"shape":"NonEmptyString"},
906        "deploymentName":{"shape":"NullableString"},
907        "deploymentStatus":{"shape":"DeploymentStatus"},
908        "iotJobId":{"shape":"NullableString"},
909        "iotJobArn":{"shape":"IoTJobARN"},
910        "components":{"shape":"ComponentDeploymentSpecifications"},
911        "deploymentPolicies":{"shape":"DeploymentPolicies"},
912        "iotJobConfiguration":{"shape":"DeploymentIoTJobConfiguration"},
913        "creationTimestamp":{"shape":"Timestamp"},
914        "isLatestForTarget":{"shape":"IsLatestForTarget"},
915        "tags":{"shape":"TagMap"}
916      }
917    },
918    "InstalledComponent":{
919      "type":"structure",
920      "members":{
921        "componentName":{"shape":"ComponentNameString"},
922        "componentVersion":{"shape":"ComponentVersionString"},
923        "lifecycleState":{"shape":"InstalledComponentLifecycleState"},
924        "lifecycleStateDetails":{"shape":"LifecycleStateDetails"},
925        "isRoot":{"shape":"IsRoot"}
926      }
927    },
928    "InstalledComponentLifecycleState":{
929      "type":"string",
930      "enum":[
931        "NEW",
932        "INSTALLED",
933        "STARTING",
934        "RUNNING",
935        "STOPPING",
936        "ERRORED",
937        "BROKEN",
938        "FINISHED"
939      ]
940    },
941    "InstalledComponentList":{
942      "type":"list",
943      "member":{"shape":"InstalledComponent"}
944    },
945    "InternalServerException":{
946      "type":"structure",
947      "required":["message"],
948      "members":{
949        "message":{"shape":"String"},
950        "retryAfterSeconds":{
951          "shape":"RetryAfterSeconds",
952          "location":"header",
953          "locationName":"Retry-After"
954        }
955      },
956      "error":{"httpStatusCode":500},
957      "exception":true,
958      "fault":true
959    },
960    "IoTJobARN":{
961      "type":"string",
962      "pattern":"arn:aws(-cn|-us-gov)?:iot:[^:]+:[0-9]+:job/.+"
963    },
964    "IoTJobAbortAction":{
965      "type":"string",
966      "enum":["CANCEL"]
967    },
968    "IoTJobAbortConfig":{
969      "type":"structure",
970      "required":["criteriaList"],
971      "members":{
972        "criteriaList":{"shape":"IoTJobAbortCriteriaList"}
973      }
974    },
975    "IoTJobAbortCriteria":{
976      "type":"structure",
977      "required":[
978        "failureType",
979        "action",
980        "thresholdPercentage",
981        "minNumberOfExecutedThings"
982      ],
983      "members":{
984        "failureType":{"shape":"IoTJobExecutionFailureType"},
985        "action":{"shape":"IoTJobAbortAction"},
986        "thresholdPercentage":{"shape":"IoTJobAbortThresholdPercentage"},
987        "minNumberOfExecutedThings":{"shape":"IoTJobMinimumNumberOfExecutedThings"}
988      }
989    },
990    "IoTJobAbortCriteriaList":{
991      "type":"list",
992      "member":{"shape":"IoTJobAbortCriteria"},
993      "min":1
994    },
995    "IoTJobAbortThresholdPercentage":{
996      "type":"double",
997      "max":100
998    },
999    "IoTJobExecutionFailureType":{
1000      "type":"string",
1001      "enum":[
1002        "FAILED",
1003        "REJECTED",
1004        "TIMED_OUT",
1005        "ALL"
1006      ]
1007    },
1008    "IoTJobExecutionsRolloutConfig":{
1009      "type":"structure",
1010      "members":{
1011        "exponentialRate":{"shape":"IoTJobExponentialRolloutRate"},
1012        "maximumPerMinute":{
1013          "shape":"IoTJobMaxExecutionsPerMin",
1014          "box":true
1015        }
1016      }
1017    },
1018    "IoTJobExponentialRolloutRate":{
1019      "type":"structure",
1020      "required":[
1021        "baseRatePerMinute",
1022        "incrementFactor",
1023        "rateIncreaseCriteria"
1024      ],
1025      "members":{
1026        "baseRatePerMinute":{"shape":"IoTJobRolloutBaseRatePerMinute"},
1027        "incrementFactor":{"shape":"IoTJobRolloutIncrementFactor"},
1028        "rateIncreaseCriteria":{"shape":"IoTJobRateIncreaseCriteria"}
1029      }
1030    },
1031    "IoTJobId":{
1032      "type":"string",
1033      "max":255,
1034      "min":1
1035    },
1036    "IoTJobInProgressTimeoutInMinutes":{"type":"long"},
1037    "IoTJobMaxExecutionsPerMin":{
1038      "type":"integer",
1039      "max":1000,
1040      "min":1
1041    },
1042    "IoTJobMinimumNumberOfExecutedThings":{
1043      "type":"integer",
1044      "min":1
1045    },
1046    "IoTJobNumberOfThings":{
1047      "type":"integer",
1048      "min":1
1049    },
1050    "IoTJobRateIncreaseCriteria":{
1051      "type":"structure",
1052      "members":{
1053        "numberOfNotifiedThings":{
1054          "shape":"IoTJobNumberOfThings",
1055          "box":true
1056        },
1057        "numberOfSucceededThings":{
1058          "shape":"IoTJobNumberOfThings",
1059          "box":true
1060        }
1061      }
1062    },
1063    "IoTJobRolloutBaseRatePerMinute":{
1064      "type":"integer",
1065      "max":1000,
1066      "min":1
1067    },
1068    "IoTJobRolloutIncrementFactor":{
1069      "type":"double",
1070      "max":5,
1071      "min":1
1072    },
1073    "IoTJobTimeoutConfig":{
1074      "type":"structure",
1075      "members":{
1076        "inProgressTimeoutInMinutes":{
1077          "shape":"IoTJobInProgressTimeoutInMinutes",
1078          "box":true
1079        }
1080      }
1081    },
1082    "IsLatestForTarget":{"type":"boolean"},
1083    "IsRoot":{"type":"boolean"},
1084    "LambdaContainerParams":{
1085      "type":"structure",
1086      "members":{
1087        "memorySizeInKB":{
1088          "shape":"OptionalInteger",
1089          "box":true
1090        },
1091        "mountROSysfs":{
1092          "shape":"OptionalBoolean",
1093          "box":true
1094        },
1095        "volumes":{"shape":"LambdaVolumeList"},
1096        "devices":{"shape":"LambdaDeviceList"}
1097      }
1098    },
1099    "LambdaDeviceList":{
1100      "type":"list",
1101      "member":{"shape":"LambdaDeviceMount"}
1102    },
1103    "LambdaDeviceMount":{
1104      "type":"structure",
1105      "required":["path"],
1106      "members":{
1107        "path":{"shape":"FileSystemPath"},
1108        "permission":{"shape":"LambdaFilesystemPermission"},
1109        "addGroupOwner":{
1110          "shape":"OptionalBoolean",
1111          "box":true
1112        }
1113      }
1114    },
1115    "LambdaEnvironmentVariables":{
1116      "type":"map",
1117      "key":{"shape":"NonEmptyString"},
1118      "value":{"shape":"String"}
1119    },
1120    "LambdaEventSource":{
1121      "type":"structure",
1122      "required":[
1123        "topic",
1124        "type"
1125      ],
1126      "members":{
1127        "topic":{"shape":"TopicString"},
1128        "type":{"shape":"LambdaEventSourceType"}
1129      }
1130    },
1131    "LambdaEventSourceList":{
1132      "type":"list",
1133      "member":{"shape":"LambdaEventSource"}
1134    },
1135    "LambdaEventSourceType":{
1136      "type":"string",
1137      "enum":[
1138        "PUB_SUB",
1139        "IOT_CORE"
1140      ]
1141    },
1142    "LambdaExecArg":{"type":"string"},
1143    "LambdaExecArgsList":{
1144      "type":"list",
1145      "member":{"shape":"LambdaExecArg"}
1146    },
1147    "LambdaExecutionParameters":{
1148      "type":"structure",
1149      "members":{
1150        "eventSources":{"shape":"LambdaEventSourceList"},
1151        "maxQueueSize":{
1152          "shape":"OptionalInteger",
1153          "box":true
1154        },
1155        "maxInstancesCount":{
1156          "shape":"OptionalInteger",
1157          "box":true
1158        },
1159        "maxIdleTimeInSeconds":{
1160          "shape":"OptionalInteger",
1161          "box":true
1162        },
1163        "timeoutInSeconds":{
1164          "shape":"OptionalInteger",
1165          "box":true
1166        },
1167        "statusTimeoutInSeconds":{
1168          "shape":"OptionalInteger",
1169          "box":true
1170        },
1171        "pinned":{
1172          "shape":"OptionalBoolean",
1173          "box":true
1174        },
1175        "inputPayloadEncodingType":{"shape":"LambdaInputPayloadEncodingType"},
1176        "execArgs":{"shape":"LambdaExecArgsList"},
1177        "environmentVariables":{"shape":"LambdaEnvironmentVariables"},
1178        "linuxProcessParams":{"shape":"LambdaLinuxProcessParams"}
1179      }
1180    },
1181    "LambdaFilesystemPermission":{
1182      "type":"string",
1183      "enum":[
1184        "ro",
1185        "rw"
1186      ]
1187    },
1188    "LambdaFunctionARNWithVersionNumber":{
1189      "type":"string",
1190      "pattern":"arn:aws(-cn|-us-gov)?:lambda:[^:]+:[0-9]+:function:[a-zA-Z0-9-_]+:[0-9]+"
1191    },
1192    "LambdaFunctionRecipeSource":{
1193      "type":"structure",
1194      "required":["lambdaArn"],
1195      "members":{
1196        "lambdaArn":{"shape":"LambdaFunctionARNWithVersionNumber"},
1197        "componentName":{"shape":"ComponentNameString"},
1198        "componentVersion":{"shape":"ComponentVersionString"},
1199        "componentPlatforms":{"shape":"ComponentPlatformList"},
1200        "componentDependencies":{"shape":"ComponentDependencyMap"},
1201        "componentLambdaParameters":{"shape":"LambdaExecutionParameters"}
1202      }
1203    },
1204    "LambdaInputPayloadEncodingType":{
1205      "type":"string",
1206      "enum":[
1207        "json",
1208        "binary"
1209      ]
1210    },
1211    "LambdaIsolationMode":{
1212      "type":"string",
1213      "enum":[
1214        "GreengrassContainer",
1215        "NoContainer"
1216      ]
1217    },
1218    "LambdaLinuxProcessParams":{
1219      "type":"structure",
1220      "members":{
1221        "isolationMode":{"shape":"LambdaIsolationMode"},
1222        "containerParams":{"shape":"LambdaContainerParams"}
1223      }
1224    },
1225    "LambdaVolumeList":{
1226      "type":"list",
1227      "member":{"shape":"LambdaVolumeMount"}
1228    },
1229    "LambdaVolumeMount":{
1230      "type":"structure",
1231      "required":[
1232        "sourcePath",
1233        "destinationPath"
1234      ],
1235      "members":{
1236        "sourcePath":{"shape":"FileSystemPath"},
1237        "destinationPath":{"shape":"FileSystemPath"},
1238        "permission":{"shape":"LambdaFilesystemPermission"},
1239        "addGroupOwner":{
1240          "shape":"OptionalBoolean",
1241          "box":true
1242        }
1243      }
1244    },
1245    "LifecycleStateDetails":{
1246      "type":"string",
1247      "max":1000,
1248      "min":1
1249    },
1250    "ListComponentVersionsRequest":{
1251      "type":"structure",
1252      "required":["arn"],
1253      "members":{
1254        "arn":{
1255          "shape":"ComponentARN",
1256          "location":"uri",
1257          "locationName":"arn"
1258        },
1259        "maxResults":{
1260          "shape":"DefaultMaxResults",
1261          "box":true,
1262          "location":"querystring",
1263          "locationName":"maxResults"
1264        },
1265        "nextToken":{
1266          "shape":"NextTokenString",
1267          "box":true,
1268          "location":"querystring",
1269          "locationName":"nextToken"
1270        }
1271      }
1272    },
1273    "ListComponentVersionsResponse":{
1274      "type":"structure",
1275      "members":{
1276        "componentVersions":{"shape":"ComponentVersionList"},
1277        "nextToken":{"shape":"NextTokenString"}
1278      }
1279    },
1280    "ListComponentsRequest":{
1281      "type":"structure",
1282      "members":{
1283        "scope":{
1284          "shape":"ComponentVisibilityScope",
1285          "location":"querystring",
1286          "locationName":"scope"
1287        },
1288        "maxResults":{
1289          "shape":"DefaultMaxResults",
1290          "box":true,
1291          "location":"querystring",
1292          "locationName":"maxResults"
1293        },
1294        "nextToken":{
1295          "shape":"NextTokenString",
1296          "box":true,
1297          "location":"querystring",
1298          "locationName":"nextToken"
1299        }
1300      }
1301    },
1302    "ListComponentsResponse":{
1303      "type":"structure",
1304      "members":{
1305        "components":{"shape":"ComponentList"},
1306        "nextToken":{"shape":"NextTokenString"}
1307      }
1308    },
1309    "ListCoreDevicesRequest":{
1310      "type":"structure",
1311      "members":{
1312        "thingGroupArn":{
1313          "shape":"ThingGroupARN",
1314          "location":"querystring",
1315          "locationName":"thingGroupArn"
1316        },
1317        "status":{
1318          "shape":"CoreDeviceStatus",
1319          "location":"querystring",
1320          "locationName":"status"
1321        },
1322        "maxResults":{
1323          "shape":"DefaultMaxResults",
1324          "box":true,
1325          "location":"querystring",
1326          "locationName":"maxResults"
1327        },
1328        "nextToken":{
1329          "shape":"NextTokenString",
1330          "box":true,
1331          "location":"querystring",
1332          "locationName":"nextToken"
1333        }
1334      }
1335    },
1336    "ListCoreDevicesResponse":{
1337      "type":"structure",
1338      "members":{
1339        "coreDevices":{"shape":"CoreDevicesList"},
1340        "nextToken":{"shape":"NextTokenString"}
1341      }
1342    },
1343    "ListDeploymentsRequest":{
1344      "type":"structure",
1345      "members":{
1346        "targetArn":{
1347          "shape":"TargetARN",
1348          "location":"querystring",
1349          "locationName":"targetArn"
1350        },
1351        "historyFilter":{
1352          "shape":"DeploymentHistoryFilter",
1353          "location":"querystring",
1354          "locationName":"historyFilter"
1355        },
1356        "maxResults":{
1357          "shape":"DefaultMaxResults",
1358          "box":true,
1359          "location":"querystring",
1360          "locationName":"maxResults"
1361        },
1362        "nextToken":{
1363          "shape":"NextTokenString",
1364          "box":true,
1365          "location":"querystring",
1366          "locationName":"nextToken"
1367        }
1368      }
1369    },
1370    "ListDeploymentsResponse":{
1371      "type":"structure",
1372      "members":{
1373        "deployments":{"shape":"DeploymentList"},
1374        "nextToken":{"shape":"NextTokenString"}
1375      }
1376    },
1377    "ListEffectiveDeploymentsRequest":{
1378      "type":"structure",
1379      "required":["coreDeviceThingName"],
1380      "members":{
1381        "coreDeviceThingName":{
1382          "shape":"CoreDeviceThingName",
1383          "location":"uri",
1384          "locationName":"coreDeviceThingName"
1385        },
1386        "maxResults":{
1387          "shape":"DefaultMaxResults",
1388          "box":true,
1389          "location":"querystring",
1390          "locationName":"maxResults"
1391        },
1392        "nextToken":{
1393          "shape":"NextTokenString",
1394          "box":true,
1395          "location":"querystring",
1396          "locationName":"nextToken"
1397        }
1398      }
1399    },
1400    "ListEffectiveDeploymentsResponse":{
1401      "type":"structure",
1402      "members":{
1403        "effectiveDeployments":{"shape":"EffectiveDeploymentsList"},
1404        "nextToken":{"shape":"NextTokenString"}
1405      }
1406    },
1407    "ListInstalledComponentsRequest":{
1408      "type":"structure",
1409      "required":["coreDeviceThingName"],
1410      "members":{
1411        "coreDeviceThingName":{
1412          "shape":"CoreDeviceThingName",
1413          "location":"uri",
1414          "locationName":"coreDeviceThingName"
1415        },
1416        "maxResults":{
1417          "shape":"DefaultMaxResults",
1418          "box":true,
1419          "location":"querystring",
1420          "locationName":"maxResults"
1421        },
1422        "nextToken":{
1423          "shape":"NextTokenString",
1424          "box":true,
1425          "location":"querystring",
1426          "locationName":"nextToken"
1427        }
1428      }
1429    },
1430    "ListInstalledComponentsResponse":{
1431      "type":"structure",
1432      "members":{
1433        "installedComponents":{"shape":"InstalledComponentList"},
1434        "nextToken":{"shape":"NextTokenString"}
1435      }
1436    },
1437    "ListTagsForResourceRequest":{
1438      "type":"structure",
1439      "required":["resourceArn"],
1440      "members":{
1441        "resourceArn":{
1442          "shape":"GenericV2ARN",
1443          "location":"uri",
1444          "locationName":"resourceArn"
1445        }
1446      }
1447    },
1448    "ListTagsForResourceResponse":{
1449      "type":"structure",
1450      "members":{
1451        "tags":{"shape":"TagMap"}
1452      }
1453    },
1454    "NextTokenString":{"type":"string"},
1455    "NonEmptyString":{
1456      "type":"string",
1457      "min":1
1458    },
1459    "NullableString":{"type":"string"},
1460    "OptionalBoolean":{"type":"boolean"},
1461    "OptionalInteger":{"type":"integer"},
1462    "PlatformAttributesMap":{
1463      "type":"map",
1464      "key":{"shape":"NonEmptyString"},
1465      "value":{"shape":"NonEmptyString"}
1466    },
1467    "PublisherString":{"type":"string"},
1468    "Reason":{"type":"string"},
1469    "RecipeBlob":{"type":"blob"},
1470    "RecipeOutputFormat":{
1471      "type":"string",
1472      "enum":[
1473        "JSON",
1474        "YAML"
1475      ]
1476    },
1477    "ResolveComponentCandidatesRequest":{
1478      "type":"structure",
1479      "required":[
1480        "platform",
1481        "componentCandidates"
1482      ],
1483      "members":{
1484        "platform":{"shape":"ComponentPlatform"},
1485        "componentCandidates":{"shape":"ComponentCandidateList"}
1486      }
1487    },
1488    "ResolveComponentCandidatesResponse":{
1489      "type":"structure",
1490      "members":{
1491        "resolvedComponentVersions":{"shape":"ResolvedComponentVersionsList"}
1492      }
1493    },
1494    "ResolvedComponentVersion":{
1495      "type":"structure",
1496      "members":{
1497        "arn":{"shape":"ComponentVersionARN"},
1498        "componentName":{"shape":"ComponentNameString"},
1499        "componentVersion":{"shape":"ComponentVersionString"},
1500        "recipe":{"shape":"RecipeBlob"}
1501      }
1502    },
1503    "ResolvedComponentVersionsList":{
1504      "type":"list",
1505      "member":{"shape":"ResolvedComponentVersion"}
1506    },
1507    "ResourceNotFoundException":{
1508      "type":"structure",
1509      "required":[
1510        "message",
1511        "resourceId",
1512        "resourceType"
1513      ],
1514      "members":{
1515        "message":{"shape":"String"},
1516        "resourceId":{"shape":"String"},
1517        "resourceType":{"shape":"String"}
1518      },
1519      "error":{"httpStatusCode":404},
1520      "exception":true
1521    },
1522    "RetryAfterSeconds":{"type":"integer"},
1523    "ServiceQuotaExceededException":{
1524      "type":"structure",
1525      "required":[
1526        "message",
1527        "quotaCode",
1528        "serviceCode"
1529      ],
1530      "members":{
1531        "message":{"shape":"String"},
1532        "resourceId":{"shape":"String"},
1533        "resourceType":{"shape":"String"},
1534        "quotaCode":{"shape":"String"},
1535        "serviceCode":{"shape":"String"}
1536      },
1537      "error":{"httpStatusCode":402},
1538      "exception":true
1539    },
1540    "String":{"type":"string"},
1541    "StringMap":{
1542      "type":"map",
1543      "key":{"shape":"NonEmptyString"},
1544      "value":{"shape":"NonEmptyString"}
1545    },
1546    "TagKey":{
1547      "type":"string",
1548      "max":128,
1549      "min":1,
1550      "pattern":"^(?!aws:)[a-zA-Z+-=._:/]+$"
1551    },
1552    "TagKeyList":{
1553      "type":"list",
1554      "member":{"shape":"TagKey"},
1555      "max":50,
1556      "min":1
1557    },
1558    "TagMap":{
1559      "type":"map",
1560      "key":{"shape":"TagKey"},
1561      "value":{"shape":"TagValue"},
1562      "max":50,
1563      "min":1
1564    },
1565    "TagResourceRequest":{
1566      "type":"structure",
1567      "required":[
1568        "resourceArn",
1569        "tags"
1570      ],
1571      "members":{
1572        "resourceArn":{
1573          "shape":"GenericV2ARN",
1574          "location":"uri",
1575          "locationName":"resourceArn"
1576        },
1577        "tags":{"shape":"TagMap"}
1578      }
1579    },
1580    "TagResourceResponse":{
1581      "type":"structure",
1582      "members":{
1583      }
1584    },
1585    "TagValue":{
1586      "type":"string",
1587      "max":256
1588    },
1589    "TargetARN":{
1590      "type":"string",
1591      "pattern":"arn:aws(-cn|-us-gov)?:iot:[^:]+:[0-9]+:(thing|thinggroup)/.+"
1592    },
1593    "ThingGroupARN":{
1594      "type":"string",
1595      "pattern":"arn:aws(-cn|-us-gov)?:iot:[^:]+:[0-9]+:thinggroup/.+"
1596    },
1597    "ThrottlingException":{
1598      "type":"structure",
1599      "required":["message"],
1600      "members":{
1601        "message":{"shape":"String"},
1602        "quotaCode":{"shape":"String"},
1603        "serviceCode":{"shape":"String"},
1604        "retryAfterSeconds":{
1605          "shape":"RetryAfterSeconds",
1606          "location":"header",
1607          "locationName":"Retry-After"
1608        }
1609      },
1610      "error":{"httpStatusCode":429},
1611      "exception":true
1612    },
1613    "Timestamp":{"type":"timestamp"},
1614    "TopicString":{"type":"string"},
1615    "UntagResourceRequest":{
1616      "type":"structure",
1617      "required":[
1618        "resourceArn",
1619        "tagKeys"
1620      ],
1621      "members":{
1622        "resourceArn":{
1623          "shape":"GenericV2ARN",
1624          "location":"uri",
1625          "locationName":"resourceArn"
1626        },
1627        "tagKeys":{
1628          "shape":"TagKeyList",
1629          "location":"querystring",
1630          "locationName":"tagKeys"
1631        }
1632      }
1633    },
1634    "UntagResourceResponse":{
1635      "type":"structure",
1636      "members":{
1637      }
1638    },
1639    "ValidationException":{
1640      "type":"structure",
1641      "required":["message"],
1642      "members":{
1643        "message":{"shape":"String"},
1644        "reason":{"shape":"ValidationExceptionReason"},
1645        "fields":{"shape":"ValidationExceptionFieldList"}
1646      },
1647      "error":{"httpStatusCode":400},
1648      "exception":true
1649    },
1650    "ValidationExceptionField":{
1651      "type":"structure",
1652      "required":[
1653        "name",
1654        "message"
1655      ],
1656      "members":{
1657        "name":{"shape":"String"},
1658        "message":{"shape":"String"}
1659      }
1660    },
1661    "ValidationExceptionFieldList":{
1662      "type":"list",
1663      "member":{"shape":"ValidationExceptionField"}
1664    },
1665    "ValidationExceptionReason":{
1666      "type":"string",
1667      "enum":[
1668        "UNKNOWN_OPERATION",
1669        "CANNOT_PARSE",
1670        "FIELD_VALIDATION_FAILED",
1671        "OTHER"
1672      ]
1673    }
1674  }
1675}
1676