{
    "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.iot1clickdevicesservice#Attributes": {
            "type": "structure",
            "members": {}
        },
        "com.amazonaws.iot1clickdevicesservice#ClaimDevicesByClaimCode": {
            "type": "operation",
            "input": {
                "target": "com.amazonaws.iot1clickdevicesservice#ClaimDevicesByClaimCodeRequest"
            },
            "output": {
                "target": "com.amazonaws.iot1clickdevicesservice#ClaimDevicesByClaimCodeResponse"
            },
            "errors": [
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#ForbiddenException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#InternalFailureException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#InvalidRequestException"
                }
            ],
            "traits": {
                "smithy.api#documentation": "<p>Adds device(s) to your account (i.e., claim one or more devices) if and only if you\n received a claim code with the device(s).</p>",
                "smithy.api#http": {
                    "method": "PUT",
                    "uri": "/claims/{ClaimCode}",
                    "code": 200
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#ClaimDevicesByClaimCodeRequest": {
            "type": "structure",
            "members": {
                "ClaimCode": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The claim code, starting with \"C-\", as provided by the device manufacturer.</p>",
                        "smithy.api#httpLabel": {},
                        "smithy.api#required": {}
                    }
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#ClaimDevicesByClaimCodeResponse": {
            "type": "structure",
            "members": {
                "ClaimCode": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__stringMin12Max40",
                    "traits": {
                        "smithy.api#documentation": "<p>The claim code provided by the device manufacturer.</p>",
                        "smithy.api#jsonName": "claimCode"
                    }
                },
                "Total": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__integer",
                    "traits": {
                        "smithy.api#documentation": "<p>The total number of devices associated with the claim code that has been processed in\n the claim request.</p>",
                        "smithy.api#jsonName": "total"
                    }
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#DescribeDevice": {
            "type": "operation",
            "input": {
                "target": "com.amazonaws.iot1clickdevicesservice#DescribeDeviceRequest"
            },
            "output": {
                "target": "com.amazonaws.iot1clickdevicesservice#DescribeDeviceResponse"
            },
            "errors": [
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#InternalFailureException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#InvalidRequestException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#ResourceNotFoundException"
                }
            ],
            "traits": {
                "smithy.api#documentation": "<p>Given a device ID, returns a DescribeDeviceResponse object describing the\n details of the device.</p>",
                "smithy.api#http": {
                    "method": "GET",
                    "uri": "/devices/{DeviceId}",
                    "code": 200
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#DescribeDeviceRequest": {
            "type": "structure",
            "members": {
                "DeviceId": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The unique identifier of the device.</p>",
                        "smithy.api#httpLabel": {},
                        "smithy.api#required": {}
                    }
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#DescribeDeviceResponse": {
            "type": "structure",
            "members": {
                "DeviceDescription": {
                    "target": "com.amazonaws.iot1clickdevicesservice#DeviceDescription",
                    "traits": {
                        "smithy.api#documentation": "<p>Device details.</p>",
                        "smithy.api#jsonName": "deviceDescription"
                    }
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#Device": {
            "type": "structure",
            "members": {
                "Attributes": {
                    "target": "com.amazonaws.iot1clickdevicesservice#Attributes",
                    "traits": {
                        "smithy.api#documentation": "<p>The user specified attributes associated with the device for an event.</p>",
                        "smithy.api#jsonName": "attributes"
                    }
                },
                "DeviceId": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The unique identifier of the device.</p>",
                        "smithy.api#jsonName": "deviceId"
                    }
                },
                "Type": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The device type, such as \"button\".</p>",
                        "smithy.api#jsonName": "type"
                    }
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#DeviceAttributes": {
            "type": "map",
            "key": {
                "target": "com.amazonaws.iot1clickdevicesservice#__string"
            },
            "value": {
                "target": "com.amazonaws.iot1clickdevicesservice#__string"
            },
            "traits": {
                "smithy.api#documentation": "<p>\n DeviceAttributes is a string-to-string map specified by the user.</p>"
            }
        },
        "com.amazonaws.iot1clickdevicesservice#DeviceDescription": {
            "type": "structure",
            "members": {
                "Arn": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The ARN of the device.</p>",
                        "smithy.api#jsonName": "arn"
                    }
                },
                "Attributes": {
                    "target": "com.amazonaws.iot1clickdevicesservice#DeviceAttributes",
                    "traits": {
                        "smithy.api#documentation": "<p>An array of zero or more elements of DeviceAttribute objects providing\n user specified device attributes.</p>",
                        "smithy.api#jsonName": "attributes"
                    }
                },
                "DeviceId": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The unique identifier of the device.</p>",
                        "smithy.api#jsonName": "deviceId"
                    }
                },
                "Enabled": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__boolean",
                    "traits": {
                        "smithy.api#documentation": "<p>A Boolean value indicating whether or not the device is enabled.</p>",
                        "smithy.api#jsonName": "enabled"
                    }
                },
                "RemainingLife": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__doubleMin0Max100",
                    "traits": {
                        "smithy.api#documentation": "<p>A value between 0 and 1 inclusive, representing the fraction of life remaining for the\n device.</p>",
                        "smithy.api#jsonName": "remainingLife"
                    }
                },
                "Type": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The type of the device, such as \"button\".</p>",
                        "smithy.api#jsonName": "type"
                    }
                },
                "Tags": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__mapOf__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The tags currently associated with the AWS IoT 1-Click device.</p>",
                        "smithy.api#jsonName": "tags"
                    }
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#DeviceEvent": {
            "type": "structure",
            "members": {
                "Device": {
                    "target": "com.amazonaws.iot1clickdevicesservice#Device",
                    "traits": {
                        "smithy.api#documentation": "<p>An object representing the device associated with the event.</p>",
                        "smithy.api#jsonName": "device"
                    }
                },
                "StdEvent": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>A serialized JSON object representing the device-type specific event.</p>",
                        "smithy.api#jsonName": "stdEvent"
                    }
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#DeviceMethod": {
            "type": "structure",
            "members": {
                "DeviceType": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The type of the device, such as \"button\".</p>",
                        "smithy.api#jsonName": "deviceType"
                    }
                },
                "MethodName": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The name of the method applicable to the deviceType.</p>",
                        "smithy.api#jsonName": "methodName"
                    }
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#FinalizeDeviceClaim": {
            "type": "operation",
            "input": {
                "target": "com.amazonaws.iot1clickdevicesservice#FinalizeDeviceClaimRequest"
            },
            "output": {
                "target": "com.amazonaws.iot1clickdevicesservice#FinalizeDeviceClaimResponse"
            },
            "errors": [
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#InternalFailureException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#InvalidRequestException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#PreconditionFailedException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#ResourceConflictException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#ResourceNotFoundException"
                }
            ],
            "traits": {
                "smithy.api#documentation": "<p>Given a device ID, finalizes the claim request for the associated device.</p><note>\n <p>Claiming a device consists of initiating a claim, then publishing a device event,\n and finalizing the claim. For a device of type button, a device event can\n be published by simply clicking the device.</p>\n </note>",
                "smithy.api#http": {
                    "method": "PUT",
                    "uri": "/devices/{DeviceId}/finalize-claim",
                    "code": 200
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#FinalizeDeviceClaimRequest": {
            "type": "structure",
            "members": {
                "DeviceId": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The unique identifier of the device.</p>",
                        "smithy.api#httpLabel": {},
                        "smithy.api#required": {}
                    }
                },
                "Tags": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__mapOf__string",
                    "traits": {
                        "smithy.api#documentation": "<p>A collection of key/value pairs defining the resource tags. For example, {\n \"tags\": {\"key1\": \"value1\", \"key2\": \"value2\"} }. For more information, see <a href=\"https://aws.amazon.com/answers/account-management/aws-tagging-strategies/\">AWS\n Tagging Strategies</a>.</p><p>\n \n </p>",
                        "smithy.api#jsonName": "tags"
                    }
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#FinalizeDeviceClaimResponse": {
            "type": "structure",
            "members": {
                "State": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The device's final claim state.</p>",
                        "smithy.api#jsonName": "state"
                    }
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#ForbiddenException": {
            "type": "structure",
            "members": {
                "Code": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>403</p>",
                        "smithy.api#jsonName": "code"
                    }
                },
                "Message": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The 403 error message returned by the web server.</p>",
                        "smithy.api#jsonName": "message"
                    }
                }
            },
            "traits": {
                "smithy.api#error": "client",
                "smithy.api#httpError": 403
            }
        },
        "com.amazonaws.iot1clickdevicesservice#GetDeviceMethods": {
            "type": "operation",
            "input": {
                "target": "com.amazonaws.iot1clickdevicesservice#GetDeviceMethodsRequest"
            },
            "output": {
                "target": "com.amazonaws.iot1clickdevicesservice#GetDeviceMethodsResponse"
            },
            "errors": [
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#InternalFailureException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#InvalidRequestException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#ResourceNotFoundException"
                }
            ],
            "traits": {
                "smithy.api#documentation": "<p>Given a device ID, returns the invokable methods associated with the device.</p>",
                "smithy.api#http": {
                    "method": "GET",
                    "uri": "/devices/{DeviceId}/methods",
                    "code": 200
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#GetDeviceMethodsRequest": {
            "type": "structure",
            "members": {
                "DeviceId": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The unique identifier of the device.</p>",
                        "smithy.api#httpLabel": {},
                        "smithy.api#required": {}
                    }
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#GetDeviceMethodsResponse": {
            "type": "structure",
            "members": {
                "DeviceMethods": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__listOfDeviceMethod",
                    "traits": {
                        "smithy.api#documentation": "<p>List of available device APIs.</p>",
                        "smithy.api#jsonName": "deviceMethods"
                    }
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#InitiateDeviceClaim": {
            "type": "operation",
            "input": {
                "target": "com.amazonaws.iot1clickdevicesservice#InitiateDeviceClaimRequest"
            },
            "output": {
                "target": "com.amazonaws.iot1clickdevicesservice#InitiateDeviceClaimResponse"
            },
            "errors": [
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#InternalFailureException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#InvalidRequestException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#ResourceConflictException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#ResourceNotFoundException"
                }
            ],
            "traits": {
                "smithy.api#documentation": "<p>Given a device ID, initiates a claim request for the associated device.</p><note>\n <p>Claiming a device consists of initiating a claim, then publishing a device event,\n and finalizing the claim. For a device of type button, a device event can\n be published by simply clicking the device.</p>\n </note>",
                "smithy.api#http": {
                    "method": "PUT",
                    "uri": "/devices/{DeviceId}/initiate-claim",
                    "code": 200
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#InitiateDeviceClaimRequest": {
            "type": "structure",
            "members": {
                "DeviceId": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The unique identifier of the device.</p>",
                        "smithy.api#httpLabel": {},
                        "smithy.api#required": {}
                    }
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#InitiateDeviceClaimResponse": {
            "type": "structure",
            "members": {
                "State": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The device's final claim state.</p>",
                        "smithy.api#jsonName": "state"
                    }
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#InternalFailureException": {
            "type": "structure",
            "members": {
                "Code": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>500</p>",
                        "smithy.api#jsonName": "code"
                    }
                },
                "Message": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The 500 error message returned by the web server.</p>",
                        "smithy.api#jsonName": "message"
                    }
                }
            },
            "traits": {
                "smithy.api#error": "server",
                "smithy.api#httpError": 500
            }
        },
        "com.amazonaws.iot1clickdevicesservice#InvalidRequestException": {
            "type": "structure",
            "members": {
                "Code": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>400</p>",
                        "smithy.api#jsonName": "code"
                    }
                },
                "Message": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The 400 error message returned by the web server.</p>",
                        "smithy.api#jsonName": "message"
                    }
                }
            },
            "traits": {
                "smithy.api#error": "client",
                "smithy.api#httpError": 400
            }
        },
        "com.amazonaws.iot1clickdevicesservice#InvokeDeviceMethod": {
            "type": "operation",
            "input": {
                "target": "com.amazonaws.iot1clickdevicesservice#InvokeDeviceMethodRequest"
            },
            "output": {
                "target": "com.amazonaws.iot1clickdevicesservice#InvokeDeviceMethodResponse"
            },
            "errors": [
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#InternalFailureException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#InvalidRequestException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#PreconditionFailedException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#RangeNotSatisfiableException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#ResourceConflictException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#ResourceNotFoundException"
                }
            ],
            "traits": {
                "smithy.api#documentation": "<p>Given a device ID, issues a request to invoke a named device method (with possible\n parameters). See the \"Example POST\" code snippet below.</p>",
                "smithy.api#http": {
                    "method": "POST",
                    "uri": "/devices/{DeviceId}/methods",
                    "code": 200
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#InvokeDeviceMethodRequest": {
            "type": "structure",
            "members": {
                "DeviceId": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The unique identifier of the device.</p>",
                        "smithy.api#httpLabel": {},
                        "smithy.api#required": {}
                    }
                },
                "DeviceMethod": {
                    "target": "com.amazonaws.iot1clickdevicesservice#DeviceMethod",
                    "traits": {
                        "smithy.api#documentation": "<p>The device method to invoke.</p>",
                        "smithy.api#jsonName": "deviceMethod"
                    }
                },
                "DeviceMethodParameters": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>A JSON encoded string containing the device method request parameters.</p>",
                        "smithy.api#jsonName": "deviceMethodParameters"
                    }
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#InvokeDeviceMethodResponse": {
            "type": "structure",
            "members": {
                "DeviceMethodResponse": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>A JSON encoded string containing the device method response.</p>",
                        "smithy.api#jsonName": "deviceMethodResponse"
                    }
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#IoT1ClickDevicesService": {
            "type": "service",
            "version": "2018-05-14",
            "operations": [
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#ClaimDevicesByClaimCode"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#DescribeDevice"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#FinalizeDeviceClaim"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#GetDeviceMethods"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#InitiateDeviceClaim"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#InvokeDeviceMethod"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#ListDeviceEvents"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#ListDevices"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#ListTagsForResource"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#TagResource"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#UnclaimDevice"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#UntagResource"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#UpdateDeviceState"
                }
            ],
            "traits": {
                "aws.api#service": {
                    "sdkId": "IoT 1Click Devices Service",
                    "arnNamespace": "iot1click",
                    "cloudFormationName": "IoT1ClickDevicesService",
                    "cloudTrailEventSource": "iot1clickdevicesservice.amazonaws.com",
                    "endpointPrefix": "devices.iot1click"
                },
                "aws.auth#sigv4": {
                    "name": "iot1click"
                },
                "aws.protocols#restJson1": {},
                "smithy.api#documentation": "<p>Describes all of the AWS IoT 1-Click device-related API operations for the service.\n Also provides sample requests, responses, and errors for the supported web services\n protocols.</p>",
                "smithy.api#title": "AWS IoT 1-Click Devices Service"
            }
        },
        "com.amazonaws.iot1clickdevicesservice#ListDeviceEvents": {
            "type": "operation",
            "input": {
                "target": "com.amazonaws.iot1clickdevicesservice#ListDeviceEventsRequest"
            },
            "output": {
                "target": "com.amazonaws.iot1clickdevicesservice#ListDeviceEventsResponse"
            },
            "errors": [
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#InternalFailureException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#InvalidRequestException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#RangeNotSatisfiableException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#ResourceNotFoundException"
                }
            ],
            "traits": {
                "smithy.api#documentation": "<p>Using a device ID, returns a DeviceEventsResponse object containing an\n array of events for the device.</p>",
                "smithy.api#http": {
                    "method": "GET",
                    "uri": "/devices/{DeviceId}/events",
                    "code": 200
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#ListDeviceEventsRequest": {
            "type": "structure",
            "members": {
                "DeviceId": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The unique identifier of the device.</p>",
                        "smithy.api#httpLabel": {},
                        "smithy.api#required": {}
                    }
                },
                "FromTimeStamp": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__timestampIso8601",
                    "traits": {
                        "smithy.api#documentation": "<p>The start date for the device event query, in ISO8061 format. For example,\n 2018-03-28T15:45:12.880Z\n </p>",
                        "smithy.api#httpQuery": "fromTimeStamp",
                        "smithy.api#required": {}
                    }
                },
                "MaxResults": {
                    "target": "com.amazonaws.iot1clickdevicesservice#MaxResults",
                    "traits": {
                        "smithy.api#documentation": "<p>The maximum number of results to return per request. If not set, a default value of\n 100 is used.</p>",
                        "smithy.api#httpQuery": "maxResults"
                    }
                },
                "NextToken": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The token to retrieve the next set of results.</p>",
                        "smithy.api#httpQuery": "nextToken"
                    }
                },
                "ToTimeStamp": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__timestampIso8601",
                    "traits": {
                        "smithy.api#documentation": "<p>The end date for the device event query, in ISO8061 format. For example,\n 2018-03-28T15:45:12.880Z\n </p>",
                        "smithy.api#httpQuery": "toTimeStamp",
                        "smithy.api#required": {}
                    }
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#ListDeviceEventsResponse": {
            "type": "structure",
            "members": {
                "Events": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__listOfDeviceEvent",
                    "traits": {
                        "smithy.api#documentation": "<p>An array of zero or more elements describing the event(s) associated with the\n device.</p>",
                        "smithy.api#jsonName": "events"
                    }
                },
                "NextToken": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The token to retrieve the next set of results.</p>",
                        "smithy.api#jsonName": "nextToken"
                    }
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#ListDevices": {
            "type": "operation",
            "input": {
                "target": "com.amazonaws.iot1clickdevicesservice#ListDevicesRequest"
            },
            "output": {
                "target": "com.amazonaws.iot1clickdevicesservice#ListDevicesResponse"
            },
            "errors": [
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#InternalFailureException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#InvalidRequestException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#RangeNotSatisfiableException"
                }
            ],
            "traits": {
                "smithy.api#documentation": "<p>Lists the 1-Click compatible devices associated with your AWS account.</p>",
                "smithy.api#http": {
                    "method": "GET",
                    "uri": "/devices",
                    "code": 200
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#ListDevicesRequest": {
            "type": "structure",
            "members": {
                "DeviceType": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The type of the device, such as \"button\".</p>",
                        "smithy.api#httpQuery": "deviceType"
                    }
                },
                "MaxResults": {
                    "target": "com.amazonaws.iot1clickdevicesservice#MaxResults",
                    "traits": {
                        "smithy.api#documentation": "<p>The maximum number of results to return per request. If not set, a default value of\n 100 is used.</p>",
                        "smithy.api#httpQuery": "maxResults"
                    }
                },
                "NextToken": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The token to retrieve the next set of results.</p>",
                        "smithy.api#httpQuery": "nextToken"
                    }
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#ListDevicesResponse": {
            "type": "structure",
            "members": {
                "Devices": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__listOfDeviceDescription",
                    "traits": {
                        "smithy.api#documentation": "<p>A list of devices.</p>",
                        "smithy.api#jsonName": "devices"
                    }
                },
                "NextToken": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The token to retrieve the next set of results.</p>",
                        "smithy.api#jsonName": "nextToken"
                    }
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#ListTagsForResource": {
            "type": "operation",
            "input": {
                "target": "com.amazonaws.iot1clickdevicesservice#ListTagsForResourceRequest"
            },
            "output": {
                "target": "com.amazonaws.iot1clickdevicesservice#ListTagsForResourceResponse"
            },
            "errors": [
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#InternalFailureException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#ResourceNotFoundException"
                }
            ],
            "traits": {
                "smithy.api#documentation": "<p>Lists the tags associated with the specified resource ARN.</p>",
                "smithy.api#http": {
                    "method": "GET",
                    "uri": "/tags/{ResourceArn}",
                    "code": 200
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#ListTagsForResourceRequest": {
            "type": "structure",
            "members": {
                "ResourceArn": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The ARN of the resource.</p>",
                        "smithy.api#httpLabel": {},
                        "smithy.api#required": {}
                    }
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#ListTagsForResourceResponse": {
            "type": "structure",
            "members": {
                "Tags": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__mapOf__string",
                    "traits": {
                        "smithy.api#documentation": "<p>A collection of key/value pairs defining the resource tags. For example, {\n \"tags\": {\"key1\": \"value1\", \"key2\": \"value2\"} }. For more information, see <a href=\"https://aws.amazon.com/answers/account-management/aws-tagging-strategies/\">AWS\n Tagging Strategies</a>.</p><p>\n \n </p>",
                        "smithy.api#jsonName": "tags"
                    }
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#MaxResults": {
            "type": "integer",
            "traits": {
                "smithy.api#range": {
                    "min": 1,
                    "max": 250
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#PreconditionFailedException": {
            "type": "structure",
            "members": {
                "Code": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>412</p>",
                        "smithy.api#jsonName": "code"
                    }
                },
                "Message": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>An error message explaining the error or its remedy.</p>",
                        "smithy.api#jsonName": "message"
                    }
                }
            },
            "traits": {
                "smithy.api#error": "client",
                "smithy.api#httpError": 412
            }
        },
        "com.amazonaws.iot1clickdevicesservice#RangeNotSatisfiableException": {
            "type": "structure",
            "members": {
                "Code": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>416</p>",
                        "smithy.api#jsonName": "code"
                    }
                },
                "Message": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The requested number of results specified by nextToken cannot be\n satisfied.</p>",
                        "smithy.api#jsonName": "message"
                    }
                }
            },
            "traits": {
                "smithy.api#error": "client",
                "smithy.api#httpError": 416
            }
        },
        "com.amazonaws.iot1clickdevicesservice#ResourceConflictException": {
            "type": "structure",
            "members": {
                "Code": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>409</p>",
                        "smithy.api#jsonName": "code"
                    }
                },
                "Message": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>An error message explaining the error or its remedy.</p>",
                        "smithy.api#jsonName": "message"
                    }
                }
            },
            "traits": {
                "smithy.api#error": "client",
                "smithy.api#httpError": 409
            }
        },
        "com.amazonaws.iot1clickdevicesservice#ResourceNotFoundException": {
            "type": "structure",
            "members": {
                "Code": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>404</p>",
                        "smithy.api#jsonName": "code"
                    }
                },
                "Message": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The requested device could not be found.</p>",
                        "smithy.api#jsonName": "message"
                    }
                }
            },
            "traits": {
                "smithy.api#error": "client",
                "smithy.api#httpError": 404
            }
        },
        "com.amazonaws.iot1clickdevicesservice#TagResource": {
            "type": "operation",
            "input": {
                "target": "com.amazonaws.iot1clickdevicesservice#TagResourceRequest"
            },
            "errors": [
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#InternalFailureException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#InvalidRequestException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#ResourceNotFoundException"
                }
            ],
            "traits": {
                "smithy.api#documentation": "<p>Adds or updates the tags associated with the resource ARN. See <a href=\"https://docs.aws.amazon.com/iot-1-click/latest/developerguide/1click-appendix.html#1click-limits\">AWS IoT 1-Click Service Limits</a> for the maximum number of tags allowed per\n resource.</p>",
                "smithy.api#http": {
                    "method": "POST",
                    "uri": "/tags/{ResourceArn}",
                    "code": 204
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#TagResourceRequest": {
            "type": "structure",
            "members": {
                "ResourceArn": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The ARN of the resource.</p>",
                        "smithy.api#httpLabel": {},
                        "smithy.api#required": {}
                    }
                },
                "Tags": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__mapOf__string",
                    "traits": {
                        "smithy.api#documentation": "<p>A collection of key/value pairs defining the resource tags. For example, {\n \"tags\": {\"key1\": \"value1\", \"key2\": \"value2\"} }. For more information, see <a href=\"https://aws.amazon.com/answers/account-management/aws-tagging-strategies/\">AWS\n Tagging Strategies</a>.</p><p>\n \n </p>",
                        "smithy.api#jsonName": "tags",
                        "smithy.api#required": {}
                    }
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#UnclaimDevice": {
            "type": "operation",
            "input": {
                "target": "com.amazonaws.iot1clickdevicesservice#UnclaimDeviceRequest"
            },
            "output": {
                "target": "com.amazonaws.iot1clickdevicesservice#UnclaimDeviceResponse"
            },
            "errors": [
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#InternalFailureException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#InvalidRequestException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#ResourceNotFoundException"
                }
            ],
            "traits": {
                "smithy.api#documentation": "<p>Disassociates a device from your AWS account using its device ID.</p>",
                "smithy.api#http": {
                    "method": "PUT",
                    "uri": "/devices/{DeviceId}/unclaim",
                    "code": 200
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#UnclaimDeviceRequest": {
            "type": "structure",
            "members": {
                "DeviceId": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The unique identifier of the device.</p>",
                        "smithy.api#httpLabel": {},
                        "smithy.api#required": {}
                    }
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#UnclaimDeviceResponse": {
            "type": "structure",
            "members": {
                "State": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The device's final claim state.</p>",
                        "smithy.api#jsonName": "state"
                    }
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#UntagResource": {
            "type": "operation",
            "input": {
                "target": "com.amazonaws.iot1clickdevicesservice#UntagResourceRequest"
            },
            "errors": [
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#InternalFailureException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#InvalidRequestException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#ResourceNotFoundException"
                }
            ],
            "traits": {
                "smithy.api#documentation": "<p>Using tag keys, deletes the tags (key/value pairs) associated with the specified\n resource ARN.</p>",
                "smithy.api#http": {
                    "method": "DELETE",
                    "uri": "/tags/{ResourceArn}",
                    "code": 204
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#UntagResourceRequest": {
            "type": "structure",
            "members": {
                "ResourceArn": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The ARN of the resource.</p>",
                        "smithy.api#httpLabel": {},
                        "smithy.api#required": {}
                    }
                },
                "TagKeys": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__listOf__string",
                    "traits": {
                        "smithy.api#documentation": "<p>A collections of tag keys. For example, {\"key1\",\"key2\"}</p>",
                        "smithy.api#httpQuery": "tagKeys",
                        "smithy.api#required": {}
                    }
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#UpdateDeviceState": {
            "type": "operation",
            "input": {
                "target": "com.amazonaws.iot1clickdevicesservice#UpdateDeviceStateRequest"
            },
            "output": {
                "target": "com.amazonaws.iot1clickdevicesservice#UpdateDeviceStateResponse"
            },
            "errors": [
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#InternalFailureException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#InvalidRequestException"
                },
                {
                    "target": "com.amazonaws.iot1clickdevicesservice#ResourceNotFoundException"
                }
            ],
            "traits": {
                "smithy.api#documentation": "<p>Using a Boolean value (true or false), this operation\n enables or disables the device given a device ID.</p>",
                "smithy.api#http": {
                    "method": "PUT",
                    "uri": "/devices/{DeviceId}/state",
                    "code": 200
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#UpdateDeviceStateRequest": {
            "type": "structure",
            "members": {
                "DeviceId": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__string",
                    "traits": {
                        "smithy.api#documentation": "<p>The unique identifier of the device.</p>",
                        "smithy.api#httpLabel": {},
                        "smithy.api#required": {}
                    }
                },
                "Enabled": {
                    "target": "com.amazonaws.iot1clickdevicesservice#__boolean",
                    "traits": {
                        "smithy.api#documentation": "<p>If true, the device is enabled. If false, the device is\n disabled.</p>",
                        "smithy.api#jsonName": "enabled"
                    }
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#UpdateDeviceStateResponse": {
            "type": "structure",
            "members": {}
        },
        "com.amazonaws.iot1clickdevicesservice#__boolean": {
            "type": "boolean"
        },
        "com.amazonaws.iot1clickdevicesservice#__doubleMin0Max100": {
            "type": "double"
        },
        "com.amazonaws.iot1clickdevicesservice#__integer": {
            "type": "integer"
        },
        "com.amazonaws.iot1clickdevicesservice#__listOfDeviceDescription": {
            "type": "list",
            "member": {
                "target": "com.amazonaws.iot1clickdevicesservice#DeviceDescription"
            }
        },
        "com.amazonaws.iot1clickdevicesservice#__listOfDeviceEvent": {
            "type": "list",
            "member": {
                "target": "com.amazonaws.iot1clickdevicesservice#DeviceEvent"
            }
        },
        "com.amazonaws.iot1clickdevicesservice#__listOfDeviceMethod": {
            "type": "list",
            "member": {
                "target": "com.amazonaws.iot1clickdevicesservice#DeviceMethod"
            }
        },
        "com.amazonaws.iot1clickdevicesservice#__listOf__string": {
            "type": "list",
            "member": {
                "target": "com.amazonaws.iot1clickdevicesservice#__string"
            }
        },
        "com.amazonaws.iot1clickdevicesservice#__mapOf__string": {
            "type": "map",
            "key": {
                "target": "com.amazonaws.iot1clickdevicesservice#__string"
            },
            "value": {
                "target": "com.amazonaws.iot1clickdevicesservice#__string"
            }
        },
        "com.amazonaws.iot1clickdevicesservice#__string": {
            "type": "string"
        },
        "com.amazonaws.iot1clickdevicesservice#__stringMin12Max40": {
            "type": "string",
            "traits": {
                "smithy.api#length": {
                    "min": 12,
                    "max": 40
                }
            }
        },
        "com.amazonaws.iot1clickdevicesservice#__timestampIso8601": {
            "type": "timestamp",
            "traits": {
                "smithy.api#timestampFormat": "date-time"
            }
        }
    }
}
