{
  "openapi": "3.0.0",
  "info": {
    "version": "2018-05-14",
    "x-release": "v4",
    "title": "AWS IoT 1-Click Projects Service",
    "description": "The AWS IoT 1-Click Projects API Reference",
    "x-logo": {
      "url": "https://api.apis.guru/v2/cache/logo/https_twitter.com_awscloud_profile_image.png",
      "backgroundColor": "#FFFFFF"
    },
    "termsOfService": "https://aws.amazon.com/service-terms/",
    "contact": {
      "name": "Mike Ralphson",
      "email": "mike.ralphson@gmail.com",
      "url": "https://github.com/mermade/aws2openapi",
      "x-twitter": "PermittedSoc"
    },
    "license": {
      "name": "Apache 2.0 License",
      "url": "http://www.apache.org/licenses/"
    },
    "x-providerName": "amazonaws.com",
    "x-serviceName": "iot1click-projects",
    "x-aws-signingName": "iot1click",
    "x-origin": [
      {
        "contentType": "application/json",
        "url": "https://raw.githubusercontent.com/aws/aws-sdk-js/master/apis/iot1click-projects-2018-05-14.normal.json",
        "converter": {
          "url": "https://github.com/mermade/aws2openapi",
          "version": "1.0.0"
        },
        "x-apisguru-driver": "external"
      }
    ],
    "x-apiClientRegistration": {
      "url": "https://portal.aws.amazon.com/gp/aws/developer/registration/index.html?nc2=h_ct"
    },
    "x-apisguru-categories": [
      "cloud"
    ],
    "x-preferred": true
  },
  "externalDocs": {
    "description": "Amazon Web Services documentation",
    "url": "https://docs.aws.amazon.com/iot1click/"
  },
  "servers": [
    {
      "url": "http://projects.iot1click.{region}.amazonaws.com",
      "variables": {
        "region": {
          "description": "The AWS region",
          "enum": [
            "us-east-1",
            "us-east-2",
            "us-west-1",
            "us-west-2",
            "us-gov-west-1",
            "us-gov-east-1",
            "ca-central-1",
            "eu-north-1",
            "eu-west-1",
            "eu-west-2",
            "eu-west-3",
            "eu-central-1",
            "eu-south-1",
            "af-south-1",
            "ap-northeast-1",
            "ap-northeast-2",
            "ap-northeast-3",
            "ap-southeast-1",
            "ap-southeast-2",
            "ap-east-1",
            "ap-south-1",
            "sa-east-1",
            "me-south-1"
          ],
          "default": "us-east-1"
        }
      },
      "description": "The AWS IoT 1-Click Projects multi-region endpoint"
    },
    {
      "url": "https://projects.iot1click.{region}.amazonaws.com",
      "variables": {
        "region": {
          "description": "The AWS region",
          "enum": [
            "us-east-1",
            "us-east-2",
            "us-west-1",
            "us-west-2",
            "us-gov-west-1",
            "us-gov-east-1",
            "ca-central-1",
            "eu-north-1",
            "eu-west-1",
            "eu-west-2",
            "eu-west-3",
            "eu-central-1",
            "eu-south-1",
            "af-south-1",
            "ap-northeast-1",
            "ap-northeast-2",
            "ap-northeast-3",
            "ap-southeast-1",
            "ap-southeast-2",
            "ap-east-1",
            "ap-south-1",
            "sa-east-1",
            "me-south-1"
          ],
          "default": "us-east-1"
        }
      },
      "description": "The AWS IoT 1-Click Projects multi-region endpoint"
    },
    {
      "url": "http://projects.iot1click.{region}.amazonaws.com.cn",
      "variables": {
        "region": {
          "description": "The AWS region",
          "enum": [
            "cn-north-1",
            "cn-northwest-1"
          ],
          "default": "cn-north-1"
        }
      },
      "description": "The AWS IoT 1-Click Projects endpoint for China (Beijing) and China (Ningxia)"
    },
    {
      "url": "https://projects.iot1click.{region}.amazonaws.com.cn",
      "variables": {
        "region": {
          "description": "The AWS region",
          "enum": [
            "cn-north-1",
            "cn-northwest-1"
          ],
          "default": "cn-north-1"
        }
      },
      "description": "The AWS IoT 1-Click Projects endpoint for China (Beijing) and China (Ningxia)"
    }
  ],
  "x-hasEquivalentPaths": true,
  "paths": {
    "/projects/{projectName}/placements/{placementName}/devices/{deviceTemplateName}": {
      "put": {
        "operationId": "AssociateDeviceWithPlacement",
        "description": "Associates a physical device with a placement.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssociateDeviceWithPlacementResponse"
                }
              }
            }
          },
          "480": {
            "description": "InternalFailureException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalFailureException"
                }
              }
            }
          },
          "481": {
            "description": "InvalidRequestException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestException"
                }
              }
            }
          },
          "482": {
            "description": "ResourceConflictException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceConflictException"
                }
              }
            }
          },
          "483": {
            "description": "ResourceNotFoundException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFoundException"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "projectName",
            "in": "path",
            "required": true,
            "description": "The name of the project containing the placement in which to associate the device.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9A-Za-z_-]+$",
              "minLength": 1,
              "maxLength": 128
            }
          },
          {
            "name": "placementName",
            "in": "path",
            "required": true,
            "description": "The name of the placement in which to associate the device.",
            "schema": {
              "type": "string",
              "pattern": "^[a-zA-Z0-9_-]+$",
              "minLength": 1,
              "maxLength": 128
            }
          },
          {
            "name": "deviceTemplateName",
            "in": "path",
            "required": true,
            "description": "The device template name to associate with the device ID.",
            "schema": {
              "type": "string",
              "pattern": "^[a-zA-Z0-9_-]+$",
              "minLength": 1,
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "deviceId"
                ],
                "properties": {
                  "deviceId": {
                    "description": "The ID of the physical device to be associated with the given placement in the project. Note that a mandatory 4 character prefix is required for all <code>deviceId</code> values.",
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 32
                  }
                }
              }
            }
          }
        }
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/X-Amz-Content-Sha256"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Date"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Algorithm"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Credential"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Security-Token"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Signature"
        },
        {
          "$ref": "#/components/parameters/X-Amz-SignedHeaders"
        }
      ],
      "delete": {
        "operationId": "DisassociateDeviceFromPlacement",
        "description": "Removes a physical device from a placement.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisassociateDeviceFromPlacementResponse"
                }
              }
            }
          },
          "480": {
            "description": "InternalFailureException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalFailureException"
                }
              }
            }
          },
          "481": {
            "description": "InvalidRequestException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestException"
                }
              }
            }
          },
          "482": {
            "description": "ResourceNotFoundException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFoundException"
                }
              }
            }
          },
          "483": {
            "description": "TooManyRequestsException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsException"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "projectName",
            "in": "path",
            "required": true,
            "description": "The name of the project that contains the placement.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9A-Za-z_-]+$",
              "minLength": 1,
              "maxLength": 128
            }
          },
          {
            "name": "placementName",
            "in": "path",
            "required": true,
            "description": "The name of the placement that the device should be removed from.",
            "schema": {
              "type": "string",
              "pattern": "^[a-zA-Z0-9_-]+$",
              "minLength": 1,
              "maxLength": 128
            }
          },
          {
            "name": "deviceTemplateName",
            "in": "path",
            "required": true,
            "description": "The device ID that should be removed from the placement.",
            "schema": {
              "type": "string",
              "pattern": "^[a-zA-Z0-9_-]+$",
              "minLength": 1,
              "maxLength": 128
            }
          }
        ]
      }
    },
    "/projects/{projectName}/placements": {
      "post": {
        "operationId": "CreatePlacement",
        "description": "Creates an empty placement.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatePlacementResponse"
                }
              }
            }
          },
          "480": {
            "description": "InternalFailureException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalFailureException"
                }
              }
            }
          },
          "481": {
            "description": "InvalidRequestException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestException"
                }
              }
            }
          },
          "482": {
            "description": "ResourceConflictException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceConflictException"
                }
              }
            }
          },
          "483": {
            "description": "ResourceNotFoundException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFoundException"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "projectName",
            "in": "path",
            "required": true,
            "description": "The name of the project in which to create the placement.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9A-Za-z_-]+$",
              "minLength": 1,
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "placementName"
                ],
                "properties": {
                  "placementName": {
                    "description": "The name of the placement to be created.",
                    "type": "string",
                    "pattern": "^[a-zA-Z0-9_-]+$",
                    "minLength": 1,
                    "maxLength": 128
                  },
                  "attributes": {
                    "description": "Optional user-defined key/value pairs providing contextual data (such as location or function) for the placement.",
                    "type": "object",
                    "additionalProperties": {
                      "$ref": "#/components/schemas/AttributeValue"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/X-Amz-Content-Sha256"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Date"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Algorithm"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Credential"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Security-Token"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Signature"
        },
        {
          "$ref": "#/components/parameters/X-Amz-SignedHeaders"
        }
      ],
      "get": {
        "operationId": "ListPlacements",
        "description": "Lists the placement(s) of a project.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListPlacementsResponse"
                }
              }
            }
          },
          "480": {
            "description": "InternalFailureException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalFailureException"
                }
              }
            }
          },
          "481": {
            "description": "InvalidRequestException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestException"
                }
              }
            }
          },
          "482": {
            "description": "ResourceNotFoundException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFoundException"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "projectName",
            "in": "path",
            "required": true,
            "description": "The project containing the placements to be listed.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9A-Za-z_-]+$",
              "minLength": 1,
              "maxLength": 128
            }
          },
          {
            "name": "nextToken",
            "in": "query",
            "required": false,
            "description": "The token to retrieve the next set of results.",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 1024
            }
          },
          {
            "name": "maxResults",
            "in": "query",
            "required": false,
            "description": "The maximum number of results to return per request. If not set, a default value of 100 is used.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 250
            }
          }
        ]
      }
    },
    "/projects": {
      "post": {
        "operationId": "CreateProject",
        "description": "Creates an empty project with a placement template. A project contains zero or more placements that adhere to the placement template defined in the project.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateProjectResponse"
                }
              }
            }
          },
          "480": {
            "description": "InternalFailureException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalFailureException"
                }
              }
            }
          },
          "481": {
            "description": "InvalidRequestException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestException"
                }
              }
            }
          },
          "482": {
            "description": "ResourceConflictException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceConflictException"
                }
              }
            }
          }
        },
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "projectName"
                ],
                "properties": {
                  "projectName": {
                    "description": "The name of the project to create.",
                    "type": "string",
                    "pattern": "^[0-9A-Za-z_-]+$",
                    "minLength": 1,
                    "maxLength": 128
                  },
                  "description": {
                    "description": "An optional description for the project.",
                    "type": "string",
                    "minLength": 0,
                    "maxLength": 500
                  },
                  "placementTemplate": {
                    "description": "An object defining the template for a placement.",
                    "type": "object",
                    "properties": {
                      "defaultAttributes": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/DefaultPlacementAttributeMap"
                          },
                          {
                            "description": "The default attributes (key/value pairs) to be applied to all placements using this template."
                          }
                        ]
                      },
                      "deviceTemplates": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/DeviceTemplateMap"
                          },
                          {
                            "description": "An object specifying the <a>DeviceTemplate</a> for all placements using this (<a>PlacementTemplate</a>) template."
                          }
                        ]
                      }
                    }
                  },
                  "tags": {
                    "description": "Optional tags (metadata key/value pairs) to be associated with the project. For example, <code>{ {\"key1\": \"value1\", \"key2\": \"value2\"} }</code>. For more information, see <a href=\"https://aws.amazon.com/answers/account-management/aws-tagging-strategies/\">AWS Tagging Strategies</a>.",
                    "type": "object",
                    "minProperties": 1,
                    "maxProperties": 50,
                    "additionalProperties": {
                      "$ref": "#/components/schemas/TagValue"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/X-Amz-Content-Sha256"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Date"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Algorithm"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Credential"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Security-Token"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Signature"
        },
        {
          "$ref": "#/components/parameters/X-Amz-SignedHeaders"
        }
      ],
      "get": {
        "operationId": "ListProjects",
        "description": "Lists the AWS IoT 1-Click project(s) associated with your AWS account and region.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListProjectsResponse"
                }
              }
            }
          },
          "480": {
            "description": "InternalFailureException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalFailureException"
                }
              }
            }
          },
          "481": {
            "description": "InvalidRequestException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestException"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "nextToken",
            "in": "query",
            "required": false,
            "description": "The token to retrieve the next set of results.",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 1024
            }
          },
          {
            "name": "maxResults",
            "in": "query",
            "required": false,
            "description": "The maximum number of results to return per request. If not set, a default value of 100 is used.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 250
            }
          }
        ]
      }
    },
    "/projects/{projectName}/placements/{placementName}": {
      "delete": {
        "operationId": "DeletePlacement",
        "description": "<p>Deletes a placement. To delete a placement, it must not have any devices associated with it.</p> <note> <p>When you delete a placement, all associated data becomes irretrievable.</p> </note>",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeletePlacementResponse"
                }
              }
            }
          },
          "480": {
            "description": "InternalFailureException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalFailureException"
                }
              }
            }
          },
          "481": {
            "description": "InvalidRequestException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestException"
                }
              }
            }
          },
          "482": {
            "description": "ResourceNotFoundException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFoundException"
                }
              }
            }
          },
          "483": {
            "description": "TooManyRequestsException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsException"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "placementName",
            "in": "path",
            "required": true,
            "description": "The name of the empty placement to delete.",
            "schema": {
              "type": "string",
              "pattern": "^[a-zA-Z0-9_-]+$",
              "minLength": 1,
              "maxLength": 128
            }
          },
          {
            "name": "projectName",
            "in": "path",
            "required": true,
            "description": "The project containing the empty placement to delete.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9A-Za-z_-]+$",
              "minLength": 1,
              "maxLength": 128
            }
          }
        ]
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/X-Amz-Content-Sha256"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Date"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Algorithm"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Credential"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Security-Token"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Signature"
        },
        {
          "$ref": "#/components/parameters/X-Amz-SignedHeaders"
        }
      ],
      "get": {
        "operationId": "DescribePlacement",
        "description": "Describes a placement in a project.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DescribePlacementResponse"
                }
              }
            }
          },
          "480": {
            "description": "InternalFailureException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalFailureException"
                }
              }
            }
          },
          "481": {
            "description": "InvalidRequestException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestException"
                }
              }
            }
          },
          "482": {
            "description": "ResourceNotFoundException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFoundException"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "placementName",
            "in": "path",
            "required": true,
            "description": "The name of the placement within a project.",
            "schema": {
              "type": "string",
              "pattern": "^[a-zA-Z0-9_-]+$",
              "minLength": 1,
              "maxLength": 128
            }
          },
          {
            "name": "projectName",
            "in": "path",
            "required": true,
            "description": "The project containing the placement to be described.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9A-Za-z_-]+$",
              "minLength": 1,
              "maxLength": 128
            }
          }
        ]
      },
      "put": {
        "operationId": "UpdatePlacement",
        "description": "Updates a placement with the given attributes. To clear an attribute, pass an empty value (i.e., \"\").",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatePlacementResponse"
                }
              }
            }
          },
          "480": {
            "description": "InternalFailureException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalFailureException"
                }
              }
            }
          },
          "481": {
            "description": "InvalidRequestException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestException"
                }
              }
            }
          },
          "482": {
            "description": "ResourceNotFoundException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFoundException"
                }
              }
            }
          },
          "483": {
            "description": "TooManyRequestsException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsException"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "placementName",
            "in": "path",
            "required": true,
            "description": "The name of the placement to update.",
            "schema": {
              "type": "string",
              "pattern": "^[a-zA-Z0-9_-]+$",
              "minLength": 1,
              "maxLength": 128
            }
          },
          {
            "name": "projectName",
            "in": "path",
            "required": true,
            "description": "The name of the project containing the placement to be updated.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9A-Za-z_-]+$",
              "minLength": 1,
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "attributes": {
                    "description": "The user-defined object of attributes used to update the placement. The maximum number of key/value pairs is 50.",
                    "type": "object",
                    "additionalProperties": {
                      "$ref": "#/components/schemas/AttributeValue"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/projects/{projectName}": {
      "delete": {
        "operationId": "DeleteProject",
        "description": "<p>Deletes a project. To delete a project, it must not have any placements associated with it.</p> <note> <p>When you delete a project, all associated data becomes irretrievable.</p> </note>",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteProjectResponse"
                }
              }
            }
          },
          "480": {
            "description": "InternalFailureException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalFailureException"
                }
              }
            }
          },
          "481": {
            "description": "InvalidRequestException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestException"
                }
              }
            }
          },
          "482": {
            "description": "ResourceNotFoundException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFoundException"
                }
              }
            }
          },
          "483": {
            "description": "TooManyRequestsException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsException"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "projectName",
            "in": "path",
            "required": true,
            "description": "The name of the empty project to delete.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9A-Za-z_-]+$",
              "minLength": 1,
              "maxLength": 128
            }
          }
        ]
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/X-Amz-Content-Sha256"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Date"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Algorithm"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Credential"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Security-Token"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Signature"
        },
        {
          "$ref": "#/components/parameters/X-Amz-SignedHeaders"
        }
      ],
      "get": {
        "operationId": "DescribeProject",
        "description": "Returns an object describing a project.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DescribeProjectResponse"
                }
              }
            }
          },
          "480": {
            "description": "InternalFailureException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalFailureException"
                }
              }
            }
          },
          "481": {
            "description": "InvalidRequestException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestException"
                }
              }
            }
          },
          "482": {
            "description": "ResourceNotFoundException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFoundException"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "projectName",
            "in": "path",
            "required": true,
            "description": "The name of the project to be described.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9A-Za-z_-]+$",
              "minLength": 1,
              "maxLength": 128
            }
          }
        ]
      },
      "put": {
        "operationId": "UpdateProject",
        "description": "Updates a project associated with your AWS account and region. With the exception of device template names, you can pass just the values that need to be updated because the update request will change only the values that are provided. To clear a value, pass the empty string (i.e., <code>\"\"</code>).",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateProjectResponse"
                }
              }
            }
          },
          "480": {
            "description": "InternalFailureException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalFailureException"
                }
              }
            }
          },
          "481": {
            "description": "InvalidRequestException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestException"
                }
              }
            }
          },
          "482": {
            "description": "ResourceNotFoundException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFoundException"
                }
              }
            }
          },
          "483": {
            "description": "TooManyRequestsException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsException"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "projectName",
            "in": "path",
            "required": true,
            "description": "The name of the project to be updated.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9A-Za-z_-]+$",
              "minLength": 1,
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "description": {
                    "description": "An optional user-defined description for the project.",
                    "type": "string",
                    "minLength": 0,
                    "maxLength": 500
                  },
                  "placementTemplate": {
                    "description": "An object defining the template for a placement.",
                    "type": "object",
                    "properties": {
                      "defaultAttributes": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/DefaultPlacementAttributeMap"
                          },
                          {
                            "description": "The default attributes (key/value pairs) to be applied to all placements using this template."
                          }
                        ]
                      },
                      "deviceTemplates": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/DeviceTemplateMap"
                          },
                          {
                            "description": "An object specifying the <a>DeviceTemplate</a> for all placements using this (<a>PlacementTemplate</a>) template."
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/projects/{projectName}/placements/{placementName}/devices": {
      "get": {
        "operationId": "GetDevicesInPlacement",
        "description": "Returns an object enumerating the devices in a placement.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetDevicesInPlacementResponse"
                }
              }
            }
          },
          "480": {
            "description": "InternalFailureException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalFailureException"
                }
              }
            }
          },
          "481": {
            "description": "InvalidRequestException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestException"
                }
              }
            }
          },
          "482": {
            "description": "ResourceNotFoundException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFoundException"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "projectName",
            "in": "path",
            "required": true,
            "description": "The name of the project containing the placement.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9A-Za-z_-]+$",
              "minLength": 1,
              "maxLength": 128
            }
          },
          {
            "name": "placementName",
            "in": "path",
            "required": true,
            "description": "The name of the placement to get the devices from.",
            "schema": {
              "type": "string",
              "pattern": "^[a-zA-Z0-9_-]+$",
              "minLength": 1,
              "maxLength": 128
            }
          }
        ]
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/X-Amz-Content-Sha256"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Date"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Algorithm"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Credential"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Security-Token"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Signature"
        },
        {
          "$ref": "#/components/parameters/X-Amz-SignedHeaders"
        }
      ]
    },
    "/tags/{resourceArn}": {
      "get": {
        "operationId": "ListTagsForResource",
        "description": "Lists the tags (metadata key/value pairs) which you have assigned to the resource.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListTagsForResourceResponse"
                }
              }
            }
          },
          "480": {
            "description": "InternalFailureException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalFailureException"
                }
              }
            }
          },
          "481": {
            "description": "InvalidRequestException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestException"
                }
              }
            }
          },
          "482": {
            "description": "ResourceNotFoundException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFoundException"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "resourceArn",
            "in": "path",
            "required": true,
            "description": "The ARN of the resource whose tags you want to list.",
            "schema": {
              "type": "string",
              "pattern": "^arn:aws:iot1click:[A-Za-z0-9_/.-]{0,63}:\\d+:projects/[0-9A-Za-z_-]{1,128}$"
            }
          }
        ]
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/X-Amz-Content-Sha256"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Date"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Algorithm"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Credential"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Security-Token"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Signature"
        },
        {
          "$ref": "#/components/parameters/X-Amz-SignedHeaders"
        }
      ],
      "post": {
        "operationId": "TagResource",
        "description": "Creates or modifies tags for a resource. Tags are key/value pairs (metadata) that can be used to manage a resource. For more information, see <a href=\"https://aws.amazon.com/answers/account-management/aws-tagging-strategies/\">AWS Tagging Strategies</a>.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagResourceResponse"
                }
              }
            }
          },
          "480": {
            "description": "InternalFailureException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalFailureException"
                }
              }
            }
          },
          "481": {
            "description": "InvalidRequestException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestException"
                }
              }
            }
          },
          "482": {
            "description": "ResourceNotFoundException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFoundException"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "resourceArn",
            "in": "path",
            "required": true,
            "description": "The ARN of the resouce for which tag(s) should be added or modified.",
            "schema": {
              "type": "string",
              "pattern": "^arn:aws:iot1click:[A-Za-z0-9_/.-]{0,63}:\\d+:projects/[0-9A-Za-z_-]{1,128}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "tags"
                ],
                "properties": {
                  "tags": {
                    "description": "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 resource.",
                    "type": "object",
                    "minProperties": 1,
                    "maxProperties": 50,
                    "additionalProperties": {
                      "$ref": "#/components/schemas/TagValue"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/tags/{resourceArn}#tagKeys": {
      "delete": {
        "operationId": "UntagResource",
        "description": "Removes one or more tags (metadata key/value pairs) from a resource.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UntagResourceResponse"
                }
              }
            }
          },
          "480": {
            "description": "InternalFailureException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalFailureException"
                }
              }
            }
          },
          "481": {
            "description": "InvalidRequestException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvalidRequestException"
                }
              }
            }
          },
          "482": {
            "description": "ResourceNotFoundException",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFoundException"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "resourceArn",
            "in": "path",
            "required": true,
            "description": "The ARN of the resource whose tag you want to remove.",
            "schema": {
              "type": "string",
              "pattern": "^arn:aws:iot1click:[A-Za-z0-9_/.-]{0,63}:\\d+:projects/[0-9A-Za-z_-]{1,128}$"
            }
          },
          {
            "name": "tagKeys",
            "in": "query",
            "required": true,
            "description": "The keys of those tags which you want to remove.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/TagKey"
              },
              "minItems": 1,
              "maxItems": 50
            }
          }
        ]
      },
      "parameters": [
        {
          "$ref": "#/components/parameters/X-Amz-Content-Sha256"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Date"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Algorithm"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Credential"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Security-Token"
        },
        {
          "$ref": "#/components/parameters/X-Amz-Signature"
        },
        {
          "$ref": "#/components/parameters/X-Amz-SignedHeaders"
        }
      ]
    }
  },
  "components": {
    "parameters": {
      "X-Amz-Content-Sha256": {
        "name": "X-Amz-Content-Sha256",
        "in": "header",
        "schema": {
          "type": "string"
        },
        "required": false
      },
      "X-Amz-Date": {
        "name": "X-Amz-Date",
        "in": "header",
        "schema": {
          "type": "string"
        },
        "required": false
      },
      "X-Amz-Algorithm": {
        "name": "X-Amz-Algorithm",
        "in": "header",
        "schema": {
          "type": "string"
        },
        "required": false
      },
      "X-Amz-Credential": {
        "name": "X-Amz-Credential",
        "in": "header",
        "schema": {
          "type": "string"
        },
        "required": false
      },
      "X-Amz-Security-Token": {
        "name": "X-Amz-Security-Token",
        "in": "header",
        "schema": {
          "type": "string"
        },
        "required": false
      },
      "X-Amz-Signature": {
        "name": "X-Amz-Signature",
        "in": "header",
        "schema": {
          "type": "string"
        },
        "required": false
      },
      "X-Amz-SignedHeaders": {
        "name": "X-Amz-SignedHeaders",
        "in": "header",
        "schema": {
          "type": "string"
        },
        "required": false
      }
    },
    "securitySchemes": {
      "hmac": {
        "type": "apiKey",
        "name": "Authorization",
        "in": "header",
        "description": "Amazon Signature authorization v4",
        "x-amazon-apigateway-authtype": "awsSigv4"
      }
    },
    "schemas": {
      "AssociateDeviceWithPlacementResponse": {
        "type": "object",
        "properties": {}
      },
      "InternalFailureException": {},
      "InvalidRequestException": {},
      "ResourceConflictException": {},
      "ResourceNotFoundException": {},
      "CreatePlacementResponse": {
        "type": "object",
        "properties": {}
      },
      "AttributeValue": {
        "type": "string",
        "maxLength": 800
      },
      "CreateProjectResponse": {
        "type": "object",
        "properties": {}
      },
      "DefaultPlacementAttributeMap": {
        "type": "object",
        "additionalProperties": {
          "$ref": "#/components/schemas/AttributeDefaultValue"
        }
      },
      "DeviceTemplateMap": {
        "type": "object",
        "additionalProperties": {
          "$ref": "#/components/schemas/DeviceTemplate"
        }
      },
      "TagValue": {
        "type": "string",
        "maxLength": 256
      },
      "DeletePlacementResponse": {
        "type": "object",
        "properties": {}
      },
      "TooManyRequestsException": {},
      "DeleteProjectResponse": {
        "type": "object",
        "properties": {}
      },
      "DescribePlacementResponse": {
        "type": "object",
        "required": [
          "placement"
        ],
        "properties": {
          "placement": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PlacementDescription"
              },
              {
                "description": "An object describing the placement."
              }
            ]
          }
        }
      },
      "DescribeProjectResponse": {
        "type": "object",
        "required": [
          "project"
        ],
        "properties": {
          "project": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ProjectDescription"
              },
              {
                "description": "An object describing the project."
              }
            ]
          }
        }
      },
      "DisassociateDeviceFromPlacementResponse": {
        "type": "object",
        "properties": {}
      },
      "GetDevicesInPlacementResponse": {
        "type": "object",
        "required": [
          "devices"
        ],
        "properties": {
          "devices": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DeviceMap"
              },
              {
                "description": "An object containing the devices (zero or more) within the placement."
              }
            ]
          }
        }
      },
      "ListPlacementsResponse": {
        "type": "object",
        "required": [
          "placements"
        ],
        "properties": {
          "placements": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PlacementSummaryList"
              },
              {
                "description": "An object listing the requested placements."
              }
            ]
          },
          "nextToken": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NextToken"
              },
              {
                "description": "The token used to retrieve the next set of results - will be effectively empty if there are no further results."
              }
            ]
          }
        }
      },
      "ListProjectsResponse": {
        "type": "object",
        "required": [
          "projects"
        ],
        "properties": {
          "projects": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ProjectSummaryList"
              },
              {
                "description": "An object containing the list of projects."
              }
            ]
          },
          "nextToken": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NextToken"
              },
              {
                "description": "The token used to retrieve the next set of results - will be effectively empty if there are no further results."
              }
            ]
          }
        }
      },
      "ListTagsForResourceResponse": {
        "type": "object",
        "properties": {
          "tags": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TagMap"
              },
              {
                "description": "The tags (metadata key/value pairs) which you have assigned to the resource."
              }
            ]
          }
        }
      },
      "TagResourceResponse": {
        "type": "object",
        "properties": {}
      },
      "UntagResourceResponse": {
        "type": "object",
        "properties": {}
      },
      "TagKey": {
        "type": "string",
        "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$",
        "minLength": 1,
        "maxLength": 128
      },
      "UpdatePlacementResponse": {
        "type": "object",
        "properties": {}
      },
      "UpdateProjectResponse": {
        "type": "object",
        "properties": {}
      },
      "ProjectName": {
        "type": "string",
        "pattern": "^[0-9A-Za-z_-]+$",
        "minLength": 1,
        "maxLength": 128
      },
      "PlacementName": {
        "type": "string",
        "pattern": "^[a-zA-Z0-9_-]+$",
        "minLength": 1,
        "maxLength": 128
      },
      "DeviceId": {
        "type": "string",
        "minLength": 1,
        "maxLength": 32
      },
      "DeviceTemplateName": {
        "type": "string",
        "pattern": "^[a-zA-Z0-9_-]+$",
        "minLength": 1,
        "maxLength": 128
      },
      "AssociateDeviceWithPlacementRequest": {
        "type": "object",
        "required": [
          "deviceId"
        ],
        "title": "AssociateDeviceWithPlacementRequest",
        "properties": {
          "deviceId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DeviceId"
              },
              {
                "description": "The ID of the physical device to be associated with the given placement in the project. Note that a mandatory 4 character prefix is required for all <code>deviceId</code> values."
              }
            ]
          }
        }
      },
      "AttributeDefaultValue": {
        "type": "string",
        "maxLength": 800
      },
      "AttributeName": {
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      },
      "PlacementAttributeMap": {
        "type": "object",
        "additionalProperties": {
          "$ref": "#/components/schemas/AttributeValue"
        }
      },
      "CreatePlacementRequest": {
        "type": "object",
        "required": [
          "placementName"
        ],
        "title": "CreatePlacementRequest",
        "properties": {
          "placementName": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PlacementName"
              },
              {
                "description": "The name of the placement to be created."
              }
            ]
          },
          "attributes": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PlacementAttributeMap"
              },
              {
                "description": "Optional user-defined key/value pairs providing contextual data (such as location or function) for the placement."
              }
            ]
          }
        }
      },
      "Description": {
        "type": "string",
        "minLength": 0,
        "maxLength": 500
      },
      "PlacementTemplate": {
        "type": "object",
        "properties": {
          "defaultAttributes": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DefaultPlacementAttributeMap"
              },
              {
                "description": "The default attributes (key/value pairs) to be applied to all placements using this template."
              }
            ]
          },
          "deviceTemplates": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DeviceTemplateMap"
              },
              {
                "description": "An object specifying the <a>DeviceTemplate</a> for all placements using this (<a>PlacementTemplate</a>) template."
              }
            ]
          }
        },
        "description": "An object defining the template for a placement."
      },
      "TagMap": {
        "type": "object",
        "minProperties": 1,
        "maxProperties": 50,
        "additionalProperties": {
          "$ref": "#/components/schemas/TagValue"
        }
      },
      "CreateProjectRequest": {
        "type": "object",
        "required": [
          "projectName"
        ],
        "title": "CreateProjectRequest",
        "properties": {
          "projectName": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ProjectName"
              },
              {
                "description": "The name of the project to create."
              }
            ]
          },
          "description": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Description"
              },
              {
                "description": "An optional description for the project."
              }
            ]
          },
          "placementTemplate": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PlacementTemplate"
              },
              {
                "description": "The schema defining the placement to be created. A placement template defines placement default attributes and device templates. You cannot add or remove device templates after the project has been created. However, you can update <code>callbackOverrides</code> for the device templates using the <code>UpdateProject</code> API."
              }
            ]
          },
          "tags": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TagMap"
              },
              {
                "description": "Optional tags (metadata key/value pairs) to be associated with the project. For example, <code>{ {\"key1\": \"value1\", \"key2\": \"value2\"} }</code>. For more information, see <a href=\"https://aws.amazon.com/answers/account-management/aws-tagging-strategies/\">AWS Tagging Strategies</a>."
              }
            ]
          }
        }
      },
      "DeletePlacementRequest": {
        "type": "object",
        "title": "DeletePlacementRequest",
        "properties": {}
      },
      "DeleteProjectRequest": {
        "type": "object",
        "title": "DeleteProjectRequest",
        "properties": {}
      },
      "DescribePlacementRequest": {
        "type": "object",
        "title": "DescribePlacementRequest",
        "properties": {}
      },
      "PlacementDescription": {
        "type": "object",
        "required": [
          "projectName",
          "placementName",
          "attributes",
          "createdDate",
          "updatedDate"
        ],
        "properties": {
          "projectName": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ProjectName"
              },
              {
                "description": "The name of the project containing the placement."
              }
            ]
          },
          "placementName": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PlacementName"
              },
              {
                "description": "The name of the placement."
              }
            ]
          },
          "attributes": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PlacementAttributeMap"
              },
              {
                "description": "The user-defined attributes associated with the placement."
              }
            ]
          },
          "createdDate": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Time"
              },
              {
                "description": "The date when the placement was initially created, in UNIX epoch time format."
              }
            ]
          },
          "updatedDate": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Time"
              },
              {
                "description": "The date when the placement was last updated, in UNIX epoch time format. If the placement was not updated, then <code>createdDate</code> and <code>updatedDate</code> are the same."
              }
            ]
          }
        },
        "description": "An object describing a project's placement."
      },
      "DescribeProjectRequest": {
        "type": "object",
        "title": "DescribeProjectRequest",
        "properties": {}
      },
      "ProjectDescription": {
        "type": "object",
        "required": [
          "projectName",
          "createdDate",
          "updatedDate"
        ],
        "properties": {
          "arn": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ProjectArn"
              },
              {
                "description": "The ARN of the project."
              }
            ]
          },
          "projectName": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ProjectName"
              },
              {
                "description": "The name of the project for which to obtain information from."
              }
            ]
          },
          "description": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Description"
              },
              {
                "description": "The description of the project."
              }
            ]
          },
          "createdDate": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Time"
              },
              {
                "description": "The date when the project was originally created, in UNIX epoch time format."
              }
            ]
          },
          "updatedDate": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Time"
              },
              {
                "description": "The date when the project was last updated, in UNIX epoch time format. If the project was not updated, then <code>createdDate</code> and <code>updatedDate</code> are the same."
              }
            ]
          },
          "placementTemplate": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PlacementTemplate"
              },
              {
                "description": "An object describing the project's placement specifications."
              }
            ]
          },
          "tags": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TagMap"
              },
              {
                "description": "The tags (metadata key/value pairs) associated with the project."
              }
            ]
          }
        },
        "description": "An object providing detailed information for a particular project associated with an AWS account and region."
      },
      "DeviceCallbackKey": {
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      },
      "DeviceCallbackValue": {
        "type": "string",
        "maxLength": 200
      },
      "DeviceCallbackOverrideMap": {
        "type": "object",
        "additionalProperties": {
          "$ref": "#/components/schemas/DeviceCallbackValue"
        }
      },
      "DeviceMap": {
        "type": "object",
        "additionalProperties": {
          "$ref": "#/components/schemas/DeviceId"
        }
      },
      "DeviceType": {
        "type": "string",
        "maxLength": 128
      },
      "DeviceTemplate": {
        "type": "object",
        "properties": {
          "deviceType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DeviceType"
              },
              {
                "description": "The device type, which currently must be <code>\"button\"</code>."
              }
            ]
          },
          "callbackOverrides": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DeviceCallbackOverrideMap"
              },
              {
                "description": "An optional Lambda function to invoke instead of the default Lambda function provided by the placement template."
              }
            ]
          }
        },
        "description": "An object representing a device for a placement template (see <a>PlacementTemplate</a>)."
      },
      "DisassociateDeviceFromPlacementRequest": {
        "type": "object",
        "title": "DisassociateDeviceFromPlacementRequest",
        "properties": {}
      },
      "GetDevicesInPlacementRequest": {
        "type": "object",
        "title": "GetDevicesInPlacementRequest",
        "properties": {}
      },
      "NextToken": {
        "type": "string",
        "minLength": 1,
        "maxLength": 1024
      },
      "MaxResults": {
        "type": "integer",
        "minimum": 1,
        "maximum": 250
      },
      "ListPlacementsRequest": {
        "type": "object",
        "title": "ListPlacementsRequest",
        "properties": {}
      },
      "PlacementSummaryList": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/PlacementSummary"
        }
      },
      "ListProjectsRequest": {
        "type": "object",
        "title": "ListProjectsRequest",
        "properties": {}
      },
      "ProjectSummaryList": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/ProjectSummary"
        }
      },
      "ProjectArn": {
        "type": "string",
        "pattern": "^arn:aws:iot1click:[A-Za-z0-9_/.-]{0,63}:\\d+:projects/[0-9A-Za-z_-]{1,128}$"
      },
      "ListTagsForResourceRequest": {
        "type": "object",
        "title": "ListTagsForResourceRequest",
        "properties": {}
      },
      "Time": {
        "type": "string",
        "format": "date-time"
      },
      "PlacementSummary": {
        "type": "object",
        "required": [
          "projectName",
          "placementName",
          "createdDate",
          "updatedDate"
        ],
        "properties": {
          "projectName": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ProjectName"
              },
              {
                "description": "The name of the project containing the placement."
              }
            ]
          },
          "placementName": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PlacementName"
              },
              {
                "description": "The name of the placement being summarized."
              }
            ]
          },
          "createdDate": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Time"
              },
              {
                "description": "The date when the placement was originally created, in UNIX epoch time format."
              }
            ]
          },
          "updatedDate": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Time"
              },
              {
                "description": "The date when the placement was last updated, in UNIX epoch time format. If the placement was not updated, then <code>createdDate</code> and <code>updatedDate</code> are the same."
              }
            ]
          }
        },
        "description": "An object providing summary information for a particular placement."
      },
      "ProjectSummary": {
        "type": "object",
        "required": [
          "projectName",
          "createdDate",
          "updatedDate"
        ],
        "properties": {
          "arn": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ProjectArn"
              },
              {
                "description": "The ARN of the project."
              }
            ]
          },
          "projectName": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ProjectName"
              },
              {
                "description": "The name of the project being summarized."
              }
            ]
          },
          "createdDate": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Time"
              },
              {
                "description": "The date when the project was originally created, in UNIX epoch time format."
              }
            ]
          },
          "updatedDate": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Time"
              },
              {
                "description": "The date when the project was last updated, in UNIX epoch time format. If the project was not updated, then <code>createdDate</code> and <code>updatedDate</code> are the same."
              }
            ]
          },
          "tags": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TagMap"
              },
              {
                "description": "The tags (metadata key/value pairs) associated with the project."
              }
            ]
          }
        },
        "description": "An object providing summary information for a particular project for an associated AWS account and region."
      },
      "TagKeyList": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/TagKey"
        },
        "minItems": 1,
        "maxItems": 50
      },
      "TagResourceRequest": {
        "type": "object",
        "required": [
          "tags"
        ],
        "title": "TagResourceRequest",
        "properties": {
          "tags": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TagMap"
              },
              {
                "description": "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 resource."
              }
            ]
          }
        }
      },
      "UntagResourceRequest": {
        "type": "object",
        "title": "UntagResourceRequest",
        "properties": {}
      },
      "UpdatePlacementRequest": {
        "type": "object",
        "title": "UpdatePlacementRequest",
        "properties": {
          "attributes": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PlacementAttributeMap"
              },
              {
                "description": "The user-defined object of attributes used to update the placement. The maximum number of key/value pairs is 50."
              }
            ]
          }
        }
      },
      "UpdateProjectRequest": {
        "type": "object",
        "title": "UpdateProjectRequest",
        "properties": {
          "description": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Description"
              },
              {
                "description": "An optional user-defined description for the project."
              }
            ]
          },
          "placementTemplate": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PlacementTemplate"
              },
              {
                "description": "An object defining the project update. Once a project has been created, you cannot add device template names to the project. However, for a given <code>placementTemplate</code>, you can update the associated <code>callbackOverrides</code> for the device definition using this API."
              }
            ]
          }
        }
      }
    }
  },
  "security": [
    {
      "hmac": []
    }
  ]
}