1{
2    "smithy": "1.0",
3    "metadata": {
4        "suppressions": [
5            {
6                "id": "HttpMethodSemantics",
7                "namespace": "*"
8            },
9            {
10                "id": "HttpResponseCodeSemantics",
11                "namespace": "*"
12            },
13            {
14                "id": "PaginatedTrait",
15                "namespace": "*"
16            },
17            {
18                "id": "HttpHeaderTrait",
19                "namespace": "*"
20            },
21            {
22                "id": "HttpUriConflict",
23                "namespace": "*"
24            },
25            {
26                "id": "Service",
27                "namespace": "*"
28            }
29        ]
30    },
31    "shapes": {
32        "com.amazonaws.iot1clickprojects#AWSIoT1ClickProjects": {
33            "type": "service",
34            "version": "2018-05-14",
35            "operations": [
36                {
37                    "target": "com.amazonaws.iot1clickprojects#AssociateDeviceWithPlacement"
38                },
39                {
40                    "target": "com.amazonaws.iot1clickprojects#CreatePlacement"
41                },
42                {
43                    "target": "com.amazonaws.iot1clickprojects#CreateProject"
44                },
45                {
46                    "target": "com.amazonaws.iot1clickprojects#DeletePlacement"
47                },
48                {
49                    "target": "com.amazonaws.iot1clickprojects#DeleteProject"
50                },
51                {
52                    "target": "com.amazonaws.iot1clickprojects#DescribePlacement"
53                },
54                {
55                    "target": "com.amazonaws.iot1clickprojects#DescribeProject"
56                },
57                {
58                    "target": "com.amazonaws.iot1clickprojects#DisassociateDeviceFromPlacement"
59                },
60                {
61                    "target": "com.amazonaws.iot1clickprojects#GetDevicesInPlacement"
62                },
63                {
64                    "target": "com.amazonaws.iot1clickprojects#ListPlacements"
65                },
66                {
67                    "target": "com.amazonaws.iot1clickprojects#ListProjects"
68                },
69                {
70                    "target": "com.amazonaws.iot1clickprojects#ListTagsForResource"
71                },
72                {
73                    "target": "com.amazonaws.iot1clickprojects#TagResource"
74                },
75                {
76                    "target": "com.amazonaws.iot1clickprojects#UntagResource"
77                },
78                {
79                    "target": "com.amazonaws.iot1clickprojects#UpdatePlacement"
80                },
81                {
82                    "target": "com.amazonaws.iot1clickprojects#UpdateProject"
83                }
84            ],
85            "traits": {
86                "aws.api#service": {
87                    "sdkId": "IoT 1Click Projects",
88                    "arnNamespace": "iot1click",
89                    "cloudFormationName": "IoT1Click",
90                    "cloudTrailEventSource": "iot1clickprojects.amazonaws.com",
91                    "endpointPrefix": "projects.iot1click"
92                },
93                "aws.auth#sigv4": {
94                    "name": "iot1click"
95                },
96                "aws.protocols#restJson1": {},
97                "smithy.api#documentation": "<p>The AWS IoT 1-Click Projects API Reference</p>",
98                "smithy.api#title": "AWS IoT 1-Click Projects Service"
99            }
100        },
101        "com.amazonaws.iot1clickprojects#AssociateDeviceWithPlacement": {
102            "type": "operation",
103            "input": {
104                "target": "com.amazonaws.iot1clickprojects#AssociateDeviceWithPlacementRequest"
105            },
106            "output": {
107                "target": "com.amazonaws.iot1clickprojects#AssociateDeviceWithPlacementResponse"
108            },
109            "errors": [
110                {
111                    "target": "com.amazonaws.iot1clickprojects#InternalFailureException"
112                },
113                {
114                    "target": "com.amazonaws.iot1clickprojects#InvalidRequestException"
115                },
116                {
117                    "target": "com.amazonaws.iot1clickprojects#ResourceConflictException"
118                },
119                {
120                    "target": "com.amazonaws.iot1clickprojects#ResourceNotFoundException"
121                }
122            ],
123            "traits": {
124                "smithy.api#documentation": "<p>Associates a physical device with a placement.</p>",
125                "smithy.api#http": {
126                    "method": "PUT",
127                    "uri": "/projects/{projectName}/placements/{placementName}/devices/{deviceTemplateName}",
128                    "code": 200
129                }
130            }
131        },
132        "com.amazonaws.iot1clickprojects#AssociateDeviceWithPlacementRequest": {
133            "type": "structure",
134            "members": {
135                "projectName": {
136                    "target": "com.amazonaws.iot1clickprojects#ProjectName",
137                    "traits": {
138                        "smithy.api#documentation": "<p>The name of the project containing the placement in which to associate the device.</p>",
139                        "smithy.api#httpLabel": {},
140                        "smithy.api#required": {}
141                    }
142                },
143                "placementName": {
144                    "target": "com.amazonaws.iot1clickprojects#PlacementName",
145                    "traits": {
146                        "smithy.api#documentation": "<p>The name of the placement in which to associate the device.</p>",
147                        "smithy.api#httpLabel": {},
148                        "smithy.api#required": {}
149                    }
150                },
151                "deviceId": {
152                    "target": "com.amazonaws.iot1clickprojects#DeviceId",
153                    "traits": {
154                        "smithy.api#documentation": "<p>The ID of the physical device to be associated with the given placement in the project.\n      Note that a mandatory 4 character prefix is required for all <code>deviceId</code>\n      values.</p>",
155                        "smithy.api#required": {}
156                    }
157                },
158                "deviceTemplateName": {
159                    "target": "com.amazonaws.iot1clickprojects#DeviceTemplateName",
160                    "traits": {
161                        "smithy.api#documentation": "<p>The device template name to associate with the device ID.</p>",
162                        "smithy.api#httpLabel": {},
163                        "smithy.api#required": {}
164                    }
165                }
166            }
167        },
168        "com.amazonaws.iot1clickprojects#AssociateDeviceWithPlacementResponse": {
169            "type": "structure",
170            "members": {}
171        },
172        "com.amazonaws.iot1clickprojects#AttributeDefaultValue": {
173            "type": "string",
174            "traits": {
175                "smithy.api#length": {
176                    "min": 0,
177                    "max": 800
178                }
179            }
180        },
181        "com.amazonaws.iot1clickprojects#AttributeName": {
182            "type": "string",
183            "traits": {
184                "smithy.api#length": {
185                    "min": 1,
186                    "max": 128
187                }
188            }
189        },
190        "com.amazonaws.iot1clickprojects#AttributeValue": {
191            "type": "string",
192            "traits": {
193                "smithy.api#length": {
194                    "min": 0,
195                    "max": 800
196                }
197            }
198        },
199        "com.amazonaws.iot1clickprojects#Code": {
200            "type": "string"
201        },
202        "com.amazonaws.iot1clickprojects#CreatePlacement": {
203            "type": "operation",
204            "input": {
205                "target": "com.amazonaws.iot1clickprojects#CreatePlacementRequest"
206            },
207            "output": {
208                "target": "com.amazonaws.iot1clickprojects#CreatePlacementResponse"
209            },
210            "errors": [
211                {
212                    "target": "com.amazonaws.iot1clickprojects#InternalFailureException"
213                },
214                {
215                    "target": "com.amazonaws.iot1clickprojects#InvalidRequestException"
216                },
217                {
218                    "target": "com.amazonaws.iot1clickprojects#ResourceConflictException"
219                },
220                {
221                    "target": "com.amazonaws.iot1clickprojects#ResourceNotFoundException"
222                }
223            ],
224            "traits": {
225                "smithy.api#documentation": "<p>Creates an empty placement.</p>",
226                "smithy.api#http": {
227                    "method": "POST",
228                    "uri": "/projects/{projectName}/placements",
229                    "code": 200
230                }
231            }
232        },
233        "com.amazonaws.iot1clickprojects#CreatePlacementRequest": {
234            "type": "structure",
235            "members": {
236                "placementName": {
237                    "target": "com.amazonaws.iot1clickprojects#PlacementName",
238                    "traits": {
239                        "smithy.api#documentation": "<p>The name of the placement to be created.</p>",
240                        "smithy.api#required": {}
241                    }
242                },
243                "projectName": {
244                    "target": "com.amazonaws.iot1clickprojects#ProjectName",
245                    "traits": {
246                        "smithy.api#documentation": "<p>The name of the project in which to create the placement.</p>",
247                        "smithy.api#httpLabel": {},
248                        "smithy.api#required": {}
249                    }
250                },
251                "attributes": {
252                    "target": "com.amazonaws.iot1clickprojects#PlacementAttributeMap",
253                    "traits": {
254                        "smithy.api#documentation": "<p>Optional user-defined key/value pairs providing contextual data (such as location or\n      function) for the placement.</p>"
255                    }
256                }
257            }
258        },
259        "com.amazonaws.iot1clickprojects#CreatePlacementResponse": {
260            "type": "structure",
261            "members": {}
262        },
263        "com.amazonaws.iot1clickprojects#CreateProject": {
264            "type": "operation",
265            "input": {
266                "target": "com.amazonaws.iot1clickprojects#CreateProjectRequest"
267            },
268            "output": {
269                "target": "com.amazonaws.iot1clickprojects#CreateProjectResponse"
270            },
271            "errors": [
272                {
273                    "target": "com.amazonaws.iot1clickprojects#InternalFailureException"
274                },
275                {
276                    "target": "com.amazonaws.iot1clickprojects#InvalidRequestException"
277                },
278                {
279                    "target": "com.amazonaws.iot1clickprojects#ResourceConflictException"
280                }
281            ],
282            "traits": {
283                "smithy.api#documentation": "<p>Creates an empty project with a placement template. A project contains zero or more\n      placements that adhere to the placement template defined in the project.</p>",
284                "smithy.api#http": {
285                    "method": "POST",
286                    "uri": "/projects",
287                    "code": 200
288                }
289            }
290        },
291        "com.amazonaws.iot1clickprojects#CreateProjectRequest": {
292            "type": "structure",
293            "members": {
294                "projectName": {
295                    "target": "com.amazonaws.iot1clickprojects#ProjectName",
296                    "traits": {
297                        "smithy.api#documentation": "<p>The name of the project to create.</p>",
298                        "smithy.api#required": {}
299                    }
300                },
301                "description": {
302                    "target": "com.amazonaws.iot1clickprojects#Description",
303                    "traits": {
304                        "smithy.api#documentation": "<p>An optional description for the project.</p>"
305                    }
306                },
307                "placementTemplate": {
308                    "target": "com.amazonaws.iot1clickprojects#PlacementTemplate",
309                    "traits": {
310                        "smithy.api#documentation": "<p>The schema defining the placement to be created. A placement template defines placement\n      default attributes and device templates. You cannot add or remove device templates after the\n      project has been created. However, you can update <code>callbackOverrides</code> for the\n      device templates using the <code>UpdateProject</code> API.</p>"
311                    }
312                },
313                "tags": {
314                    "target": "com.amazonaws.iot1clickprojects#TagMap",
315                    "traits": {
316                        "smithy.api#documentation": "<p>Optional tags (metadata key/value pairs) to be associated with the project. For example,\n        <code>{ {\"key1\": \"value1\", \"key2\": \"value2\"} }</code>. For more information, see <a href=\"https://aws.amazon.com/answers/account-management/aws-tagging-strategies/\">AWS Tagging\n        Strategies</a>.</p>"
317                    }
318                }
319            }
320        },
321        "com.amazonaws.iot1clickprojects#CreateProjectResponse": {
322            "type": "structure",
323            "members": {}
324        },
325        "com.amazonaws.iot1clickprojects#DefaultPlacementAttributeMap": {
326            "type": "map",
327            "key": {
328                "target": "com.amazonaws.iot1clickprojects#AttributeName"
329            },
330            "value": {
331                "target": "com.amazonaws.iot1clickprojects#AttributeDefaultValue"
332            }
333        },
334        "com.amazonaws.iot1clickprojects#DeletePlacement": {
335            "type": "operation",
336            "input": {
337                "target": "com.amazonaws.iot1clickprojects#DeletePlacementRequest"
338            },
339            "output": {
340                "target": "com.amazonaws.iot1clickprojects#DeletePlacementResponse"
341            },
342            "errors": [
343                {
344                    "target": "com.amazonaws.iot1clickprojects#InternalFailureException"
345                },
346                {
347                    "target": "com.amazonaws.iot1clickprojects#InvalidRequestException"
348                },
349                {
350                    "target": "com.amazonaws.iot1clickprojects#ResourceNotFoundException"
351                },
352                {
353                    "target": "com.amazonaws.iot1clickprojects#TooManyRequestsException"
354                }
355            ],
356            "traits": {
357                "smithy.api#documentation": "<p>Deletes a placement. To delete a placement, it must not have any devices associated with\n      it.</p>\n         <note>\n            <p>When you delete a placement, all associated data becomes irretrievable.</p>\n         </note>",
358                "smithy.api#http": {
359                    "method": "DELETE",
360                    "uri": "/projects/{projectName}/placements/{placementName}",
361                    "code": 200
362                }
363            }
364        },
365        "com.amazonaws.iot1clickprojects#DeletePlacementRequest": {
366            "type": "structure",
367            "members": {
368                "placementName": {
369                    "target": "com.amazonaws.iot1clickprojects#PlacementName",
370                    "traits": {
371                        "smithy.api#documentation": "<p>The name of the empty placement to delete.</p>",
372                        "smithy.api#httpLabel": {},
373                        "smithy.api#required": {}
374                    }
375                },
376                "projectName": {
377                    "target": "com.amazonaws.iot1clickprojects#ProjectName",
378                    "traits": {
379                        "smithy.api#documentation": "<p>The project containing the empty placement to delete.</p>",
380                        "smithy.api#httpLabel": {},
381                        "smithy.api#required": {}
382                    }
383                }
384            }
385        },
386        "com.amazonaws.iot1clickprojects#DeletePlacementResponse": {
387            "type": "structure",
388            "members": {}
389        },
390        "com.amazonaws.iot1clickprojects#DeleteProject": {
391            "type": "operation",
392            "input": {
393                "target": "com.amazonaws.iot1clickprojects#DeleteProjectRequest"
394            },
395            "output": {
396                "target": "com.amazonaws.iot1clickprojects#DeleteProjectResponse"
397            },
398            "errors": [
399                {
400                    "target": "com.amazonaws.iot1clickprojects#InternalFailureException"
401                },
402                {
403                    "target": "com.amazonaws.iot1clickprojects#InvalidRequestException"
404                },
405                {
406                    "target": "com.amazonaws.iot1clickprojects#ResourceNotFoundException"
407                },
408                {
409                    "target": "com.amazonaws.iot1clickprojects#TooManyRequestsException"
410                }
411            ],
412            "traits": {
413                "smithy.api#documentation": "<p>Deletes a project. To delete a project, it must not have any placements associated with\n      it.</p>\n         <note>\n            <p>When you delete a project, all associated data becomes irretrievable.</p>\n         </note>",
414                "smithy.api#http": {
415                    "method": "DELETE",
416                    "uri": "/projects/{projectName}",
417                    "code": 200
418                }
419            }
420        },
421        "com.amazonaws.iot1clickprojects#DeleteProjectRequest": {
422            "type": "structure",
423            "members": {
424                "projectName": {
425                    "target": "com.amazonaws.iot1clickprojects#ProjectName",
426                    "traits": {
427                        "smithy.api#documentation": "<p>The name of the empty project to delete.</p>",
428                        "smithy.api#httpLabel": {},
429                        "smithy.api#required": {}
430                    }
431                }
432            }
433        },
434        "com.amazonaws.iot1clickprojects#DeleteProjectResponse": {
435            "type": "structure",
436            "members": {}
437        },
438        "com.amazonaws.iot1clickprojects#DescribePlacement": {
439            "type": "operation",
440            "input": {
441                "target": "com.amazonaws.iot1clickprojects#DescribePlacementRequest"
442            },
443            "output": {
444                "target": "com.amazonaws.iot1clickprojects#DescribePlacementResponse"
445            },
446            "errors": [
447                {
448                    "target": "com.amazonaws.iot1clickprojects#InternalFailureException"
449                },
450                {
451                    "target": "com.amazonaws.iot1clickprojects#InvalidRequestException"
452                },
453                {
454                    "target": "com.amazonaws.iot1clickprojects#ResourceNotFoundException"
455                }
456            ],
457            "traits": {
458                "smithy.api#documentation": "<p>Describes a placement in a project.</p>",
459                "smithy.api#http": {
460                    "method": "GET",
461                    "uri": "/projects/{projectName}/placements/{placementName}",
462                    "code": 200
463                }
464            }
465        },
466        "com.amazonaws.iot1clickprojects#DescribePlacementRequest": {
467            "type": "structure",
468            "members": {
469                "placementName": {
470                    "target": "com.amazonaws.iot1clickprojects#PlacementName",
471                    "traits": {
472                        "smithy.api#documentation": "<p>The name of the placement within a project.</p>",
473                        "smithy.api#httpLabel": {},
474                        "smithy.api#required": {}
475                    }
476                },
477                "projectName": {
478                    "target": "com.amazonaws.iot1clickprojects#ProjectName",
479                    "traits": {
480                        "smithy.api#documentation": "<p>The project containing the placement to be described.</p>",
481                        "smithy.api#httpLabel": {},
482                        "smithy.api#required": {}
483                    }
484                }
485            }
486        },
487        "com.amazonaws.iot1clickprojects#DescribePlacementResponse": {
488            "type": "structure",
489            "members": {
490                "placement": {
491                    "target": "com.amazonaws.iot1clickprojects#PlacementDescription",
492                    "traits": {
493                        "smithy.api#documentation": "<p>An object describing the placement.</p>",
494                        "smithy.api#required": {}
495                    }
496                }
497            }
498        },
499        "com.amazonaws.iot1clickprojects#DescribeProject": {
500            "type": "operation",
501            "input": {
502                "target": "com.amazonaws.iot1clickprojects#DescribeProjectRequest"
503            },
504            "output": {
505                "target": "com.amazonaws.iot1clickprojects#DescribeProjectResponse"
506            },
507            "errors": [
508                {
509                    "target": "com.amazonaws.iot1clickprojects#InternalFailureException"
510                },
511                {
512                    "target": "com.amazonaws.iot1clickprojects#InvalidRequestException"
513                },
514                {
515                    "target": "com.amazonaws.iot1clickprojects#ResourceNotFoundException"
516                }
517            ],
518            "traits": {
519                "smithy.api#documentation": "<p>Returns an object describing a project.</p>",
520                "smithy.api#http": {
521                    "method": "GET",
522                    "uri": "/projects/{projectName}",
523                    "code": 200
524                }
525            }
526        },
527        "com.amazonaws.iot1clickprojects#DescribeProjectRequest": {
528            "type": "structure",
529            "members": {
530                "projectName": {
531                    "target": "com.amazonaws.iot1clickprojects#ProjectName",
532                    "traits": {
533                        "smithy.api#documentation": "<p>The name of the project to be described.</p>",
534                        "smithy.api#httpLabel": {},
535                        "smithy.api#required": {}
536                    }
537                }
538            }
539        },
540        "com.amazonaws.iot1clickprojects#DescribeProjectResponse": {
541            "type": "structure",
542            "members": {
543                "project": {
544                    "target": "com.amazonaws.iot1clickprojects#ProjectDescription",
545                    "traits": {
546                        "smithy.api#documentation": "<p>An object describing the project.</p>",
547                        "smithy.api#required": {}
548                    }
549                }
550            }
551        },
552        "com.amazonaws.iot1clickprojects#Description": {
553            "type": "string",
554            "traits": {
555                "smithy.api#length": {
556                    "min": 0,
557                    "max": 500
558                }
559            }
560        },
561        "com.amazonaws.iot1clickprojects#DeviceCallbackKey": {
562            "type": "string",
563            "traits": {
564                "smithy.api#length": {
565                    "min": 1,
566                    "max": 128
567                }
568            }
569        },
570        "com.amazonaws.iot1clickprojects#DeviceCallbackOverrideMap": {
571            "type": "map",
572            "key": {
573                "target": "com.amazonaws.iot1clickprojects#DeviceCallbackKey"
574            },
575            "value": {
576                "target": "com.amazonaws.iot1clickprojects#DeviceCallbackValue"
577            }
578        },
579        "com.amazonaws.iot1clickprojects#DeviceCallbackValue": {
580            "type": "string",
581            "traits": {
582                "smithy.api#length": {
583                    "min": 0,
584                    "max": 200
585                }
586            }
587        },
588        "com.amazonaws.iot1clickprojects#DeviceId": {
589            "type": "string",
590            "traits": {
591                "smithy.api#length": {
592                    "min": 1,
593                    "max": 32
594                }
595            }
596        },
597        "com.amazonaws.iot1clickprojects#DeviceMap": {
598            "type": "map",
599            "key": {
600                "target": "com.amazonaws.iot1clickprojects#DeviceTemplateName"
601            },
602            "value": {
603                "target": "com.amazonaws.iot1clickprojects#DeviceId"
604            }
605        },
606        "com.amazonaws.iot1clickprojects#DeviceTemplate": {
607            "type": "structure",
608            "members": {
609                "deviceType": {
610                    "target": "com.amazonaws.iot1clickprojects#DeviceType",
611                    "traits": {
612                        "smithy.api#documentation": "<p>The device type, which currently must be <code>\"button\"</code>.</p>"
613                    }
614                },
615                "callbackOverrides": {
616                    "target": "com.amazonaws.iot1clickprojects#DeviceCallbackOverrideMap",
617                    "traits": {
618                        "smithy.api#documentation": "<p>An optional Lambda function to invoke instead of the default Lambda function provided by\n      the placement template.</p>"
619                    }
620                }
621            },
622            "traits": {
623                "smithy.api#documentation": "<p>An object representing a device for a placement template (see <a>PlacementTemplate</a>).</p>"
624            }
625        },
626        "com.amazonaws.iot1clickprojects#DeviceTemplateMap": {
627            "type": "map",
628            "key": {
629                "target": "com.amazonaws.iot1clickprojects#DeviceTemplateName"
630            },
631            "value": {
632                "target": "com.amazonaws.iot1clickprojects#DeviceTemplate"
633            }
634        },
635        "com.amazonaws.iot1clickprojects#DeviceTemplateName": {
636            "type": "string",
637            "traits": {
638                "smithy.api#length": {
639                    "min": 1,
640                    "max": 128
641                },
642                "smithy.api#pattern": "^[a-zA-Z0-9_-]+$"
643            }
644        },
645        "com.amazonaws.iot1clickprojects#DeviceType": {
646            "type": "string",
647            "traits": {
648                "smithy.api#length": {
649                    "min": 0,
650                    "max": 128
651                }
652            }
653        },
654        "com.amazonaws.iot1clickprojects#DisassociateDeviceFromPlacement": {
655            "type": "operation",
656            "input": {
657                "target": "com.amazonaws.iot1clickprojects#DisassociateDeviceFromPlacementRequest"
658            },
659            "output": {
660                "target": "com.amazonaws.iot1clickprojects#DisassociateDeviceFromPlacementResponse"
661            },
662            "errors": [
663                {
664                    "target": "com.amazonaws.iot1clickprojects#InternalFailureException"
665                },
666                {
667                    "target": "com.amazonaws.iot1clickprojects#InvalidRequestException"
668                },
669                {
670                    "target": "com.amazonaws.iot1clickprojects#ResourceNotFoundException"
671                },
672                {
673                    "target": "com.amazonaws.iot1clickprojects#TooManyRequestsException"
674                }
675            ],
676            "traits": {
677                "smithy.api#documentation": "<p>Removes a physical device from a placement.</p>",
678                "smithy.api#http": {
679                    "method": "DELETE",
680                    "uri": "/projects/{projectName}/placements/{placementName}/devices/{deviceTemplateName}",
681                    "code": 200
682                }
683            }
684        },
685        "com.amazonaws.iot1clickprojects#DisassociateDeviceFromPlacementRequest": {
686            "type": "structure",
687            "members": {
688                "projectName": {
689                    "target": "com.amazonaws.iot1clickprojects#ProjectName",
690                    "traits": {
691                        "smithy.api#documentation": "<p>The name of the project that contains the placement.</p>",
692                        "smithy.api#httpLabel": {},
693                        "smithy.api#required": {}
694                    }
695                },
696                "placementName": {
697                    "target": "com.amazonaws.iot1clickprojects#PlacementName",
698                    "traits": {
699                        "smithy.api#documentation": "<p>The name of the placement that the device should be removed from.</p>",
700                        "smithy.api#httpLabel": {},
701                        "smithy.api#required": {}
702                    }
703                },
704                "deviceTemplateName": {
705                    "target": "com.amazonaws.iot1clickprojects#DeviceTemplateName",
706                    "traits": {
707                        "smithy.api#documentation": "<p>The device ID that should be removed from the placement.</p>",
708                        "smithy.api#httpLabel": {},
709                        "smithy.api#required": {}
710                    }
711                }
712            }
713        },
714        "com.amazonaws.iot1clickprojects#DisassociateDeviceFromPlacementResponse": {
715            "type": "structure",
716            "members": {}
717        },
718        "com.amazonaws.iot1clickprojects#GetDevicesInPlacement": {
719            "type": "operation",
720            "input": {
721                "target": "com.amazonaws.iot1clickprojects#GetDevicesInPlacementRequest"
722            },
723            "output": {
724                "target": "com.amazonaws.iot1clickprojects#GetDevicesInPlacementResponse"
725            },
726            "errors": [
727                {
728                    "target": "com.amazonaws.iot1clickprojects#InternalFailureException"
729                },
730                {
731                    "target": "com.amazonaws.iot1clickprojects#InvalidRequestException"
732                },
733                {
734                    "target": "com.amazonaws.iot1clickprojects#ResourceNotFoundException"
735                }
736            ],
737            "traits": {
738                "smithy.api#documentation": "<p>Returns an object enumerating the devices in a placement.</p>",
739                "smithy.api#http": {
740                    "method": "GET",
741                    "uri": "/projects/{projectName}/placements/{placementName}/devices",
742                    "code": 200
743                }
744            }
745        },
746        "com.amazonaws.iot1clickprojects#GetDevicesInPlacementRequest": {
747            "type": "structure",
748            "members": {
749                "projectName": {
750                    "target": "com.amazonaws.iot1clickprojects#ProjectName",
751                    "traits": {
752                        "smithy.api#documentation": "<p>The name of the project containing the placement.</p>",
753                        "smithy.api#httpLabel": {},
754                        "smithy.api#required": {}
755                    }
756                },
757                "placementName": {
758                    "target": "com.amazonaws.iot1clickprojects#PlacementName",
759                    "traits": {
760                        "smithy.api#documentation": "<p>The name of the placement to get the devices from.</p>",
761                        "smithy.api#httpLabel": {},
762                        "smithy.api#required": {}
763                    }
764                }
765            }
766        },
767        "com.amazonaws.iot1clickprojects#GetDevicesInPlacementResponse": {
768            "type": "structure",
769            "members": {
770                "devices": {
771                    "target": "com.amazonaws.iot1clickprojects#DeviceMap",
772                    "traits": {
773                        "smithy.api#documentation": "<p>An object containing the devices (zero or more) within the placement.</p>",
774                        "smithy.api#required": {}
775                    }
776                }
777            }
778        },
779        "com.amazonaws.iot1clickprojects#InternalFailureException": {
780            "type": "structure",
781            "members": {
782                "code": {
783                    "target": "com.amazonaws.iot1clickprojects#Code",
784                    "traits": {
785                        "smithy.api#required": {}
786                    }
787                },
788                "message": {
789                    "target": "com.amazonaws.iot1clickprojects#Message",
790                    "traits": {
791                        "smithy.api#required": {}
792                    }
793                }
794            },
795            "traits": {
796                "smithy.api#documentation": "<p></p>",
797                "smithy.api#error": "server",
798                "smithy.api#httpError": 500
799            }
800        },
801        "com.amazonaws.iot1clickprojects#InvalidRequestException": {
802            "type": "structure",
803            "members": {
804                "code": {
805                    "target": "com.amazonaws.iot1clickprojects#Code",
806                    "traits": {
807                        "smithy.api#required": {}
808                    }
809                },
810                "message": {
811                    "target": "com.amazonaws.iot1clickprojects#Message",
812                    "traits": {
813                        "smithy.api#required": {}
814                    }
815                }
816            },
817            "traits": {
818                "smithy.api#documentation": "<p></p>",
819                "smithy.api#error": "client",
820                "smithy.api#httpError": 400
821            }
822        },
823        "com.amazonaws.iot1clickprojects#ListPlacements": {
824            "type": "operation",
825            "input": {
826                "target": "com.amazonaws.iot1clickprojects#ListPlacementsRequest"
827            },
828            "output": {
829                "target": "com.amazonaws.iot1clickprojects#ListPlacementsResponse"
830            },
831            "errors": [
832                {
833                    "target": "com.amazonaws.iot1clickprojects#InternalFailureException"
834                },
835                {
836                    "target": "com.amazonaws.iot1clickprojects#InvalidRequestException"
837                },
838                {
839                    "target": "com.amazonaws.iot1clickprojects#ResourceNotFoundException"
840                }
841            ],
842            "traits": {
843                "smithy.api#documentation": "<p>Lists the placement(s) of a project.</p>",
844                "smithy.api#http": {
845                    "method": "GET",
846                    "uri": "/projects/{projectName}/placements",
847                    "code": 200
848                },
849                "smithy.api#paginated": {
850                    "inputToken": "nextToken",
851                    "outputToken": "nextToken",
852                    "items": "placements",
853                    "pageSize": "maxResults"
854                }
855            }
856        },
857        "com.amazonaws.iot1clickprojects#ListPlacementsRequest": {
858            "type": "structure",
859            "members": {
860                "projectName": {
861                    "target": "com.amazonaws.iot1clickprojects#ProjectName",
862                    "traits": {
863                        "smithy.api#documentation": "<p>The project containing the placements to be listed.</p>",
864                        "smithy.api#httpLabel": {},
865                        "smithy.api#required": {}
866                    }
867                },
868                "nextToken": {
869                    "target": "com.amazonaws.iot1clickprojects#NextToken",
870                    "traits": {
871                        "smithy.api#documentation": "<p>The token to retrieve the next set of results.</p>",
872                        "smithy.api#httpQuery": "nextToken"
873                    }
874                },
875                "maxResults": {
876                    "target": "com.amazonaws.iot1clickprojects#MaxResults",
877                    "traits": {
878                        "smithy.api#documentation": "<p>The maximum number of results to return per request. If not set, a default value of 100 is\n      used.</p>",
879                        "smithy.api#httpQuery": "maxResults"
880                    }
881                }
882            }
883        },
884        "com.amazonaws.iot1clickprojects#ListPlacementsResponse": {
885            "type": "structure",
886            "members": {
887                "placements": {
888                    "target": "com.amazonaws.iot1clickprojects#PlacementSummaryList",
889                    "traits": {
890                        "smithy.api#documentation": "<p>An object listing the requested placements.</p>",
891                        "smithy.api#required": {}
892                    }
893                },
894                "nextToken": {
895                    "target": "com.amazonaws.iot1clickprojects#NextToken",
896                    "traits": {
897                        "smithy.api#documentation": "<p>The token used to retrieve the next set of results - will be effectively empty if there\n      are no further results.</p>"
898                    }
899                }
900            }
901        },
902        "com.amazonaws.iot1clickprojects#ListProjects": {
903            "type": "operation",
904            "input": {
905                "target": "com.amazonaws.iot1clickprojects#ListProjectsRequest"
906            },
907            "output": {
908                "target": "com.amazonaws.iot1clickprojects#ListProjectsResponse"
909            },
910            "errors": [
911                {
912                    "target": "com.amazonaws.iot1clickprojects#InternalFailureException"
913                },
914                {
915                    "target": "com.amazonaws.iot1clickprojects#InvalidRequestException"
916                }
917            ],
918            "traits": {
919                "smithy.api#documentation": "<p>Lists the AWS IoT 1-Click project(s) associated with your AWS account and region.</p>",
920                "smithy.api#http": {
921                    "method": "GET",
922                    "uri": "/projects",
923                    "code": 200
924                },
925                "smithy.api#paginated": {
926                    "inputToken": "nextToken",
927                    "outputToken": "nextToken",
928                    "items": "projects",
929                    "pageSize": "maxResults"
930                }
931            }
932        },
933        "com.amazonaws.iot1clickprojects#ListProjectsRequest": {
934            "type": "structure",
935            "members": {
936                "nextToken": {
937                    "target": "com.amazonaws.iot1clickprojects#NextToken",
938                    "traits": {
939                        "smithy.api#documentation": "<p>The token to retrieve the next set of results.</p>",
940                        "smithy.api#httpQuery": "nextToken"
941                    }
942                },
943                "maxResults": {
944                    "target": "com.amazonaws.iot1clickprojects#MaxResults",
945                    "traits": {
946                        "smithy.api#documentation": "<p>The maximum number of results to return per request. If not set, a default value of 100 is\n      used.</p>",
947                        "smithy.api#httpQuery": "maxResults"
948                    }
949                }
950            }
951        },
952        "com.amazonaws.iot1clickprojects#ListProjectsResponse": {
953            "type": "structure",
954            "members": {
955                "projects": {
956                    "target": "com.amazonaws.iot1clickprojects#ProjectSummaryList",
957                    "traits": {
958                        "smithy.api#documentation": "<p>An object containing the list of projects.</p>",
959                        "smithy.api#required": {}
960                    }
961                },
962                "nextToken": {
963                    "target": "com.amazonaws.iot1clickprojects#NextToken",
964                    "traits": {
965                        "smithy.api#documentation": "<p>The token used to retrieve the next set of results - will be effectively empty if there\n      are no further results.</p>"
966                    }
967                }
968            }
969        },
970        "com.amazonaws.iot1clickprojects#ListTagsForResource": {
971            "type": "operation",
972            "input": {
973                "target": "com.amazonaws.iot1clickprojects#ListTagsForResourceRequest"
974            },
975            "output": {
976                "target": "com.amazonaws.iot1clickprojects#ListTagsForResourceResponse"
977            },
978            "errors": [
979                {
980                    "target": "com.amazonaws.iot1clickprojects#InternalFailureException"
981                },
982                {
983                    "target": "com.amazonaws.iot1clickprojects#InvalidRequestException"
984                },
985                {
986                    "target": "com.amazonaws.iot1clickprojects#ResourceNotFoundException"
987                }
988            ],
989            "traits": {
990                "smithy.api#documentation": "<p>Lists the tags (metadata key/value pairs) which you have assigned to the resource.</p>",
991                "smithy.api#http": {
992                    "method": "GET",
993                    "uri": "/tags/{resourceArn}",
994                    "code": 200
995                }
996            }
997        },
998        "com.amazonaws.iot1clickprojects#ListTagsForResourceRequest": {
999            "type": "structure",
1000            "members": {
1001                "resourceArn": {
1002                    "target": "com.amazonaws.iot1clickprojects#ProjectArn",
1003                    "traits": {
1004                        "smithy.api#documentation": "<p>The ARN of the resource whose tags you want to list.</p>",
1005                        "smithy.api#httpLabel": {},
1006                        "smithy.api#required": {}
1007                    }
1008                }
1009            }
1010        },
1011        "com.amazonaws.iot1clickprojects#ListTagsForResourceResponse": {
1012            "type": "structure",
1013            "members": {
1014                "tags": {
1015                    "target": "com.amazonaws.iot1clickprojects#TagMap",
1016                    "traits": {
1017                        "smithy.api#documentation": "<p>The tags (metadata key/value pairs) which you have assigned to the resource.</p>"
1018                    }
1019                }
1020            }
1021        },
1022        "com.amazonaws.iot1clickprojects#MaxResults": {
1023            "type": "integer",
1024            "traits": {
1025                "smithy.api#box": {},
1026                "smithy.api#range": {
1027                    "min": 1,
1028                    "max": 250
1029                }
1030            }
1031        },
1032        "com.amazonaws.iot1clickprojects#Message": {
1033            "type": "string"
1034        },
1035        "com.amazonaws.iot1clickprojects#NextToken": {
1036            "type": "string",
1037            "traits": {
1038                "smithy.api#length": {
1039                    "min": 1,
1040                    "max": 1024
1041                }
1042            }
1043        },
1044        "com.amazonaws.iot1clickprojects#PlacementAttributeMap": {
1045            "type": "map",
1046            "key": {
1047                "target": "com.amazonaws.iot1clickprojects#AttributeName"
1048            },
1049            "value": {
1050                "target": "com.amazonaws.iot1clickprojects#AttributeValue"
1051            }
1052        },
1053        "com.amazonaws.iot1clickprojects#PlacementDescription": {
1054            "type": "structure",
1055            "members": {
1056                "projectName": {
1057                    "target": "com.amazonaws.iot1clickprojects#ProjectName",
1058                    "traits": {
1059                        "smithy.api#documentation": "<p>The name of the project containing the placement.</p>",
1060                        "smithy.api#required": {}
1061                    }
1062                },
1063                "placementName": {
1064                    "target": "com.amazonaws.iot1clickprojects#PlacementName",
1065                    "traits": {
1066                        "smithy.api#documentation": "<p>The name of the placement.</p>",
1067                        "smithy.api#required": {}
1068                    }
1069                },
1070                "attributes": {
1071                    "target": "com.amazonaws.iot1clickprojects#PlacementAttributeMap",
1072                    "traits": {
1073                        "smithy.api#documentation": "<p>The user-defined attributes associated with the placement.</p>",
1074                        "smithy.api#required": {}
1075                    }
1076                },
1077                "createdDate": {
1078                    "target": "com.amazonaws.iot1clickprojects#Time",
1079                    "traits": {
1080                        "smithy.api#documentation": "<p>The date when the placement was initially created, in UNIX epoch time format.</p>",
1081                        "smithy.api#required": {}
1082                    }
1083                },
1084                "updatedDate": {
1085                    "target": "com.amazonaws.iot1clickprojects#Time",
1086                    "traits": {
1087                        "smithy.api#documentation": "<p>The date when the placement was last updated, in UNIX epoch time format. If the placement\n      was not updated, then <code>createdDate</code> and <code>updatedDate</code> are the\n      same.</p>",
1088                        "smithy.api#required": {}
1089                    }
1090                }
1091            },
1092            "traits": {
1093                "smithy.api#documentation": "<p>An object describing a project's placement.</p>"
1094            }
1095        },
1096        "com.amazonaws.iot1clickprojects#PlacementName": {
1097            "type": "string",
1098            "traits": {
1099                "smithy.api#length": {
1100                    "min": 1,
1101                    "max": 128
1102                },
1103                "smithy.api#pattern": "^[a-zA-Z0-9_-]+$"
1104            }
1105        },
1106        "com.amazonaws.iot1clickprojects#PlacementSummary": {
1107            "type": "structure",
1108            "members": {
1109                "projectName": {
1110                    "target": "com.amazonaws.iot1clickprojects#ProjectName",
1111                    "traits": {
1112                        "smithy.api#documentation": "<p>The name of the project containing the placement.</p>",
1113                        "smithy.api#required": {}
1114                    }
1115                },
1116                "placementName": {
1117                    "target": "com.amazonaws.iot1clickprojects#PlacementName",
1118                    "traits": {
1119                        "smithy.api#documentation": "<p>The name of the placement being summarized.</p>",
1120                        "smithy.api#required": {}
1121                    }
1122                },
1123                "createdDate": {
1124                    "target": "com.amazonaws.iot1clickprojects#Time",
1125                    "traits": {
1126                        "smithy.api#documentation": "<p>The date when the placement was originally created, in UNIX epoch time format.</p>",
1127                        "smithy.api#required": {}
1128                    }
1129                },
1130                "updatedDate": {
1131                    "target": "com.amazonaws.iot1clickprojects#Time",
1132                    "traits": {
1133                        "smithy.api#documentation": "<p>The date when the placement was last updated, in UNIX epoch time format. If the placement\n      was not updated, then <code>createdDate</code> and <code>updatedDate</code> are the\n      same.</p>",
1134                        "smithy.api#required": {}
1135                    }
1136                }
1137            },
1138            "traits": {
1139                "smithy.api#documentation": "<p>An object providing summary information for a particular placement.</p>"
1140            }
1141        },
1142        "com.amazonaws.iot1clickprojects#PlacementSummaryList": {
1143            "type": "list",
1144            "member": {
1145                "target": "com.amazonaws.iot1clickprojects#PlacementSummary"
1146            }
1147        },
1148        "com.amazonaws.iot1clickprojects#PlacementTemplate": {
1149            "type": "structure",
1150            "members": {
1151                "defaultAttributes": {
1152                    "target": "com.amazonaws.iot1clickprojects#DefaultPlacementAttributeMap",
1153                    "traits": {
1154                        "smithy.api#documentation": "<p>The default attributes (key/value pairs) to be applied to all placements using this\n      template.</p>"
1155                    }
1156                },
1157                "deviceTemplates": {
1158                    "target": "com.amazonaws.iot1clickprojects#DeviceTemplateMap",
1159                    "traits": {
1160                        "smithy.api#documentation": "<p>An object specifying the <a>DeviceTemplate</a> for all placements using this\n        (<a>PlacementTemplate</a>) template.</p>"
1161                    }
1162                }
1163            },
1164            "traits": {
1165                "smithy.api#documentation": "<p>An object defining the template for a placement.</p>"
1166            }
1167        },
1168        "com.amazonaws.iot1clickprojects#ProjectArn": {
1169            "type": "string",
1170            "traits": {
1171                "smithy.api#pattern": "^arn:aws:iot1click:[A-Za-z0-9_/.-]{0,63}:\\d+:projects/[0-9A-Za-z_-]{1,128}$"
1172            }
1173        },
1174        "com.amazonaws.iot1clickprojects#ProjectDescription": {
1175            "type": "structure",
1176            "members": {
1177                "arn": {
1178                    "target": "com.amazonaws.iot1clickprojects#ProjectArn",
1179                    "traits": {
1180                        "smithy.api#documentation": "<p>The ARN of the project.</p>"
1181                    }
1182                },
1183                "projectName": {
1184                    "target": "com.amazonaws.iot1clickprojects#ProjectName",
1185                    "traits": {
1186                        "smithy.api#documentation": "<p>The name of the project for which to obtain information from.</p>",
1187                        "smithy.api#required": {}
1188                    }
1189                },
1190                "description": {
1191                    "target": "com.amazonaws.iot1clickprojects#Description",
1192                    "traits": {
1193                        "smithy.api#documentation": "<p>The description of the project.</p>"
1194                    }
1195                },
1196                "createdDate": {
1197                    "target": "com.amazonaws.iot1clickprojects#Time",
1198                    "traits": {
1199                        "smithy.api#documentation": "<p>The date when the project was originally created, in UNIX epoch time format.</p>",
1200                        "smithy.api#required": {}
1201                    }
1202                },
1203                "updatedDate": {
1204                    "target": "com.amazonaws.iot1clickprojects#Time",
1205                    "traits": {
1206                        "smithy.api#documentation": "<p>The date when the project was last updated, in UNIX epoch time format. If the project was\n      not updated, then <code>createdDate</code> and <code>updatedDate</code> are the same.</p>",
1207                        "smithy.api#required": {}
1208                    }
1209                },
1210                "placementTemplate": {
1211                    "target": "com.amazonaws.iot1clickprojects#PlacementTemplate",
1212                    "traits": {
1213                        "smithy.api#documentation": "<p>An object describing the project's placement specifications.</p>"
1214                    }
1215                },
1216                "tags": {
1217                    "target": "com.amazonaws.iot1clickprojects#TagMap",
1218                    "traits": {
1219                        "smithy.api#documentation": "<p>The tags (metadata key/value pairs) associated with the project.</p>"
1220                    }
1221                }
1222            },
1223            "traits": {
1224                "smithy.api#documentation": "<p>An object providing detailed information for a particular project associated with an AWS\n      account and region.</p>"
1225            }
1226        },
1227        "com.amazonaws.iot1clickprojects#ProjectName": {
1228            "type": "string",
1229            "traits": {
1230                "smithy.api#length": {
1231                    "min": 1,
1232                    "max": 128
1233                },
1234                "smithy.api#pattern": "^[0-9A-Za-z_-]+$"
1235            }
1236        },
1237        "com.amazonaws.iot1clickprojects#ProjectSummary": {
1238            "type": "structure",
1239            "members": {
1240                "arn": {
1241                    "target": "com.amazonaws.iot1clickprojects#ProjectArn",
1242                    "traits": {
1243                        "smithy.api#documentation": "<p>The ARN of the project.</p>"
1244                    }
1245                },
1246                "projectName": {
1247                    "target": "com.amazonaws.iot1clickprojects#ProjectName",
1248                    "traits": {
1249                        "smithy.api#documentation": "<p>The name of the project being summarized.</p>",
1250                        "smithy.api#required": {}
1251                    }
1252                },
1253                "createdDate": {
1254                    "target": "com.amazonaws.iot1clickprojects#Time",
1255                    "traits": {
1256                        "smithy.api#documentation": "<p>The date when the project was originally created, in UNIX epoch time format.</p>",
1257                        "smithy.api#required": {}
1258                    }
1259                },
1260                "updatedDate": {
1261                    "target": "com.amazonaws.iot1clickprojects#Time",
1262                    "traits": {
1263                        "smithy.api#documentation": "<p>The date when the project was last updated, in UNIX epoch time format. If the project was\n      not updated, then <code>createdDate</code> and <code>updatedDate</code> are the same.</p>",
1264                        "smithy.api#required": {}
1265                    }
1266                },
1267                "tags": {
1268                    "target": "com.amazonaws.iot1clickprojects#TagMap",
1269                    "traits": {
1270                        "smithy.api#documentation": "<p>The tags (metadata key/value pairs) associated with the project.</p>"
1271                    }
1272                }
1273            },
1274            "traits": {
1275                "smithy.api#documentation": "<p>An object providing summary information for a particular project for an associated AWS\n      account and region.</p>"
1276            }
1277        },
1278        "com.amazonaws.iot1clickprojects#ProjectSummaryList": {
1279            "type": "list",
1280            "member": {
1281                "target": "com.amazonaws.iot1clickprojects#ProjectSummary"
1282            }
1283        },
1284        "com.amazonaws.iot1clickprojects#ResourceConflictException": {
1285            "type": "structure",
1286            "members": {
1287                "code": {
1288                    "target": "com.amazonaws.iot1clickprojects#Code",
1289                    "traits": {
1290                        "smithy.api#required": {}
1291                    }
1292                },
1293                "message": {
1294                    "target": "com.amazonaws.iot1clickprojects#Message",
1295                    "traits": {
1296                        "smithy.api#required": {}
1297                    }
1298                }
1299            },
1300            "traits": {
1301                "smithy.api#documentation": "<p></p>",
1302                "smithy.api#error": "client",
1303                "smithy.api#httpError": 409
1304            }
1305        },
1306        "com.amazonaws.iot1clickprojects#ResourceNotFoundException": {
1307            "type": "structure",
1308            "members": {
1309                "code": {
1310                    "target": "com.amazonaws.iot1clickprojects#Code",
1311                    "traits": {
1312                        "smithy.api#required": {}
1313                    }
1314                },
1315                "message": {
1316                    "target": "com.amazonaws.iot1clickprojects#Message",
1317                    "traits": {
1318                        "smithy.api#required": {}
1319                    }
1320                }
1321            },
1322            "traits": {
1323                "smithy.api#documentation": "<p></p>",
1324                "smithy.api#error": "client",
1325                "smithy.api#httpError": 404
1326            }
1327        },
1328        "com.amazonaws.iot1clickprojects#TagKey": {
1329            "type": "string",
1330            "traits": {
1331                "smithy.api#length": {
1332                    "min": 1,
1333                    "max": 128
1334                },
1335                "smithy.api#pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$"
1336            }
1337        },
1338        "com.amazonaws.iot1clickprojects#TagKeyList": {
1339            "type": "list",
1340            "member": {
1341                "target": "com.amazonaws.iot1clickprojects#TagKey"
1342            },
1343            "traits": {
1344                "smithy.api#length": {
1345                    "min": 1,
1346                    "max": 50
1347                }
1348            }
1349        },
1350        "com.amazonaws.iot1clickprojects#TagMap": {
1351            "type": "map",
1352            "key": {
1353                "target": "com.amazonaws.iot1clickprojects#TagKey"
1354            },
1355            "value": {
1356                "target": "com.amazonaws.iot1clickprojects#TagValue"
1357            },
1358            "traits": {
1359                "smithy.api#length": {
1360                    "min": 1,
1361                    "max": 50
1362                }
1363            }
1364        },
1365        "com.amazonaws.iot1clickprojects#TagResource": {
1366            "type": "operation",
1367            "input": {
1368                "target": "com.amazonaws.iot1clickprojects#TagResourceRequest"
1369            },
1370            "output": {
1371                "target": "com.amazonaws.iot1clickprojects#TagResourceResponse"
1372            },
1373            "errors": [
1374                {
1375                    "target": "com.amazonaws.iot1clickprojects#InternalFailureException"
1376                },
1377                {
1378                    "target": "com.amazonaws.iot1clickprojects#InvalidRequestException"
1379                },
1380                {
1381                    "target": "com.amazonaws.iot1clickprojects#ResourceNotFoundException"
1382                }
1383            ],
1384            "traits": {
1385                "smithy.api#documentation": "<p>Creates or modifies tags for a resource. Tags are key/value pairs (metadata) that can be\n      used to manage a resource. For more information, see <a href=\"https://aws.amazon.com/answers/account-management/aws-tagging-strategies/\">AWS Tagging\n        Strategies</a>.</p>",
1386                "smithy.api#http": {
1387                    "method": "POST",
1388                    "uri": "/tags/{resourceArn}",
1389                    "code": 200
1390                }
1391            }
1392        },
1393        "com.amazonaws.iot1clickprojects#TagResourceRequest": {
1394            "type": "structure",
1395            "members": {
1396                "resourceArn": {
1397                    "target": "com.amazonaws.iot1clickprojects#ProjectArn",
1398                    "traits": {
1399                        "smithy.api#documentation": "<p>The ARN of the resouce for which tag(s) should be added or modified.</p>",
1400                        "smithy.api#httpLabel": {},
1401                        "smithy.api#required": {}
1402                    }
1403                },
1404                "tags": {
1405                    "target": "com.amazonaws.iot1clickprojects#TagMap",
1406                    "traits": {
1407                        "smithy.api#documentation": "<p>The new or modifying tag(s) for the resource. 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>",
1408                        "smithy.api#required": {}
1409                    }
1410                }
1411            }
1412        },
1413        "com.amazonaws.iot1clickprojects#TagResourceResponse": {
1414            "type": "structure",
1415            "members": {}
1416        },
1417        "com.amazonaws.iot1clickprojects#TagValue": {
1418            "type": "string",
1419            "traits": {
1420                "smithy.api#length": {
1421                    "min": 0,
1422                    "max": 256
1423                }
1424            }
1425        },
1426        "com.amazonaws.iot1clickprojects#Time": {
1427            "type": "timestamp"
1428        },
1429        "com.amazonaws.iot1clickprojects#TooManyRequestsException": {
1430            "type": "structure",
1431            "members": {
1432                "code": {
1433                    "target": "com.amazonaws.iot1clickprojects#Code",
1434                    "traits": {
1435                        "smithy.api#required": {}
1436                    }
1437                },
1438                "message": {
1439                    "target": "com.amazonaws.iot1clickprojects#Message",
1440                    "traits": {
1441                        "smithy.api#required": {}
1442                    }
1443                }
1444            },
1445            "traits": {
1446                "smithy.api#documentation": "<p></p>",
1447                "smithy.api#error": "client",
1448                "smithy.api#httpError": 429
1449            }
1450        },
1451        "com.amazonaws.iot1clickprojects#UntagResource": {
1452            "type": "operation",
1453            "input": {
1454                "target": "com.amazonaws.iot1clickprojects#UntagResourceRequest"
1455            },
1456            "output": {
1457                "target": "com.amazonaws.iot1clickprojects#UntagResourceResponse"
1458            },
1459            "errors": [
1460                {
1461                    "target": "com.amazonaws.iot1clickprojects#InternalFailureException"
1462                },
1463                {
1464                    "target": "com.amazonaws.iot1clickprojects#InvalidRequestException"
1465                },
1466                {
1467                    "target": "com.amazonaws.iot1clickprojects#ResourceNotFoundException"
1468                }
1469            ],
1470            "traits": {
1471                "smithy.api#documentation": "<p>Removes one or more tags (metadata key/value pairs) from a resource.</p>",
1472                "smithy.api#http": {
1473                    "method": "DELETE",
1474                    "uri": "/tags/{resourceArn}",
1475                    "code": 200
1476                }
1477            }
1478        },
1479        "com.amazonaws.iot1clickprojects#UntagResourceRequest": {
1480            "type": "structure",
1481            "members": {
1482                "resourceArn": {
1483                    "target": "com.amazonaws.iot1clickprojects#ProjectArn",
1484                    "traits": {
1485                        "smithy.api#documentation": "<p>The ARN of the resource whose tag you want to remove.</p>",
1486                        "smithy.api#httpLabel": {},
1487                        "smithy.api#required": {}
1488                    }
1489                },
1490                "tagKeys": {
1491                    "target": "com.amazonaws.iot1clickprojects#TagKeyList",
1492                    "traits": {
1493                        "smithy.api#documentation": "<p>The keys of those tags which you want to remove.</p>",
1494                        "smithy.api#httpQuery": "tagKeys",
1495                        "smithy.api#required": {}
1496                    }
1497                }
1498            }
1499        },
1500        "com.amazonaws.iot1clickprojects#UntagResourceResponse": {
1501            "type": "structure",
1502            "members": {}
1503        },
1504        "com.amazonaws.iot1clickprojects#UpdatePlacement": {
1505            "type": "operation",
1506            "input": {
1507                "target": "com.amazonaws.iot1clickprojects#UpdatePlacementRequest"
1508            },
1509            "output": {
1510                "target": "com.amazonaws.iot1clickprojects#UpdatePlacementResponse"
1511            },
1512            "errors": [
1513                {
1514                    "target": "com.amazonaws.iot1clickprojects#InternalFailureException"
1515                },
1516                {
1517                    "target": "com.amazonaws.iot1clickprojects#InvalidRequestException"
1518                },
1519                {
1520                    "target": "com.amazonaws.iot1clickprojects#ResourceNotFoundException"
1521                },
1522                {
1523                    "target": "com.amazonaws.iot1clickprojects#TooManyRequestsException"
1524                }
1525            ],
1526            "traits": {
1527                "smithy.api#documentation": "<p>Updates a placement with the given attributes. To clear an attribute, pass an empty value\n      (i.e., \"\").</p>",
1528                "smithy.api#http": {
1529                    "method": "PUT",
1530                    "uri": "/projects/{projectName}/placements/{placementName}",
1531                    "code": 200
1532                }
1533            }
1534        },
1535        "com.amazonaws.iot1clickprojects#UpdatePlacementRequest": {
1536            "type": "structure",
1537            "members": {
1538                "placementName": {
1539                    "target": "com.amazonaws.iot1clickprojects#PlacementName",
1540                    "traits": {
1541                        "smithy.api#documentation": "<p>The name of the placement to update.</p>",
1542                        "smithy.api#httpLabel": {},
1543                        "smithy.api#required": {}
1544                    }
1545                },
1546                "projectName": {
1547                    "target": "com.amazonaws.iot1clickprojects#ProjectName",
1548                    "traits": {
1549                        "smithy.api#documentation": "<p>The name of the project containing the placement to be updated.</p>",
1550                        "smithy.api#httpLabel": {},
1551                        "smithy.api#required": {}
1552                    }
1553                },
1554                "attributes": {
1555                    "target": "com.amazonaws.iot1clickprojects#PlacementAttributeMap",
1556                    "traits": {
1557                        "smithy.api#documentation": "<p>The user-defined object of attributes used to update the placement. The maximum number of\n      key/value pairs is 50.</p>"
1558                    }
1559                }
1560            }
1561        },
1562        "com.amazonaws.iot1clickprojects#UpdatePlacementResponse": {
1563            "type": "structure",
1564            "members": {}
1565        },
1566        "com.amazonaws.iot1clickprojects#UpdateProject": {
1567            "type": "operation",
1568            "input": {
1569                "target": "com.amazonaws.iot1clickprojects#UpdateProjectRequest"
1570            },
1571            "output": {
1572                "target": "com.amazonaws.iot1clickprojects#UpdateProjectResponse"
1573            },
1574            "errors": [
1575                {
1576                    "target": "com.amazonaws.iot1clickprojects#InternalFailureException"
1577                },
1578                {
1579                    "target": "com.amazonaws.iot1clickprojects#InvalidRequestException"
1580                },
1581                {
1582                    "target": "com.amazonaws.iot1clickprojects#ResourceNotFoundException"
1583                },
1584                {
1585                    "target": "com.amazonaws.iot1clickprojects#TooManyRequestsException"
1586                }
1587            ],
1588            "traits": {
1589                "smithy.api#documentation": "<p>Updates a project associated with your AWS account and region. With the exception of\n      device template names, you can pass just the values that need to be updated because the update\n      request will change only the values that are provided. To clear a value, pass the empty string\n      (i.e., <code>\"\"</code>).</p>",
1590                "smithy.api#http": {
1591                    "method": "PUT",
1592                    "uri": "/projects/{projectName}",
1593                    "code": 200
1594                }
1595            }
1596        },
1597        "com.amazonaws.iot1clickprojects#UpdateProjectRequest": {
1598            "type": "structure",
1599            "members": {
1600                "projectName": {
1601                    "target": "com.amazonaws.iot1clickprojects#ProjectName",
1602                    "traits": {
1603                        "smithy.api#documentation": "<p>The name of the project to be updated.</p>",
1604                        "smithy.api#httpLabel": {},
1605                        "smithy.api#required": {}
1606                    }
1607                },
1608                "description": {
1609                    "target": "com.amazonaws.iot1clickprojects#Description",
1610                    "traits": {
1611                        "smithy.api#documentation": "<p>An optional user-defined description for the project.</p>"
1612                    }
1613                },
1614                "placementTemplate": {
1615                    "target": "com.amazonaws.iot1clickprojects#PlacementTemplate",
1616                    "traits": {
1617                        "smithy.api#documentation": "<p>An object defining the project update. Once a project has been created, you cannot add\n      device template names to the project. However, for a given <code>placementTemplate</code>, you\n      can update the associated <code>callbackOverrides</code> for the device definition using this\n      API.</p>"
1618                    }
1619                }
1620            }
1621        },
1622        "com.amazonaws.iot1clickprojects#UpdateProjectResponse": {
1623            "type": "structure",
1624            "members": {}
1625        }
1626    }
1627}
1628