1{
2  "metadata" : {
3    "apiVersion" : "2018-05-14",
4    "endpointPrefix" : "devices.iot1click",
5    "signingName" : "iot1click",
6    "serviceFullName" : "AWS IoT 1-Click Devices Service",
7    "serviceId" : "IoT 1Click Devices Service",
8    "protocol" : "rest-json",
9    "jsonVersion" : "1.1",
10    "uid" : "devices-2018-05-14",
11    "signatureVersion" : "v4"
12  },
13  "operations" : {
14    "ClaimDevicesByClaimCode" : {
15      "name" : "ClaimDevicesByClaimCode",
16      "http" : {
17        "method" : "PUT",
18        "requestUri" : "/claims/{claimCode}",
19        "responseCode" : 200
20      },
21      "input" : {
22        "shape" : "ClaimDevicesByClaimCodeRequest"
23      },
24      "output" : {
25        "shape" : "ClaimDevicesByClaimCodeResponse",
26        "documentation" : "<p>200 response</p>"
27      },
28      "errors" : [ {
29        "shape" : "InvalidRequestException",
30        "documentation" : "<p>400 response</p>"
31      }, {
32        "shape" : "InternalFailureException",
33        "documentation" : "<p>500 response</p>"
34      }, {
35        "shape" : "ForbiddenException",
36        "documentation" : "<p>403 response</p>"
37      } ],
38      "documentation" : "<p>Adds device(s) to your account (i.e., claim one or more devices) if and only if you\n received a claim code with the device(s).</p>"
39    },
40    "DescribeDevice" : {
41      "name" : "DescribeDevice",
42      "http" : {
43        "method" : "GET",
44        "requestUri" : "/devices/{deviceId}",
45        "responseCode" : 200
46      },
47      "input" : {
48        "shape" : "DescribeDeviceRequest"
49      },
50      "output" : {
51        "shape" : "DescribeDeviceResponse",
52        "documentation" : "<p>200 response</p>"
53      },
54      "errors" : [ {
55        "shape" : "ResourceNotFoundException",
56        "documentation" : "<p>404 response</p>"
57      }, {
58        "shape" : "InvalidRequestException",
59        "documentation" : "<p>400 response</p>"
60      }, {
61        "shape" : "InternalFailureException",
62        "documentation" : "<p>500 response</p>"
63      } ],
64      "documentation" : "<p>Given a device ID, returns a DescribeDeviceResponse object describing the\n details of the device.</p>"
65    },
66    "FinalizeDeviceClaim" : {
67      "name" : "FinalizeDeviceClaim",
68      "http" : {
69        "method" : "PUT",
70        "requestUri" : "/devices/{deviceId}/finalize-claim",
71        "responseCode" : 200
72      },
73      "input" : {
74        "shape" : "FinalizeDeviceClaimRequest"
75      },
76      "output" : {
77        "shape" : "FinalizeDeviceClaimResponse",
78        "documentation" : "<p>200 response</p>"
79      },
80      "errors" : [ {
81        "shape" : "ResourceNotFoundException",
82        "documentation" : "<p>404 response</p>"
83      }, {
84        "shape" : "InvalidRequestException",
85        "documentation" : "<p>400 response</p>"
86      }, {
87        "shape" : "InternalFailureException",
88        "documentation" : "<p>500 response</p>"
89      }, {
90        "shape" : "PreconditionFailedException",
91        "documentation" : "<p>412 response</p>"
92      }, {
93        "shape" : "ResourceConflictException",
94        "documentation" : "<p>409 response</p>"
95      } ],
96      "documentation" : "<p>Given a device ID, finalizes the claim request for the associated device.</p><note>\n <p>Claiming a device consists of initiating a claim, then publishing a device event,\n and finalizing the claim. For a device of type button, a device event can\n be published by simply clicking the device.</p>\n </note>"
97    },
98    "GetDeviceMethods" : {
99      "name" : "GetDeviceMethods",
100      "http" : {
101        "method" : "GET",
102        "requestUri" : "/devices/{deviceId}/methods",
103        "responseCode" : 200
104      },
105      "input" : {
106        "shape" : "GetDeviceMethodsRequest"
107      },
108      "output" : {
109        "shape" : "GetDeviceMethodsResponse",
110        "documentation" : "<p>200 response</p>"
111      },
112      "errors" : [ {
113        "shape" : "ResourceNotFoundException",
114        "documentation" : "<p>404 response</p>"
115      }, {
116        "shape" : "InvalidRequestException",
117        "documentation" : "<p>400 response</p>"
118      }, {
119        "shape" : "InternalFailureException",
120        "documentation" : "<p>500 response</p>"
121      } ],
122      "documentation" : "<p>Given a device ID, returns the invokable methods associated with the device.</p>"
123    },
124    "InitiateDeviceClaim" : {
125      "name" : "InitiateDeviceClaim",
126      "http" : {
127        "method" : "PUT",
128        "requestUri" : "/devices/{deviceId}/initiate-claim",
129        "responseCode" : 200
130      },
131      "input" : {
132        "shape" : "InitiateDeviceClaimRequest"
133      },
134      "output" : {
135        "shape" : "InitiateDeviceClaimResponse",
136        "documentation" : "<p>200 response</p>"
137      },
138      "errors" : [ {
139        "shape" : "ResourceNotFoundException",
140        "documentation" : "<p>404 response</p>"
141      }, {
142        "shape" : "InvalidRequestException",
143        "documentation" : "<p>400 response</p>"
144      }, {
145        "shape" : "InternalFailureException",
146        "documentation" : "<p>500 response</p>"
147      }, {
148        "shape" : "ResourceConflictException",
149        "documentation" : "<p>409 response</p>"
150      } ],
151      "documentation" : "<p>Given a device ID, initiates a claim request for the associated device.</p><note>\n <p>Claiming a device consists of initiating a claim, then publishing a device event,\n and finalizing the claim. For a device of type button, a device event can\n be published by simply clicking the device.</p>\n </note>"
152    },
153    "InvokeDeviceMethod" : {
154      "name" : "InvokeDeviceMethod",
155      "http" : {
156        "method" : "POST",
157        "requestUri" : "/devices/{deviceId}/methods",
158        "responseCode" : 200
159      },
160      "input" : {
161        "shape" : "InvokeDeviceMethodRequest"
162      },
163      "output" : {
164        "shape" : "InvokeDeviceMethodResponse",
165        "documentation" : "<p>200 response</p>"
166      },
167      "errors" : [ {
168        "shape" : "InvalidRequestException",
169        "documentation" : "<p>400 response</p>"
170      }, {
171        "shape" : "PreconditionFailedException",
172        "documentation" : "<p>412 response</p>"
173      }, {
174        "shape" : "InternalFailureException",
175        "documentation" : "<p>500 response</p>"
176      }, {
177        "shape" : "ResourceNotFoundException",
178        "documentation" : "<p>404 response</p>"
179      }, {
180        "shape" : "RangeNotSatisfiableException",
181        "documentation" : "<p>416 response</p>"
182      }, {
183        "shape" : "ResourceConflictException",
184        "documentation" : "<p>409 response</p>"
185      } ],
186      "documentation" : "<p>Given a device ID, issues a request to invoke a named device method (with possible\n parameters). See the \"Example POST\" code snippet below.</p>"
187    },
188    "ListDeviceEvents" : {
189      "name" : "ListDeviceEvents",
190      "http" : {
191        "method" : "GET",
192        "requestUri" : "/devices/{deviceId}/events",
193        "responseCode" : 200
194      },
195      "input" : {
196        "shape" : "ListDeviceEventsRequest"
197      },
198      "output" : {
199        "shape" : "ListDeviceEventsResponse",
200        "documentation" : "<p>200 response</p>"
201      },
202      "errors" : [ {
203        "shape" : "ResourceNotFoundException",
204        "documentation" : "<p>404 response</p>"
205      }, {
206        "shape" : "RangeNotSatisfiableException",
207        "documentation" : "<p>416 response</p>"
208      }, {
209        "shape" : "InvalidRequestException",
210        "documentation" : "<p>400 response</p>"
211      }, {
212        "shape" : "InternalFailureException",
213        "documentation" : "<p>500 response</p>"
214      } ],
215      "documentation" : "<p>Using a device ID, returns a DeviceEventsResponse object containing an\n array of events for the device.</p>"
216    },
217    "ListDevices" : {
218      "name" : "ListDevices",
219      "http" : {
220        "method" : "GET",
221        "requestUri" : "/devices",
222        "responseCode" : 200
223      },
224      "input" : {
225        "shape" : "ListDevicesRequest"
226      },
227      "output" : {
228        "shape" : "ListDevicesResponse",
229        "documentation" : "<p>200 response</p>"
230      },
231      "errors" : [ {
232        "shape" : "RangeNotSatisfiableException",
233        "documentation" : "<p>416 response</p>"
234      }, {
235        "shape" : "InvalidRequestException",
236        "documentation" : "<p>400 response</p>"
237      }, {
238        "shape" : "InternalFailureException",
239        "documentation" : "<p>500 response</p>"
240      } ],
241      "documentation" : "<p>Lists the 1-Click compatible devices associated with your AWS account.</p>"
242    },
243    "ListTagsForResource" : {
244      "name" : "ListTagsForResource",
245      "http" : {
246        "method" : "GET",
247        "requestUri" : "/tags/{resource-arn}",
248        "responseCode" : 200
249      },
250      "input" : {
251        "shape" : "ListTagsForResourceRequest"
252      },
253      "output" : {
254        "shape" : "ListTagsForResourceResponse"
255      },
256      "errors" : [ {
257        "shape" : "ResourceNotFoundException",
258        "documentation" : "<p>404 response</p>"
259      }, {
260        "shape" : "InternalFailureException",
261        "documentation" : "<p>500 response</p>"
262      } ],
263      "documentation" : "<p>Lists the tags associated with the specified resource ARN.</p>"
264    },
265    "TagResource" : {
266      "name" : "TagResource",
267      "http" : {
268        "method" : "POST",
269        "requestUri" : "/tags/{resource-arn}",
270        "responseCode" : 204
271      },
272      "input" : {
273        "shape" : "TagResourceRequest"
274      },
275      "errors" : [ {
276        "shape" : "ResourceNotFoundException",
277        "documentation" : "<p>404 response</p>"
278      }, {
279        "shape" : "InvalidRequestException",
280        "documentation" : "<p>400 response</p>"
281      }, {
282        "shape" : "InternalFailureException",
283        "documentation" : "<p>500 response</p>"
284      } ],
285      "documentation" : "<p>Adds or updates the tags associated with the resource ARN. See <a href=\"https://docs.aws.amazon.com/iot-1-click/latest/developerguide/1click-appendix.html#1click-limits\">AWS IoT 1-Click Service Limits</a> for the maximum number of tags allowed per\n resource.</p>"
286    },
287    "UnclaimDevice" : {
288      "name" : "UnclaimDevice",
289      "http" : {
290        "method" : "PUT",
291        "requestUri" : "/devices/{deviceId}/unclaim",
292        "responseCode" : 200
293      },
294      "input" : {
295        "shape" : "UnclaimDeviceRequest"
296      },
297      "output" : {
298        "shape" : "UnclaimDeviceResponse",
299        "documentation" : "<p>200 response</p>"
300      },
301      "errors" : [ {
302        "shape" : "ResourceNotFoundException",
303        "documentation" : "<p>404 response</p>"
304      }, {
305        "shape" : "InvalidRequestException",
306        "documentation" : "<p>400 response</p>"
307      }, {
308        "shape" : "InternalFailureException",
309        "documentation" : "<p>500 response</p>"
310      } ],
311      "documentation" : "<p>Disassociates a device from your AWS account using its device ID.</p>"
312    },
313    "UntagResource" : {
314      "name" : "UntagResource",
315      "http" : {
316        "method" : "DELETE",
317        "requestUri" : "/tags/{resource-arn}",
318        "responseCode" : 204
319      },
320      "input" : {
321        "shape" : "UntagResourceRequest"
322      },
323      "errors" : [ {
324        "shape" : "ResourceNotFoundException",
325        "documentation" : "<p>404 response</p>"
326      }, {
327        "shape" : "InvalidRequestException",
328        "documentation" : "<p>400 response</p>"
329      }, {
330        "shape" : "InternalFailureException",
331        "documentation" : "<p>500 response</p>"
332      } ],
333      "documentation" : "<p>Using tag keys, deletes the tags (key/value pairs) associated with the specified\n resource ARN.</p>"
334    },
335    "UpdateDeviceState" : {
336      "name" : "UpdateDeviceState",
337      "http" : {
338        "method" : "PUT",
339        "requestUri" : "/devices/{deviceId}/state",
340        "responseCode" : 200
341      },
342      "input" : {
343        "shape" : "UpdateDeviceStateRequest"
344      },
345      "output" : {
346        "shape" : "UpdateDeviceStateResponse",
347        "documentation" : "<p>200 response</p>"
348      },
349      "errors" : [ {
350        "shape" : "ResourceNotFoundException",
351        "documentation" : "<p>404 response</p>"
352      }, {
353        "shape" : "InvalidRequestException",
354        "documentation" : "<p>400 response</p>"
355      }, {
356        "shape" : "InternalFailureException",
357        "documentation" : "<p>500 response</p>"
358      } ],
359      "documentation" : "<p>Using a Boolean value (true or false), this operation\n enables or disables the device given a device ID.</p>"
360    }
361  },
362  "shapes" : {
363    "Attributes" : {
364      "type" : "structure",
365      "members" : { }
366    },
367    "ClaimDevicesByClaimCodeRequest" : {
368      "type" : "structure",
369      "members" : {
370        "ClaimCode" : {
371          "shape" : "__string",
372          "location" : "uri",
373          "locationName" : "claimCode",
374          "documentation" : "<p>The claim code, starting with \"C-\", as provided by the device manufacturer.</p>"
375        }
376      },
377      "required" : [ "ClaimCode" ]
378    },
379    "ClaimDevicesByClaimCodeResponse" : {
380      "type" : "structure",
381      "members" : {
382        "ClaimCode" : {
383          "shape" : "__stringMin12Max40",
384          "locationName" : "claimCode",
385          "documentation" : "<p>The claim code provided by the device manufacturer.</p>"
386        },
387        "Total" : {
388          "shape" : "__integer",
389          "locationName" : "total",
390          "documentation" : "<p>The total number of devices associated with the claim code that has been processed in\n the claim request.</p>"
391        }
392      }
393    },
394    "DescribeDeviceRequest" : {
395      "type" : "structure",
396      "members" : {
397        "DeviceId" : {
398          "shape" : "__string",
399          "location" : "uri",
400          "locationName" : "deviceId",
401          "documentation" : "<p>The unique identifier of the device.</p>"
402        }
403      },
404      "required" : [ "DeviceId" ]
405    },
406    "DescribeDeviceResponse" : {
407      "type" : "structure",
408      "members" : {
409        "DeviceDescription" : {
410          "shape" : "DeviceDescription",
411          "locationName" : "deviceDescription",
412          "documentation" : "<p>Device details.</p>"
413        }
414      }
415    },
416    "Device" : {
417      "type" : "structure",
418      "members" : {
419        "Attributes" : {
420          "shape" : "Attributes",
421          "locationName" : "attributes",
422          "documentation" : "<p>The user specified attributes associated with the device for an event.</p>"
423        },
424        "DeviceId" : {
425          "shape" : "__string",
426          "locationName" : "deviceId",
427          "documentation" : "<p>The unique identifier of the device.</p>"
428        },
429        "Type" : {
430          "shape" : "__string",
431          "locationName" : "type",
432          "documentation" : "<p>The device type, such as \"button\".</p>"
433        }
434      }
435    },
436    "DeviceAttributes" : {
437      "type" : "map",
438      "documentation" : "<p>\n DeviceAttributes is a string-to-string map specified by the user.</p>",
439      "key" : {
440        "shape" : "__string"
441      },
442      "value" : {
443        "shape" : "__string"
444      }
445    },
446    "DeviceClaimResponse" : {
447      "type" : "structure",
448      "members" : {
449        "State" : {
450          "shape" : "__string",
451          "locationName" : "state",
452          "documentation" : "<p>The device's final claim state.</p>"
453        }
454      }
455    },
456    "DeviceDescription" : {
457      "type" : "structure",
458      "members" : {
459        "Arn" : {
460          "shape" : "__string",
461          "locationName" : "arn",
462          "documentation" : "<p>The ARN of the device.</p>"
463        },
464        "Attributes" : {
465          "shape" : "DeviceAttributes",
466          "locationName" : "attributes",
467          "documentation" : "<p>An array of zero or more elements of DeviceAttribute objects providing\n user specified device attributes.</p>"
468        },
469        "DeviceId" : {
470          "shape" : "__string",
471          "locationName" : "deviceId",
472          "documentation" : "<p>The unique identifier of the device.</p>"
473        },
474        "Enabled" : {
475          "shape" : "__boolean",
476          "locationName" : "enabled",
477          "documentation" : "<p>A Boolean value indicating whether or not the device is enabled.</p>"
478        },
479        "RemainingLife" : {
480          "shape" : "__doubleMin0Max100",
481          "locationName" : "remainingLife",
482          "documentation" : "<p>A value between 0 and 1 inclusive, representing the fraction of life remaining for the\n device.</p>"
483        },
484        "Type" : {
485          "shape" : "__string",
486          "locationName" : "type",
487          "documentation" : "<p>The type of the device, such as \"button\".</p>"
488        },
489        "Tags" : {
490          "shape" : "__mapOf__string",
491          "locationName" : "tags",
492          "documentation" : "<p>The tags currently associated with the AWS IoT 1-Click device.</p>"
493        }
494      }
495    },
496    "DeviceEvent" : {
497      "type" : "structure",
498      "members" : {
499        "Device" : {
500          "shape" : "Device",
501          "locationName" : "device",
502          "documentation" : "<p>An object representing the device associated with the event.</p>"
503        },
504        "StdEvent" : {
505          "shape" : "__string",
506          "locationName" : "stdEvent",
507          "documentation" : "<p>A serialized JSON object representing the device-type specific event.</p>"
508        }
509      }
510    },
511    "DeviceEventsResponse" : {
512      "type" : "structure",
513      "members" : {
514        "Events" : {
515          "shape" : "__listOfDeviceEvent",
516          "locationName" : "events",
517          "documentation" : "<p>An array of zero or more elements describing the event(s) associated with the\n device.</p>"
518        },
519        "NextToken" : {
520          "shape" : "__string",
521          "locationName" : "nextToken",
522          "documentation" : "<p>The token to retrieve the next set of results.</p>"
523        }
524      }
525    },
526    "DeviceMethod" : {
527      "type" : "structure",
528      "members" : {
529        "DeviceType" : {
530          "shape" : "__string",
531          "locationName" : "deviceType",
532          "documentation" : "<p>The type of the device, such as \"button\".</p>"
533        },
534        "MethodName" : {
535          "shape" : "__string",
536          "locationName" : "methodName",
537          "documentation" : "<p>The name of the method applicable to the deviceType.</p>"
538        }
539      }
540    },
541    "Empty" : {
542      "type" : "structure",
543      "members" : { },
544      "documentation" : "<p>On success, an empty object is returned.</p>"
545    },
546    "FinalizeDeviceClaimRequest" : {
547      "type" : "structure",
548      "members" : {
549        "DeviceId" : {
550          "shape" : "__string",
551          "location" : "uri",
552          "locationName" : "deviceId",
553          "documentation" : "<p>The unique identifier of the device.</p>"
554        },
555        "Tags" : {
556          "shape" : "__mapOf__string",
557          "locationName" : "tags",
558          "documentation" : "<p>A collection of key/value pairs defining the resource tags. For example, {\n \"tags\": {\"key1\": \"value1\", \"key2\": \"value2\"} }. For more information, see <a href=\"https://aws.amazon.com/answers/account-management/aws-tagging-strategies/\">AWS\n Tagging Strategies</a>.</p><p>\n \n </p>"
559        }
560      },
561      "required" : [ "DeviceId" ]
562    },
563    "FinalizeDeviceClaimResponse" : {
564      "type" : "structure",
565      "members" : {
566        "State" : {
567          "shape" : "__string",
568          "locationName" : "state",
569          "documentation" : "<p>The device's final claim state.</p>"
570        }
571      }
572    },
573    "ForbiddenException" : {
574      "type" : "structure",
575      "members" : {
576        "Code" : {
577          "shape" : "__string",
578          "locationName" : "code",
579          "documentation" : "<p>403</p>"
580        },
581        "Message" : {
582          "shape" : "__string",
583          "locationName" : "message",
584          "documentation" : "<p>The 403 error message returned by the web server.</p>"
585        }
586      },
587      "exception" : true,
588      "error" : {
589        "httpStatusCode" : 403
590      }
591    },
592    "GetDeviceMethodsRequest" : {
593      "type" : "structure",
594      "members" : {
595        "DeviceId" : {
596          "shape" : "__string",
597          "location" : "uri",
598          "locationName" : "deviceId",
599          "documentation" : "<p>The unique identifier of the device.</p>"
600        }
601      },
602      "required" : [ "DeviceId" ]
603    },
604    "GetDeviceMethodsResponse" : {
605      "type" : "structure",
606      "members" : {
607        "DeviceMethods" : {
608          "shape" : "__listOfDeviceMethod",
609          "locationName" : "deviceMethods",
610          "documentation" : "<p>List of available device APIs.</p>"
611        }
612      }
613    },
614    "InitiateDeviceClaimRequest" : {
615      "type" : "structure",
616      "members" : {
617        "DeviceId" : {
618          "shape" : "__string",
619          "location" : "uri",
620          "locationName" : "deviceId",
621          "documentation" : "<p>The unique identifier of the device.</p>"
622        }
623      },
624      "required" : [ "DeviceId" ]
625    },
626    "InitiateDeviceClaimResponse" : {
627      "type" : "structure",
628      "members" : {
629        "State" : {
630          "shape" : "__string",
631          "locationName" : "state",
632          "documentation" : "<p>The device's final claim state.</p>"
633        }
634      }
635    },
636    "InternalFailureException" : {
637      "type" : "structure",
638      "members" : {
639        "Code" : {
640          "shape" : "__string",
641          "locationName" : "code",
642          "documentation" : "<p>500</p>"
643        },
644        "Message" : {
645          "shape" : "__string",
646          "locationName" : "message",
647          "documentation" : "<p>The 500 error message returned by the web server.</p>"
648        }
649      },
650      "exception" : true,
651      "error" : {
652        "httpStatusCode" : 500
653      }
654    },
655    "InvalidRequestException" : {
656      "type" : "structure",
657      "members" : {
658        "Code" : {
659          "shape" : "__string",
660          "locationName" : "code",
661          "documentation" : "<p>400</p>"
662        },
663        "Message" : {
664          "shape" : "__string",
665          "locationName" : "message",
666          "documentation" : "<p>The 400 error message returned by the web server.</p>"
667        }
668      },
669      "exception" : true,
670      "error" : {
671        "httpStatusCode" : 400
672      }
673    },
674    "InvokeDeviceMethodRequest" : {
675      "type" : "structure",
676      "members" : {
677        "DeviceId" : {
678          "shape" : "__string",
679          "location" : "uri",
680          "locationName" : "deviceId",
681          "documentation" : "<p>The unique identifier of the device.</p>"
682        },
683        "DeviceMethod" : {
684          "shape" : "DeviceMethod",
685          "locationName" : "deviceMethod",
686          "documentation" : "<p>The device method to invoke.</p>"
687        },
688        "DeviceMethodParameters" : {
689          "shape" : "__string",
690          "locationName" : "deviceMethodParameters",
691          "documentation" : "<p>A JSON encoded string containing the device method request parameters.</p>"
692        }
693      },
694      "required" : [ "DeviceId" ]
695    },
696    "InvokeDeviceMethodResponse" : {
697      "type" : "structure",
698      "members" : {
699        "DeviceMethodResponse" : {
700          "shape" : "__string",
701          "locationName" : "deviceMethodResponse",
702          "documentation" : "<p>A JSON encoded string containing the device method response.</p>"
703        }
704      }
705    },
706    "ListDeviceEventsRequest" : {
707      "type" : "structure",
708      "members" : {
709        "DeviceId" : {
710          "shape" : "__string",
711          "location" : "uri",
712          "locationName" : "deviceId",
713          "documentation" : "<p>The unique identifier of the device.</p>"
714        },
715        "FromTimeStamp" : {
716          "shape" : "__timestampIso8601",
717          "location" : "querystring",
718          "locationName" : "fromTimeStamp",
719          "documentation" : "<p>The start date for the device event query, in ISO8061 format. For example,\n 2018-03-28T15:45:12.880Z\n </p>"
720        },
721        "MaxResults" : {
722          "shape" : "MaxResults",
723          "location" : "querystring",
724          "locationName" : "maxResults",
725          "documentation" : "<p>The maximum number of results to return per request. If not set, a default value of\n 100 is used.</p>"
726        },
727        "NextToken" : {
728          "shape" : "__string",
729          "location" : "querystring",
730          "locationName" : "nextToken",
731          "documentation" : "<p>The token to retrieve the next set of results.</p>"
732        },
733        "ToTimeStamp" : {
734          "shape" : "__timestampIso8601",
735          "location" : "querystring",
736          "locationName" : "toTimeStamp",
737          "documentation" : "<p>The end date for the device event query, in ISO8061 format. For example,\n 2018-03-28T15:45:12.880Z\n </p>"
738        }
739      },
740      "required" : [ "DeviceId", "FromTimeStamp", "ToTimeStamp" ]
741    },
742    "ListDeviceEventsResponse" : {
743      "type" : "structure",
744      "members" : {
745        "Events" : {
746          "shape" : "__listOfDeviceEvent",
747          "locationName" : "events",
748          "documentation" : "<p>An array of zero or more elements describing the event(s) associated with the\n device.</p>"
749        },
750        "NextToken" : {
751          "shape" : "__string",
752          "locationName" : "nextToken",
753          "documentation" : "<p>The token to retrieve the next set of results.</p>"
754        }
755      }
756    },
757    "ListDevicesRequest" : {
758      "type" : "structure",
759      "members" : {
760        "DeviceType" : {
761          "shape" : "__string",
762          "location" : "querystring",
763          "locationName" : "deviceType",
764          "documentation" : "<p>The type of the device, such as \"button\".</p>"
765        },
766        "MaxResults" : {
767          "shape" : "MaxResults",
768          "location" : "querystring",
769          "locationName" : "maxResults",
770          "documentation" : "<p>The maximum number of results to return per request. If not set, a default value of\n 100 is used.</p>"
771        },
772        "NextToken" : {
773          "shape" : "__string",
774          "location" : "querystring",
775          "locationName" : "nextToken",
776          "documentation" : "<p>The token to retrieve the next set of results.</p>"
777        }
778      }
779    },
780    "ListDevicesResponse" : {
781      "type" : "structure",
782      "members" : {
783        "Devices" : {
784          "shape" : "__listOfDeviceDescription",
785          "locationName" : "devices",
786          "documentation" : "<p>A list of devices.</p>"
787        },
788        "NextToken" : {
789          "shape" : "__string",
790          "locationName" : "nextToken",
791          "documentation" : "<p>The token to retrieve the next set of results.</p>"
792        }
793      }
794    },
795    "ListTagsForResourceRequest" : {
796      "type" : "structure",
797      "members" : {
798        "ResourceArn" : {
799          "shape" : "__string",
800          "location" : "uri",
801          "locationName" : "resource-arn",
802          "documentation" : "<p>The ARN of the resource.</p>"
803        }
804      },
805      "required" : [ "ResourceArn" ]
806    },
807    "ListTagsForResourceResponse" : {
808      "type" : "structure",
809      "members" : {
810        "Tags" : {
811          "shape" : "__mapOf__string",
812          "locationName" : "tags",
813          "documentation" : "<p>A collection of key/value pairs defining the resource tags. For example, {\n \"tags\": {\"key1\": \"value1\", \"key2\": \"value2\"} }. For more information, see <a href=\"https://aws.amazon.com/answers/account-management/aws-tagging-strategies/\">AWS\n Tagging Strategies</a>.</p><p>\n \n </p>"
814        }
815      }
816    },
817    "MaxResults" : {
818      "type" : "integer",
819      "min" : 1,
820      "max" : 250
821    },
822    "PreconditionFailedException" : {
823      "type" : "structure",
824      "members" : {
825        "Code" : {
826          "shape" : "__string",
827          "locationName" : "code",
828          "documentation" : "<p>412</p>"
829        },
830        "Message" : {
831          "shape" : "__string",
832          "locationName" : "message",
833          "documentation" : "<p>An error message explaining the error or its remedy.</p>"
834        }
835      },
836      "exception" : true,
837      "error" : {
838        "httpStatusCode" : 412
839      }
840    },
841    "RangeNotSatisfiableException" : {
842      "type" : "structure",
843      "members" : {
844        "Code" : {
845          "shape" : "__string",
846          "locationName" : "code",
847          "documentation" : "<p>416</p>"
848        },
849        "Message" : {
850          "shape" : "__string",
851          "locationName" : "message",
852          "documentation" : "<p>The requested number of results specified by nextToken cannot be\n satisfied.</p>"
853        }
854      },
855      "exception" : true,
856      "error" : {
857        "httpStatusCode" : 416
858      }
859    },
860    "ResourceConflictException" : {
861      "type" : "structure",
862      "members" : {
863        "Code" : {
864          "shape" : "__string",
865          "locationName" : "code",
866          "documentation" : "<p>409</p>"
867        },
868        "Message" : {
869          "shape" : "__string",
870          "locationName" : "message",
871          "documentation" : "<p>An error message explaining the error or its remedy.</p>"
872        }
873      },
874      "exception" : true,
875      "error" : {
876        "httpStatusCode" : 409
877      }
878    },
879    "ResourceNotFoundException" : {
880      "type" : "structure",
881      "members" : {
882        "Code" : {
883          "shape" : "__string",
884          "locationName" : "code",
885          "documentation" : "<p>404</p>"
886        },
887        "Message" : {
888          "shape" : "__string",
889          "locationName" : "message",
890          "documentation" : "<p>The requested device could not be found.</p>"
891        }
892      },
893      "exception" : true,
894      "error" : {
895        "httpStatusCode" : 404
896      }
897    },
898    "TagResourceRequest" : {
899      "type" : "structure",
900      "members" : {
901        "ResourceArn" : {
902          "shape" : "__string",
903          "location" : "uri",
904          "locationName" : "resource-arn",
905          "documentation" : "<p>The ARN of the resource.</p>"
906        },
907        "Tags" : {
908          "shape" : "__mapOf__string",
909          "locationName" : "tags",
910          "documentation" : "<p>A collection of key/value pairs defining the resource tags. For example, {\n \"tags\": {\"key1\": \"value1\", \"key2\": \"value2\"} }. For more information, see <a href=\"https://aws.amazon.com/answers/account-management/aws-tagging-strategies/\">AWS\n Tagging Strategies</a>.</p><p>\n \n </p>"
911        }
912      },
913      "required" : [ "ResourceArn", "Tags" ]
914    },
915    "UnclaimDeviceRequest" : {
916      "type" : "structure",
917      "members" : {
918        "DeviceId" : {
919          "shape" : "__string",
920          "location" : "uri",
921          "locationName" : "deviceId",
922          "documentation" : "<p>The unique identifier of the device.</p>"
923        }
924      },
925      "required" : [ "DeviceId" ]
926    },
927    "UnclaimDeviceResponse" : {
928      "type" : "structure",
929      "members" : {
930        "State" : {
931          "shape" : "__string",
932          "locationName" : "state",
933          "documentation" : "<p>The device's final claim state.</p>"
934        }
935      }
936    },
937    "UntagResourceRequest" : {
938      "type" : "structure",
939      "members" : {
940        "ResourceArn" : {
941          "shape" : "__string",
942          "location" : "uri",
943          "locationName" : "resource-arn",
944          "documentation" : "<p>The ARN of the resource.</p>"
945        },
946        "TagKeys" : {
947          "shape" : "__listOf__string",
948          "location" : "querystring",
949          "locationName" : "tagKeys",
950          "documentation" : "<p>A collections of tag keys. For example, {\"key1\",\"key2\"}</p>"
951        }
952      },
953      "required" : [ "TagKeys", "ResourceArn" ]
954    },
955    "UpdateDeviceStateRequest" : {
956      "type" : "structure",
957      "members" : {
958        "DeviceId" : {
959          "shape" : "__string",
960          "location" : "uri",
961          "locationName" : "deviceId",
962          "documentation" : "<p>The unique identifier of the device.</p>"
963        },
964        "Enabled" : {
965          "shape" : "__boolean",
966          "locationName" : "enabled",
967          "documentation" : "<p>If true, the device is enabled. If false, the device is\n disabled.</p>"
968        }
969      },
970      "required" : [ "DeviceId" ]
971    },
972    "UpdateDeviceStateResponse" : {
973      "type" : "structure",
974      "members" : { }
975    },
976    "__boolean" : {
977      "type" : "boolean"
978    },
979    "__double" : {
980      "type" : "double"
981    },
982    "__doubleMin0Max100" : {
983      "type" : "double"
984    },
985    "__integer" : {
986      "type" : "integer"
987    },
988    "__listOfDeviceDescription" : {
989      "type" : "list",
990      "member" : {
991        "shape" : "DeviceDescription"
992      }
993    },
994    "__listOfDeviceEvent" : {
995      "type" : "list",
996      "member" : {
997        "shape" : "DeviceEvent"
998      }
999    },
1000    "__listOfDeviceMethod" : {
1001      "type" : "list",
1002      "member" : {
1003        "shape" : "DeviceMethod"
1004      }
1005    },
1006    "__listOf__string" : {
1007      "type" : "list",
1008      "member" : {
1009        "shape" : "__string"
1010      }
1011    },
1012    "__long" : {
1013      "type" : "long"
1014    },
1015    "__mapOf__string" : {
1016      "type" : "map",
1017      "key" : {
1018        "shape" : "__string"
1019      },
1020      "value" : {
1021        "shape" : "__string"
1022      }
1023    },
1024    "__string" : {
1025      "type" : "string"
1026    },
1027    "__stringMin12Max40" : {
1028      "type" : "string",
1029      "min" : 12,
1030      "max" : 40
1031    },
1032    "__timestampIso8601" : {
1033      "type" : "timestamp",
1034      "timestampFormat" : "iso8601"
1035    },
1036    "__timestampUnix" : {
1037      "type" : "timestamp",
1038      "timestampFormat" : "unixTimestamp"
1039    }
1040  },
1041  "documentation" : "<p>Describes all of the AWS IoT 1-Click device-related API operations for the service.\n Also provides sample requests, responses, and errors for the supported web services\n protocols.</p>"
1042}