aws-sdk-iotdataplane 1.39.0 → 1.41.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 67ca8a94ee793ccde51dfc4e3ddc356ba65a58de10f04f522c96be90cabf606b
4
- data.tar.gz: eabe4d46b4594da3e07ce0c73ed589a59a4af1d26ca184aa6e43217bc52eaa94
3
+ metadata.gz: 8d095bdd873c26177dc089f816f0b5517ada0daa223ebbe0025da406749c2616
4
+ data.tar.gz: af36a813f82e02857c329975f364f5f413bbe1442a150aaa61c80a9e60680706
5
5
  SHA512:
6
- metadata.gz: 15e7ead3c85b7cc736a9a27cebd6d981024dad375adf69827a28556817a29a6282c283adefad78bb25b56c98ba4550ad9101e19cf6e11be917407b27865324c3
7
- data.tar.gz: 7b41e1d01c9b7f2c42db0de6b6415b2696d562ba93d31753f84dfabb45c98484868b61ace29ed1be9d92dca34ead4da43d48d24d1acd4e642ad6d1bd7b71d5cd
6
+ metadata.gz: 817e5a65a853f48878639a50ec4a84cc8018173d40a8263c4b0f590542291d1c8d89d46d8609eb2445787359457beb38ff78777287db91e76a57a06150a3ffb7
7
+ data.tar.gz: 93dd2836ad9804cc883f8c351032d837410282d70a068c5db703040e6eab5136b11b8c8b91d1f57a62b2b19d2c9340bac96903d3d0e8cc9da1709610a6ab908b
data/CHANGELOG.md CHANGED
@@ -1,6 +1,16 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.41.0 (2022-11-28)
5
+ ------------------
6
+
7
+ * Feature - This release adds support for MQTT5 properties to AWS IoT HTTP Publish API.
8
+
9
+ 1.40.0 (2022-10-25)
10
+ ------------------
11
+
12
+ * Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
13
+
4
14
  1.39.0 (2022-03-30)
5
15
  ------------------
6
16
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.39.0
1
+ 1.41.0
@@ -30,7 +30,7 @@ require 'aws-sdk-core/plugins/http_checksum.rb'
30
30
  require 'aws-sdk-core/plugins/checksum_algorithm.rb'
31
31
  require 'aws-sdk-core/plugins/defaults_mode.rb'
32
32
  require 'aws-sdk-core/plugins/recursion_detection.rb'
33
- require 'aws-sdk-core/plugins/signature_v4.rb'
33
+ require 'aws-sdk-core/plugins/sign.rb'
34
34
  require 'aws-sdk-core/plugins/protocols/rest_json.rb'
35
35
 
36
36
  Aws::Plugins::GlobalConfiguration.add_identifier(:iotdataplane)
@@ -79,8 +79,9 @@ module Aws::IoTDataPlane
79
79
  add_plugin(Aws::Plugins::ChecksumAlgorithm)
80
80
  add_plugin(Aws::Plugins::DefaultsMode)
81
81
  add_plugin(Aws::Plugins::RecursionDetection)
82
- add_plugin(Aws::Plugins::SignatureV4)
82
+ add_plugin(Aws::Plugins::Sign)
83
83
  add_plugin(Aws::Plugins::Protocols::RestJson)
84
+ add_plugin(Aws::IoTDataPlane::Plugins::Endpoints)
84
85
 
85
86
  # @overload initialize(options)
86
87
  # @param [Hash] options
@@ -287,6 +288,19 @@ module Aws::IoTDataPlane
287
288
  # ** Please note ** When response stubbing is enabled, no HTTP
288
289
  # requests are made, and retries are disabled.
289
290
  #
291
+ # @option options [Aws::TokenProvider] :token_provider
292
+ # A Bearer Token Provider. This can be an instance of any one of the
293
+ # following classes:
294
+ #
295
+ # * `Aws::StaticTokenProvider` - Used for configuring static, non-refreshing
296
+ # tokens.
297
+ #
298
+ # * `Aws::SSOTokenProvider` - Used for loading tokens from AWS SSO using an
299
+ # access token generated from `aws login`.
300
+ #
301
+ # When `:token_provider` is not configured directly, the `Aws::TokenProviderChain`
302
+ # will be used to search for tokens configured for your profile in shared configuration files.
303
+ #
290
304
  # @option options [Boolean] :use_dualstack_endpoint
291
305
  # When set to `true`, dualstack enabled endpoints (with `.aws` TLD)
292
306
  # will be used if available.
@@ -300,6 +314,9 @@ module Aws::IoTDataPlane
300
314
  # When `true`, request parameters are validated before
301
315
  # sending the request.
302
316
  #
317
+ # @option options [Aws::IoTDataPlane::EndpointProvider] :endpoint_provider
318
+ # The endpoint provider used to resolve endpoints. Any object that responds to `#resolve_endpoint(parameters)` where `parameters` is a Struct similar to `Aws::IoTDataPlane::EndpointParameters`
319
+ #
303
320
  # @option options [URI::HTTP,String] :http_proxy A proxy to send
304
321
  # requests through. Formatted like 'http://proxy.com:123'.
305
322
  #
@@ -603,7 +620,7 @@ module Aws::IoTDataPlane
603
620
  # The name of the MQTT topic.
604
621
  #
605
622
  # @option params [Integer] :qos
606
- # The Quality of Service (QoS) level.
623
+ # The Quality of Service (QoS) level. The default QoS level is 0.
607
624
  #
608
625
  # @option params [Boolean] :retain
609
626
  # A Boolean value that determines whether to set the RETAIN flag when
@@ -624,6 +641,52 @@ module Aws::IoTDataPlane
624
641
  # the retained message identified by **topic** from Amazon Web Services
625
642
  # IoT Core.
626
643
  #
644
+ # @option params [String] :user_properties
645
+ # A JSON string that contains an array of JSON objects. If you don’t use
646
+ # Amazon Web Services SDK or CLI, you must encode the JSON string to
647
+ # base64 format before adding it to the HTTP header. `userProperties` is
648
+ # an HTTP header value in the API.
649
+ #
650
+ # The following example `userProperties` parameter is a JSON string
651
+ # which represents two User Properties. Note that it needs to be
652
+ # base64-encoded:
653
+ #
654
+ # `[\{"deviceName": "alpha"\}, \{"deviceCnt": "45"\}]`
655
+ #
656
+ # **SDK automatically handles json encoding and base64 encoding for you
657
+ # when the required value (Hash, Array, etc.) is provided according to
658
+ # the description.**
659
+ #
660
+ # @option params [String] :payload_format_indicator
661
+ # An `Enum` string value that indicates whether the payload is formatted
662
+ # as UTF-8. `payloadFormatIndicator` is an HTTP header value in the API.
663
+ #
664
+ # @option params [String] :content_type
665
+ # A UTF-8 encoded string that describes the content of the publishing
666
+ # message.
667
+ #
668
+ # @option params [String] :response_topic
669
+ # A UTF-8 encoded string that's used as the topic name for a response
670
+ # message. The response topic is used to describe the topic which the
671
+ # receiver should publish to as part of the request-response flow. The
672
+ # topic must not contain wildcard characters.
673
+ #
674
+ # @option params [String] :correlation_data
675
+ # The base64-encoded binary data used by the sender of the request
676
+ # message to identify which request the response message is for when
677
+ # it's received. `correlationData` is an HTTP header value in the API.
678
+ #
679
+ # @option params [Integer] :message_expiry
680
+ # A user-defined integer value that represents the message expiry
681
+ # interval in seconds. If absent, the message doesn't expire. For more
682
+ # information about the limits of `messageExpiry`, see [Amazon Web
683
+ # Services IoT Core message broker and protocol limits and quotas ][1]
684
+ # from the Amazon Web Services Reference Guide.
685
+ #
686
+ #
687
+ #
688
+ # [1]: https://docs.aws.amazon.com/general/latest/gr/iot-core.html#message-broker-limits
689
+ #
627
690
  # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
628
691
  #
629
692
  # @example Request syntax with placeholder values
@@ -633,6 +696,12 @@ module Aws::IoTDataPlane
633
696
  # qos: 1,
634
697
  # retain: false,
635
698
  # payload: "data",
699
+ # user_properties: "UserProperties",
700
+ # payload_format_indicator: "UNSPECIFIED_BYTES", # accepts UNSPECIFIED_BYTES, UTF8_DATA
701
+ # content_type: "ContentType",
702
+ # response_topic: "ResponseTopic",
703
+ # correlation_data: "CorrelationData",
704
+ # message_expiry: 1,
636
705
  # })
637
706
  #
638
707
  # @overload publish(params = {})
@@ -699,7 +768,7 @@ module Aws::IoTDataPlane
699
768
  params: params,
700
769
  config: config)
701
770
  context[:gem_name] = 'aws-sdk-iotdataplane'
702
- context[:gem_version] = '1.39.0'
771
+ context[:gem_version] = '1.41.0'
703
772
  Seahorse::Client::Request.new(handlers, context)
704
773
  end
705
774
 
@@ -14,6 +14,8 @@ module Aws::IoTDataPlane
14
14
  include Seahorse::Model
15
15
 
16
16
  ConflictException = Shapes::StructureShape.new(name: 'ConflictException')
17
+ ContentType = Shapes::StringShape.new(name: 'ContentType')
18
+ CorrelationData = Shapes::StringShape.new(name: 'CorrelationData')
17
19
  DeleteThingShadowRequest = Shapes::StructureShape.new(name: 'DeleteThingShadowRequest')
18
20
  DeleteThingShadowResponse = Shapes::StructureShape.new(name: 'DeleteThingShadowResponse')
19
21
  GetRetainedMessageRequest = Shapes::StructureShape.new(name: 'GetRetainedMessageRequest')
@@ -28,16 +30,19 @@ module Aws::IoTDataPlane
28
30
  ListRetainedMessagesRequest = Shapes::StructureShape.new(name: 'ListRetainedMessagesRequest')
29
31
  ListRetainedMessagesResponse = Shapes::StructureShape.new(name: 'ListRetainedMessagesResponse')
30
32
  MaxResults = Shapes::IntegerShape.new(name: 'MaxResults')
33
+ MessageExpiry = Shapes::IntegerShape.new(name: 'MessageExpiry')
31
34
  MethodNotAllowedException = Shapes::StructureShape.new(name: 'MethodNotAllowedException')
32
35
  NamedShadowList = Shapes::ListShape.new(name: 'NamedShadowList')
33
36
  NextToken = Shapes::StringShape.new(name: 'NextToken')
34
37
  PageSize = Shapes::IntegerShape.new(name: 'PageSize')
35
38
  Payload = Shapes::BlobShape.new(name: 'Payload')
39
+ PayloadFormatIndicator = Shapes::StringShape.new(name: 'PayloadFormatIndicator')
36
40
  PayloadSize = Shapes::IntegerShape.new(name: 'PayloadSize')
37
41
  PublishRequest = Shapes::StructureShape.new(name: 'PublishRequest')
38
42
  Qos = Shapes::IntegerShape.new(name: 'Qos')
39
43
  RequestEntityTooLargeException = Shapes::StructureShape.new(name: 'RequestEntityTooLargeException')
40
44
  ResourceNotFoundException = Shapes::StructureShape.new(name: 'ResourceNotFoundException')
45
+ ResponseTopic = Shapes::StringShape.new(name: 'ResponseTopic')
41
46
  Retain = Shapes::BooleanShape.new(name: 'Retain')
42
47
  RetainedMessageList = Shapes::ListShape.new(name: 'RetainedMessageList')
43
48
  RetainedMessageSummary = Shapes::StructureShape.new(name: 'RetainedMessageSummary')
@@ -51,6 +56,7 @@ module Aws::IoTDataPlane
51
56
  UnsupportedDocumentEncodingException = Shapes::StructureShape.new(name: 'UnsupportedDocumentEncodingException')
52
57
  UpdateThingShadowRequest = Shapes::StructureShape.new(name: 'UpdateThingShadowRequest')
53
58
  UpdateThingShadowResponse = Shapes::StructureShape.new(name: 'UpdateThingShadowResponse')
59
+ UserProperties = Shapes::StringShape.new(name: 'UserProperties')
54
60
  errorMessage = Shapes::StringShape.new(name: 'errorMessage')
55
61
 
56
62
  ConflictException.add_member(:message, Shapes::ShapeRef.new(shape: errorMessage, location_name: "message"))
@@ -116,6 +122,12 @@ module Aws::IoTDataPlane
116
122
  PublishRequest.add_member(:qos, Shapes::ShapeRef.new(shape: Qos, location: "querystring", location_name: "qos"))
117
123
  PublishRequest.add_member(:retain, Shapes::ShapeRef.new(shape: Retain, location: "querystring", location_name: "retain"))
118
124
  PublishRequest.add_member(:payload, Shapes::ShapeRef.new(shape: Payload, location_name: "payload"))
125
+ PublishRequest.add_member(:user_properties, Shapes::ShapeRef.new(shape: UserProperties, location: "header", location_name: "x-amz-mqtt5-user-properties", metadata: {"jsonvalue"=>true}))
126
+ PublishRequest.add_member(:payload_format_indicator, Shapes::ShapeRef.new(shape: PayloadFormatIndicator, location: "header", location_name: "x-amz-mqtt5-payload-format-indicator"))
127
+ PublishRequest.add_member(:content_type, Shapes::ShapeRef.new(shape: ContentType, location: "querystring", location_name: "contentType"))
128
+ PublishRequest.add_member(:response_topic, Shapes::ShapeRef.new(shape: ResponseTopic, location: "querystring", location_name: "responseTopic"))
129
+ PublishRequest.add_member(:correlation_data, Shapes::ShapeRef.new(shape: CorrelationData, location: "header", location_name: "x-amz-mqtt5-correlation-data"))
130
+ PublishRequest.add_member(:message_expiry, Shapes::ShapeRef.new(shape: MessageExpiry, location: "querystring", location_name: "messageExpiry"))
119
131
  PublishRequest.struct_class = Types::PublishRequest
120
132
  PublishRequest[:payload] = :payload
121
133
  PublishRequest[:payload_member] = PublishRequest.member(:payload)
@@ -266,6 +278,7 @@ module Aws::IoTDataPlane
266
278
  o.errors << Shapes::ShapeRef.new(shape: InvalidRequestException)
267
279
  o.errors << Shapes::ShapeRef.new(shape: UnauthorizedException)
268
280
  o.errors << Shapes::ShapeRef.new(shape: MethodNotAllowedException)
281
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
269
282
  end)
270
283
 
271
284
  api.add_operation(:update_thing_shadow, Seahorse::Model::Operation.new.tap do |o|
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ # WARNING ABOUT GENERATED CODE
4
+ #
5
+ # This file is generated. See the contributing guide for more information:
6
+ # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
7
+ #
8
+ # WARNING ABOUT GENERATED CODE
9
+
10
+ module Aws::IoTDataPlane
11
+ # Endpoint parameters used to influence endpoints per request.
12
+ #
13
+ # @!attribute region
14
+ # The AWS region used to dispatch the request.
15
+ #
16
+ # @return [String]
17
+ #
18
+ # @!attribute use_dual_stack
19
+ # When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
20
+ #
21
+ # @return [Boolean]
22
+ #
23
+ # @!attribute use_fips
24
+ # When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.
25
+ #
26
+ # @return [Boolean]
27
+ #
28
+ # @!attribute endpoint
29
+ # Override the endpoint used to send this request
30
+ #
31
+ # @return [String]
32
+ #
33
+ EndpointParameters = Struct.new(
34
+ :region,
35
+ :use_dual_stack,
36
+ :use_fips,
37
+ :endpoint,
38
+ ) do
39
+ include Aws::Structure
40
+
41
+ # @api private
42
+ class << self
43
+ PARAM_MAP = {
44
+ 'Region' => :region,
45
+ 'UseDualStack' => :use_dual_stack,
46
+ 'UseFIPS' => :use_fips,
47
+ 'Endpoint' => :endpoint,
48
+ }.freeze
49
+ end
50
+
51
+ def initialize(options = {})
52
+ self[:region] = options[:region]
53
+ self[:use_dual_stack] = options[:use_dual_stack]
54
+ self[:use_dual_stack] = false if self[:use_dual_stack].nil?
55
+ if self[:use_dual_stack].nil?
56
+ raise ArgumentError, "Missing required EndpointParameter: :use_dual_stack"
57
+ end
58
+ self[:use_fips] = options[:use_fips]
59
+ self[:use_fips] = false if self[:use_fips].nil?
60
+ if self[:use_fips].nil?
61
+ raise ArgumentError, "Missing required EndpointParameter: :use_fips"
62
+ end
63
+ self[:endpoint] = options[:endpoint]
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,142 @@
1
+ # frozen_string_literal: true
2
+
3
+ # WARNING ABOUT GENERATED CODE
4
+ #
5
+ # This file is generated. See the contributing guide for more information:
6
+ # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
7
+ #
8
+ # WARNING ABOUT GENERATED CODE
9
+
10
+ module Aws::IoTDataPlane
11
+ class EndpointProvider
12
+ def initialize(rule_set = nil)
13
+ @@rule_set ||= begin
14
+ endpoint_rules = Aws::Json.load(Base64.decode64(RULES))
15
+ Aws::Endpoints::RuleSet.new(
16
+ version: endpoint_rules['version'],
17
+ service_id: endpoint_rules['serviceId'],
18
+ parameters: endpoint_rules['parameters'],
19
+ rules: endpoint_rules['rules']
20
+ )
21
+ end
22
+ @provider = Aws::Endpoints::RulesProvider.new(rule_set || @@rule_set)
23
+ end
24
+
25
+ def resolve_endpoint(parameters)
26
+ @provider.resolve_endpoint(parameters)
27
+ end
28
+
29
+ # @api private
30
+ RULES = <<-JSON
31
+ eyJ2ZXJzaW9uIjoiMS4wIiwicGFyYW1ldGVycyI6eyJSZWdpb24iOnsiYnVp
32
+ bHRJbiI6IkFXUzo6UmVnaW9uIiwicmVxdWlyZWQiOmZhbHNlLCJkb2N1bWVu
33
+ dGF0aW9uIjoiVGhlIEFXUyByZWdpb24gdXNlZCB0byBkaXNwYXRjaCB0aGUg
34
+ cmVxdWVzdC4iLCJ0eXBlIjoiU3RyaW5nIn0sIlVzZUR1YWxTdGFjayI6eyJi
35
+ dWlsdEluIjoiQVdTOjpVc2VEdWFsU3RhY2siLCJyZXF1aXJlZCI6dHJ1ZSwi
36
+ ZGVmYXVsdCI6ZmFsc2UsImRvY3VtZW50YXRpb24iOiJXaGVuIHRydWUsIHVz
37
+ ZSB0aGUgZHVhbC1zdGFjayBlbmRwb2ludC4gSWYgdGhlIGNvbmZpZ3VyZWQg
38
+ ZW5kcG9pbnQgZG9lcyBub3Qgc3VwcG9ydCBkdWFsLXN0YWNrLCBkaXNwYXRj
39
+ aGluZyB0aGUgcmVxdWVzdCBNQVkgcmV0dXJuIGFuIGVycm9yLiIsInR5cGUi
40
+ OiJCb29sZWFuIn0sIlVzZUZJUFMiOnsiYnVpbHRJbiI6IkFXUzo6VXNlRklQ
41
+ UyIsInJlcXVpcmVkIjp0cnVlLCJkZWZhdWx0IjpmYWxzZSwiZG9jdW1lbnRh
42
+ dGlvbiI6IldoZW4gdHJ1ZSwgc2VuZCB0aGlzIHJlcXVlc3QgdG8gdGhlIEZJ
43
+ UFMtY29tcGxpYW50IHJlZ2lvbmFsIGVuZHBvaW50LiBJZiB0aGUgY29uZmln
44
+ dXJlZCBlbmRwb2ludCBkb2VzIG5vdCBoYXZlIGEgRklQUyBjb21wbGlhbnQg
45
+ ZW5kcG9pbnQsIGRpc3BhdGNoaW5nIHRoZSByZXF1ZXN0IHdpbGwgcmV0dXJu
46
+ IGFuIGVycm9yLiIsInR5cGUiOiJCb29sZWFuIn0sIkVuZHBvaW50Ijp7ImJ1
47
+ aWx0SW4iOiJTREs6OkVuZHBvaW50IiwicmVxdWlyZWQiOmZhbHNlLCJkb2N1
48
+ bWVudGF0aW9uIjoiT3ZlcnJpZGUgdGhlIGVuZHBvaW50IHVzZWQgdG8gc2Vu
49
+ ZCB0aGlzIHJlcXVlc3QiLCJ0eXBlIjoiU3RyaW5nIn19LCJydWxlcyI6W3si
50
+ Y29uZGl0aW9ucyI6W3siZm4iOiJhd3MucGFydGl0aW9uIiwiYXJndiI6W3si
51
+ cmVmIjoiUmVnaW9uIn1dLCJhc3NpZ24iOiJQYXJ0aXRpb25SZXN1bHQifV0s
52
+ InR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMiOlt7ImZuIjoi
53
+ aXNTZXQiLCJhcmd2IjpbeyJyZWYiOiJFbmRwb2ludCJ9XX0seyJmbiI6InBh
54
+ cnNlVVJMIiwiYXJndiI6W3sicmVmIjoiRW5kcG9pbnQifV0sImFzc2lnbiI6
55
+ InVybCJ9XSwidHlwZSI6InRyZWUiLCJydWxlcyI6W3siY29uZGl0aW9ucyI6
56
+ W3siZm4iOiJib29sZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRklQ
57
+ UyJ9LHRydWVdfV0sImVycm9yIjoiSW52YWxpZCBDb25maWd1cmF0aW9uOiBG
58
+ SVBTIGFuZCBjdXN0b20gZW5kcG9pbnQgYXJlIG5vdCBzdXBwb3J0ZWQiLCJ0
59
+ eXBlIjoiZXJyb3IifSx7ImNvbmRpdGlvbnMiOltdLCJ0eXBlIjoidHJlZSIs
60
+ InJ1bGVzIjpbeyJjb25kaXRpb25zIjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMi
61
+ LCJhcmd2IjpbeyJyZWYiOiJVc2VEdWFsU3RhY2sifSx0cnVlXX1dLCJlcnJv
62
+ ciI6IkludmFsaWQgQ29uZmlndXJhdGlvbjogRHVhbHN0YWNrIGFuZCBjdXN0
63
+ b20gZW5kcG9pbnQgYXJlIG5vdCBzdXBwb3J0ZWQiLCJ0eXBlIjoiZXJyb3Ii
64
+ fSx7ImNvbmRpdGlvbnMiOltdLCJlbmRwb2ludCI6eyJ1cmwiOnsicmVmIjoi
65
+ RW5kcG9pbnQifSwicHJvcGVydGllcyI6e30sImhlYWRlcnMiOnt9fSwidHlw
66
+ ZSI6ImVuZHBvaW50In1dfV19LHsiY29uZGl0aW9ucyI6W3siZm4iOiJib29s
67
+ ZWFuRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiVXNlRklQUyJ9LHRydWVdfSx7
68
+ ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt7InJlZiI6IlVzZUR1YWxT
69
+ dGFjayJ9LHRydWVdfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRp
70
+ dGlvbnMiOlt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt0cnVlLHsi
71
+ Zm4iOiJnZXRBdHRyIiwiYXJndiI6W3sicmVmIjoiUGFydGl0aW9uUmVzdWx0
72
+ In0sInN1cHBvcnRzRklQUyJdfV19LHsiZm4iOiJib29sZWFuRXF1YWxzIiwi
73
+ YXJndiI6W3RydWUseyJmbiI6ImdldEF0dHIiLCJhcmd2IjpbeyJyZWYiOiJQ
74
+ YXJ0aXRpb25SZXN1bHQifSwic3VwcG9ydHNEdWFsU3RhY2siXX1dfV0sInR5
75
+ cGUiOiJ0cmVlIiwicnVsZXMiOlt7ImNvbmRpdGlvbnMiOltdLCJlbmRwb2lu
76
+ dCI6eyJ1cmwiOiJodHRwczovL2RhdGEtYXRzLmlvdC1maXBzLntSZWdpb259
77
+ LntQYXJ0aXRpb25SZXN1bHQjZHVhbFN0YWNrRG5zU3VmZml4fSIsInByb3Bl
78
+ cnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9XX0s
79
+ eyJjb25kaXRpb25zIjpbXSwiZXJyb3IiOiJGSVBTIGFuZCBEdWFsU3RhY2sg
80
+ YXJlIGVuYWJsZWQsIGJ1dCB0aGlzIHBhcnRpdGlvbiBkb2VzIG5vdCBzdXBw
81
+ b3J0IG9uZSBvciBib3RoIiwidHlwZSI6ImVycm9yIn1dfSx7ImNvbmRpdGlv
82
+ bnMiOlt7ImZuIjoiYm9vbGVhbkVxdWFscyIsImFyZ3YiOlt7InJlZiI6IlVz
83
+ ZUZJUFMifSx0cnVlXX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJjb25k
84
+ aXRpb25zIjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbdHJ1ZSx7
85
+ ImZuIjoiZ2V0QXR0ciIsImFyZ3YiOlt7InJlZiI6IlBhcnRpdGlvblJlc3Vs
86
+ dCJ9LCJzdXBwb3J0c0ZJUFMiXX1dfV0sInR5cGUiOiJ0cmVlIiwicnVsZXMi
87
+ Olt7ImNvbmRpdGlvbnMiOltdLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpbeyJj
88
+ b25kaXRpb25zIjpbeyJmbiI6InN0cmluZ0VxdWFscyIsImFyZ3YiOlt7InJl
89
+ ZiI6IlJlZ2lvbiJ9LCJ1cy1lYXN0LTEiXX1dLCJlbmRwb2ludCI6eyJ1cmwi
90
+ OiJodHRwczovL2RhdGEuaW90LWZpcHMudXMtZWFzdC0xLmFtYXpvbmF3cy5j
91
+ b20iLCJwcm9wZXJ0aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0eXBlIjoiZW5k
92
+ cG9pbnQifSx7ImNvbmRpdGlvbnMiOlt7ImZuIjoic3RyaW5nRXF1YWxzIiwi
93
+ YXJndiI6W3sicmVmIjoiUmVnaW9uIn0sInVzLWVhc3QtMiJdfV0sImVuZHBv
94
+ aW50Ijp7InVybCI6Imh0dHBzOi8vZGF0YS5pb3QtZmlwcy51cy1lYXN0LTIu
95
+ YW1hem9uYXdzLmNvbSIsInByb3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0s
96
+ InR5cGUiOiJlbmRwb2ludCJ9LHsiY29uZGl0aW9ucyI6W3siZm4iOiJzdHJp
97
+ bmdFcXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJSZWdpb24ifSwiY2EtY2VudHJh
98
+ bC0xIl19XSwiZW5kcG9pbnQiOnsidXJsIjoiaHR0cHM6Ly9kYXRhLmlvdC1m
99
+ aXBzLmNhLWNlbnRyYWwtMS5hbWF6b25hd3MuY29tIiwicHJvcGVydGllcyI6
100
+ e30sImhlYWRlcnMiOnt9fSwidHlwZSI6ImVuZHBvaW50In0seyJjb25kaXRp
101
+ b25zIjpbeyJmbiI6InN0cmluZ0VxdWFscyIsImFyZ3YiOlt7InJlZiI6IlJl
102
+ Z2lvbiJ9LCJ1cy13ZXN0LTEiXX1dLCJlbmRwb2ludCI6eyJ1cmwiOiJodHRw
103
+ czovL2RhdGEuaW90LWZpcHMudXMtd2VzdC0xLmFtYXpvbmF3cy5jb20iLCJw
104
+ cm9wZXJ0aWVzIjp7fSwiaGVhZGVycyI6e319LCJ0eXBlIjoiZW5kcG9pbnQi
105
+ fSx7ImNvbmRpdGlvbnMiOlt7ImZuIjoic3RyaW5nRXF1YWxzIiwiYXJndiI6
106
+ W3sicmVmIjoiUmVnaW9uIn0sInVzLXdlc3QtMiJdfV0sImVuZHBvaW50Ijp7
107
+ InVybCI6Imh0dHBzOi8vZGF0YS5pb3QtZmlwcy51cy13ZXN0LTIuYW1hem9u
108
+ YXdzLmNvbSIsInByb3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0sInR5cGUi
109
+ OiJlbmRwb2ludCJ9LHsiY29uZGl0aW9ucyI6W3siZm4iOiJzdHJpbmdFcXVh
110
+ bHMiLCJhcmd2IjpbeyJyZWYiOiJSZWdpb24ifSwidXMtZ292LXdlc3QtMSJd
111
+ fV0sImVuZHBvaW50Ijp7InVybCI6Imh0dHBzOi8vZGF0YS5pb3QtZmlwcy51
112
+ cy1nb3Ytd2VzdC0xLmFtYXpvbmF3cy5jb20iLCJwcm9wZXJ0aWVzIjp7fSwi
113
+ aGVhZGVycyI6e319LCJ0eXBlIjoiZW5kcG9pbnQifSx7ImNvbmRpdGlvbnMi
114
+ Olt7ImZuIjoic3RyaW5nRXF1YWxzIiwiYXJndiI6W3sicmVmIjoiUmVnaW9u
115
+ In0sInVzLWdvdi1lYXN0LTEiXX1dLCJlbmRwb2ludCI6eyJ1cmwiOiJodHRw
116
+ czovL2RhdGEuaW90LWZpcHMudXMtZ292LWVhc3QtMS5hbWF6b25hd3MuY29t
117
+ IiwicHJvcGVydGllcyI6e30sImhlYWRlcnMiOnt9fSwidHlwZSI6ImVuZHBv
118
+ aW50In0seyJjb25kaXRpb25zIjpbXSwiZW5kcG9pbnQiOnsidXJsIjoiaHR0
119
+ cHM6Ly9kYXRhLWF0cy5pb3QtZmlwcy57UmVnaW9ufS57UGFydGl0aW9uUmVz
120
+ dWx0I2Ruc1N1ZmZpeH0iLCJwcm9wZXJ0aWVzIjp7fSwiaGVhZGVycyI6e319
121
+ LCJ0eXBlIjoiZW5kcG9pbnQifV19XX0seyJjb25kaXRpb25zIjpbXSwiZXJy
122
+ b3IiOiJGSVBTIGlzIGVuYWJsZWQgYnV0IHRoaXMgcGFydGl0aW9uIGRvZXMg
123
+ bm90IHN1cHBvcnQgRklQUyIsInR5cGUiOiJlcnJvciJ9XX0seyJjb25kaXRp
124
+ b25zIjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2IjpbeyJyZWYiOiJV
125
+ c2VEdWFsU3RhY2sifSx0cnVlXX1dLCJ0eXBlIjoidHJlZSIsInJ1bGVzIjpb
126
+ eyJjb25kaXRpb25zIjpbeyJmbiI6ImJvb2xlYW5FcXVhbHMiLCJhcmd2Ijpb
127
+ dHJ1ZSx7ImZuIjoiZ2V0QXR0ciIsImFyZ3YiOlt7InJlZiI6IlBhcnRpdGlv
128
+ blJlc3VsdCJ9LCJzdXBwb3J0c0R1YWxTdGFjayJdfV19XSwidHlwZSI6InRy
129
+ ZWUiLCJydWxlcyI6W3siY29uZGl0aW9ucyI6W10sImVuZHBvaW50Ijp7InVy
130
+ bCI6Imh0dHBzOi8vZGF0YS1hdHMuaW90LntSZWdpb259LntQYXJ0aXRpb25S
131
+ ZXN1bHQjZHVhbFN0YWNrRG5zU3VmZml4fSIsInByb3BlcnRpZXMiOnt9LCJo
132
+ ZWFkZXJzIjp7fX0sInR5cGUiOiJlbmRwb2ludCJ9XX0seyJjb25kaXRpb25z
133
+ IjpbXSwiZXJyb3IiOiJEdWFsU3RhY2sgaXMgZW5hYmxlZCBidXQgdGhpcyBw
134
+ YXJ0aXRpb24gZG9lcyBub3Qgc3VwcG9ydCBEdWFsU3RhY2siLCJ0eXBlIjoi
135
+ ZXJyb3IifV19LHsiY29uZGl0aW9ucyI6W10sImVuZHBvaW50Ijp7InVybCI6
136
+ Imh0dHBzOi8vZGF0YS1hdHMuaW90LntSZWdpb259LntQYXJ0aXRpb25SZXN1
137
+ bHQjZG5zU3VmZml4fSIsInByb3BlcnRpZXMiOnt9LCJoZWFkZXJzIjp7fX0s
138
+ InR5cGUiOiJlbmRwb2ludCJ9XX1dfQ==
139
+
140
+ JSON
141
+ end
142
+ end
@@ -0,0 +1,113 @@
1
+ # frozen_string_literal: true
2
+
3
+ # WARNING ABOUT GENERATED CODE
4
+ #
5
+ # This file is generated. See the contributing guide for more information:
6
+ # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
7
+ #
8
+ # WARNING ABOUT GENERATED CODE
9
+
10
+
11
+ module Aws::IoTDataPlane
12
+ module Endpoints
13
+
14
+ class DeleteThingShadow
15
+ def self.build(context)
16
+ unless context.config.regional_endpoint
17
+ endpoint = context.config.endpoint.to_s
18
+ end
19
+ Aws::IoTDataPlane::EndpointParameters.new(
20
+ region: context.config.region,
21
+ use_dual_stack: context.config.use_dualstack_endpoint,
22
+ use_fips: context.config.use_fips_endpoint,
23
+ endpoint: endpoint,
24
+ )
25
+ end
26
+ end
27
+
28
+ class GetRetainedMessage
29
+ def self.build(context)
30
+ unless context.config.regional_endpoint
31
+ endpoint = context.config.endpoint.to_s
32
+ end
33
+ Aws::IoTDataPlane::EndpointParameters.new(
34
+ region: context.config.region,
35
+ use_dual_stack: context.config.use_dualstack_endpoint,
36
+ use_fips: context.config.use_fips_endpoint,
37
+ endpoint: endpoint,
38
+ )
39
+ end
40
+ end
41
+
42
+ class GetThingShadow
43
+ def self.build(context)
44
+ unless context.config.regional_endpoint
45
+ endpoint = context.config.endpoint.to_s
46
+ end
47
+ Aws::IoTDataPlane::EndpointParameters.new(
48
+ region: context.config.region,
49
+ use_dual_stack: context.config.use_dualstack_endpoint,
50
+ use_fips: context.config.use_fips_endpoint,
51
+ endpoint: endpoint,
52
+ )
53
+ end
54
+ end
55
+
56
+ class ListNamedShadowsForThing
57
+ def self.build(context)
58
+ unless context.config.regional_endpoint
59
+ endpoint = context.config.endpoint.to_s
60
+ end
61
+ Aws::IoTDataPlane::EndpointParameters.new(
62
+ region: context.config.region,
63
+ use_dual_stack: context.config.use_dualstack_endpoint,
64
+ use_fips: context.config.use_fips_endpoint,
65
+ endpoint: endpoint,
66
+ )
67
+ end
68
+ end
69
+
70
+ class ListRetainedMessages
71
+ def self.build(context)
72
+ unless context.config.regional_endpoint
73
+ endpoint = context.config.endpoint.to_s
74
+ end
75
+ Aws::IoTDataPlane::EndpointParameters.new(
76
+ region: context.config.region,
77
+ use_dual_stack: context.config.use_dualstack_endpoint,
78
+ use_fips: context.config.use_fips_endpoint,
79
+ endpoint: endpoint,
80
+ )
81
+ end
82
+ end
83
+
84
+ class Publish
85
+ def self.build(context)
86
+ unless context.config.regional_endpoint
87
+ endpoint = context.config.endpoint.to_s
88
+ end
89
+ Aws::IoTDataPlane::EndpointParameters.new(
90
+ region: context.config.region,
91
+ use_dual_stack: context.config.use_dualstack_endpoint,
92
+ use_fips: context.config.use_fips_endpoint,
93
+ endpoint: endpoint,
94
+ )
95
+ end
96
+ end
97
+
98
+ class UpdateThingShadow
99
+ def self.build(context)
100
+ unless context.config.regional_endpoint
101
+ endpoint = context.config.endpoint.to_s
102
+ end
103
+ Aws::IoTDataPlane::EndpointParameters.new(
104
+ region: context.config.region,
105
+ use_dual_stack: context.config.use_dualstack_endpoint,
106
+ use_fips: context.config.use_fips_endpoint,
107
+ endpoint: endpoint,
108
+ )
109
+ end
110
+ end
111
+
112
+ end
113
+ end
@@ -0,0 +1,82 @@
1
+ # frozen_string_literal: true
2
+
3
+ # WARNING ABOUT GENERATED CODE
4
+ #
5
+ # This file is generated. See the contributing guide for more information:
6
+ # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
7
+ #
8
+ # WARNING ABOUT GENERATED CODE
9
+
10
+
11
+ module Aws::IoTDataPlane
12
+ module Plugins
13
+ class Endpoints < Seahorse::Client::Plugin
14
+ option(
15
+ :endpoint_provider,
16
+ doc_type: 'Aws::IoTDataPlane::EndpointProvider',
17
+ docstring: 'The endpoint provider used to resolve endpoints. Any '\
18
+ 'object that responds to `#resolve_endpoint(parameters)` '\
19
+ 'where `parameters` is a Struct similar to '\
20
+ '`Aws::IoTDataPlane::EndpointParameters`'
21
+ ) do |cfg|
22
+ Aws::IoTDataPlane::EndpointProvider.new
23
+ end
24
+
25
+ # @api private
26
+ class Handler < Seahorse::Client::Handler
27
+ def call(context)
28
+ # If endpoint was discovered, do not resolve or apply the endpoint.
29
+ unless context[:discovered_endpoint]
30
+ params = parameters_for_operation(context)
31
+ endpoint = context.config.endpoint_provider.resolve_endpoint(params)
32
+
33
+ context.http_request.endpoint = endpoint.url
34
+ apply_endpoint_headers(context, endpoint.headers)
35
+ end
36
+
37
+ context[:endpoint_params] = params
38
+ context[:auth_scheme] =
39
+ Aws::Endpoints.resolve_auth_scheme(context, endpoint)
40
+
41
+ @handler.call(context)
42
+ end
43
+
44
+ private
45
+
46
+ def apply_endpoint_headers(context, headers)
47
+ headers.each do |key, values|
48
+ value = values
49
+ .compact
50
+ .map { |s| Seahorse::Util.escape_header_list_string(s.to_s) }
51
+ .join(',')
52
+
53
+ context.http_request.headers[key] = value
54
+ end
55
+ end
56
+
57
+ def parameters_for_operation(context)
58
+ case context.operation_name
59
+ when :delete_thing_shadow
60
+ Aws::IoTDataPlane::Endpoints::DeleteThingShadow.build(context)
61
+ when :get_retained_message
62
+ Aws::IoTDataPlane::Endpoints::GetRetainedMessage.build(context)
63
+ when :get_thing_shadow
64
+ Aws::IoTDataPlane::Endpoints::GetThingShadow.build(context)
65
+ when :list_named_shadows_for_thing
66
+ Aws::IoTDataPlane::Endpoints::ListNamedShadowsForThing.build(context)
67
+ when :list_retained_messages
68
+ Aws::IoTDataPlane::Endpoints::ListRetainedMessages.build(context)
69
+ when :publish
70
+ Aws::IoTDataPlane::Endpoints::Publish.build(context)
71
+ when :update_thing_shadow
72
+ Aws::IoTDataPlane::Endpoints::UpdateThingShadow.build(context)
73
+ end
74
+ end
75
+ end
76
+
77
+ def add_handlers(handlers, _config)
78
+ handlers.add(Handler, step: :build, priority: 75)
79
+ end
80
+ end
81
+ end
82
+ end
@@ -283,6 +283,12 @@ module Aws::IoTDataPlane
283
283
  # qos: 1,
284
284
  # retain: false,
285
285
  # payload: "data",
286
+ # user_properties: "UserProperties",
287
+ # payload_format_indicator: "UNSPECIFIED_BYTES", # accepts UNSPECIFIED_BYTES, UTF8_DATA
288
+ # content_type: "ContentType",
289
+ # response_topic: "ResponseTopic",
290
+ # correlation_data: "CorrelationData",
291
+ # message_expiry: 1,
286
292
  # }
287
293
  #
288
294
  # @!attribute [rw] topic
@@ -290,7 +296,7 @@ module Aws::IoTDataPlane
290
296
  # @return [String]
291
297
  #
292
298
  # @!attribute [rw] qos
293
- # The Quality of Service (QoS) level.
299
+ # The Quality of Service (QoS) level. The default QoS level is 0.
294
300
  # @return [Integer]
295
301
  #
296
302
  # @!attribute [rw] retain
@@ -314,11 +320,67 @@ module Aws::IoTDataPlane
314
320
  # Services IoT Core.
315
321
  # @return [String]
316
322
  #
323
+ # @!attribute [rw] user_properties
324
+ # A JSON string that contains an array of JSON objects. If you don’t
325
+ # use Amazon Web Services SDK or CLI, you must encode the JSON string
326
+ # to base64 format before adding it to the HTTP header.
327
+ # `userProperties` is an HTTP header value in the API.
328
+ #
329
+ # The following example `userProperties` parameter is a JSON string
330
+ # which represents two User Properties. Note that it needs to be
331
+ # base64-encoded:
332
+ #
333
+ # `[\{"deviceName": "alpha"\}, \{"deviceCnt": "45"\}]`
334
+ # @return [String]
335
+ #
336
+ # @!attribute [rw] payload_format_indicator
337
+ # An `Enum` string value that indicates whether the payload is
338
+ # formatted as UTF-8. `payloadFormatIndicator` is an HTTP header value
339
+ # in the API.
340
+ # @return [String]
341
+ #
342
+ # @!attribute [rw] content_type
343
+ # A UTF-8 encoded string that describes the content of the publishing
344
+ # message.
345
+ # @return [String]
346
+ #
347
+ # @!attribute [rw] response_topic
348
+ # A UTF-8 encoded string that's used as the topic name for a response
349
+ # message. The response topic is used to describe the topic which the
350
+ # receiver should publish to as part of the request-response flow. The
351
+ # topic must not contain wildcard characters.
352
+ # @return [String]
353
+ #
354
+ # @!attribute [rw] correlation_data
355
+ # The base64-encoded binary data used by the sender of the request
356
+ # message to identify which request the response message is for when
357
+ # it's received. `correlationData` is an HTTP header value in the
358
+ # API.
359
+ # @return [String]
360
+ #
361
+ # @!attribute [rw] message_expiry
362
+ # A user-defined integer value that represents the message expiry
363
+ # interval in seconds. If absent, the message doesn't expire. For
364
+ # more information about the limits of `messageExpiry`, see [Amazon
365
+ # Web Services IoT Core message broker and protocol limits and quotas
366
+ # ][1] from the Amazon Web Services Reference Guide.
367
+ #
368
+ #
369
+ #
370
+ # [1]: https://docs.aws.amazon.com/general/latest/gr/iot-core.html#message-broker-limits
371
+ # @return [Integer]
372
+ #
317
373
  class PublishRequest < Struct.new(
318
374
  :topic,
319
375
  :qos,
320
376
  :retain,
321
- :payload)
377
+ :payload,
378
+ :user_properties,
379
+ :payload_format_indicator,
380
+ :content_type,
381
+ :response_topic,
382
+ :correlation_data,
383
+ :message_expiry)
322
384
  SENSITIVE = []
323
385
  include Aws::Structure
324
386
  end
@@ -13,9 +13,13 @@ require 'aws-sigv4'
13
13
 
14
14
  require_relative 'aws-sdk-iotdataplane/types'
15
15
  require_relative 'aws-sdk-iotdataplane/client_api'
16
+ require_relative 'aws-sdk-iotdataplane/plugins/endpoints.rb'
16
17
  require_relative 'aws-sdk-iotdataplane/client'
17
18
  require_relative 'aws-sdk-iotdataplane/errors'
18
19
  require_relative 'aws-sdk-iotdataplane/resource'
20
+ require_relative 'aws-sdk-iotdataplane/endpoint_parameters'
21
+ require_relative 'aws-sdk-iotdataplane/endpoint_provider'
22
+ require_relative 'aws-sdk-iotdataplane/endpoints'
19
23
  require_relative 'aws-sdk-iotdataplane/customizations'
20
24
 
21
25
  # This module provides support for AWS IoT Data Plane. This module is available in the
@@ -48,6 +52,6 @@ require_relative 'aws-sdk-iotdataplane/customizations'
48
52
  # @!group service
49
53
  module Aws::IoTDataPlane
50
54
 
51
- GEM_VERSION = '1.39.0'
55
+ GEM_VERSION = '1.41.0'
52
56
 
53
57
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-sdk-iotdataplane
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.39.0
4
+ version: 1.41.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amazon Web Services
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-03-30 00:00:00.000000000 Z
11
+ date: 2022-11-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-core
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '3'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 3.127.0
22
+ version: 3.165.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: '3'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 3.127.0
32
+ version: 3.165.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: aws-sigv4
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -59,7 +59,11 @@ files:
59
59
  - lib/aws-sdk-iotdataplane/client.rb
60
60
  - lib/aws-sdk-iotdataplane/client_api.rb
61
61
  - lib/aws-sdk-iotdataplane/customizations.rb
62
+ - lib/aws-sdk-iotdataplane/endpoint_parameters.rb
63
+ - lib/aws-sdk-iotdataplane/endpoint_provider.rb
64
+ - lib/aws-sdk-iotdataplane/endpoints.rb
62
65
  - lib/aws-sdk-iotdataplane/errors.rb
66
+ - lib/aws-sdk-iotdataplane/plugins/endpoints.rb
63
67
  - lib/aws-sdk-iotdataplane/resource.rb
64
68
  - lib/aws-sdk-iotdataplane/types.rb
65
69
  homepage: https://github.com/aws/aws-sdk-ruby