diff --git a/CHANGELOG_PENDING.md b/CHANGELOG_PENDING.md
index 8a1927a39ca..739ea17b3dc 100644
--- a/CHANGELOG_PENDING.md
+++ b/CHANGELOG_PENDING.md
@@ -1,4 +1,5 @@
### SDK Features
+* `service/iotdataplane`: As part of this release, we are introducing a new feature called named shadow, which extends the capability of AWS IoT Device Shadow to support multiple shadows for a single IoT device. With this release, customers can store different device state data into different shadows, and as a result access only the required state data when needed and reduce individual shadow size.
### SDK Enhancements
diff --git a/models/apis/iot-data/2015-05-28/api-2.json b/models/apis/iot-data/2015-05-28/api-2.json
index 3d4bd1e56fe..f0401262563 100644
--- a/models/apis/iot-data/2015-05-28/api-2.json
+++ b/models/apis/iot-data/2015-05-28/api-2.json
@@ -1,13 +1,14 @@
{
"version":"2.0",
"metadata":{
- "uid":"iot-data-2015-05-28",
"apiVersion":"2015-05-28",
"endpointPrefix":"data.iot",
"protocol":"rest-json",
"serviceFullName":"AWS IoT Data Plane",
+ "serviceId":"IoT Data Plane",
"signatureVersion":"v4",
- "signingName":"iotdata"
+ "signingName":"iotdata",
+ "uid":"iot-data-2015-05-28"
},
"operations":{
"DeleteThingShadow":{
@@ -48,6 +49,24 @@
{"shape":"UnsupportedDocumentEncodingException"}
]
},
+ "ListNamedShadowsForThing":{
+ "name":"ListNamedShadowsForThing",
+ "http":{
+ "method":"GET",
+ "requestUri":"/api/things/shadow/ListNamedShadowsForThing/{thingName}"
+ },
+ "input":{"shape":"ListNamedShadowsForThingRequest"},
+ "output":{"shape":"ListNamedShadowsForThingResponse"},
+ "errors":[
+ {"shape":"ResourceNotFoundException"},
+ {"shape":"InvalidRequestException"},
+ {"shape":"ThrottlingException"},
+ {"shape":"UnauthorizedException"},
+ {"shape":"ServiceUnavailableException"},
+ {"shape":"InternalFailureException"},
+ {"shape":"MethodNotAllowedException"}
+ ]
+ },
"Publish":{
"name":"Publish",
"http":{
@@ -87,7 +106,7 @@
"ConflictException":{
"type":"structure",
"members":{
- "message":{"shape":"ErrorMessage"}
+ "message":{"shape":"errorMessage"}
},
"error":{"httpStatusCode":409},
"exception":true
@@ -100,6 +119,11 @@
"shape":"ThingName",
"location":"uri",
"locationName":"thingName"
+ },
+ "shadowName":{
+ "shape":"ShadowName",
+ "location":"querystring",
+ "locationName":"name"
}
}
},
@@ -111,7 +135,6 @@
},
"payload":"payload"
},
- "ErrorMessage":{"type":"string"},
"GetThingShadowRequest":{
"type":"structure",
"required":["thingName"],
@@ -120,6 +143,11 @@
"shape":"ThingName",
"location":"uri",
"locationName":"thingName"
+ },
+ "shadowName":{
+ "shape":"ShadowName",
+ "location":"querystring",
+ "locationName":"name"
}
}
},
@@ -148,14 +176,53 @@
"exception":true
},
"JsonDocument":{"type":"blob"},
+ "ListNamedShadowsForThingRequest":{
+ "type":"structure",
+ "required":["thingName"],
+ "members":{
+ "thingName":{
+ "shape":"ThingName",
+ "location":"uri",
+ "locationName":"thingName"
+ },
+ "nextToken":{
+ "shape":"NextToken",
+ "location":"querystring",
+ "locationName":"nextToken"
+ },
+ "pageSize":{
+ "shape":"PageSize",
+ "location":"querystring",
+ "locationName":"pageSize"
+ }
+ }
+ },
+ "ListNamedShadowsForThingResponse":{
+ "type":"structure",
+ "members":{
+ "results":{"shape":"NamedShadowList"},
+ "nextToken":{"shape":"NextToken"},
+ "timestamp":{"shape":"Timestamp"}
+ }
+ },
"MethodNotAllowedException":{
"type":"structure",
"members":{
- "message":{"shape":"ErrorMessage"}
+ "message":{"shape":"errorMessage"}
},
"error":{"httpStatusCode":405},
"exception":true
},
+ "NamedShadowList":{
+ "type":"list",
+ "member":{"shape":"ShadowName"}
+ },
+ "NextToken":{"type":"string"},
+ "PageSize":{
+ "type":"integer",
+ "max":100,
+ "min":1
+ },
"Payload":{"type":"blob"},
"PublishRequest":{
"type":"structure",
@@ -183,7 +250,7 @@
"RequestEntityTooLargeException":{
"type":"structure",
"members":{
- "message":{"shape":"ErrorMessage"}
+ "message":{"shape":"errorMessage"}
},
"error":{"httpStatusCode":413},
"exception":true
@@ -205,11 +272,17 @@
"exception":true,
"fault":true
},
+ "ShadowName":{
+ "type":"string",
+ "max":64,
+ "min":1,
+ "pattern":"[a-zA-Z0-9:_-]+"
+ },
"ThingName":{
"type":"string",
"max":128,
"min":1,
- "pattern":"[a-zA-Z0-9_-]+"
+ "pattern":"[a-zA-Z0-9:_-]+"
},
"ThrottlingException":{
"type":"structure",
@@ -219,6 +292,7 @@
"error":{"httpStatusCode":429},
"exception":true
},
+ "Timestamp":{"type":"long"},
"Topic":{"type":"string"},
"UnauthorizedException":{
"type":"structure",
@@ -248,6 +322,11 @@
"location":"uri",
"locationName":"thingName"
},
+ "shadowName":{
+ "shape":"ShadowName",
+ "location":"querystring",
+ "locationName":"name"
+ },
"payload":{"shape":"JsonDocument"}
},
"payload":"payload"
diff --git a/models/apis/iot-data/2015-05-28/docs-2.json b/models/apis/iot-data/2015-05-28/docs-2.json
index 09e16dbd7ac..6a158698410 100644
--- a/models/apis/iot-data/2015-05-28/docs-2.json
+++ b/models/apis/iot-data/2015-05-28/docs-2.json
@@ -1,11 +1,12 @@
{
"version": "2.0",
- "service": "
AWS IoT-Data enables secure, bi-directional communication between Internet-connected things (such as sensors, actuators, embedded devices, or smart appliances) and the AWS cloud. It implements a broker for applications and things to publish messages over HTTP (Publish) and retrieve, update, and delete thing shadows. A thing shadow is a persistent representation of your things and their state in the AWS cloud.
", + "service": "AWS IoT-Data enables secure, bi-directional communication between Internet-connected things (such as sensors, actuators, embedded devices, or smart appliances) and the AWS cloud. It implements a broker for applications and things to publish messages over HTTP (Publish) and retrieve, update, and delete shadows. A shadow is a persistent representation of your things and their state in the AWS cloud.
Find the endpoint address for actions in the AWS IoT data plane by running this CLI command:
aws iot describe-endpoint --endpoint-type iot:Data-ATS
The service name used by AWS Signature Version 4 to sign requests is: iotdevicegateway.
", "operations": { - "DeleteThingShadow": "Deletes the thing shadow for the specified thing.
For more information, see DeleteThingShadow in the AWS IoT Developer Guide.
", - "GetThingShadow": "Gets the thing shadow for the specified thing.
For more information, see GetThingShadow in the AWS IoT Developer Guide.
", - "Publish": "Publishes state information.
For more information, see HTTP Protocol in the AWS IoT Developer Guide.
", - "UpdateThingShadow": "Updates the thing shadow for the specified thing.
For more information, see UpdateThingShadow in the AWS IoT Developer Guide.
" + "DeleteThingShadow": "Deletes the shadow for the specified thing.
For more information, see DeleteThingShadow in the AWS IoT Developer Guide.
", + "GetThingShadow": "Gets the shadow for the specified thing.
For more information, see GetThingShadow in the AWS IoT Developer Guide.
", + "ListNamedShadowsForThing": "Lists the shadows for the specified thing.
", + "Publish": "Publishes state information.
For more information, see HTTP Protocol in the AWS IoT Developer Guide.
", + "UpdateThingShadow": "Updates the shadow for the specified thing.
For more information, see UpdateThingShadow in the AWS IoT Developer Guide.
" }, "shapes": { "ConflictException": { @@ -23,14 +24,6 @@ "refs": { } }, - "ErrorMessage": { - "base": null, - "refs": { - "ConflictException$message": "The message for the exception.
", - "MethodNotAllowedException$message": "The message for the exception.
", - "RequestEntityTooLargeException$message": "The message for the exception.
" - } - }, "GetThingShadowRequest": { "base": "The input for the GetThingShadow operation.
", "refs": { @@ -60,11 +53,40 @@ "UpdateThingShadowResponse$payload": "The state information, in JSON format.
" } }, + "ListNamedShadowsForThingRequest": { + "base": null, + "refs": { + } + }, + "ListNamedShadowsForThingResponse": { + "base": null, + "refs": { + } + }, "MethodNotAllowedException": { "base": "The specified combination of HTTP verb and URI is not supported.
", "refs": { } }, + "NamedShadowList": { + "base": null, + "refs": { + "ListNamedShadowsForThingResponse$results": "The list of shadows for the specified thing.
" + } + }, + "NextToken": { + "base": null, + "refs": { + "ListNamedShadowsForThingRequest$nextToken": "The token to retrieve the next set of results.
", + "ListNamedShadowsForThingResponse$nextToken": "The token for the next set of results, or null if there are no additional results.
" + } + }, + "PageSize": { + "base": null, + "refs": { + "ListNamedShadowsForThingRequest$pageSize": "The result page size.
" + } + }, "Payload": { "base": null, "refs": { @@ -97,11 +119,21 @@ "refs": { } }, + "ShadowName": { + "base": null, + "refs": { + "DeleteThingShadowRequest$shadowName": "The name of the shadow.
", + "GetThingShadowRequest$shadowName": "The name of the shadow.
", + "NamedShadowList$member": null, + "UpdateThingShadowRequest$shadowName": "The name of the shadow.
" + } + }, "ThingName": { "base": null, "refs": { "DeleteThingShadowRequest$thingName": "The name of the thing.
", "GetThingShadowRequest$thingName": "The name of the thing.
", + "ListNamedShadowsForThingRequest$thingName": "The name of the thing.
", "UpdateThingShadowRequest$thingName": "The name of the thing.
" } }, @@ -110,6 +142,12 @@ "refs": { } }, + "Timestamp": { + "base": null, + "refs": { + "ListNamedShadowsForThingResponse$timestamp": "The Epoch date and time the response was generated by AWS IoT.
" + } + }, "Topic": { "base": null, "refs": { @@ -139,8 +177,11 @@ "errorMessage": { "base": null, "refs": { + "ConflictException$message": "The message for the exception.
", "InternalFailureException$message": "The message for the exception.
", "InvalidRequestException$message": "The message for the exception.
", + "MethodNotAllowedException$message": "The message for the exception.
", + "RequestEntityTooLargeException$message": "The message for the exception.
", "ResourceNotFoundException$message": "The message for the exception.
", "ServiceUnavailableException$message": "The message for the exception.
", "ThrottlingException$message": "The message for the exception.
", diff --git a/models/apis/iot-data/2015-05-28/paginators-1.json b/models/apis/iot-data/2015-05-28/paginators-1.json new file mode 100644 index 00000000000..5677bd8e4a2 --- /dev/null +++ b/models/apis/iot-data/2015-05-28/paginators-1.json @@ -0,0 +1,4 @@ +{ + "pagination": { + } +} diff --git a/service/iotdataplane/api.go b/service/iotdataplane/api.go index 5cb393c59b3..21c55e968f6 100644 --- a/service/iotdataplane/api.go +++ b/service/iotdataplane/api.go @@ -54,7 +54,7 @@ func (c *IoTDataPlane) DeleteThingShadowRequest(input *DeleteThingShadowInput) ( // DeleteThingShadow API operation for AWS IoT Data Plane. // -// Deletes the thing shadow for the specified thing. +// Deletes the shadow for the specified thing. // // For more information, see DeleteThingShadow (http://docs.aws.amazon.com/iot/latest/developerguide/API_DeleteThingShadow.html) // in the AWS IoT Developer Guide. @@ -154,7 +154,7 @@ func (c *IoTDataPlane) GetThingShadowRequest(input *GetThingShadowInput) (req *r // GetThingShadow API operation for AWS IoT Data Plane. // -// Gets the thing shadow for the specified thing. +// Gets the shadow for the specified thing. // // For more information, see GetThingShadow (http://docs.aws.amazon.com/iot/latest/developerguide/API_GetThingShadow.html) // in the AWS IoT Developer Guide. @@ -212,6 +212,100 @@ func (c *IoTDataPlane) GetThingShadowWithContext(ctx aws.Context, input *GetThin return out, req.Send() } +const opListNamedShadowsForThing = "ListNamedShadowsForThing" + +// ListNamedShadowsForThingRequest generates a "aws/request.Request" representing the +// client's request for the ListNamedShadowsForThing operation. The "output" return +// value will be populated with the request's response once the request completes +// successfully. +// +// Use "Send" method on the returned Request to send the API call to the service. +// the "output" return value is not valid until after Send returns without error. +// +// See ListNamedShadowsForThing for more information on using the ListNamedShadowsForThing +// API call, and error handling. +// +// This method is useful when you want to inject custom logic or configuration +// into the SDK's request lifecycle. Such as custom headers, or retry logic. +// +// +// // Example sending a request using the ListNamedShadowsForThingRequest method. +// req, resp := client.ListNamedShadowsForThingRequest(params) +// +// err := req.Send() +// if err == nil { // resp is now filled +// fmt.Println(resp) +// } +func (c *IoTDataPlane) ListNamedShadowsForThingRequest(input *ListNamedShadowsForThingInput) (req *request.Request, output *ListNamedShadowsForThingOutput) { + op := &request.Operation{ + Name: opListNamedShadowsForThing, + HTTPMethod: "GET", + HTTPPath: "/api/things/shadow/ListNamedShadowsForThing/{thingName}", + } + + if input == nil { + input = &ListNamedShadowsForThingInput{} + } + + output = &ListNamedShadowsForThingOutput{} + req = c.newRequest(op, input, output) + return +} + +// ListNamedShadowsForThing API operation for AWS IoT Data Plane. +// +// Lists the shadows for the specified thing. +// +// Returns awserr.Error for service API and SDK errors. Use runtime type assertions +// with awserr.Error's Code and Message methods to get detailed information about +// the error. +// +// See the AWS API reference guide for AWS IoT Data Plane's +// API operation ListNamedShadowsForThing for usage and error information. +// +// Returned Error Types: +// * ResourceNotFoundException +// The specified resource does not exist. +// +// * InvalidRequestException +// The request is not valid. +// +// * ThrottlingException +// The rate exceeds the limit. +// +// * UnauthorizedException +// You are not authorized to perform this operation. +// +// * ServiceUnavailableException +// The service is temporarily unavailable. +// +// * InternalFailureException +// An unexpected error has occurred. +// +// * MethodNotAllowedException +// The specified combination of HTTP verb and URI is not supported. +// +func (c *IoTDataPlane) ListNamedShadowsForThing(input *ListNamedShadowsForThingInput) (*ListNamedShadowsForThingOutput, error) { + req, out := c.ListNamedShadowsForThingRequest(input) + return out, req.Send() +} + +// ListNamedShadowsForThingWithContext is the same as ListNamedShadowsForThing with the addition of +// the ability to pass a context and additional request options. +// +// See ListNamedShadowsForThing for details on how to use this API operation. +// +// The context must be non-nil and will be used for request cancellation. If +// the context is nil a panic will occur. In the future the SDK may create +// sub-contexts for http.Requests. See https://golang.org/pkg/context/ +// for more information on using Contexts. +func (c *IoTDataPlane) ListNamedShadowsForThingWithContext(ctx aws.Context, input *ListNamedShadowsForThingInput, opts ...request.Option) (*ListNamedShadowsForThingOutput, error) { + req, out := c.ListNamedShadowsForThingRequest(input) + req.SetContext(ctx) + req.ApplyOptions(opts...) + return out, req.Send() +} + const opPublish = "Publish" // PublishRequest generates a "aws/request.Request" representing the @@ -343,7 +437,7 @@ func (c *IoTDataPlane) UpdateThingShadowRequest(input *UpdateThingShadowInput) ( // UpdateThingShadow API operation for AWS IoT Data Plane. // -// Updates the thing shadow for the specified thing. +// Updates the shadow for the specified thing. // // For more information, see UpdateThingShadow (http://docs.aws.amazon.com/iot/latest/developerguide/API_UpdateThingShadow.html) // in the AWS IoT Developer Guide. @@ -465,6 +559,9 @@ func (s *ConflictException) RequestID() string { type DeleteThingShadowInput struct { _ struct{} `type:"structure"` + // The name of the shadow. + ShadowName *string `location:"querystring" locationName:"name" min:"1" type:"string"` + // The name of the thing. // // ThingName is a required field @@ -484,6 +581,9 @@ func (s DeleteThingShadowInput) GoString() string { // Validate inspects the fields of the type to determine if they are valid. func (s *DeleteThingShadowInput) Validate() error { invalidParams := request.ErrInvalidParams{Context: "DeleteThingShadowInput"} + if s.ShadowName != nil && len(*s.ShadowName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ShadowName", 1)) + } if s.ThingName == nil { invalidParams.Add(request.NewErrParamRequired("ThingName")) } @@ -497,6 +597,12 @@ func (s *DeleteThingShadowInput) Validate() error { return nil } +// SetShadowName sets the ShadowName field's value. +func (s *DeleteThingShadowInput) SetShadowName(v string) *DeleteThingShadowInput { + s.ShadowName = &v + return s +} + // SetThingName sets the ThingName field's value. func (s *DeleteThingShadowInput) SetThingName(v string) *DeleteThingShadowInput { s.ThingName = &v @@ -533,6 +639,9 @@ func (s *DeleteThingShadowOutput) SetPayload(v []byte) *DeleteThingShadowOutput type GetThingShadowInput struct { _ struct{} `type:"structure"` + // The name of the shadow. + ShadowName *string `location:"querystring" locationName:"name" min:"1" type:"string"` + // The name of the thing. // // ThingName is a required field @@ -552,6 +661,9 @@ func (s GetThingShadowInput) GoString() string { // Validate inspects the fields of the type to determine if they are valid. func (s *GetThingShadowInput) Validate() error { invalidParams := request.ErrInvalidParams{Context: "GetThingShadowInput"} + if s.ShadowName != nil && len(*s.ShadowName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ShadowName", 1)) + } if s.ThingName == nil { invalidParams.Add(request.NewErrParamRequired("ThingName")) } @@ -565,6 +677,12 @@ func (s *GetThingShadowInput) Validate() error { return nil } +// SetShadowName sets the ShadowName field's value. +func (s *GetThingShadowInput) SetShadowName(v string) *GetThingShadowInput { + s.ShadowName = &v + return s +} + // SetThingName sets the ThingName field's value. func (s *GetThingShadowInput) SetThingName(v string) *GetThingShadowInput { s.ThingName = &v @@ -709,6 +827,110 @@ func (s *InvalidRequestException) RequestID() string { return s.RespMetadata.RequestID } +type ListNamedShadowsForThingInput struct { + _ struct{} `type:"structure"` + + // The token to retrieve the next set of results. + NextToken *string `location:"querystring" locationName:"nextToken" type:"string"` + + // The result page size. + PageSize *int64 `location:"querystring" locationName:"pageSize" min:"1" type:"integer"` + + // The name of the thing. + // + // ThingName is a required field + ThingName *string `location:"uri" locationName:"thingName" min:"1" type:"string" required:"true"` +} + +// String returns the string representation +func (s ListNamedShadowsForThingInput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListNamedShadowsForThingInput) GoString() string { + return s.String() +} + +// Validate inspects the fields of the type to determine if they are valid. +func (s *ListNamedShadowsForThingInput) Validate() error { + invalidParams := request.ErrInvalidParams{Context: "ListNamedShadowsForThingInput"} + if s.PageSize != nil && *s.PageSize < 1 { + invalidParams.Add(request.NewErrParamMinValue("PageSize", 1)) + } + if s.ThingName == nil { + invalidParams.Add(request.NewErrParamRequired("ThingName")) + } + if s.ThingName != nil && len(*s.ThingName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ThingName", 1)) + } + + if invalidParams.Len() > 0 { + return invalidParams + } + return nil +} + +// SetNextToken sets the NextToken field's value. +func (s *ListNamedShadowsForThingInput) SetNextToken(v string) *ListNamedShadowsForThingInput { + s.NextToken = &v + return s +} + +// SetPageSize sets the PageSize field's value. +func (s *ListNamedShadowsForThingInput) SetPageSize(v int64) *ListNamedShadowsForThingInput { + s.PageSize = &v + return s +} + +// SetThingName sets the ThingName field's value. +func (s *ListNamedShadowsForThingInput) SetThingName(v string) *ListNamedShadowsForThingInput { + s.ThingName = &v + return s +} + +type ListNamedShadowsForThingOutput struct { + _ struct{} `type:"structure"` + + // The token for the next set of results, or null if there are no additional + // results. + NextToken *string `locationName:"nextToken" type:"string"` + + // The list of shadows for the specified thing. + Results []*string `locationName:"results" type:"list"` + + // The Epoch date and time the response was generated by AWS IoT. + Timestamp *int64 `locationName:"timestamp" type:"long"` +} + +// String returns the string representation +func (s ListNamedShadowsForThingOutput) String() string { + return awsutil.Prettify(s) +} + +// GoString returns the string representation +func (s ListNamedShadowsForThingOutput) GoString() string { + return s.String() +} + +// SetNextToken sets the NextToken field's value. +func (s *ListNamedShadowsForThingOutput) SetNextToken(v string) *ListNamedShadowsForThingOutput { + s.NextToken = &v + return s +} + +// SetResults sets the Results field's value. +func (s *ListNamedShadowsForThingOutput) SetResults(v []*string) *ListNamedShadowsForThingOutput { + s.Results = v + return s +} + +// SetTimestamp sets the Timestamp field's value. +func (s *ListNamedShadowsForThingOutput) SetTimestamp(v int64) *ListNamedShadowsForThingOutput { + s.Timestamp = &v + return s +} + // The specified combination of HTTP verb and URI is not supported. type MethodNotAllowedException struct { _ struct{} `type:"structure"` @@ -1191,6 +1413,9 @@ type UpdateThingShadowInput struct { // Payload is a required field Payload []byte `locationName:"payload" type:"blob" required:"true"` + // The name of the shadow. + ShadowName *string `location:"querystring" locationName:"name" min:"1" type:"string"` + // The name of the thing. // // ThingName is a required field @@ -1213,6 +1438,9 @@ func (s *UpdateThingShadowInput) Validate() error { if s.Payload == nil { invalidParams.Add(request.NewErrParamRequired("Payload")) } + if s.ShadowName != nil && len(*s.ShadowName) < 1 { + invalidParams.Add(request.NewErrParamMinLen("ShadowName", 1)) + } if s.ThingName == nil { invalidParams.Add(request.NewErrParamRequired("ThingName")) } @@ -1232,6 +1460,12 @@ func (s *UpdateThingShadowInput) SetPayload(v []byte) *UpdateThingShadowInput { return s } +// SetShadowName sets the ShadowName field's value. +func (s *UpdateThingShadowInput) SetShadowName(v string) *UpdateThingShadowInput { + s.ShadowName = &v + return s +} + // SetThingName sets the ThingName field's value. func (s *UpdateThingShadowInput) SetThingName(v string) *UpdateThingShadowInput { s.ThingName = &v diff --git a/service/iotdataplane/doc.go b/service/iotdataplane/doc.go index 9729ae6e36a..8f7b7f30691 100644 --- a/service/iotdataplane/doc.go +++ b/service/iotdataplane/doc.go @@ -6,9 +6,17 @@ // AWS IoT-Data enables secure, bi-directional communication between Internet-connected // things (such as sensors, actuators, embedded devices, or smart appliances) // and the AWS cloud. It implements a broker for applications and things to -// publish messages over HTTP (Publish) and retrieve, update, and delete thing -// shadows. A thing shadow is a persistent representation of your things and -// their state in the AWS cloud. +// publish messages over HTTP (Publish) and retrieve, update, and delete shadows. +// A shadow is a persistent representation of your things and their state in +// the AWS cloud. +// +// Find the endpoint address for actions in the AWS IoT data plane by running +// this CLI command: +// +// aws iot describe-endpoint --endpoint-type iot:Data-ATS +// +// The service name used by AWS Signature Version 4 (https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) +// to sign requests is: iotdevicegateway. // // See iotdataplane package documentation for more information. // https://docs.aws.amazon.com/sdk-for-go/api/service/iotdataplane/ diff --git a/service/iotdataplane/iotdataplaneiface/interface.go b/service/iotdataplane/iotdataplaneiface/interface.go index c6cff032a29..5edee048980 100644 --- a/service/iotdataplane/iotdataplaneiface/interface.go +++ b/service/iotdataplane/iotdataplaneiface/interface.go @@ -68,6 +68,10 @@ type IoTDataPlaneAPI interface { GetThingShadowWithContext(aws.Context, *iotdataplane.GetThingShadowInput, ...request.Option) (*iotdataplane.GetThingShadowOutput, error) GetThingShadowRequest(*iotdataplane.GetThingShadowInput) (*request.Request, *iotdataplane.GetThingShadowOutput) + ListNamedShadowsForThing(*iotdataplane.ListNamedShadowsForThingInput) (*iotdataplane.ListNamedShadowsForThingOutput, error) + ListNamedShadowsForThingWithContext(aws.Context, *iotdataplane.ListNamedShadowsForThingInput, ...request.Option) (*iotdataplane.ListNamedShadowsForThingOutput, error) + ListNamedShadowsForThingRequest(*iotdataplane.ListNamedShadowsForThingInput) (*request.Request, *iotdataplane.ListNamedShadowsForThingOutput) + Publish(*iotdataplane.PublishInput) (*iotdataplane.PublishOutput, error) PublishWithContext(aws.Context, *iotdataplane.PublishInput, ...request.Option) (*iotdataplane.PublishOutput, error) PublishRequest(*iotdataplane.PublishInput) (*request.Request, *iotdataplane.PublishOutput)