"documentation":"<fullname>AWS IoT</fullname> <p>AWS IoT provides secure, bi-directional communication between Internet-connected things (such as sensors, actuators, embedded devices, or smart appliances) and the AWS cloud. You can discover your custom IoT-Data endpoint to communicate with, configure rules for data processing and integration with other services, organize resources associated with each thing (Thing Registry), configure logging, and create and manage policies and credentials to authenticate things.</p> <p>For more information about how AWS IoT works, see the <a href=\"http://docs.aws.amazon.com/iot/latest/developerguide/aws-iot-how-it-works.html\">Developer Guide</a>.</p>",
"documentation":"<p>The input for the AcceptCertificateTransfer operation.</p>"
},
"errors":[
{
"shape":"ResourceNotFoundException",
"error":{"httpStatusCode":404},
"exception":true,
"documentation":"<p>The specified resource does not exist.</p>"
},
{
"shape":"TransferAlreadyCompletedException",
"error":{"httpStatusCode":410},
"exception":true,
"documentation":"<p>You can't revert the certificate transfer because it has already completed.</p>"
},
{
"shape":"InvalidRequestException",
"error":{"httpStatusCode":400},
"exception":true,
"documentation":"<p>The request is not valid.</p>"
},
{
"shape":"ThrottlingException",
"error":{"httpStatusCode":429},
"exception":true,
"documentation":"<p>The rate exceeds the limit.</p>"
},
{
"shape":"UnauthorizedException",
"error":{"httpStatusCode":401},
"exception":true,
"documentation":"<p>You are not authorized to perform this operation.</p>"
},
{
"shape":"ServiceUnavailableException",
"error":{"httpStatusCode":503},
"exception":true,
"fault":true,
"documentation":"<p>The service is temporarily unavailable.</p>"
},
{
"shape":"InternalFailureException",
"error":{"httpStatusCode":500},
"exception":true,
"fault":true,
"documentation":"<p>An unexpected error has occurred.</p>"
}
],
"documentation":"<p>Accepts a pending certificate transfer. The default state of the certificate is INACTIVE.</p> <p>To check for pending certificate transfers, call <a>ListCertificates</a> to enumerate your certificates.</p>"
},
"AttachPrincipalPolicy":{
"name":"AttachPrincipalPolicy",
"http":{
"method":"PUT",
"requestUri":"/principal-policies/{policyName}"
},
"input":{
"shape":"AttachPrincipalPolicyRequest",
"documentation":"<p>The input for the AttachPrincipalPolicy operation.</p>"
},
"errors":[
{
"shape":"ResourceNotFoundException",
"error":{"httpStatusCode":404},
"exception":true,
"documentation":"<p>The specified resource does not exist.</p>"
},
{
"shape":"InvalidRequestException",
"error":{"httpStatusCode":400},
"exception":true,
"documentation":"<p>The request is not valid.</p>"
},
{
"shape":"ThrottlingException",
"error":{"httpStatusCode":429},
"exception":true,
"documentation":"<p>The rate exceeds the limit.</p>"
},
{
"shape":"UnauthorizedException",
"error":{"httpStatusCode":401},
"exception":true,
"documentation":"<p>You are not authorized to perform this operation.</p>"
},
{
"shape":"ServiceUnavailableException",
"error":{"httpStatusCode":503},
"exception":true,
"fault":true,
"documentation":"<p>The service is temporarily unavailable.</p>"
},
{
"shape":"InternalFailureException",
"error":{"httpStatusCode":500},
"exception":true,
"fault":true,
"documentation":"<p>An unexpected error has occurred.</p>"
},
{
"shape":"LimitExceededException",
"error":{"httpStatusCode":410},
"exception":true,
"documentation":"<p>The number of attached entities exceeds the limit.</p>"
}
],
"documentation":"<p>Attaches the specified policy to the specified principal (certificate or other credential).</p>"
},
"AttachThingPrincipal":{
"name":"AttachThingPrincipal",
"http":{
"method":"PUT",
"requestUri":"/things/{thingName}/principals"
},
"input":{
"shape":"AttachThingPrincipalRequest",
"documentation":"<p>The input for the AttachThingPrincipal operation.</p>"
},
"output":{
"shape":"AttachThingPrincipalResponse",
"documentation":"<p>The output from the AttachThingPrincipal operation.</p>"
},
"errors":[
{
"shape":"ResourceNotFoundException",
"error":{"httpStatusCode":404},
"exception":true,
"documentation":"<p>The specified resource does not exist.</p>"
},
{
"shape":"InvalidRequestException",
"error":{"httpStatusCode":400},
"exception":true,
"documentation":"<p>The request is not valid.</p>"
},
{
"shape":"ThrottlingException",
"error":{"httpStatusCode":429},
"exception":true,
"documentation":"<p>The rate exceeds the limit.</p>"
},
{
"shape":"UnauthorizedException",
"error":{"httpStatusCode":401},
"exception":true,
"documentation":"<p>You are not authorized to perform this operation.</p>"
},
{
"shape":"ServiceUnavailableException",
"error":{"httpStatusCode":503},
"exception":true,
"fault":true,
"documentation":"<p>The service is temporarily unavailable.</p>"
},
{
"shape":"InternalFailureException",
"error":{"httpStatusCode":500},
"exception":true,
"fault":true,
"documentation":"<p>An unexpected error has occurred.</p>"
}
],
"documentation":"<p>Attaches the specified principal to the specified thing.</p>"
"documentation":"<p>The input for the CancelCertificateTransfer operation.</p>"
},
"errors":[
{
"shape":"ResourceNotFoundException",
"error":{"httpStatusCode":404},
"exception":true,
"documentation":"<p>The specified resource does not exist.</p>"
},
{
"shape":"TransferAlreadyCompletedException",
"error":{"httpStatusCode":410},
"exception":true,
"documentation":"<p>You can't revert the certificate transfer because it has already completed.</p>"
},
{
"shape":"InvalidRequestException",
"error":{"httpStatusCode":400},
"exception":true,
"documentation":"<p>The request is not valid.</p>"
},
{
"shape":"ThrottlingException",
"error":{"httpStatusCode":429},
"exception":true,
"documentation":"<p>The rate exceeds the limit.</p>"
},
{
"shape":"UnauthorizedException",
"error":{"httpStatusCode":401},
"exception":true,
"documentation":"<p>You are not authorized to perform this operation.</p>"
},
{
"shape":"ServiceUnavailableException",
"error":{"httpStatusCode":503},
"exception":true,
"fault":true,
"documentation":"<p>The service is temporarily unavailable.</p>"
},
{
"shape":"InternalFailureException",
"error":{"httpStatusCode":500},
"exception":true,
"fault":true,
"documentation":"<p>An unexpected error has occurred.</p>"
}
],
"documentation":"<p>Cancels a pending transfer for the specified certificate.</p> <p><b>Note</b> Only the transfer source account can use this operation to cancel a transfer (transfer destinations can use <a>RejectCertificateTransfer</a> instead). After transfer, AWS IoT returns the certificate to the source account in the INACTIVE state. Once the destination account has accepted the transfer, the transfer may no longer be cancelled.</p> <p>After a certificate transfer is cancelled, the status of the certificate changes from PENDING_TRANSFER to INACTIVE.</p>"
},
"CreateCertificateFromCsr":{
"name":"CreateCertificateFromCsr",
"http":{
"method":"POST",
"requestUri":"/certificates"
},
"input":{
"shape":"CreateCertificateFromCsrRequest",
"documentation":"<p>The input for the CreateCertificateFromCsr operation.</p>"
},
"output":{
"shape":"CreateCertificateFromCsrResponse",
"documentation":"<p>The output from the CreateCertificateFromCsr operation.</p>"
},
"errors":[
{
"shape":"InvalidRequestException",
"error":{"httpStatusCode":400},
"exception":true,
"documentation":"<p>The request is not valid.</p>"
},
{
"shape":"ThrottlingException",
"error":{"httpStatusCode":429},
"exception":true,
"documentation":"<p>The rate exceeds the limit.</p>"
},
{
"shape":"UnauthorizedException",
"error":{"httpStatusCode":401},
"exception":true,
"documentation":"<p>You are not authorized to perform this operation.</p>"
},
{
"shape":"ServiceUnavailableException",
"error":{"httpStatusCode":503},
"exception":true,
"fault":true,
"documentation":"<p>The service is temporarily unavailable.</p>"
},
{
"shape":"InternalFailureException",
"error":{"httpStatusCode":500},
"exception":true,
"fault":true,
"documentation":"<p>An unexpected error has occurred.</p>"
"documentation":"<p>Creates an X.509 certificate using the specified certificate signing request.</p> <p><b>Note</b> Reusing the same certificate signing request (CSR) results in a distinct certificate.</p> <p>You can create multiple certificates in a batch by creating a directory and copying multiple .csr files into that directory and specifying that directory on the command line. The following commands show how to create a batch of certificates given a batch of CSRs. </p> <p>Assuming a set of CSRs are located inside of the directory my-csr-directory:</p>> <p>On Linux and OSX, the command is:</p> <p>$ ls my-csr-directory/ | xargs -I {} aws iot create-certificate-from-csr --certificate-signing-request file://my-csr-directory/{}</p> <p> This command lists all of the CSRs in my-csr-directory and pipes each CSR filename to the aws iot create-certificate-from-csr AWS CLI command to create a certificate for the corresponding CSR. </p> <p> The aws iot create-certificate-from-csr part of the command can also be run in parallel to speed up the certificate creation process: </p> <p> $ ls my-csr-directory/ | xargs -P 10 -I {} aws iot create-certificate-from-csr --certificate-signing-request file://my-csr-directory/{} </p> <p> On Windows PowerShell, the command to create certificates for all CSRs in my-csr-directory is: </p> <p> > ls -Name my-csr-directory | %{aws iot create-certificate-from-csr --certificate-signing-request file://my-csr-directory/$_} </p> <p> On Windows Command Prompt, the command to create certificates for all CSRs in my-csr-directory is: </p> <p> > forfiles /p my-csr-directory /c \"cmd /c aws iot create-certificate-from-csr --certificate-signing-request file://@path\"</p>"
"documentation":"<p>The input for the CreateKeysAndCertificate operation.</p>"
},
"output":{
"shape":"CreateKeysAndCertificateResponse",
"documentation":"<p>The output of the CreateKeysAndCertificate operation.</p>"
},
"errors":[
{
"shape":"InvalidRequestException",
"error":{"httpStatusCode":400},
"exception":true,
"documentation":"<p>The request is not valid.</p>"
},
{
"shape":"ThrottlingException",
"error":{"httpStatusCode":429},
"exception":true,
"documentation":"<p>The rate exceeds the limit.</p>"
},
{
"shape":"UnauthorizedException",
"error":{"httpStatusCode":401},
"exception":true,
"documentation":"<p>You are not authorized to perform this operation.</p>"
},
{
"shape":"ServiceUnavailableException",
"error":{"httpStatusCode":503},
"exception":true,
"fault":true,
"documentation":"<p>The service is temporarily unavailable.</p>"
},
{
"shape":"InternalFailureException",
"error":{"httpStatusCode":500},
"exception":true,
"fault":true,
"documentation":"<p>An unexpected error has occurred.</p>"
}
],
"documentation":"<p>Creates a 2048 bit RSA key pair and issues an X.509 certificate using the issued public key.</p> <p><b>Note</b> This is the only time AWS IoT issues the private key for this certificate. It is important to keep track of the private key.</p>"
},
"CreatePolicy":{
"name":"CreatePolicy",
"http":{
"method":"POST",
"requestUri":"/policies/{policyName}"
},
"input":{
"shape":"CreatePolicyRequest",
"documentation":"<p>The input for the CreatePolicy operation.</p>"
},
"output":{
"shape":"CreatePolicyResponse",
"documentation":"<p>The output from the CreatePolicy operation.</p>"
"documentation":"<p>The policy documentation is not valid.</p>"
},
{
"shape":"InvalidRequestException",
"error":{"httpStatusCode":400},
"exception":true,
"documentation":"<p>The request is not valid.</p>"
},
{
"shape":"ThrottlingException",
"error":{"httpStatusCode":429},
"exception":true,
"documentation":"<p>The rate exceeds the limit.</p>"
},
{
"shape":"UnauthorizedException",
"error":{"httpStatusCode":401},
"exception":true,
"documentation":"<p>You are not authorized to perform this operation.</p>"
},
{
"shape":"ServiceUnavailableException",
"error":{"httpStatusCode":503},
"exception":true,
"fault":true,
"documentation":"<p>The service is temporarily unavailable.</p>"
},
{
"shape":"InternalFailureException",
"error":{"httpStatusCode":500},
"exception":true,
"fault":true,
"documentation":"<p>An unexpected error has occurred.</p>"
}
],
"documentation":"<p>Creates an AWS IoT policy.</p> <p>The created policy is the default version for the policy. This operation creates a policy version with a version identifier of <b>1</b> and sets <b>1</b> as the policy's default version.</p>"
},
"CreatePolicyVersion":{
"name":"CreatePolicyVersion",
"http":{
"method":"POST",
"requestUri":"/policies/{policyName}/version"
},
"input":{
"shape":"CreatePolicyVersionRequest",
"documentation":"<p>The input for the CreatePolicyVersion operation.</p>"
},
"output":{
"shape":"CreatePolicyVersionResponse",
"documentation":"<p>The output of the CreatePolicyVersion operation.</p>"
},
"errors":[
{
"shape":"ResourceNotFoundException",
"error":{"httpStatusCode":404},
"exception":true,
"documentation":"<p>The specified resource does not exist.</p>"
},
{
"shape":"MalformedPolicyException",
"error":{"httpStatusCode":400},
"exception":true,
"documentation":"<p>The policy documentation is not valid.</p>"
},
{
"shape":"VersionsLimitExceededException",
"error":{"httpStatusCode":409},
"exception":true,
"documentation":"<p>The number of policy versions exceeds the limit.</p>"
},
{
"shape":"InvalidRequestException",
"error":{"httpStatusCode":400},
"exception":true,
"documentation":"<p>The request is not valid.</p>"
},
{
"shape":"ThrottlingException",
"error":{"httpStatusCode":429},
"exception":true,
"documentation":"<p>The rate exceeds the limit.</p>"
},
{
"shape":"UnauthorizedException",
"error":{"httpStatusCode":401},
"exception":true,
"documentation":"<p>You are not authorized to perform this operation.</p>"
},
{
"shape":"ServiceUnavailableException",
"error":{"httpStatusCode":503},
"exception":true,
"fault":true,
"documentation":"<p>The service is temporarily unavailable.</p>"
},
{
"shape":"InternalFailureException",
"error":{"httpStatusCode":500},
"exception":true,
"fault":true,
"documentation":"<p>An unexpected error has occurred.</p>"
"documentation":"<p>Creates a new version of the specified AWS IoT policy. To update a policy, create a new policy version. A managed policy can have up to five versions. If the policy has five versions, you must delete an existing version using <a>DeletePolicyVersion</a> before you create a new version.</p> <p>Optionally, you can set the new version as the policy's default version. The default version is the operative version; that is, the version that is in effect for the certificates that the policy is attached to.</p>"
"documentation":"<p>Deletes the specified certificate.</p> <p>A certificate cannot be deleted if it has a policy attached to it or if its status is set to ACTIVE. To delete a certificate, first detach all policies using the <a>DetachPrincipalPolicy</a> API. Next use the <a>UpdateCertificate</a> API to set the certificate to the INACTIVE status.</p>"
"documentation":"<p>Deletes the specified policy.</p> <p>A policy cannot be deleted if it has non-default versions and/or it is attached to any certificate.</p> <p>To delete a policy, delete all non-default versions of the policy using the DeletePolicyVersion API, detach the policy from any certificate using the DetachPrincipalPolicy API, and then use the DeletePolicy API to delete the policy.</p> <p>When a policy is deleted using DeletePolicy, its default version is deleted with it.</p>"
"documentation":"<p>Deletes the specified version of the specified policy. You cannot delete the default version of a policy using this API. To delete the default version of a policy, use <a>DeletePolicy</a>. To find out which version of a policy is marked as the default version, use ListPolicyVersions.</p>"
"documentation":"<p>Returns a unique endpoint specific to the AWS account making the call. You specify the following URI when updating state information for your thing: https://<i>endpoint</i>/things/<i>thingName</i>/shadow.</p>"
"documentation":"<p>The input for the GetPolicyVersion operation.</p>"
},
"output":{
"shape":"GetPolicyVersionResponse",
"documentation":"<p>The output from the GetPolicyVersion operation.</p>"
},
"errors":[
{
"shape":"ResourceNotFoundException",
"error":{"httpStatusCode":404},
"exception":true,
"documentation":"<p>The specified resource does not exist.</p>"
},
{
"shape":"InvalidRequestException",
"error":{"httpStatusCode":400},
"exception":true,
"documentation":"<p>The request is not valid.</p>"
},
{
"shape":"ThrottlingException",
"error":{"httpStatusCode":429},
"exception":true,
"documentation":"<p>The rate exceeds the limit.</p>"
},
{
"shape":"UnauthorizedException",
"error":{"httpStatusCode":401},
"exception":true,
"documentation":"<p>You are not authorized to perform this operation.</p>"
},
{
"shape":"ServiceUnavailableException",
"error":{"httpStatusCode":503},
"exception":true,
"fault":true,
"documentation":"<p>The service is temporarily unavailable.</p>"
},
{
"shape":"InternalFailureException",
"error":{"httpStatusCode":500},
"exception":true,
"fault":true,
"documentation":"<p>An unexpected error has occurred.</p>"
}
],
"documentation":"<p>Gets information about the specified policy version.</p>"
},
"GetTopicRule":{
"name":"GetTopicRule",
"http":{
"method":"GET",
"requestUri":"/rules/{ruleName}"
},
"input":{
"shape":"GetTopicRuleRequest",
"documentation":"<p>The input for the GetTopicRule operation.</p>"
},
"output":{
"shape":"GetTopicRuleResponse",
"documentation":"<p>The output from the GetTopicRule operation.</p>"
},
"errors":[
{
"shape":"InternalException",
"error":{"httpStatusCode":500},
"exception":true,
"fault":true,
"documentation":"<p>An unexpected error has occurred.</p>"
},
{
"shape":"InvalidRequestException",
"error":{"httpStatusCode":400},
"exception":true,
"documentation":"<p>The request is not valid.</p>"
},
{
"shape":"ServiceUnavailableException",
"error":{"httpStatusCode":503},
"exception":true,
"fault":true,
"documentation":"<p>The service is temporarily unavailable.</p>"
},
{
"shape":"UnauthorizedException",
"error":{"httpStatusCode":401},
"exception":true,
"documentation":"<p>You are not authorized to perform this operation.</p>"
}
],
"documentation":"<p>Gets information about the specified rule.</p>"
},
"ListCertificates":{
"name":"ListCertificates",
"http":{
"method":"GET",
"requestUri":"/certificates"
},
"input":{
"shape":"ListCertificatesRequest",
"documentation":"<p>The input for the ListCertificates operation.</p>"
},
"output":{
"shape":"ListCertificatesResponse",
"documentation":"<p>The output of the ListCertificates operation.</p>"
},
"errors":[
{
"shape":"InvalidRequestException",
"error":{"httpStatusCode":400},
"exception":true,
"documentation":"<p>The request is not valid.</p>"
},
{
"shape":"ThrottlingException",
"error":{"httpStatusCode":429},
"exception":true,
"documentation":"<p>The rate exceeds the limit.</p>"
},
{
"shape":"UnauthorizedException",
"error":{"httpStatusCode":401},
"exception":true,
"documentation":"<p>You are not authorized to perform this operation.</p>"
},
{
"shape":"ServiceUnavailableException",
"error":{"httpStatusCode":503},
"exception":true,
"fault":true,
"documentation":"<p>The service is temporarily unavailable.</p>"
},
{
"shape":"InternalFailureException",
"error":{"httpStatusCode":500},
"exception":true,
"fault":true,
"documentation":"<p>An unexpected error has occurred.</p>"
}
],
"documentation":"<p>Lists your certificates.</p> <p>The results are paginated with a default page size of 25. You can retrieve additional results using the returned marker.</p>"
},
"ListPolicies":{
"name":"ListPolicies",
"http":{
"method":"GET",
"requestUri":"/policies"
},
"input":{
"shape":"ListPoliciesRequest",
"documentation":"<p>The input for the ListPolicies operation.</p>"
},
"output":{
"shape":"ListPoliciesResponse",
"documentation":"<p>The output from the ListPolicies operation.</p>"
},
"errors":[
{
"shape":"InvalidRequestException",
"error":{"httpStatusCode":400},
"exception":true,
"documentation":"<p>The request is not valid.</p>"
},
{
"shape":"ThrottlingException",
"error":{"httpStatusCode":429},
"exception":true,
"documentation":"<p>The rate exceeds the limit.</p>"
},
{
"shape":"UnauthorizedException",
"error":{"httpStatusCode":401},
"exception":true,
"documentation":"<p>You are not authorized to perform this operation.</p>"
},
{
"shape":"ServiceUnavailableException",
"error":{"httpStatusCode":503},
"exception":true,
"fault":true,
"documentation":"<p>The service is temporarily unavailable.</p>"
},
{
"shape":"InternalFailureException",
"error":{"httpStatusCode":500},
"exception":true,
"fault":true,
"documentation":"<p>An unexpected error has occurred.</p>"
}
],
"documentation":"<p>Lists your policies.</p>"
},
"ListPolicyVersions":{
"name":"ListPolicyVersions",
"http":{
"method":"GET",
"requestUri":"/policies/{policyName}/version"
},
"input":{
"shape":"ListPolicyVersionsRequest",
"documentation":"<p>The input for the ListPolicyVersions operation.</p>"
},
"output":{
"shape":"ListPolicyVersionsResponse",
"documentation":"<p>The output from the ListPolicyVersions operation.</p>"
},
"errors":[
{
"shape":"ResourceNotFoundException",
"error":{"httpStatusCode":404},
"exception":true,
"documentation":"<p>The specified resource does not exist.</p>"
},
{
"shape":"InvalidRequestException",
"error":{"httpStatusCode":400},
"exception":true,
"documentation":"<p>The request is not valid.</p>"
},
{
"shape":"ThrottlingException",
"error":{"httpStatusCode":429},
"exception":true,
"documentation":"<p>The rate exceeds the limit.</p>"
},
{
"shape":"UnauthorizedException",
"error":{"httpStatusCode":401},
"exception":true,
"documentation":"<p>You are not authorized to perform this operation.</p>"
},
{
"shape":"ServiceUnavailableException",
"error":{"httpStatusCode":503},
"exception":true,
"fault":true,
"documentation":"<p>The service is temporarily unavailable.</p>"
},
{
"shape":"InternalFailureException",
"error":{"httpStatusCode":500},
"exception":true,
"fault":true,
"documentation":"<p>An unexpected error has occurred.</p>"
}
],
"documentation":"<p>Lists the versions of the specified policy, and identifies the default version.</p>"
},
"ListPrincipalPolicies":{
"name":"ListPrincipalPolicies",
"http":{
"method":"GET",
"requestUri":"/principal-policies"
},
"input":{
"shape":"ListPrincipalPoliciesRequest",
"documentation":"<p>The input for the ListPrincipalPolicies operation.</p>"
},
"output":{
"shape":"ListPrincipalPoliciesResponse",
"documentation":"<p>The output from the ListPrincipalPolicies operation.</p>"
},
"errors":[
{
"shape":"ResourceNotFoundException",
"error":{"httpStatusCode":404},
"exception":true,
"documentation":"<p>The specified resource does not exist.</p>"
},
{
"shape":"InvalidRequestException",
"error":{"httpStatusCode":400},
"exception":true,
"documentation":"<p>The request is not valid.</p>"
},
{
"shape":"ThrottlingException",
"error":{"httpStatusCode":429},
"exception":true,
"documentation":"<p>The rate exceeds the limit.</p>"
},
{
"shape":"UnauthorizedException",
"error":{"httpStatusCode":401},
"exception":true,
"documentation":"<p>You are not authorized to perform this operation.</p>"
},
{
"shape":"ServiceUnavailableException",
"error":{"httpStatusCode":503},
"exception":true,
"fault":true,
"documentation":"<p>The service is temporarily unavailable.</p>"
},
{
"shape":"InternalFailureException",
"error":{"httpStatusCode":500},
"exception":true,
"fault":true,
"documentation":"<p>An unexpected error has occurred.</p>"
}
],
"documentation":"<p>Lists the policies attached to the specified principal. If you use an Amazon Cognito identity, the ID needs to be in <a href=\"http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetCredentialsForIdentity.html#API_GetCredentialsForIdentity_RequestSyntax\">Amazon Cognito Identity format</a>.</p>"
},
"ListPrincipalThings":{
"name":"ListPrincipalThings",
"http":{
"method":"GET",
"requestUri":"/principals/things"
},
"input":{
"shape":"ListPrincipalThingsRequest",
"documentation":"<p>The input for the ListPrincipalThings operation.</p>"
},
"output":{
"shape":"ListPrincipalThingsResponse",
"documentation":"<p>The output from the ListPrincipalThings operation.</p>"
},
"errors":[
{
"shape":"InvalidRequestException",
"error":{"httpStatusCode":400},
"exception":true,
"documentation":"<p>The request is not valid.</p>"
},
{
"shape":"ThrottlingException",
"error":{"httpStatusCode":429},
"exception":true,
"documentation":"<p>The rate exceeds the limit.</p>"
},
{
"shape":"UnauthorizedException",
"error":{"httpStatusCode":401},
"exception":true,
"documentation":"<p>You are not authorized to perform this operation.</p>"
},
{
"shape":"ServiceUnavailableException",
"error":{"httpStatusCode":503},
"exception":true,
"fault":true,
"documentation":"<p>The service is temporarily unavailable.</p>"
},
{
"shape":"InternalFailureException",
"error":{"httpStatusCode":500},
"exception":true,
"fault":true,
"documentation":"<p>An unexpected error has occurred.</p>"
}
],
"documentation":"<p>Lists the things associated with the specified principal.</p>"
},
"ListThingPrincipals":{
"name":"ListThingPrincipals",
"http":{
"method":"GET",
"requestUri":"/things/{thingName}/principals"
},
"input":{
"shape":"ListThingPrincipalsRequest",
"documentation":"<p>The input for the ListThingPrincipal operation.</p>"
},
"output":{
"shape":"ListThingPrincipalsResponse",
"documentation":"<p>The output from the ListThingPrincipals operation.</p>"
},
"errors":[
{
"shape":"InvalidRequestException",
"error":{"httpStatusCode":400},
"exception":true,
"documentation":"<p>The request is not valid.</p>"
},
{
"shape":"ThrottlingException",
"error":{"httpStatusCode":429},
"exception":true,
"documentation":"<p>The rate exceeds the limit.</p>"
},
{
"shape":"UnauthorizedException",
"error":{"httpStatusCode":401},
"exception":true,
"documentation":"<p>You are not authorized to perform this operation.</p>"
},
{
"shape":"ServiceUnavailableException",
"error":{"httpStatusCode":503},
"exception":true,
"fault":true,
"documentation":"<p>The service is temporarily unavailable.</p>"
},
{
"shape":"InternalFailureException",
"error":{"httpStatusCode":500},
"exception":true,
"fault":true,
"documentation":"<p>An unexpected error has occurred.</p>"
}
],
"documentation":"<p>Lists the principals associated with the specified thing.</p>"
},
"ListThings":{
"name":"ListThings",
"http":{
"method":"GET",
"requestUri":"/things"
},
"input":{
"shape":"ListThingsRequest",
"documentation":"<p>The input for the ListThings operation.</p>"
},
"output":{
"shape":"ListThingsResponse",
"documentation":"<p>The output from the ListThings operation.</p>"
},
"errors":[
{
"shape":"InvalidRequestException",
"error":{"httpStatusCode":400},
"exception":true,
"documentation":"<p>The request is not valid.</p>"
},
{
"shape":"ThrottlingException",
"error":{"httpStatusCode":429},
"exception":true,
"documentation":"<p>The rate exceeds the limit.</p>"
},
{
"shape":"UnauthorizedException",
"error":{"httpStatusCode":401},
"exception":true,
"documentation":"<p>You are not authorized to perform this operation.</p>"
},
{
"shape":"ServiceUnavailableException",
"error":{"httpStatusCode":503},
"exception":true,
"fault":true,
"documentation":"<p>The service is temporarily unavailable.</p>"
},
{
"shape":"InternalFailureException",
"error":{"httpStatusCode":500},
"exception":true,
"fault":true,
"documentation":"<p>An unexpected error has occurred.</p>"
}
],
"documentation":"<p>Lists your things. You can pass an AttributeName and/or AttributeValue to filter your things. For example: \"ListThings where AttributeName=Color and AttributeValue=Red\"</p>"
},
"ListTopicRules":{
"name":"ListTopicRules",
"http":{
"method":"GET",
"requestUri":"/rules"
},
"input":{
"shape":"ListTopicRulesRequest",
"documentation":"<p>The input for the ListTopicRules operation.</p>"
},
"output":{
"shape":"ListTopicRulesResponse",
"documentation":"<p>The output from the ListTopicRules operation.</p>"
},
"errors":[
{
"shape":"InternalException",
"error":{"httpStatusCode":500},
"exception":true,
"fault":true,
"documentation":"<p>An unexpected error has occurred.</p>"
},
{
"shape":"InvalidRequestException",
"error":{"httpStatusCode":400},
"exception":true,
"documentation":"<p>The request is not valid.</p>"
},
{
"shape":"ServiceUnavailableException",
"error":{"httpStatusCode":503},
"exception":true,
"fault":true,
"documentation":"<p>The service is temporarily unavailable.</p>"
}
],
"documentation":"<p>Lists the rules for the specific topic.</p>"
"documentation":"<p>The input for the RejectCertificateTransfer operation.</p>"
},
"errors":[
{
"shape":"ResourceNotFoundException",
"error":{"httpStatusCode":404},
"exception":true,
"documentation":"<p>The specified resource does not exist.</p>"
},
{
"shape":"TransferAlreadyCompletedException",
"error":{"httpStatusCode":410},
"exception":true,
"documentation":"<p>You can't revert the certificate transfer because it has already completed.</p>"
},
{
"shape":"InvalidRequestException",
"error":{"httpStatusCode":400},
"exception":true,
"documentation":"<p>The request is not valid.</p>"
},
{
"shape":"ThrottlingException",
"error":{"httpStatusCode":429},
"exception":true,
"documentation":"<p>The rate exceeds the limit.</p>"
},
{
"shape":"UnauthorizedException",
"error":{"httpStatusCode":401},
"exception":true,
"documentation":"<p>You are not authorized to perform this operation.</p>"
},
{
"shape":"ServiceUnavailableException",
"error":{"httpStatusCode":503},
"exception":true,
"fault":true,
"documentation":"<p>The service is temporarily unavailable.</p>"
},
{
"shape":"InternalFailureException",
"error":{"httpStatusCode":500},
"exception":true,
"fault":true,
"documentation":"<p>An unexpected error has occurred.</p>"
}
],
"documentation":"<p>Rejects a pending certificate transfer. After AWS IoT rejects a certificate transfer, the certificate status changes from <b>PENDING_TRANFER</b> to <b>INACTIVE</b>.</p> <p>To check for pending certificate transfers, call <a>ListCertificates</a> to enumerate your certificates.</p> <p>This operation can only be called by the transfer destination. Once called, the certificate will be returned to the source's account in the INACTIVE state.</p>"
},
"ReplaceTopicRule":{
"name":"ReplaceTopicRule",
"http":{
"method":"PATCH",
"requestUri":"/rules/{ruleName}"
},
"input":{
"shape":"ReplaceTopicRuleRequest",
"documentation":"<p>The input for the ReplaceTopicRule operation.</p>"
},
"errors":[
{
"shape":"SqlParseException",
"error":{"httpStatusCode":406},
"exception":true,
"documentation":"<p>The Rule-SQL expression can't be parsed correctly.</p>"
},
{
"shape":"InternalException",
"error":{"httpStatusCode":500},
"exception":true,
"fault":true,
"documentation":"<p>An unexpected error has occurred.</p>"
},
{
"shape":"InvalidRequestException",
"error":{"httpStatusCode":400},
"exception":true,
"documentation":"<p>The request is not valid.</p>"
},
{
"shape":"ServiceUnavailableException",
"error":{"httpStatusCode":503},
"exception":true,
"fault":true,
"documentation":"<p>The service is temporarily unavailable.</p>"
},
{
"shape":"UnauthorizedException",
"error":{"httpStatusCode":401},
"exception":true,
"documentation":"<p>You are not authorized to perform this operation.</p>"
}
],
"documentation":"<p>Replaces the specified rule. You must specify all parameters for the new rule.</p>"
"documentation":"<p>Sets the specified version of the specified policy as the policy's default (operative) version. This action affects all certificates that the policy is attached to. To list the principals the policy is attached to, use the ListPrincipalPolicy API.</p>"
"documentation":"<p>Transfers the specified certificate to the specified AWS account.</p> <p>You can cancel the transfer until it is acknowledged by the recipient.</p> <p>No notification is sent to the transfer destination's account, it is up to the caller to notify the transfer target.</p> <p>The certificate being transferred must not be in the ACTIVE state. It can be deactivated using the UpdateCertificate API.</p> <p>The certificate must not have any policies attached to it. These can be detached using the DetachPrincipalPolicy API.</p>"
"documentation":"<p>The input for the UpdateCertificate operation.</p>"
},
"errors":[
{
"shape":"ResourceNotFoundException",
"error":{"httpStatusCode":404},
"exception":true,
"documentation":"<p>The specified resource does not exist.</p>"
},
{
"shape":"CertificateStateException",
"error":{"httpStatusCode":406},
"exception":true,
"documentation":"<p>The certificate operation is not allowed.</p>"
},
{
"shape":"InvalidRequestException",
"error":{"httpStatusCode":400},
"exception":true,
"documentation":"<p>The request is not valid.</p>"
},
{
"shape":"ThrottlingException",
"error":{"httpStatusCode":429},
"exception":true,
"documentation":"<p>The rate exceeds the limit.</p>"
},
{
"shape":"UnauthorizedException",
"error":{"httpStatusCode":401},
"exception":true,
"documentation":"<p>You are not authorized to perform this operation.</p>"
},
{
"shape":"ServiceUnavailableException",
"error":{"httpStatusCode":503},
"exception":true,
"fault":true,
"documentation":"<p>The service is temporarily unavailable.</p>"
},
{
"shape":"InternalFailureException",
"error":{"httpStatusCode":500},
"exception":true,
"fault":true,
"documentation":"<p>An unexpected error has occurred.</p>"
}
],
"documentation":"<p>Updates the status of the specified certificate. This operation is idempotent.</p> <p>Moving a cert from the ACTIVE state (including REVOKED) will NOT disconnect currently-connected devices, although these devices will be unable to reconnect.</p> <p>The ACTIVE state is required to authenticate devices connecting to AWS IoT using a certificate.</p>"
},
"UpdateThing":{
"name":"UpdateThing",
"http":{
"method":"PATCH",
"requestUri":"/things/{thingName}"
},
"input":{
"shape":"UpdateThingRequest",
"documentation":"<p>The input for the UpdateThing operation.</p>"
},
"output":{
"shape":"UpdateThingResponse",
"documentation":"<p>The output from the UpdateThing operation.</p>"
},
"errors":[
{
"shape":"InvalidRequestException",
"error":{"httpStatusCode":400},
"exception":true,
"documentation":"<p>The request is not valid.</p>"
},
{
"shape":"ThrottlingException",
"error":{"httpStatusCode":429},
"exception":true,
"documentation":"<p>The rate exceeds the limit.</p>"
},
{
"shape":"UnauthorizedException",
"error":{"httpStatusCode":401},
"exception":true,
"documentation":"<p>You are not authorized to perform this operation.</p>"
},
{
"shape":"ServiceUnavailableException",
"error":{"httpStatusCode":503},
"exception":true,
"fault":true,
"documentation":"<p>The service is temporarily unavailable.</p>"
},
{
"shape":"InternalFailureException",
"error":{"httpStatusCode":500},
"exception":true,
"fault":true,
"documentation":"<p>An unexpected error has occurred.</p>"
},
{
"shape":"ResourceNotFoundException",
"error":{"httpStatusCode":404},
"exception":true,
"documentation":"<p>The specified resource does not exist.</p>"
}
],
"documentation":"<p>Updates the data for a thing.</p>"
}
},
"shapes":{
"AcceptCertificateTransferRequest":{
"type":"structure",
"required":["certificateId"],
"members":{
"certificateId":{
"shape":"CertificateId",
"location":"uri",
"locationName":"certificateId",
"documentation":"<p>The ID of the certificate.</p>"
},
"setAsActive":{
"shape":"SetAsActive",
"location":"querystring",
"locationName":"setAsActive",
"documentation":"<p>Specifies whether the certificate is active.</p>"
}
},
"documentation":"<p>The input for the AcceptCertificateTransfer operation.</p>"
},
"Action":{
"type":"structure",
"members":{
"dynamoDB":{
"shape":"DynamoDBAction",
"documentation":"<p>Write to a DynamoDB table.</p>"
},
"lambda":{
"shape":"LambdaAction",
"documentation":"<p>Invoke a Lambda function.</p>"
},
"sns":{
"shape":"SnsAction",
"documentation":"<p>Publish to an SNS topic.</p>"
},
"sqs":{
"shape":"SqsAction",
"documentation":"<p>Publish to an SQS queue.</p>"
},
"kinesis":{
"shape":"KinesisAction",
"documentation":"<p>Write data to a Kinesis stream.</p>"
},
"republish":{
"shape":"RepublishAction",
"documentation":"<p>Publish to another MQTT topic.</p>"
"documentation":"<p>A JSON string containing up to three key-value pair in JSON format.</p> <p>For example: {\\\"attributes\\\":{\\\"string1\\\":\\\"string2\\\"}}</p>"
"documentation":"<p>The attribute payload, a JSON string containing up to three key-value pairs.</p> <p>For example: {\\\"attributes\\\":{\\\"string1\\\":\\\"string2\\\"}}</p>"
"documentation":"<p>Specifies whether the certificate is active.</p>"
}
},
"documentation":"<p>The input for the CreateCertificateFromCsr operation.</p>"
},
"CreateCertificateFromCsrResponse":{
"type":"structure",
"members":{
"certificateArn":{
"shape":"CertificateArn",
"documentation":"<p>The Amazon Resource Name (ARN) of the certificate. You can use the ARN as a principal for policy operations.</p>"
},
"certificateId":{
"shape":"CertificateId",
"documentation":"<p>The ID of the certificate. Certificate management operations only take a certificateId.</p>"
},
"certificatePem":{
"shape":"CertificatePem",
"documentation":"<p>The certificate data, in PEM format.</p>"
}
},
"documentation":"<p>The output from the CreateCertificateFromCsr operation.</p>"
},
"CreateKeysAndCertificateRequest":{
"type":"structure",
"members":{
"setAsActive":{
"shape":"SetAsActive",
"location":"querystring",
"locationName":"setAsActive",
"documentation":"<p>Specifies whether the certificate is active.</p>"
}
},
"documentation":"<p>The input for the CreateKeysAndCertificate operation.</p>"
},
"CreateKeysAndCertificateResponse":{
"type":"structure",
"members":{
"certificateArn":{
"shape":"CertificateArn",
"documentation":"<p>The ARN of the certificate.</p>"
},
"certificateId":{
"shape":"CertificateId",
"documentation":"<p>The ID of the certificate. AWS IoT issues a default subject name for the certificate (e.g., AWS IoT Certificate).</p>"
},
"certificatePem":{
"shape":"CertificatePem",
"documentation":"<p>The certificate data, in PEM format.</p>"
},
"keyPair":{
"shape":"KeyPair",
"documentation":"<p>The generated key pair.</p>"
}
},
"documentation":"<p>The output of the CreateKeysAndCertificate operation.</p>"
},
"CreatePolicyRequest":{
"type":"structure",
"required":[
"policyName",
"policyDocument"
],
"members":{
"policyName":{
"shape":"PolicyName",
"location":"uri",
"locationName":"policyName",
"documentation":"<p>The policy name.</p>"
},
"policyDocument":{
"shape":"PolicyDocument",
"documentation":"<p>The JSON document that describes the policy. The length of the <b>policyDocument</b> must be a minimum length of 1, with a maximum length of 2048, excluding whitespace.</p>"
}
},
"documentation":"<p>The input for the CreatePolicy operation.</p>"
},
"CreatePolicyResponse":{
"type":"structure",
"members":{
"policyName":{
"shape":"PolicyName",
"documentation":"<p>The policy name.</p>"
},
"policyArn":{
"shape":"PolicyArn",
"documentation":"<p>The policy ARN.</p>"
},
"policyDocument":{
"shape":"PolicyDocument",
"documentation":"<p>The JSON document that describes the policy.</p>"
},
"policyVersionId":{
"shape":"PolicyVersionId",
"documentation":"<p>The policy version ID.</p>"
}
},
"documentation":"<p>The output from the CreatePolicy operation.</p>"
"documentation":"<p>Specifies whether the policy version is set as the default. When this parameter is true, the new policy version becomes the operative version; that is, the version that is in effect for the certificates that the policy is attached to.</p>"
"documentation":"<p>The attribute payload. Which consists of up to 3 name/value pairs in a JSON document. For example: {\\\"attributes\\\":{\\\"string1\\\":\\\"string2\\\"}}</p>"
"documentation":"<p>The attributes which are name/value pairs in JSON format. For example: </p> <p>{\\\"attributes\\\":{\\\"some-name1\\\":\\\"some-value1\\\"}, {\\\"some-name2\\\":\\\"some-value2\\\"}, {\\\"some-name3\\\":\\\"some-value3\\\"}}</p>"
"documentation":"<p>The output from the DescribeThing operation.</p>"
},
"Description":{"type":"string"},
"DetachPrincipalPolicyRequest":{
"type":"structure",
"required":[
"policyName",
"principal"
],
"members":{
"policyName":{
"shape":"PolicyName",
"location":"uri",
"locationName":"policyName",
"documentation":"<p>The name of the policy to detach.</p>"
},
"principal":{
"shape":"Principal",
"location":"header",
"locationName":"x-amzn-iot-principal",
"documentation":"<p>The principal</p> <p>If the principal is a certificate, specify the certificate ARN. If the principal is a Cognito identity specify the identity ID.</p>"
}
},
"documentation":"<p>The input for the DetachPrincipalPolicy operation.</p>"
},
"DetachThingPrincipalRequest":{
"type":"structure",
"required":[
"thingName",
"principal"
],
"members":{
"thingName":{
"shape":"ThingName",
"location":"uri",
"locationName":"thingName",
"documentation":"<p>The name of the thing.</p>"
},
"principal":{
"shape":"Principal",
"location":"header",
"locationName":"x-amzn-principal",
"documentation":"<p>The principal.</p>"
}
},
"documentation":"<p>The input for the DetachThingPrincipal operation.</p>"
},
"DetachThingPrincipalResponse":{
"type":"structure",
"members":{
},
"documentation":"<p>The output from the DetachThingPrincipal operation.</p>"
"documentation":"<p>Describes an action to write to a DynamoDB table.</p> <p>The <code>tableName</code>, <code>hashKeyField</code>, and <code>rangeKeyField</code> values must match the values used when you created the table.</p> <p>The <code>hashKeyValue</code> and <code>rangeKeyvalue</code> fields use a substitution template syntax. These templates provide data at runtime. The syntax is as follows: ${<i>sql-expression</i>}.</p> <p>You can specify any expression that's valid in a WHERE or SELECT clause, including JSON properties, comparisons, calculations, and functions. For example, the following field uses the third level of the topic:</p> <p><code>\"hashKeyValue\": \"${topic(3)}\"</code></p> <p>The following field uses the timestamp:</p> <p><code>\"rangeKeyValue\": \"${timestamp()}\"</code></p>"
"documentation":"<p>The input for the SetLoggingOptions operation.</p>",
"payload":"loggingOptionsPayload"
},
"SnsAction":{
"type":"structure",
"required":[
"targetArn",
"roleArn"
],
"members":{
"targetArn":{
"shape":"AwsArn",
"documentation":"<p>The ARN of the SNS topic.</p>"
},
"roleArn":{
"shape":"AwsArn",
"documentation":"<p>The ARN of the IAM role that grants access.</p>"
}
},
"documentation":"<p>Describes an action to publish to an Amazon SNS topic.</p>"
},
"SqlParseException":{
"type":"structure",
"members":{
"message":{
"shape":"errorMessage",
"documentation":"<p>The message for the exception.</p>"
}
},
"error":{"httpStatusCode":406},
"exception":true,
"documentation":"<p>The Rule-SQL expression can't be parsed correctly.</p>"
},
"SqsAction":{
"type":"structure",
"required":[
"roleArn",
"queueUrl"
],
"members":{
"roleArn":{
"shape":"AwsArn",
"documentation":"<p>The ARN of the IAM role that grants access.</p>"
},
"queueUrl":{
"shape":"QueueUrl",
"documentation":"<p>The URL of the Amazon SQS queue.</p>"
},
"useBase64":{
"shape":"UseBase64",
"documentation":"<p>Specifies whether to use Base64 encoding.</p>"
}
},
"documentation":"<p>Describes an action to publish data to an SQS queue.</p>"
},
"StreamName":{"type":"string"},
"TableName":{"type":"string"},
"ThingArn":{"type":"string"},
"ThingAttribute":{
"type":"structure",
"members":{
"thingName":{
"shape":"ThingName",
"documentation":"<p>The name of the thing.</p>"
},
"attributes":{
"shape":"Attributes",
"documentation":"<p>The attributes.</p>"
}
},
"documentation":"<p>Describes a thing attribute.</p>"
},
"ThingAttributeList":{
"type":"list",
"member":{"shape":"ThingAttribute"}
},
"ThingName":{
"type":"string",
"min":1,
"max":128,
"pattern":"[a-zA-Z0-9_-]+"
},
"ThingNameList":{
"type":"list",
"member":{"shape":"ThingName"}
},
"ThrottlingException":{
"type":"structure",
"members":{
"message":{
"shape":"errorMessage",
"documentation":"<p>The message for the exception.</p>"
}
},
"error":{"httpStatusCode":429},
"exception":true,
"documentation":"<p>The rate exceeds the limit.</p>"
},
"Topic":{"type":"string"},
"TopicPattern":{"type":"string"},
"TopicRule":{
"type":"structure",
"members":{
"ruleName":{
"shape":"RuleName",
"documentation":"<p>The name of the rule.</p>"
},
"sql":{
"shape":"SQL",
"documentation":"<p>The SQL statement used to query the topic. When using a SQL query with multiple lines, be sure to escape the newline characters properly.</p>"
},
"description":{
"shape":"Description",
"documentation":"<p>The description of the rule.</p>"
},
"createdAt":{
"shape":"CreatedAtDate",
"documentation":"<p>The date and time the rule was created.</p>"
},
"actions":{
"shape":"ActionList",
"documentation":"<p>The actions associated with the rule.</p>"
},
"ruleDisabled":{
"shape":"IsDisabled",
"documentation":"<p>Specifies whether the rule is disabled.</p>"
"documentation":"<p>The pattern for the topic names that apply.</p>"
},
"createdAt":{
"shape":"CreatedAtDate",
"documentation":"<p>The date and time the rule was created.</p>"
},
"ruleDisabled":{
"shape":"IsDisabled",
"documentation":"<p>Specifies whether the rule is disabled.</p>"
}
},
"documentation":"<p>Describes a rule.</p>"
},
"TopicRulePayload":{
"type":"structure",
"required":[
"sql",
"actions"
],
"members":{
"sql":{
"shape":"SQL",
"documentation":"<p>The SQL statement used to query the topic. For more information, see <a href=\"http://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html#aws-iot-sql-reference\">AWS IoT SQL Reference</a> in the <i>AWS IoT Developer Guide</i>.</p>"
},
"description":{
"shape":"Description",
"documentation":"<p>The description of the rule.</p>"
},
"actions":{
"shape":"ActionList",
"documentation":"<p>The actions associated with the rule.</p>"
},
"ruleDisabled":{
"shape":"IsDisabled",
"documentation":"<p>Specifies whether the rule is disabled.</p>"
}
},
"documentation":"<p>Describes a rule.</p>"
},
"TransferAlreadyCompletedException":{
"type":"structure",
"members":{
"message":{
"shape":"errorMessage",
"documentation":"<p>The message for the exception.</p>"
}
},
"error":{"httpStatusCode":410},
"exception":true,
"documentation":"<p>You can't revert the certificate transfer because it has already completed.</p>"
},
"TransferCertificateRequest":{
"type":"structure",
"required":[
"certificateId",
"targetAwsAccount"
],
"members":{
"certificateId":{
"shape":"CertificateId",
"location":"uri",
"locationName":"certificateId",
"documentation":"<p>The ID of the certificate.</p>"
},
"targetAwsAccount":{
"shape":"AwsAccountId",
"location":"querystring",
"locationName":"targetAwsAccount",
"documentation":"<p>The AWS account.</p>"
}
},
"documentation":"<p>The input for the TransferCertificate operation.</p>"
},
"TransferCertificateResponse":{
"type":"structure",
"members":{
"transferredCertificateArn":{
"shape":"CertificateArn",
"documentation":"<p>The ARN of the certificate.</p>"
}
},
"documentation":"<p>The output from the TransferCertificate operation.</p>"
},
"TransferConflictException":{
"type":"structure",
"members":{
"message":{
"shape":"errorMessage",
"documentation":"<p>The message for the exception.</p>"
}
},
"error":{"httpStatusCode":409},
"exception":true,
"documentation":"<p>You can't transfer the the certificate because authorization policies are still attached.</p>"
},
"UnauthorizedException":{
"type":"structure",
"members":{
"message":{
"shape":"errorMessage",
"documentation":"<p>The message for the exception.</p>"
}
},
"error":{"httpStatusCode":401},
"exception":true,
"documentation":"<p>You are not authorized to perform this operation.</p>"
},
"UpdateCertificateRequest":{
"type":"structure",
"required":[
"certificateId",
"newStatus"
],
"members":{
"certificateId":{
"shape":"CertificateId",
"location":"uri",
"locationName":"certificateId",
"documentation":"<p>The ID of the certificate.</p>"
"documentation":"<p>The new status.</p> <p>Note: setting the status to PENDING_TRANSFER will result in an exception being thrown. PENDING_TRANSFER is a status used internally by AWS IoT and is not meant to be used by developers.</p>"
"documentation":"<p>The attribute payload, a JSON string containing up to three key-value pairs.</p> <p>For example: {\\\"attributes\\\":{\\\"string1\\\":\\\"string2\\\"}}</p>"