{
    "smithy": "1.0",
    "metadata": {
        "suppressions": [
            {
                "id": "HttpMethodSemantics",
                "namespace": "*"
            },
            {
                "id": "HttpResponseCodeSemantics",
                "namespace": "*"
            },
            {
                "id": "PaginatedTrait",
                "namespace": "*"
            },
            {
                "id": "HttpHeaderTrait",
                "namespace": "*"
            },
            {
                "id": "HttpUriConflict",
                "namespace": "*"
            },
            {
                "id": "Service",
                "namespace": "*"
            }
        ]
    },
    "shapes": {
        "com.amazonaws.iotdataplane#ConflictException": {
            "type": "structure",
            "members": {
                "message": {
                    "target": "com.amazonaws.iotdataplane#errorMessage",
                    "traits": {
                        "smithy.api#documentation": "<p>The message for the exception.</p>"
                    }
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>The specified version does not match the version of the document.</p>",
                "smithy.api#error": "client",
                "smithy.api#httpError": 409
            }
        },
        "com.amazonaws.iotdataplane#DeleteThingShadow": {
            "type": "operation",
            "input": {
                "target": "com.amazonaws.iotdataplane#DeleteThingShadowRequest"
            },
            "output": {
                "target": "com.amazonaws.iotdataplane#DeleteThingShadowResponse"
            },
            "errors": [
                {
                    "target": "com.amazonaws.iotdataplane#InternalFailureException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#InvalidRequestException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#MethodNotAllowedException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#ResourceNotFoundException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#ServiceUnavailableException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#ThrottlingException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#UnauthorizedException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#UnsupportedDocumentEncodingException"
                }
            ],
            "traits": {
                "smithy.api#documentation": "<p>Deletes the shadow for the specified thing.</p>\n         <p>Requires permission to access the <a href=\"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions\">DeleteThingShadow</a> action.</p>\n         <p>For more information, see <a href=\"http://docs.aws.amazon.com/iot/latest/developerguide/API_DeleteThingShadow.html\">DeleteThingShadow</a> in the IoT Developer Guide.</p>",
                "smithy.api#http": {
                    "method": "DELETE",
                    "uri": "/things/{thingName}/shadow",
                    "code": 200
                }
            }
        },
        "com.amazonaws.iotdataplane#DeleteThingShadowRequest": {
            "type": "structure",
            "members": {
                "thingName": {
                    "target": "com.amazonaws.iotdataplane#ThingName",
                    "traits": {
                        "smithy.api#documentation": "<p>The name of the thing.</p>",
                        "smithy.api#httpLabel": {},
                        "smithy.api#required": {}
                    }
                },
                "shadowName": {
                    "target": "com.amazonaws.iotdataplane#ShadowName",
                    "traits": {
                        "smithy.api#documentation": "<p>The name of the shadow.</p>",
                        "smithy.api#httpQuery": "name"
                    }
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>The input for the DeleteThingShadow operation.</p>"
            }
        },
        "com.amazonaws.iotdataplane#DeleteThingShadowResponse": {
            "type": "structure",
            "members": {
                "payload": {
                    "target": "com.amazonaws.iotdataplane#JsonDocument",
                    "traits": {
                        "smithy.api#documentation": "<p>The state information, in JSON format.</p>",
                        "smithy.api#httpPayload": {},
                        "smithy.api#required": {}
                    }
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>The output from the DeleteThingShadow operation.</p>"
            }
        },
        "com.amazonaws.iotdataplane#GetRetainedMessage": {
            "type": "operation",
            "input": {
                "target": "com.amazonaws.iotdataplane#GetRetainedMessageRequest"
            },
            "output": {
                "target": "com.amazonaws.iotdataplane#GetRetainedMessageResponse"
            },
            "errors": [
                {
                    "target": "com.amazonaws.iotdataplane#InternalFailureException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#InvalidRequestException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#MethodNotAllowedException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#ResourceNotFoundException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#ServiceUnavailableException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#ThrottlingException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#UnauthorizedException"
                }
            ],
            "traits": {
                "smithy.api#documentation": "<p>Gets the details of a single retained message for the specified topic.</p>\n         <p>This action returns the message payload of the retained message, which can \n      incur messaging costs. To list only the topic names of the retained messages, call\n      <a href=\"/iot/latest/developerguide/API_iotdata_ListRetainedMessages.html\">ListRetainedMessages</a>.</p>\n         <p>Requires permission to access the <a href=\"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotfleethubfordevicemanagement.html#awsiotfleethubfordevicemanagement-actions-as-permissions\">GetRetainedMessage</a> action.</p>\n         <p>For more information about messaging costs, see <a href=\"http://aws.amazon.com/iot-core/pricing/#Messaging\">Amazon Web Services IoT Core\n      pricing - Messaging</a>.</p>",
                "smithy.api#http": {
                    "method": "GET",
                    "uri": "/retainedMessage/{topic}",
                    "code": 200
                }
            }
        },
        "com.amazonaws.iotdataplane#GetRetainedMessageRequest": {
            "type": "structure",
            "members": {
                "topic": {
                    "target": "com.amazonaws.iotdataplane#Topic",
                    "traits": {
                        "smithy.api#documentation": "<p>The topic name of the retained message to retrieve.</p>",
                        "smithy.api#httpLabel": {},
                        "smithy.api#required": {}
                    }
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>The input for the GetRetainedMessage operation.</p>"
            }
        },
        "com.amazonaws.iotdataplane#GetRetainedMessageResponse": {
            "type": "structure",
            "members": {
                "topic": {
                    "target": "com.amazonaws.iotdataplane#Topic",
                    "traits": {
                        "smithy.api#documentation": "<p>The topic name to which the retained message was published.</p>"
                    }
                },
                "payload": {
                    "target": "com.amazonaws.iotdataplane#Payload",
                    "traits": {
                        "smithy.api#documentation": "<p>The Base64-encoded message payload of the retained message body.</p>"
                    }
                },
                "qos": {
                    "target": "com.amazonaws.iotdataplane#Qos",
                    "traits": {
                        "smithy.api#documentation": "<p>The quality of service (QoS) level used to publish the retained message.</p>"
                    }
                },
                "lastModifiedTime": {
                    "target": "com.amazonaws.iotdataplane#Timestamp",
                    "traits": {
                        "smithy.api#documentation": "<p>The Epoch date and time, in milliseconds, when the retained message was stored by IoT.</p>"
                    }
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>The output from the GetRetainedMessage operation.</p>"
            }
        },
        "com.amazonaws.iotdataplane#GetThingShadow": {
            "type": "operation",
            "input": {
                "target": "com.amazonaws.iotdataplane#GetThingShadowRequest"
            },
            "output": {
                "target": "com.amazonaws.iotdataplane#GetThingShadowResponse"
            },
            "errors": [
                {
                    "target": "com.amazonaws.iotdataplane#InternalFailureException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#InvalidRequestException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#MethodNotAllowedException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#ResourceNotFoundException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#ServiceUnavailableException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#ThrottlingException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#UnauthorizedException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#UnsupportedDocumentEncodingException"
                }
            ],
            "traits": {
                "smithy.api#documentation": "<p>Gets the shadow for the specified thing.</p>\n         <p>Requires permission to access the <a href=\"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions\">GetThingShadow</a> action.</p>\n         <p>For more information, see <a href=\"http://docs.aws.amazon.com/iot/latest/developerguide/API_GetThingShadow.html\">GetThingShadow</a> in the\n        IoT Developer Guide.</p>",
                "smithy.api#http": {
                    "method": "GET",
                    "uri": "/things/{thingName}/shadow",
                    "code": 200
                }
            }
        },
        "com.amazonaws.iotdataplane#GetThingShadowRequest": {
            "type": "structure",
            "members": {
                "thingName": {
                    "target": "com.amazonaws.iotdataplane#ThingName",
                    "traits": {
                        "smithy.api#documentation": "<p>The name of the thing.</p>",
                        "smithy.api#httpLabel": {},
                        "smithy.api#required": {}
                    }
                },
                "shadowName": {
                    "target": "com.amazonaws.iotdataplane#ShadowName",
                    "traits": {
                        "smithy.api#documentation": "<p>The name of the shadow.</p>",
                        "smithy.api#httpQuery": "name"
                    }
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>The input for the GetThingShadow operation.</p>"
            }
        },
        "com.amazonaws.iotdataplane#GetThingShadowResponse": {
            "type": "structure",
            "members": {
                "payload": {
                    "target": "com.amazonaws.iotdataplane#JsonDocument",
                    "traits": {
                        "smithy.api#documentation": "<p>The state information, in JSON format.</p>",
                        "smithy.api#httpPayload": {}
                    }
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>The output from the GetThingShadow operation.</p>"
            }
        },
        "com.amazonaws.iotdataplane#InternalFailureException": {
            "type": "structure",
            "members": {
                "message": {
                    "target": "com.amazonaws.iotdataplane#errorMessage",
                    "traits": {
                        "smithy.api#documentation": "<p>The message for the exception.</p>"
                    }
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>An unexpected error has occurred.</p>",
                "smithy.api#error": "server",
                "smithy.api#httpError": 500
            }
        },
        "com.amazonaws.iotdataplane#InvalidRequestException": {
            "type": "structure",
            "members": {
                "message": {
                    "target": "com.amazonaws.iotdataplane#errorMessage",
                    "traits": {
                        "smithy.api#documentation": "<p>The message for the exception.</p>"
                    }
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>The request is not valid.</p>",
                "smithy.api#error": "client",
                "smithy.api#httpError": 400
            }
        },
        "com.amazonaws.iotdataplane#IotMoonrakerService": {
            "type": "service",
            "traits": {
                "aws.api#service": {
                    "sdkId": "IoT Data Plane",
                    "arnNamespace": "iotdata",
                    "cloudFormationName": "IoTDataPlane",
                    "cloudTrailEventSource": "iotdataplane.amazonaws.com",
                    "endpointPrefix": "data-ats.iot"
                },
                "aws.auth#sigv4": {
                    "name": "iotdata"
                },
                "aws.protocols#restJson1": {},
                "smithy.api#documentation": "<fullname>IoT data</fullname>\n         <p>IoT data enables secure, bi-directional communication between Internet-connected things (such as sensors,\n      actuators, embedded devices, or smart appliances) and the Amazon Web Services cloud. It implements a broker for applications and\n      things to publish messages over HTTP (Publish) and retrieve, update, and delete shadows. A shadow is a\n      persistent representation of your things and their state in the Amazon Web Services cloud.</p>\n         <p>Find the endpoint address for actions in IoT data by running this CLI command:</p>\n         <p>\n            <code>aws iot describe-endpoint --endpoint-type iot:Data-ATS</code>\n         </p>\n         <p>The service name used by <a href=\"https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html\">Amazon Web ServicesSignature Version 4</a>\n      to sign requests is: <i>iotdevicegateway</i>.</p>",
                "smithy.api#title": "AWS IoT Data Plane"
            },
            "version": "2015-05-28",
            "operations": [
                {
                    "target": "com.amazonaws.iotdataplane#DeleteThingShadow"
                },
                {
                    "target": "com.amazonaws.iotdataplane#GetRetainedMessage"
                },
                {
                    "target": "com.amazonaws.iotdataplane#GetThingShadow"
                },
                {
                    "target": "com.amazonaws.iotdataplane#ListNamedShadowsForThing"
                },
                {
                    "target": "com.amazonaws.iotdataplane#ListRetainedMessages"
                },
                {
                    "target": "com.amazonaws.iotdataplane#Publish"
                },
                {
                    "target": "com.amazonaws.iotdataplane#UpdateThingShadow"
                }
            ]
        },
        "com.amazonaws.iotdataplane#JsonDocument": {
            "type": "blob"
        },
        "com.amazonaws.iotdataplane#ListNamedShadowsForThing": {
            "type": "operation",
            "input": {
                "target": "com.amazonaws.iotdataplane#ListNamedShadowsForThingRequest"
            },
            "output": {
                "target": "com.amazonaws.iotdataplane#ListNamedShadowsForThingResponse"
            },
            "errors": [
                {
                    "target": "com.amazonaws.iotdataplane#InternalFailureException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#InvalidRequestException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#MethodNotAllowedException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#ResourceNotFoundException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#ServiceUnavailableException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#ThrottlingException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#UnauthorizedException"
                }
            ],
            "traits": {
                "smithy.api#documentation": "<p>Lists the shadows for the specified thing.</p>\n         <p>Requires permission to access the <a href=\"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions\">ListNamedShadowsForThing</a> action.</p>",
                "smithy.api#http": {
                    "method": "GET",
                    "uri": "/api/things/shadow/ListNamedShadowsForThing/{thingName}",
                    "code": 200
                }
            }
        },
        "com.amazonaws.iotdataplane#ListNamedShadowsForThingRequest": {
            "type": "structure",
            "members": {
                "thingName": {
                    "target": "com.amazonaws.iotdataplane#ThingName",
                    "traits": {
                        "smithy.api#documentation": "<p>The name of the thing.</p>",
                        "smithy.api#httpLabel": {},
                        "smithy.api#required": {}
                    }
                },
                "nextToken": {
                    "target": "com.amazonaws.iotdataplane#NextToken",
                    "traits": {
                        "smithy.api#documentation": "<p>The token to retrieve the next set of results.</p>",
                        "smithy.api#httpQuery": "nextToken"
                    }
                },
                "pageSize": {
                    "target": "com.amazonaws.iotdataplane#PageSize",
                    "traits": {
                        "smithy.api#documentation": "<p>The result page size.</p>",
                        "smithy.api#httpQuery": "pageSize"
                    }
                }
            }
        },
        "com.amazonaws.iotdataplane#ListNamedShadowsForThingResponse": {
            "type": "structure",
            "members": {
                "results": {
                    "target": "com.amazonaws.iotdataplane#NamedShadowList",
                    "traits": {
                        "smithy.api#documentation": "<p>The list of shadows for the specified thing.</p>"
                    }
                },
                "nextToken": {
                    "target": "com.amazonaws.iotdataplane#NextToken",
                    "traits": {
                        "smithy.api#documentation": "<p>The token to use to get the next set of results, or <b>null</b> if there are no additional results.</p>"
                    }
                },
                "timestamp": {
                    "target": "com.amazonaws.iotdataplane#Timestamp",
                    "traits": {
                        "smithy.api#documentation": "<p>The Epoch date and time the response was generated by IoT.</p>"
                    }
                }
            }
        },
        "com.amazonaws.iotdataplane#ListRetainedMessages": {
            "type": "operation",
            "input": {
                "target": "com.amazonaws.iotdataplane#ListRetainedMessagesRequest"
            },
            "output": {
                "target": "com.amazonaws.iotdataplane#ListRetainedMessagesResponse"
            },
            "errors": [
                {
                    "target": "com.amazonaws.iotdataplane#InternalFailureException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#InvalidRequestException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#MethodNotAllowedException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#ServiceUnavailableException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#ThrottlingException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#UnauthorizedException"
                }
            ],
            "traits": {
                "smithy.api#documentation": "<p>Lists summary information about the retained messages stored for the account.</p>\n         <p>This action returns only the topic names of the retained messages. It doesn't \n      return any message payloads. Although this action doesn't return a message payload,\n      it can still incur messaging costs.</p>\n         <p>To get the message payload of a retained message, call\n      <a href=\"https://docs.aws.amazon.com/iot/latest/developerguide/API_iotdata_GetRetainedMessage.html\">GetRetainedMessage</a>\n      with the topic name of the retained message.</p>\n         <p>Requires permission to access the <a href=\"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotfleethubfordevicemanagement.html#awsiotfleethubfordevicemanagement-actions-as-permissions\">ListRetainedMessages</a> action.</p>\n         <p>For more information about messaging costs, see <a href=\"http://aws.amazon.com/iot-core/pricing/#Messaging\">Amazon Web Services IoT Core\n      pricing - Messaging</a>.</p>",
                "smithy.api#http": {
                    "method": "GET",
                    "uri": "/retainedMessage",
                    "code": 200
                },
                "smithy.api#paginated": {
                    "inputToken": "nextToken",
                    "outputToken": "nextToken",
                    "items": "retainedTopics",
                    "pageSize": "maxResults"
                }
            }
        },
        "com.amazonaws.iotdataplane#ListRetainedMessagesRequest": {
            "type": "structure",
            "members": {
                "nextToken": {
                    "target": "com.amazonaws.iotdataplane#NextToken",
                    "traits": {
                        "smithy.api#documentation": "<p>To retrieve the next set of results, the <code>nextToken</code>\n      value from a previous response; otherwise <b>null</b> to receive\n      the first set of results.</p>",
                        "smithy.api#httpQuery": "nextToken"
                    }
                },
                "maxResults": {
                    "target": "com.amazonaws.iotdataplane#MaxResults",
                    "traits": {
                        "smithy.api#documentation": "<p>The maximum number of results to return at one time.</p>",
                        "smithy.api#httpQuery": "maxResults"
                    }
                }
            }
        },
        "com.amazonaws.iotdataplane#ListRetainedMessagesResponse": {
            "type": "structure",
            "members": {
                "retainedTopics": {
                    "target": "com.amazonaws.iotdataplane#RetainedMessageList",
                    "traits": {
                        "smithy.api#documentation": "<p>A summary list the account's retained messages. The information returned doesn't include\n      the message payloads of the retained messages.</p>"
                    }
                },
                "nextToken": {
                    "target": "com.amazonaws.iotdataplane#NextToken",
                    "traits": {
                        "smithy.api#documentation": "<p>The token for the next set of results, or null if there are no additional results.</p>"
                    }
                }
            }
        },
        "com.amazonaws.iotdataplane#MaxResults": {
            "type": "integer",
            "traits": {
                "smithy.api#range": {
                    "min": 1,
                    "max": 200
                }
            }
        },
        "com.amazonaws.iotdataplane#MethodNotAllowedException": {
            "type": "structure",
            "members": {
                "message": {
                    "target": "com.amazonaws.iotdataplane#errorMessage",
                    "traits": {
                        "smithy.api#documentation": "<p>The message for the exception.</p>"
                    }
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>The specified combination of HTTP verb and URI is not supported.</p>",
                "smithy.api#error": "client",
                "smithy.api#httpError": 405
            }
        },
        "com.amazonaws.iotdataplane#NamedShadowList": {
            "type": "list",
            "member": {
                "target": "com.amazonaws.iotdataplane#ShadowName"
            }
        },
        "com.amazonaws.iotdataplane#NextToken": {
            "type": "string"
        },
        "com.amazonaws.iotdataplane#PageSize": {
            "type": "integer",
            "traits": {
                "smithy.api#box": {},
                "smithy.api#range": {
                    "min": 1,
                    "max": 100
                }
            }
        },
        "com.amazonaws.iotdataplane#Payload": {
            "type": "blob"
        },
        "com.amazonaws.iotdataplane#PayloadSize": {
            "type": "long"
        },
        "com.amazonaws.iotdataplane#Publish": {
            "type": "operation",
            "input": {
                "target": "com.amazonaws.iotdataplane#PublishRequest"
            },
            "errors": [
                {
                    "target": "com.amazonaws.iotdataplane#InternalFailureException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#InvalidRequestException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#MethodNotAllowedException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#UnauthorizedException"
                }
            ],
            "traits": {
                "smithy.api#documentation": "<p>Publishes an MQTT message.</p>\n         <p>Requires permission to access the <a href=\"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions\">Publish</a> action.</p>\n         <p>For more information about MQTT messages, see \n      <a href=\"http://docs.aws.amazon.com/iot/latest/developerguide/mqtt.html\">MQTT Protocol</a> in the\n       IoT Developer Guide.</p>\n         <p>For more information about messaging costs, see <a href=\"http://aws.amazon.com/iot-core/pricing/#Messaging\">Amazon Web Services IoT Core\n      pricing - Messaging</a>.</p>",
                "smithy.api#http": {
                    "method": "POST",
                    "uri": "/topics/{topic}",
                    "code": 200
                }
            }
        },
        "com.amazonaws.iotdataplane#PublishRequest": {
            "type": "structure",
            "members": {
                "topic": {
                    "target": "com.amazonaws.iotdataplane#Topic",
                    "traits": {
                        "smithy.api#documentation": "<p>The name of the MQTT topic.</p>",
                        "smithy.api#httpLabel": {},
                        "smithy.api#required": {}
                    }
                },
                "qos": {
                    "target": "com.amazonaws.iotdataplane#Qos",
                    "traits": {
                        "smithy.api#documentation": "<p>The Quality of Service (QoS) level.</p>",
                        "smithy.api#httpQuery": "qos"
                    }
                },
                "retain": {
                    "target": "com.amazonaws.iotdataplane#Retain",
                    "traits": {
                        "smithy.api#documentation": "<p>A Boolean value that determines whether to set the RETAIN flag when the message is published.</p>\n         <p>Setting the RETAIN flag causes the message to be retained and sent to new subscribers to the topic.</p>\n         <p>Valid values: <code>true</code> | <code>false</code>\n         </p>\n         <p>Default value: <code>false</code>\n         </p>",
                        "smithy.api#httpQuery": "retain"
                    }
                },
                "payload": {
                    "target": "com.amazonaws.iotdataplane#Payload",
                    "traits": {
                        "smithy.api#documentation": "<p>The message body. MQTT accepts text, binary, and empty (null) message payloads.</p>\n         <p>Publishing an empty (null) payload with <b>retain</b> =\n        <code>true</code> deletes the retained message identified by <b>topic</b> from Amazon Web Services IoT Core.</p>",
                        "smithy.api#httpPayload": {}
                    }
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>The input for the Publish operation.</p>"
            }
        },
        "com.amazonaws.iotdataplane#Qos": {
            "type": "integer",
            "traits": {
                "smithy.api#range": {
                    "min": 0,
                    "max": 1
                }
            }
        },
        "com.amazonaws.iotdataplane#RequestEntityTooLargeException": {
            "type": "structure",
            "members": {
                "message": {
                    "target": "com.amazonaws.iotdataplane#errorMessage",
                    "traits": {
                        "smithy.api#documentation": "<p>The message for the exception.</p>"
                    }
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>The payload exceeds the maximum size allowed.</p>",
                "smithy.api#error": "client",
                "smithy.api#httpError": 413
            }
        },
        "com.amazonaws.iotdataplane#ResourceNotFoundException": {
            "type": "structure",
            "members": {
                "message": {
                    "target": "com.amazonaws.iotdataplane#errorMessage",
                    "traits": {
                        "smithy.api#documentation": "<p>The message for the exception.</p>"
                    }
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>The specified resource does not exist.</p>",
                "smithy.api#error": "client",
                "smithy.api#httpError": 404
            }
        },
        "com.amazonaws.iotdataplane#Retain": {
            "type": "boolean"
        },
        "com.amazonaws.iotdataplane#RetainedMessageList": {
            "type": "list",
            "member": {
                "target": "com.amazonaws.iotdataplane#RetainedMessageSummary"
            }
        },
        "com.amazonaws.iotdataplane#RetainedMessageSummary": {
            "type": "structure",
            "members": {
                "topic": {
                    "target": "com.amazonaws.iotdataplane#Topic",
                    "traits": {
                        "smithy.api#documentation": "<p>The topic name to which the retained message was published.</p>"
                    }
                },
                "payloadSize": {
                    "target": "com.amazonaws.iotdataplane#PayloadSize",
                    "traits": {
                        "smithy.api#documentation": "<p>The size of the retained message's payload in bytes.</p>"
                    }
                },
                "qos": {
                    "target": "com.amazonaws.iotdataplane#Qos",
                    "traits": {
                        "smithy.api#documentation": "<p>The quality of service (QoS) level used to publish the retained message.</p>"
                    }
                },
                "lastModifiedTime": {
                    "target": "com.amazonaws.iotdataplane#Timestamp",
                    "traits": {
                        "smithy.api#documentation": "<p>The Epoch date and time, in milliseconds, when the retained message was stored by IoT.</p>"
                    }
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>Information about a single retained message.</p>"
            }
        },
        "com.amazonaws.iotdataplane#ServiceUnavailableException": {
            "type": "structure",
            "members": {
                "message": {
                    "target": "com.amazonaws.iotdataplane#errorMessage",
                    "traits": {
                        "smithy.api#documentation": "<p>The message for the exception.</p>"
                    }
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>The service is temporarily unavailable.</p>",
                "smithy.api#error": "server",
                "smithy.api#httpError": 503
            }
        },
        "com.amazonaws.iotdataplane#ShadowName": {
            "type": "string",
            "traits": {
                "smithy.api#length": {
                    "min": 1,
                    "max": 64
                },
                "smithy.api#pattern": "^[a-zA-Z0-9:_-]+$"
            }
        },
        "com.amazonaws.iotdataplane#ThingName": {
            "type": "string",
            "traits": {
                "smithy.api#length": {
                    "min": 1,
                    "max": 128
                },
                "smithy.api#pattern": "^[a-zA-Z0-9:_-]+$"
            }
        },
        "com.amazonaws.iotdataplane#ThrottlingException": {
            "type": "structure",
            "members": {
                "message": {
                    "target": "com.amazonaws.iotdataplane#errorMessage",
                    "traits": {
                        "smithy.api#documentation": "<p>The message for the exception.</p>"
                    }
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>The rate exceeds the limit.</p>",
                "smithy.api#error": "client",
                "smithy.api#httpError": 429
            }
        },
        "com.amazonaws.iotdataplane#Timestamp": {
            "type": "long"
        },
        "com.amazonaws.iotdataplane#Topic": {
            "type": "string"
        },
        "com.amazonaws.iotdataplane#UnauthorizedException": {
            "type": "structure",
            "members": {
                "message": {
                    "target": "com.amazonaws.iotdataplane#errorMessage",
                    "traits": {
                        "smithy.api#documentation": "<p>The message for the exception.</p>"
                    }
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>You are not authorized to perform this operation.</p>",
                "smithy.api#error": "client",
                "smithy.api#httpError": 401
            }
        },
        "com.amazonaws.iotdataplane#UnsupportedDocumentEncodingException": {
            "type": "structure",
            "members": {
                "message": {
                    "target": "com.amazonaws.iotdataplane#errorMessage",
                    "traits": {
                        "smithy.api#documentation": "<p>The message for the exception.</p>"
                    }
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>The document encoding is not supported.</p>",
                "smithy.api#error": "client",
                "smithy.api#httpError": 415
            }
        },
        "com.amazonaws.iotdataplane#UpdateThingShadow": {
            "type": "operation",
            "input": {
                "target": "com.amazonaws.iotdataplane#UpdateThingShadowRequest"
            },
            "output": {
                "target": "com.amazonaws.iotdataplane#UpdateThingShadowResponse"
            },
            "errors": [
                {
                    "target": "com.amazonaws.iotdataplane#ConflictException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#InternalFailureException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#InvalidRequestException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#MethodNotAllowedException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#RequestEntityTooLargeException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#ServiceUnavailableException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#ThrottlingException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#UnauthorizedException"
                },
                {
                    "target": "com.amazonaws.iotdataplane#UnsupportedDocumentEncodingException"
                }
            ],
            "traits": {
                "smithy.api#documentation": "<p>Updates the shadow for the specified thing.</p>\n         <p>Requires permission to access the <a href=\"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions\">UpdateThingShadow</a> action.</p>\n         <p>For more information, see <a href=\"http://docs.aws.amazon.com/iot/latest/developerguide/API_UpdateThingShadow.html\">UpdateThingShadow</a> in the\n        IoT Developer Guide.</p>",
                "smithy.api#http": {
                    "method": "POST",
                    "uri": "/things/{thingName}/shadow",
                    "code": 200
                }
            }
        },
        "com.amazonaws.iotdataplane#UpdateThingShadowRequest": {
            "type": "structure",
            "members": {
                "thingName": {
                    "target": "com.amazonaws.iotdataplane#ThingName",
                    "traits": {
                        "smithy.api#documentation": "<p>The name of the thing.</p>",
                        "smithy.api#httpLabel": {},
                        "smithy.api#required": {}
                    }
                },
                "shadowName": {
                    "target": "com.amazonaws.iotdataplane#ShadowName",
                    "traits": {
                        "smithy.api#documentation": "<p>The name of the shadow.</p>",
                        "smithy.api#httpQuery": "name"
                    }
                },
                "payload": {
                    "target": "com.amazonaws.iotdataplane#JsonDocument",
                    "traits": {
                        "smithy.api#documentation": "<p>The state information, in JSON format.</p>",
                        "smithy.api#httpPayload": {},
                        "smithy.api#required": {}
                    }
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>The input for the UpdateThingShadow operation.</p>"
            }
        },
        "com.amazonaws.iotdataplane#UpdateThingShadowResponse": {
            "type": "structure",
            "members": {
                "payload": {
                    "target": "com.amazonaws.iotdataplane#JsonDocument",
                    "traits": {
                        "smithy.api#documentation": "<p>The state information, in JSON format.</p>",
                        "smithy.api#httpPayload": {}
                    }
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>The output from the UpdateThingShadow operation.</p>"
            }
        },
        "com.amazonaws.iotdataplane#errorMessage": {
            "type": "string"
        }
    }
}
