1{
2  "version":"2.0",
3  "metadata":{
4    "apiVersion":"2018-05-14",
5    "endpointPrefix":"projects.iot1click",
6    "jsonVersion":"1.1",
7    "protocol":"rest-json",
8    "serviceAbbreviation":"AWS IoT 1-Click Projects",
9    "serviceFullName":"AWS IoT 1-Click Projects Service",
10    "serviceId":"IoT 1Click Projects",
11    "signatureVersion":"v4",
12    "signingName":"iot1click",
13    "uid":"iot1click-projects-2018-05-14"
14  },
15  "operations":{
16    "AssociateDeviceWithPlacement":{
17      "name":"AssociateDeviceWithPlacement",
18      "http":{
19        "method":"PUT",
20        "requestUri":"/projects/{projectName}/placements/{placementName}/devices/{deviceTemplateName}"
21      },
22      "input":{"shape":"AssociateDeviceWithPlacementRequest"},
23      "output":{"shape":"AssociateDeviceWithPlacementResponse"},
24      "errors":[
25        {"shape":"InternalFailureException"},
26        {"shape":"InvalidRequestException"},
27        {"shape":"ResourceConflictException"},
28        {"shape":"ResourceNotFoundException"}
29      ]
30    },
31    "CreatePlacement":{
32      "name":"CreatePlacement",
33      "http":{
34        "method":"POST",
35        "requestUri":"/projects/{projectName}/placements"
36      },
37      "input":{"shape":"CreatePlacementRequest"},
38      "output":{"shape":"CreatePlacementResponse"},
39      "errors":[
40        {"shape":"InternalFailureException"},
41        {"shape":"InvalidRequestException"},
42        {"shape":"ResourceConflictException"},
43        {"shape":"ResourceNotFoundException"}
44      ]
45    },
46    "CreateProject":{
47      "name":"CreateProject",
48      "http":{
49        "method":"POST",
50        "requestUri":"/projects"
51      },
52      "input":{"shape":"CreateProjectRequest"},
53      "output":{"shape":"CreateProjectResponse"},
54      "errors":[
55        {"shape":"InternalFailureException"},
56        {"shape":"InvalidRequestException"},
57        {"shape":"ResourceConflictException"}
58      ]
59    },
60    "DeletePlacement":{
61      "name":"DeletePlacement",
62      "http":{
63        "method":"DELETE",
64        "requestUri":"/projects/{projectName}/placements/{placementName}"
65      },
66      "input":{"shape":"DeletePlacementRequest"},
67      "output":{"shape":"DeletePlacementResponse"},
68      "errors":[
69        {"shape":"InternalFailureException"},
70        {"shape":"InvalidRequestException"},
71        {"shape":"ResourceNotFoundException"},
72        {"shape":"TooManyRequestsException"}
73      ]
74    },
75    "DeleteProject":{
76      "name":"DeleteProject",
77      "http":{
78        "method":"DELETE",
79        "requestUri":"/projects/{projectName}"
80      },
81      "input":{"shape":"DeleteProjectRequest"},
82      "output":{"shape":"DeleteProjectResponse"},
83      "errors":[
84        {"shape":"InternalFailureException"},
85        {"shape":"InvalidRequestException"},
86        {"shape":"ResourceNotFoundException"},
87        {"shape":"TooManyRequestsException"}
88      ]
89    },
90    "DescribePlacement":{
91      "name":"DescribePlacement",
92      "http":{
93        "method":"GET",
94        "requestUri":"/projects/{projectName}/placements/{placementName}"
95      },
96      "input":{"shape":"DescribePlacementRequest"},
97      "output":{"shape":"DescribePlacementResponse"},
98      "errors":[
99        {"shape":"InternalFailureException"},
100        {"shape":"InvalidRequestException"},
101        {"shape":"ResourceNotFoundException"}
102      ]
103    },
104    "DescribeProject":{
105      "name":"DescribeProject",
106      "http":{
107        "method":"GET",
108        "requestUri":"/projects/{projectName}"
109      },
110      "input":{"shape":"DescribeProjectRequest"},
111      "output":{"shape":"DescribeProjectResponse"},
112      "errors":[
113        {"shape":"InternalFailureException"},
114        {"shape":"InvalidRequestException"},
115        {"shape":"ResourceNotFoundException"}
116      ]
117    },
118    "DisassociateDeviceFromPlacement":{
119      "name":"DisassociateDeviceFromPlacement",
120      "http":{
121        "method":"DELETE",
122        "requestUri":"/projects/{projectName}/placements/{placementName}/devices/{deviceTemplateName}"
123      },
124      "input":{"shape":"DisassociateDeviceFromPlacementRequest"},
125      "output":{"shape":"DisassociateDeviceFromPlacementResponse"},
126      "errors":[
127        {"shape":"InternalFailureException"},
128        {"shape":"InvalidRequestException"},
129        {"shape":"ResourceNotFoundException"},
130        {"shape":"TooManyRequestsException"}
131      ]
132    },
133    "GetDevicesInPlacement":{
134      "name":"GetDevicesInPlacement",
135      "http":{
136        "method":"GET",
137        "requestUri":"/projects/{projectName}/placements/{placementName}/devices"
138      },
139      "input":{"shape":"GetDevicesInPlacementRequest"},
140      "output":{"shape":"GetDevicesInPlacementResponse"},
141      "errors":[
142        {"shape":"InternalFailureException"},
143        {"shape":"InvalidRequestException"},
144        {"shape":"ResourceNotFoundException"}
145      ]
146    },
147    "ListPlacements":{
148      "name":"ListPlacements",
149      "http":{
150        "method":"GET",
151        "requestUri":"/projects/{projectName}/placements"
152      },
153      "input":{"shape":"ListPlacementsRequest"},
154      "output":{"shape":"ListPlacementsResponse"},
155      "errors":[
156        {"shape":"InternalFailureException"},
157        {"shape":"InvalidRequestException"},
158        {"shape":"ResourceNotFoundException"}
159      ]
160    },
161    "ListProjects":{
162      "name":"ListProjects",
163      "http":{
164        "method":"GET",
165        "requestUri":"/projects"
166      },
167      "input":{"shape":"ListProjectsRequest"},
168      "output":{"shape":"ListProjectsResponse"},
169      "errors":[
170        {"shape":"InternalFailureException"},
171        {"shape":"InvalidRequestException"}
172      ]
173    },
174    "UpdatePlacement":{
175      "name":"UpdatePlacement",
176      "http":{
177        "method":"PUT",
178        "requestUri":"/projects/{projectName}/placements/{placementName}"
179      },
180      "input":{"shape":"UpdatePlacementRequest"},
181      "output":{"shape":"UpdatePlacementResponse"},
182      "errors":[
183        {"shape":"InternalFailureException"},
184        {"shape":"InvalidRequestException"},
185        {"shape":"ResourceNotFoundException"},
186        {"shape":"TooManyRequestsException"}
187      ]
188    },
189    "UpdateProject":{
190      "name":"UpdateProject",
191      "http":{
192        "method":"PUT",
193        "requestUri":"/projects/{projectName}"
194      },
195      "input":{"shape":"UpdateProjectRequest"},
196      "output":{"shape":"UpdateProjectResponse"},
197      "errors":[
198        {"shape":"InternalFailureException"},
199        {"shape":"InvalidRequestException"},
200        {"shape":"ResourceNotFoundException"},
201        {"shape":"TooManyRequestsException"}
202      ]
203    }
204  },
205  "shapes":{
206    "AssociateDeviceWithPlacementRequest":{
207      "type":"structure",
208      "required":[
209        "projectName",
210        "placementName",
211        "deviceId",
212        "deviceTemplateName"
213      ],
214      "members":{
215        "projectName":{
216          "shape":"ProjectName",
217          "location":"uri",
218          "locationName":"projectName"
219        },
220        "placementName":{
221          "shape":"PlacementName",
222          "location":"uri",
223          "locationName":"placementName"
224        },
225        "deviceId":{"shape":"DeviceId"},
226        "deviceTemplateName":{
227          "shape":"DeviceTemplateName",
228          "location":"uri",
229          "locationName":"deviceTemplateName"
230        }
231      }
232    },
233    "AssociateDeviceWithPlacementResponse":{
234      "type":"structure",
235      "members":{
236      }
237    },
238    "AttributeDefaultValue":{
239      "type":"string",
240      "max":800
241    },
242    "AttributeName":{
243      "type":"string",
244      "max":128,
245      "min":1
246    },
247    "AttributeValue":{
248      "type":"string",
249      "max":800
250    },
251    "Code":{"type":"string"},
252    "CreatePlacementRequest":{
253      "type":"structure",
254      "required":[
255        "placementName",
256        "projectName"
257      ],
258      "members":{
259        "placementName":{"shape":"PlacementName"},
260        "projectName":{
261          "shape":"ProjectName",
262          "location":"uri",
263          "locationName":"projectName"
264        },
265        "attributes":{"shape":"PlacementAttributeMap"}
266      }
267    },
268    "CreatePlacementResponse":{
269      "type":"structure",
270      "members":{
271      }
272    },
273    "CreateProjectRequest":{
274      "type":"structure",
275      "required":["projectName"],
276      "members":{
277        "projectName":{"shape":"ProjectName"},
278        "description":{"shape":"Description"},
279        "placementTemplate":{"shape":"PlacementTemplate"}
280      }
281    },
282    "CreateProjectResponse":{
283      "type":"structure",
284      "members":{
285      }
286    },
287    "DefaultPlacementAttributeMap":{
288      "type":"map",
289      "key":{"shape":"AttributeName"},
290      "value":{"shape":"AttributeDefaultValue"}
291    },
292    "DeletePlacementRequest":{
293      "type":"structure",
294      "required":[
295        "placementName",
296        "projectName"
297      ],
298      "members":{
299        "placementName":{
300          "shape":"PlacementName",
301          "location":"uri",
302          "locationName":"placementName"
303        },
304        "projectName":{
305          "shape":"ProjectName",
306          "location":"uri",
307          "locationName":"projectName"
308        }
309      }
310    },
311    "DeletePlacementResponse":{
312      "type":"structure",
313      "members":{
314      }
315    },
316    "DeleteProjectRequest":{
317      "type":"structure",
318      "required":["projectName"],
319      "members":{
320        "projectName":{
321          "shape":"ProjectName",
322          "location":"uri",
323          "locationName":"projectName"
324        }
325      }
326    },
327    "DeleteProjectResponse":{
328      "type":"structure",
329      "members":{
330      }
331    },
332    "DescribePlacementRequest":{
333      "type":"structure",
334      "required":[
335        "placementName",
336        "projectName"
337      ],
338      "members":{
339        "placementName":{
340          "shape":"PlacementName",
341          "location":"uri",
342          "locationName":"placementName"
343        },
344        "projectName":{
345          "shape":"ProjectName",
346          "location":"uri",
347          "locationName":"projectName"
348        }
349      }
350    },
351    "DescribePlacementResponse":{
352      "type":"structure",
353      "required":["placement"],
354      "members":{
355        "placement":{"shape":"PlacementDescription"}
356      }
357    },
358    "DescribeProjectRequest":{
359      "type":"structure",
360      "required":["projectName"],
361      "members":{
362        "projectName":{
363          "shape":"ProjectName",
364          "location":"uri",
365          "locationName":"projectName"
366        }
367      }
368    },
369    "DescribeProjectResponse":{
370      "type":"structure",
371      "required":["project"],
372      "members":{
373        "project":{"shape":"ProjectDescription"}
374      }
375    },
376    "Description":{
377      "type":"string",
378      "max":500,
379      "min":0
380    },
381    "DeviceCallbackKey":{
382      "type":"string",
383      "max":128,
384      "min":1
385    },
386    "DeviceCallbackOverrideMap":{
387      "type":"map",
388      "key":{"shape":"DeviceCallbackKey"},
389      "value":{"shape":"DeviceCallbackValue"}
390    },
391    "DeviceCallbackValue":{
392      "type":"string",
393      "max":200
394    },
395    "DeviceId":{
396      "type":"string",
397      "max":32,
398      "min":1
399    },
400    "DeviceMap":{
401      "type":"map",
402      "key":{"shape":"DeviceTemplateName"},
403      "value":{"shape":"DeviceId"}
404    },
405    "DeviceTemplate":{
406      "type":"structure",
407      "members":{
408        "deviceType":{"shape":"DeviceType"},
409        "callbackOverrides":{"shape":"DeviceCallbackOverrideMap"}
410      }
411    },
412    "DeviceTemplateMap":{
413      "type":"map",
414      "key":{"shape":"DeviceTemplateName"},
415      "value":{"shape":"DeviceTemplate"}
416    },
417    "DeviceTemplateName":{
418      "type":"string",
419      "max":128,
420      "min":1,
421      "pattern":"^[a-zA-Z0-9_-]+$"
422    },
423    "DeviceType":{
424      "type":"string",
425      "max":128
426    },
427    "DisassociateDeviceFromPlacementRequest":{
428      "type":"structure",
429      "required":[
430        "projectName",
431        "placementName",
432        "deviceTemplateName"
433      ],
434      "members":{
435        "projectName":{
436          "shape":"ProjectName",
437          "location":"uri",
438          "locationName":"projectName"
439        },
440        "placementName":{
441          "shape":"PlacementName",
442          "location":"uri",
443          "locationName":"placementName"
444        },
445        "deviceTemplateName":{
446          "shape":"DeviceTemplateName",
447          "location":"uri",
448          "locationName":"deviceTemplateName"
449        }
450      }
451    },
452    "DisassociateDeviceFromPlacementResponse":{
453      "type":"structure",
454      "members":{
455      }
456    },
457    "GetDevicesInPlacementRequest":{
458      "type":"structure",
459      "required":[
460        "projectName",
461        "placementName"
462      ],
463      "members":{
464        "projectName":{
465          "shape":"ProjectName",
466          "location":"uri",
467          "locationName":"projectName"
468        },
469        "placementName":{
470          "shape":"PlacementName",
471          "location":"uri",
472          "locationName":"placementName"
473        }
474      }
475    },
476    "GetDevicesInPlacementResponse":{
477      "type":"structure",
478      "required":["devices"],
479      "members":{
480        "devices":{"shape":"DeviceMap"}
481      }
482    },
483    "InternalFailureException":{
484      "type":"structure",
485      "required":[
486        "code",
487        "message"
488      ],
489      "members":{
490        "code":{"shape":"Code"},
491        "message":{"shape":"Message"}
492      },
493      "error":{"httpStatusCode":500},
494      "exception":true
495    },
496    "InvalidRequestException":{
497      "type":"structure",
498      "required":[
499        "code",
500        "message"
501      ],
502      "members":{
503        "code":{"shape":"Code"},
504        "message":{"shape":"Message"}
505      },
506      "error":{"httpStatusCode":400},
507      "exception":true
508    },
509    "ListPlacementsRequest":{
510      "type":"structure",
511      "required":["projectName"],
512      "members":{
513        "projectName":{
514          "shape":"ProjectName",
515          "location":"uri",
516          "locationName":"projectName"
517        },
518        "nextToken":{
519          "shape":"NextToken",
520          "location":"querystring",
521          "locationName":"nextToken"
522        },
523        "maxResults":{
524          "shape":"MaxResults",
525          "location":"querystring",
526          "locationName":"maxResults"
527        }
528      }
529    },
530    "ListPlacementsResponse":{
531      "type":"structure",
532      "required":["placements"],
533      "members":{
534        "placements":{"shape":"PlacementSummaryList"},
535        "nextToken":{"shape":"NextToken"}
536      }
537    },
538    "ListProjectsRequest":{
539      "type":"structure",
540      "members":{
541        "nextToken":{
542          "shape":"NextToken",
543          "location":"querystring",
544          "locationName":"nextToken"
545        },
546        "maxResults":{
547          "shape":"MaxResults",
548          "location":"querystring",
549          "locationName":"maxResults"
550        }
551      }
552    },
553    "ListProjectsResponse":{
554      "type":"structure",
555      "required":["projects"],
556      "members":{
557        "projects":{"shape":"ProjectSummaryList"},
558        "nextToken":{"shape":"NextToken"}
559      }
560    },
561    "MaxResults":{
562      "type":"integer",
563      "max":250,
564      "min":1
565    },
566    "Message":{"type":"string"},
567    "NextToken":{
568      "type":"string",
569      "max":1024,
570      "min":1
571    },
572    "PlacementAttributeMap":{
573      "type":"map",
574      "key":{"shape":"AttributeName"},
575      "value":{"shape":"AttributeValue"}
576    },
577    "PlacementDescription":{
578      "type":"structure",
579      "required":[
580        "projectName",
581        "placementName",
582        "attributes",
583        "createdDate",
584        "updatedDate"
585      ],
586      "members":{
587        "projectName":{"shape":"ProjectName"},
588        "placementName":{"shape":"PlacementName"},
589        "attributes":{"shape":"PlacementAttributeMap"},
590        "createdDate":{"shape":"Time"},
591        "updatedDate":{"shape":"Time"}
592      }
593    },
594    "PlacementName":{
595      "type":"string",
596      "max":128,
597      "min":1,
598      "pattern":"^[a-zA-Z0-9_-]+$"
599    },
600    "PlacementSummary":{
601      "type":"structure",
602      "required":[
603        "projectName",
604        "placementName",
605        "createdDate",
606        "updatedDate"
607      ],
608      "members":{
609        "projectName":{"shape":"ProjectName"},
610        "placementName":{"shape":"PlacementName"},
611        "createdDate":{"shape":"Time"},
612        "updatedDate":{"shape":"Time"}
613      }
614    },
615    "PlacementSummaryList":{
616      "type":"list",
617      "member":{"shape":"PlacementSummary"}
618    },
619    "PlacementTemplate":{
620      "type":"structure",
621      "members":{
622        "defaultAttributes":{"shape":"DefaultPlacementAttributeMap"},
623        "deviceTemplates":{"shape":"DeviceTemplateMap"}
624      }
625    },
626    "ProjectDescription":{
627      "type":"structure",
628      "required":[
629        "projectName",
630        "createdDate",
631        "updatedDate"
632      ],
633      "members":{
634        "projectName":{"shape":"ProjectName"},
635        "description":{"shape":"Description"},
636        "createdDate":{"shape":"Time"},
637        "updatedDate":{"shape":"Time"},
638        "placementTemplate":{"shape":"PlacementTemplate"}
639      }
640    },
641    "ProjectName":{
642      "type":"string",
643      "max":128,
644      "min":1,
645      "pattern":"^[0-9A-Za-z_-]+$"
646    },
647    "ProjectSummary":{
648      "type":"structure",
649      "required":[
650        "projectName",
651        "createdDate",
652        "updatedDate"
653      ],
654      "members":{
655        "projectName":{"shape":"ProjectName"},
656        "createdDate":{"shape":"Time"},
657        "updatedDate":{"shape":"Time"}
658      }
659    },
660    "ProjectSummaryList":{
661      "type":"list",
662      "member":{"shape":"ProjectSummary"}
663    },
664    "ResourceConflictException":{
665      "type":"structure",
666      "required":[
667        "code",
668        "message"
669      ],
670      "members":{
671        "code":{"shape":"Code"},
672        "message":{"shape":"Message"}
673      },
674      "error":{"httpStatusCode":409},
675      "exception":true
676    },
677    "ResourceNotFoundException":{
678      "type":"structure",
679      "required":[
680        "code",
681        "message"
682      ],
683      "members":{
684        "code":{"shape":"Code"},
685        "message":{"shape":"Message"}
686      },
687      "error":{"httpStatusCode":404},
688      "exception":true
689    },
690    "Time":{"type":"timestamp"},
691    "TooManyRequestsException":{
692      "type":"structure",
693      "required":[
694        "code",
695        "message"
696      ],
697      "members":{
698        "code":{"shape":"Code"},
699        "message":{"shape":"Message"}
700      },
701      "error":{"httpStatusCode":429},
702      "exception":true
703    },
704    "UpdatePlacementRequest":{
705      "type":"structure",
706      "required":[
707        "placementName",
708        "projectName"
709      ],
710      "members":{
711        "placementName":{
712          "shape":"PlacementName",
713          "location":"uri",
714          "locationName":"placementName"
715        },
716        "projectName":{
717          "shape":"ProjectName",
718          "location":"uri",
719          "locationName":"projectName"
720        },
721        "attributes":{"shape":"PlacementAttributeMap"}
722      }
723    },
724    "UpdatePlacementResponse":{
725      "type":"structure",
726      "members":{
727      }
728    },
729    "UpdateProjectRequest":{
730      "type":"structure",
731      "required":["projectName"],
732      "members":{
733        "projectName":{
734          "shape":"ProjectName",
735          "location":"uri",
736          "locationName":"projectName"
737        },
738        "description":{"shape":"Description"},
739        "placementTemplate":{"shape":"PlacementTemplate"}
740      }
741    },
742    "UpdateProjectResponse":{
743      "type":"structure",
744      "members":{
745      }
746    }
747  }
748}
749