aws-sdk-iotdataplane 1.91.0 → 1.92.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 47e9728f42c7e52f863954ceb4f0662dcfd43a82f8e631bcbb91c9f8b2fc0d24
4
- data.tar.gz: f264eee94251809c017d46d46977225d838738c57e4b2eb5345ea0dba21d9fae
3
+ metadata.gz: c4267d1c9e736a20f49d9d16fac35931cd09afba8d68530efcd2e7c1e1f45c75
4
+ data.tar.gz: 06ccfb5a222914173fafc64a49f0b8c4d56718bc686bcc1277959f1d775d2b31
5
5
  SHA512:
6
- metadata.gz: de4404639004f007193d5a3ab4eacb31e2a50e0701d5f23aa6705f04b8bf9ef23b540bb8fca0d052f17faaa48ea6add4f0fc6d4c95d9bd5fcf53068bb292a90a
7
- data.tar.gz: f6a803f28615d382e2b05d8e0966f60bbb2d4537947247914fea0e17a0f43658cf7435e30c789fa0099c10d2be86685b8a54e33a2e697b3c047f5662704ad385
6
+ metadata.gz: 2ed41095f33b8600fdbc23a0452fe803b47074417955a66a8deba5ad6c914f5e8e8b287a5846cdad3497a8539453b24551c7605eac7f657a49222079b30cf182
7
+ data.tar.gz: a4c4467c736d7fe6754665d946f45342eddaabdcfa689e7488b30e23436a260cb1500f2ede8fe8f9a5857e69051c1219d3a1623dfa5711f3d07124ee7f72a7be
data/CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.92.0 (2026-05-28)
5
+ ------------------
6
+
7
+ * Feature - Adding GetConnection, ListSubscriptions, and SendDirectMessage APIs to IoT Data Plane
8
+
4
9
  1.91.0 (2026-05-21)
5
10
  ------------------
6
11
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.91.0
1
+ 1.92.0
@@ -478,23 +478,38 @@ module Aws::IoTDataPlane
478
478
  # When you disconnect a client, Amazon Web Services IoT Core closes the
479
479
  # client's network connection and optionally cleans the session state.
480
480
  #
481
+ # Requires permission to access the [DeleteConnection][1] action.
482
+ #
483
+ #
484
+ #
485
+ # [1]: https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions
486
+ #
481
487
  # @option params [required, String] :client_id
482
488
  # The unique identifier of the MQTT client to disconnect. The client ID
483
489
  # can't start with a dollar sign ($).
484
490
  #
491
+ # MQTT client IDs must be URL encoded (percent-encoded) when they
492
+ # contain characters that are not valid in HTTP requests, such as
493
+ # spaces, forward slashes (/), and UTF-8 characters.
494
+ #
485
495
  # @option params [Boolean] :clean_session
486
- # Specifies whether to remove the client's session state when
487
- # disconnecting. Set to `TRUE` to delete all session information,
496
+ # Specifies whether to remove the client's persistent session state
497
+ # when disconnecting. Set to `TRUE` to delete all session information,
488
498
  # including subscriptions and queued messages. Set to `FALSE` to
489
- # preserve the session state. By default, this is set to `FALSE`
490
- # (preserves the session state).
499
+ # preserve the session state for [persistent sessions][1]. For clean
500
+ # sessions this parameter will be ignored. By default, this is set to
501
+ # `FALSE` (preserves the session state).
502
+ #
503
+ #
504
+ #
505
+ # [1]: https://docs.aws.amazon.com/iot/latest/developerguide/mqtt.html#mqtt-persistent-sessions
491
506
  #
492
507
  # @option params [Boolean] :prevent_will_message
493
508
  # Controls if Amazon Web Services IoT Core publishes the client's Last
494
509
  # Will and Testament (LWT) message upon disconnection. Set to `TRUE` to
495
- # prevent publishing the LWT message. Set to `FALSE` to allow
496
- # publishing. By default, this is set to `FALSE` (allows publishing the
497
- # LWT message).
510
+ # prevent publishing the LWT message. Set to `FALSE` to ensure that LWT
511
+ # is published. By default, this is set to `FALSE` (LWT message is
512
+ # published).
498
513
  #
499
514
  # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
500
515
  #
@@ -553,6 +568,81 @@ module Aws::IoTDataPlane
553
568
  req.send_request(options)
554
569
  end
555
570
 
571
+ # Retrieves connection information for the specified MQTT client.
572
+ #
573
+ # Requires permission to access the [GetConnection][1] action.
574
+ #
575
+ #
576
+ #
577
+ # [1]: https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions
578
+ #
579
+ # @option params [required, String] :client_id
580
+ # The unique identifier of the MQTT client to retrieve connection
581
+ # information. The client ID can't start with a dollar sign ($).
582
+ #
583
+ # MQTT client IDs must be URL encoded (percent-encoded) when they
584
+ # contain characters that are not valid in HTTP requests, such as
585
+ # spaces, forward slashes (/), and UTF-8 characters.
586
+ #
587
+ # @option params [Boolean] :include_socket_information
588
+ # Specifies if socket information (sourcePort, targetPort, sourceIp,
589
+ # targetIp) should be included in the GetConnection response. Set to
590
+ # `TRUE` to include socket information. Set to `FALSE` to omit socket
591
+ # information. By default, this is set to `FALSE`. See the [developer
592
+ # guide][1] for how to authorize this parameter.
593
+ #
594
+ #
595
+ #
596
+ # [1]: https://docs.aws.amazon.com/iot/latest/developerguide/mqtt.html#mqtt-client-disconnect
597
+ #
598
+ # @return [Types::GetConnectionResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
599
+ #
600
+ # * {Types::GetConnectionResponse#connected #connected} => Boolean
601
+ # * {Types::GetConnectionResponse#thing_name #thing_name} => String
602
+ # * {Types::GetConnectionResponse#clean_session #clean_session} => Boolean
603
+ # * {Types::GetConnectionResponse#source_ip #source_ip} => String
604
+ # * {Types::GetConnectionResponse#source_port #source_port} => Integer
605
+ # * {Types::GetConnectionResponse#target_ip #target_ip} => String
606
+ # * {Types::GetConnectionResponse#target_port #target_port} => Integer
607
+ # * {Types::GetConnectionResponse#keep_alive_duration #keep_alive_duration} => Integer
608
+ # * {Types::GetConnectionResponse#connected_since #connected_since} => Integer
609
+ # * {Types::GetConnectionResponse#disconnected_since #disconnected_since} => Integer
610
+ # * {Types::GetConnectionResponse#disconnect_reason #disconnect_reason} => String
611
+ # * {Types::GetConnectionResponse#session_expiry #session_expiry} => Integer
612
+ # * {Types::GetConnectionResponse#client_id #client_id} => String
613
+ # * {Types::GetConnectionResponse#vpc_endpoint_id #vpc_endpoint_id} => String
614
+ #
615
+ # @example Request syntax with placeholder values
616
+ #
617
+ # resp = client.get_connection({
618
+ # client_id: "ClientId", # required
619
+ # include_socket_information: false,
620
+ # })
621
+ #
622
+ # @example Response structure
623
+ #
624
+ # resp.connected #=> Boolean
625
+ # resp.thing_name #=> String
626
+ # resp.clean_session #=> Boolean
627
+ # resp.source_ip #=> String
628
+ # resp.source_port #=> Integer
629
+ # resp.target_ip #=> String
630
+ # resp.target_port #=> Integer
631
+ # resp.keep_alive_duration #=> Integer
632
+ # resp.connected_since #=> Integer
633
+ # resp.disconnected_since #=> Integer
634
+ # resp.disconnect_reason #=> String
635
+ # resp.session_expiry #=> Integer
636
+ # resp.client_id #=> String
637
+ # resp.vpc_endpoint_id #=> String
638
+ #
639
+ # @overload get_connection(params = {})
640
+ # @param [Hash] params ({})
641
+ def get_connection(params = {}, options = {})
642
+ req = build_request(:get_connection, params)
643
+ req.send_request(options)
644
+ end
645
+
556
646
  # Gets the details of a single retained message for the specified topic.
557
647
  #
558
648
  # This action returns the message payload of the retained message, which
@@ -747,6 +837,61 @@ module Aws::IoTDataPlane
747
837
  req.send_request(options)
748
838
  end
749
839
 
840
+ # Returns a list of all subscriptions for MQTT clients with active
841
+ # sessions, including offline clients with persistent sessions.
842
+ #
843
+ # Requires permission to access the [ListSubscriptions][1] action.
844
+ #
845
+ #
846
+ #
847
+ # [1]: https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions
848
+ #
849
+ # @option params [required, String] :client_id
850
+ # The unique identifier of the MQTT client to list subscriptions for.
851
+ # The client ID can't start with a dollar sign ($).
852
+ #
853
+ # MQTT client IDs must be URL encoded (percent-encoded) when they
854
+ # contain characters that are not valid in HTTP requests, such as
855
+ # spaces, forward slashes (/), and UTF-8 characters.
856
+ #
857
+ # @option params [String] :next_token
858
+ # To retrieve the next set of results, the `nextToken` value from a
859
+ # previous response; otherwise **null** to receive the first set of
860
+ # results.
861
+ #
862
+ # @option params [Integer] :max_results
863
+ # The maximum number of subscriptions to return in a single request. By
864
+ # default, this is set to 20.
865
+ #
866
+ # @return [Types::ListSubscriptionsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
867
+ #
868
+ # * {Types::ListSubscriptionsResponse#subscriptions #subscriptions} => Array<Types::SubscriptionSummary>
869
+ # * {Types::ListSubscriptionsResponse#next_token #next_token} => String
870
+ #
871
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
872
+ #
873
+ # @example Request syntax with placeholder values
874
+ #
875
+ # resp = client.list_subscriptions({
876
+ # client_id: "ClientId", # required
877
+ # next_token: "NextToken",
878
+ # max_results: 1,
879
+ # })
880
+ #
881
+ # @example Response structure
882
+ #
883
+ # resp.subscriptions #=> Array
884
+ # resp.subscriptions[0].topic_filter #=> String
885
+ # resp.subscriptions[0].qos #=> Integer
886
+ # resp.next_token #=> String
887
+ #
888
+ # @overload list_subscriptions(params = {})
889
+ # @param [Hash] params ({})
890
+ def list_subscriptions(params = {}, options = {})
891
+ req = build_request(:list_subscriptions, params)
892
+ req.send_request(options)
893
+ end
894
+
750
895
  # Publishes an MQTT message.
751
896
  #
752
897
  # Requires permission to access the [Publish][1] action.
@@ -858,6 +1003,156 @@ module Aws::IoTDataPlane
858
1003
  req.send_request(options)
859
1004
  end
860
1005
 
1006
+ # Sends an MQTT message directly to a specific client identified by its
1007
+ # client ID.
1008
+ #
1009
+ # `SendDirectMessage` targets a single client ID. The receiving client
1010
+ # does not need to subscribe to the topic, but the receiver's policy
1011
+ # must allow `iot:Receive` on the specified topic.
1012
+ #
1013
+ # Requires permission to access the [SendDirectMessage][1] action.
1014
+ #
1015
+ # For more information about messaging costs, see [Amazon Web Services
1016
+ # IoT Core pricing][2].
1017
+ #
1018
+ #
1019
+ #
1020
+ # [1]: https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions
1021
+ # [2]: http://aws.amazon.com/iot-core/pricing/
1022
+ #
1023
+ # @option params [required, String] :client_id
1024
+ # The unique identifier of the MQTT client to send the message to.
1025
+ #
1026
+ # Client IDs must not exceed 128 characters and can't start with a
1027
+ # dollar sign ($). MQTT client IDs must be URL encoded (percent-encoded)
1028
+ # when they contain characters that are not valid in HTTP requests, such
1029
+ # as spaces, forward slashes (/), and UTF-8 characters. For more
1030
+ # information, see [Amazon Web Services IoT Core message broker and
1031
+ # protocol limits and quotas][1].
1032
+ #
1033
+ #
1034
+ #
1035
+ # [1]: https://docs.aws.amazon.com/general/latest/gr/iot-core.html#message-broker-limits
1036
+ #
1037
+ # @option params [required, String] :topic
1038
+ # The topic of the outbound MQTT Publish message to the receiving
1039
+ # client. For more information, see [Amazon Web Services IoT Core
1040
+ # message broker and protocol limits and quotas][1].
1041
+ #
1042
+ #
1043
+ #
1044
+ # [1]: https://docs.aws.amazon.com/general/latest/gr/iot-core.html#message-broker-limits
1045
+ #
1046
+ # @option params [String] :content_type
1047
+ # The MQTT5 content type property forwarded to the receiving client (for
1048
+ # example, `application/json`).
1049
+ #
1050
+ # @option params [String] :response_topic
1051
+ # A UTF-8 encoded string that's used as the topic name for a response
1052
+ # message. The response topic describes the topic which the receiver
1053
+ # should publish to as part of the request-response flow. The topic must
1054
+ # not contain wildcard characters. For more information, see [Amazon Web
1055
+ # Services IoT Core message broker and protocol limits and quotas][1].
1056
+ #
1057
+ #
1058
+ #
1059
+ # [1]: https://docs.aws.amazon.com/general/latest/gr/iot-core.html#message-broker-limits
1060
+ #
1061
+ # @option params [Boolean] :confirmation
1062
+ # A Boolean value that specifies whether to wait for delivery
1063
+ # confirmation from the receiving client.
1064
+ #
1065
+ # When set to `true`, the API delivers the message at QoS 1 and waits
1066
+ # for the client to send a delivery confirmation (PUBACK) before
1067
+ # returning a successful response. If delivery confirmation is not
1068
+ # received within the specified `timeout` period, the API returns HTTP
1069
+ # 504.
1070
+ #
1071
+ # When set to `false`, the API delivers the message at QoS 0 and returns
1072
+ # after Amazon Web Services IoT Core attempts to deliver the message.
1073
+ #
1074
+ # Valid values: `true` \| `false`
1075
+ #
1076
+ # Default value: `false`
1077
+ #
1078
+ # @option params [Integer] :timeout
1079
+ # An integer that represents the maximum time, in seconds, to wait for a
1080
+ # delivery confirmation (PUBACK) from the receiving client after the
1081
+ # message has been delivered. This parameter is only used when
1082
+ # `confirmation` is set to `true`. If `confirmation` is `false`, this
1083
+ # parameter is ignored.
1084
+ #
1085
+ # The total API response time may be higher than this value due to
1086
+ # internal processing. Set your HTTP client timeout to a value greater
1087
+ # than this parameter.
1088
+ #
1089
+ # Valid range: 1 to 15 seconds.
1090
+ #
1091
+ # Default value: `5` seconds.
1092
+ #
1093
+ # @option params [String, StringIO, File] :payload
1094
+ # The message body. MQTT accepts text, binary, and empty (null) message
1095
+ # payloads.
1096
+ #
1097
+ # @option params [String] :user_properties
1098
+ # A JSON string that contains an array of JSON objects. If you don't
1099
+ # use Amazon Web Services SDK or CLI, you must encode the JSON string to
1100
+ # base64 format before adding it to the HTTP header. `userProperties` is
1101
+ # an HTTP header value in the API.
1102
+ #
1103
+ # For MQTT 3.1.1 clients, user properties are silently dropped.
1104
+ #
1105
+ # The following example `userProperties` parameter is a JSON string
1106
+ # which represents two User Properties. Note that it needs to be
1107
+ # base64-encoded:
1108
+ #
1109
+ # `[{"deviceName": "alpha"}, {"deviceCnt": "45"}]`
1110
+ #
1111
+ # **SDK automatically handles json encoding and base64 encoding for you
1112
+ # when the required value (Hash, Array, etc.) is provided according to
1113
+ # the description.**
1114
+ #
1115
+ # @option params [String] :payload_format_indicator
1116
+ # An `Enum` string value that indicates whether the payload is formatted
1117
+ # as UTF-8. `payloadFormatIndicator` is an HTTP header value in the API.
1118
+ #
1119
+ # @option params [String] :correlation_data
1120
+ # The base64-encoded binary data used by the sender of the request
1121
+ # message to identify which request the response message is for when
1122
+ # it's received. `correlationData` is an HTTP header value in the API.
1123
+ #
1124
+ # @return [Types::SendDirectMessageResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1125
+ #
1126
+ # * {Types::SendDirectMessageResponse#message #message} => String
1127
+ # * {Types::SendDirectMessageResponse#trace_id #trace_id} => String
1128
+ #
1129
+ # @example Request syntax with placeholder values
1130
+ #
1131
+ # resp = client.send_direct_message({
1132
+ # client_id: "ClientId", # required
1133
+ # topic: "Topic", # required
1134
+ # content_type: "ContentType",
1135
+ # response_topic: "ResponseTopic",
1136
+ # confirmation: false,
1137
+ # timeout: 1,
1138
+ # payload: "data",
1139
+ # user_properties: "UserProperties",
1140
+ # payload_format_indicator: "UNSPECIFIED_BYTES", # accepts UNSPECIFIED_BYTES, UTF8_DATA
1141
+ # correlation_data: "CorrelationData",
1142
+ # })
1143
+ #
1144
+ # @example Response structure
1145
+ #
1146
+ # resp.message #=> String
1147
+ # resp.trace_id #=> String
1148
+ #
1149
+ # @overload send_direct_message(params = {})
1150
+ # @param [Hash] params ({})
1151
+ def send_direct_message(params = {}, options = {})
1152
+ req = build_request(:send_direct_message, params)
1153
+ req.send_request(options)
1154
+ end
1155
+
861
1156
  # Updates the shadow for the specified thing.
862
1157
  #
863
1158
  # Requires permission to access the [UpdateThingShadow][1] action.
@@ -920,7 +1215,7 @@ module Aws::IoTDataPlane
920
1215
  tracer: tracer
921
1216
  )
922
1217
  context[:gem_name] = 'aws-sdk-iotdataplane'
923
- context[:gem_version] = '1.91.0'
1218
+ context[:gem_version] = '1.92.0'
924
1219
  Seahorse::Client::Request.new(handlers, context)
925
1220
  end
926
1221
 
@@ -16,24 +16,34 @@ module Aws::IoTDataPlane
16
16
 
17
17
  CleanSession = Shapes::BooleanShape.new(name: 'CleanSession')
18
18
  ClientId = Shapes::StringShape.new(name: 'ClientId')
19
+ Confirmation = Shapes::BooleanShape.new(name: 'Confirmation')
19
20
  ConflictException = Shapes::StructureShape.new(name: 'ConflictException')
21
+ Connected = Shapes::BooleanShape.new(name: 'Connected')
20
22
  ContentType = Shapes::StringShape.new(name: 'ContentType')
21
23
  CorrelationData = Shapes::StringShape.new(name: 'CorrelationData')
22
24
  DeleteConnectionRequest = Shapes::StructureShape.new(name: 'DeleteConnectionRequest')
23
25
  DeleteThingShadowRequest = Shapes::StructureShape.new(name: 'DeleteThingShadowRequest')
24
26
  DeleteThingShadowResponse = Shapes::StructureShape.new(name: 'DeleteThingShadowResponse')
27
+ DisconnectReason = Shapes::StringShape.new(name: 'DisconnectReason')
25
28
  ForbiddenException = Shapes::StructureShape.new(name: 'ForbiddenException')
29
+ GatewayTimeoutException = Shapes::StructureShape.new(name: 'GatewayTimeoutException')
30
+ GetConnectionRequest = Shapes::StructureShape.new(name: 'GetConnectionRequest')
31
+ GetConnectionResponse = Shapes::StructureShape.new(name: 'GetConnectionResponse')
26
32
  GetRetainedMessageRequest = Shapes::StructureShape.new(name: 'GetRetainedMessageRequest')
27
33
  GetRetainedMessageResponse = Shapes::StructureShape.new(name: 'GetRetainedMessageResponse')
28
34
  GetThingShadowRequest = Shapes::StructureShape.new(name: 'GetThingShadowRequest')
29
35
  GetThingShadowResponse = Shapes::StructureShape.new(name: 'GetThingShadowResponse')
36
+ IncludeSocketInformation = Shapes::BooleanShape.new(name: 'IncludeSocketInformation')
30
37
  InternalFailureException = Shapes::StructureShape.new(name: 'InternalFailureException')
31
38
  InvalidRequestException = Shapes::StructureShape.new(name: 'InvalidRequestException')
32
39
  JsonDocument = Shapes::BlobShape.new(name: 'JsonDocument')
40
+ KeepAliveDuration = Shapes::IntegerShape.new(name: 'KeepAliveDuration')
33
41
  ListNamedShadowsForThingRequest = Shapes::StructureShape.new(name: 'ListNamedShadowsForThingRequest')
34
42
  ListNamedShadowsForThingResponse = Shapes::StructureShape.new(name: 'ListNamedShadowsForThingResponse')
35
43
  ListRetainedMessagesRequest = Shapes::StructureShape.new(name: 'ListRetainedMessagesRequest')
36
44
  ListRetainedMessagesResponse = Shapes::StructureShape.new(name: 'ListRetainedMessagesResponse')
45
+ ListSubscriptionsRequest = Shapes::StructureShape.new(name: 'ListSubscriptionsRequest')
46
+ ListSubscriptionsResponse = Shapes::StructureShape.new(name: 'ListSubscriptionsResponse')
37
47
  MaxResults = Shapes::IntegerShape.new(name: 'MaxResults')
38
48
  MessageExpiry = Shapes::IntegerShape.new(name: 'MessageExpiry')
39
49
  MethodNotAllowedException = Shapes::StructureShape.new(name: 'MethodNotAllowedException')
@@ -48,22 +58,36 @@ module Aws::IoTDataPlane
48
58
  Qos = Shapes::IntegerShape.new(name: 'Qos')
49
59
  RequestEntityTooLargeException = Shapes::StructureShape.new(name: 'RequestEntityTooLargeException')
50
60
  ResourceNotFoundException = Shapes::StructureShape.new(name: 'ResourceNotFoundException')
61
+ ResponseMessage = Shapes::StringShape.new(name: 'ResponseMessage')
51
62
  ResponseTopic = Shapes::StringShape.new(name: 'ResponseTopic')
52
63
  Retain = Shapes::BooleanShape.new(name: 'Retain')
53
64
  RetainedMessageList = Shapes::ListShape.new(name: 'RetainedMessageList')
54
65
  RetainedMessageSummary = Shapes::StructureShape.new(name: 'RetainedMessageSummary')
66
+ SendDirectMessageRequest = Shapes::StructureShape.new(name: 'SendDirectMessageRequest')
67
+ SendDirectMessageResponse = Shapes::StructureShape.new(name: 'SendDirectMessageResponse')
55
68
  ServiceUnavailableException = Shapes::StructureShape.new(name: 'ServiceUnavailableException')
69
+ SessionExpiry = Shapes::IntegerShape.new(name: 'SessionExpiry')
56
70
  ShadowName = Shapes::StringShape.new(name: 'ShadowName')
71
+ SourceIp = Shapes::StringShape.new(name: 'SourceIp')
72
+ SourcePort = Shapes::IntegerShape.new(name: 'SourcePort')
73
+ SubscriptionList = Shapes::ListShape.new(name: 'SubscriptionList')
74
+ SubscriptionSummary = Shapes::StructureShape.new(name: 'SubscriptionSummary')
75
+ TargetIp = Shapes::StringShape.new(name: 'TargetIp')
76
+ TargetPort = Shapes::IntegerShape.new(name: 'TargetPort')
57
77
  ThingName = Shapes::StringShape.new(name: 'ThingName')
58
78
  ThrottlingException = Shapes::StructureShape.new(name: 'ThrottlingException')
79
+ TimeoutInSeconds = Shapes::IntegerShape.new(name: 'TimeoutInSeconds')
59
80
  Timestamp = Shapes::IntegerShape.new(name: 'Timestamp')
60
81
  Topic = Shapes::StringShape.new(name: 'Topic')
82
+ TopicFilter = Shapes::StringShape.new(name: 'TopicFilter')
83
+ TraceId = Shapes::StringShape.new(name: 'TraceId')
61
84
  UnauthorizedException = Shapes::StructureShape.new(name: 'UnauthorizedException')
62
85
  UnsupportedDocumentEncodingException = Shapes::StructureShape.new(name: 'UnsupportedDocumentEncodingException')
63
86
  UpdateThingShadowRequest = Shapes::StructureShape.new(name: 'UpdateThingShadowRequest')
64
87
  UpdateThingShadowResponse = Shapes::StructureShape.new(name: 'UpdateThingShadowResponse')
65
88
  UserProperties = Shapes::StringShape.new(name: 'UserProperties')
66
89
  UserPropertiesBlob = Shapes::BlobShape.new(name: 'UserPropertiesBlob')
90
+ VpcEndpointId = Shapes::StringShape.new(name: 'VpcEndpointId')
67
91
  errorMessage = Shapes::StringShape.new(name: 'errorMessage')
68
92
 
69
93
  ConflictException.add_member(:message, Shapes::ShapeRef.new(shape: errorMessage, location_name: "message"))
@@ -86,6 +110,29 @@ module Aws::IoTDataPlane
86
110
  ForbiddenException.add_member(:message, Shapes::ShapeRef.new(shape: errorMessage, location_name: "message"))
87
111
  ForbiddenException.struct_class = Types::ForbiddenException
88
112
 
113
+ GatewayTimeoutException.add_member(:message, Shapes::ShapeRef.new(shape: errorMessage, location_name: "message"))
114
+ GatewayTimeoutException.struct_class = Types::GatewayTimeoutException
115
+
116
+ GetConnectionRequest.add_member(:client_id, Shapes::ShapeRef.new(shape: ClientId, required: true, location: "uri", location_name: "clientId"))
117
+ GetConnectionRequest.add_member(:include_socket_information, Shapes::ShapeRef.new(shape: IncludeSocketInformation, location: "querystring", location_name: "includeSocketInformation"))
118
+ GetConnectionRequest.struct_class = Types::GetConnectionRequest
119
+
120
+ GetConnectionResponse.add_member(:connected, Shapes::ShapeRef.new(shape: Connected, location_name: "connected"))
121
+ GetConnectionResponse.add_member(:thing_name, Shapes::ShapeRef.new(shape: ThingName, location_name: "thingName"))
122
+ GetConnectionResponse.add_member(:clean_session, Shapes::ShapeRef.new(shape: CleanSession, location_name: "cleanSession"))
123
+ GetConnectionResponse.add_member(:source_ip, Shapes::ShapeRef.new(shape: SourceIp, location_name: "sourceIp"))
124
+ GetConnectionResponse.add_member(:source_port, Shapes::ShapeRef.new(shape: SourcePort, location_name: "sourcePort"))
125
+ GetConnectionResponse.add_member(:target_ip, Shapes::ShapeRef.new(shape: TargetIp, location_name: "targetIp"))
126
+ GetConnectionResponse.add_member(:target_port, Shapes::ShapeRef.new(shape: TargetPort, location_name: "targetPort"))
127
+ GetConnectionResponse.add_member(:keep_alive_duration, Shapes::ShapeRef.new(shape: KeepAliveDuration, location_name: "keepAliveDuration"))
128
+ GetConnectionResponse.add_member(:connected_since, Shapes::ShapeRef.new(shape: Timestamp, location_name: "connectedSince"))
129
+ GetConnectionResponse.add_member(:disconnected_since, Shapes::ShapeRef.new(shape: Timestamp, location_name: "disconnectedSince"))
130
+ GetConnectionResponse.add_member(:disconnect_reason, Shapes::ShapeRef.new(shape: DisconnectReason, location_name: "disconnectReason"))
131
+ GetConnectionResponse.add_member(:session_expiry, Shapes::ShapeRef.new(shape: SessionExpiry, location_name: "sessionExpiry"))
132
+ GetConnectionResponse.add_member(:client_id, Shapes::ShapeRef.new(shape: ClientId, location_name: "clientId"))
133
+ GetConnectionResponse.add_member(:vpc_endpoint_id, Shapes::ShapeRef.new(shape: VpcEndpointId, location_name: "vpcEndpointId"))
134
+ GetConnectionResponse.struct_class = Types::GetConnectionResponse
135
+
89
136
  GetRetainedMessageRequest.add_member(:topic, Shapes::ShapeRef.new(shape: Topic, required: true, location: "uri", location_name: "topic"))
90
137
  GetRetainedMessageRequest.struct_class = Types::GetRetainedMessageRequest
91
138
 
@@ -129,6 +176,15 @@ module Aws::IoTDataPlane
129
176
  ListRetainedMessagesResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "nextToken"))
130
177
  ListRetainedMessagesResponse.struct_class = Types::ListRetainedMessagesResponse
131
178
 
179
+ ListSubscriptionsRequest.add_member(:client_id, Shapes::ShapeRef.new(shape: ClientId, required: true, location: "uri", location_name: "clientId"))
180
+ ListSubscriptionsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location: "querystring", location_name: "nextToken"))
181
+ ListSubscriptionsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location: "querystring", location_name: "maxResults"))
182
+ ListSubscriptionsRequest.struct_class = Types::ListSubscriptionsRequest
183
+
184
+ ListSubscriptionsResponse.add_member(:subscriptions, Shapes::ShapeRef.new(shape: SubscriptionList, location_name: "subscriptions"))
185
+ ListSubscriptionsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "nextToken"))
186
+ ListSubscriptionsResponse.struct_class = Types::ListSubscriptionsResponse
187
+
132
188
  MethodNotAllowedException.add_member(:message, Shapes::ShapeRef.new(shape: errorMessage, location_name: "message"))
133
189
  MethodNotAllowedException.struct_class = Types::MethodNotAllowedException
134
190
 
@@ -162,9 +218,33 @@ module Aws::IoTDataPlane
162
218
  RetainedMessageSummary.add_member(:last_modified_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "lastModifiedTime"))
163
219
  RetainedMessageSummary.struct_class = Types::RetainedMessageSummary
164
220
 
221
+ SendDirectMessageRequest.add_member(:client_id, Shapes::ShapeRef.new(shape: ClientId, required: true, location: "uri", location_name: "clientId"))
222
+ SendDirectMessageRequest.add_member(:topic, Shapes::ShapeRef.new(shape: Topic, required: true, location: "querystring", location_name: "topic"))
223
+ SendDirectMessageRequest.add_member(:content_type, Shapes::ShapeRef.new(shape: ContentType, location: "querystring", location_name: "contentType"))
224
+ SendDirectMessageRequest.add_member(:response_topic, Shapes::ShapeRef.new(shape: ResponseTopic, location: "querystring", location_name: "responseTopic"))
225
+ SendDirectMessageRequest.add_member(:confirmation, Shapes::ShapeRef.new(shape: Confirmation, location: "querystring", location_name: "confirmation"))
226
+ SendDirectMessageRequest.add_member(:timeout, Shapes::ShapeRef.new(shape: TimeoutInSeconds, location: "querystring", location_name: "timeout"))
227
+ SendDirectMessageRequest.add_member(:payload, Shapes::ShapeRef.new(shape: Payload, location_name: "payload"))
228
+ SendDirectMessageRequest.add_member(:user_properties, Shapes::ShapeRef.new(shape: UserProperties, location: "header", location_name: "x-amz-mqtt5-user-properties", metadata: {"jsonvalue" => true}))
229
+ SendDirectMessageRequest.add_member(:payload_format_indicator, Shapes::ShapeRef.new(shape: PayloadFormatIndicator, location: "header", location_name: "x-amz-mqtt5-payload-format-indicator"))
230
+ SendDirectMessageRequest.add_member(:correlation_data, Shapes::ShapeRef.new(shape: CorrelationData, location: "header", location_name: "x-amz-mqtt5-correlation-data"))
231
+ SendDirectMessageRequest.struct_class = Types::SendDirectMessageRequest
232
+ SendDirectMessageRequest[:payload] = :payload
233
+ SendDirectMessageRequest[:payload_member] = SendDirectMessageRequest.member(:payload)
234
+
235
+ SendDirectMessageResponse.add_member(:message, Shapes::ShapeRef.new(shape: ResponseMessage, location_name: "message"))
236
+ SendDirectMessageResponse.add_member(:trace_id, Shapes::ShapeRef.new(shape: TraceId, location_name: "traceId"))
237
+ SendDirectMessageResponse.struct_class = Types::SendDirectMessageResponse
238
+
165
239
  ServiceUnavailableException.add_member(:message, Shapes::ShapeRef.new(shape: errorMessage, location_name: "message"))
166
240
  ServiceUnavailableException.struct_class = Types::ServiceUnavailableException
167
241
 
242
+ SubscriptionList.member = Shapes::ShapeRef.new(shape: SubscriptionSummary)
243
+
244
+ SubscriptionSummary.add_member(:topic_filter, Shapes::ShapeRef.new(shape: TopicFilter, required: true, location_name: "topicFilter"))
245
+ SubscriptionSummary.add_member(:qos, Shapes::ShapeRef.new(shape: Qos, required: true, location_name: "qos"))
246
+ SubscriptionSummary.struct_class = Types::SubscriptionSummary
247
+
168
248
  ThrottlingException.add_member(:message, Shapes::ShapeRef.new(shape: errorMessage, location_name: "message"))
169
249
  ThrottlingException.struct_class = Types::ThrottlingException
170
250
 
@@ -234,6 +314,19 @@ module Aws::IoTDataPlane
234
314
  o.errors << Shapes::ShapeRef.new(shape: UnsupportedDocumentEncodingException)
235
315
  end)
236
316
 
317
+ api.add_operation(:get_connection, Seahorse::Model::Operation.new.tap do |o|
318
+ o.name = "GetConnection"
319
+ o.http_method = "GET"
320
+ o.http_request_uri = "/connections/{clientId}"
321
+ o.input = Shapes::ShapeRef.new(shape: GetConnectionRequest)
322
+ o.output = Shapes::ShapeRef.new(shape: GetConnectionResponse)
323
+ o.errors << Shapes::ShapeRef.new(shape: InvalidRequestException)
324
+ o.errors << Shapes::ShapeRef.new(shape: ForbiddenException)
325
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
326
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
327
+ o.errors << Shapes::ShapeRef.new(shape: InternalFailureException)
328
+ end)
329
+
237
330
  api.add_operation(:get_retained_message, Seahorse::Model::Operation.new.tap do |o|
238
331
  o.name = "GetRetainedMessage"
239
332
  o.http_method = "GET"
@@ -300,6 +393,25 @@ module Aws::IoTDataPlane
300
393
  )
301
394
  end)
302
395
 
396
+ api.add_operation(:list_subscriptions, Seahorse::Model::Operation.new.tap do |o|
397
+ o.name = "ListSubscriptions"
398
+ o.http_method = "GET"
399
+ o.http_request_uri = "/connections/{clientId}/subscriptions"
400
+ o.input = Shapes::ShapeRef.new(shape: ListSubscriptionsRequest)
401
+ o.output = Shapes::ShapeRef.new(shape: ListSubscriptionsResponse)
402
+ o.errors << Shapes::ShapeRef.new(shape: InvalidRequestException)
403
+ o.errors << Shapes::ShapeRef.new(shape: ForbiddenException)
404
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
405
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
406
+ o.errors << Shapes::ShapeRef.new(shape: InternalFailureException)
407
+ o[:pager] = Aws::Pager.new(
408
+ limit_key: "max_results",
409
+ tokens: {
410
+ "next_token" => "next_token"
411
+ }
412
+ )
413
+ end)
414
+
303
415
  api.add_operation(:publish, Seahorse::Model::Operation.new.tap do |o|
304
416
  o.name = "Publish"
305
417
  o.http_method = "POST"
@@ -313,6 +425,22 @@ module Aws::IoTDataPlane
313
425
  o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
314
426
  end)
315
427
 
428
+ api.add_operation(:send_direct_message, Seahorse::Model::Operation.new.tap do |o|
429
+ o.name = "SendDirectMessage"
430
+ o.http_method = "POST"
431
+ o.http_request_uri = "/connections/{clientId}/messages"
432
+ o.input = Shapes::ShapeRef.new(shape: SendDirectMessageRequest)
433
+ o.output = Shapes::ShapeRef.new(shape: SendDirectMessageResponse)
434
+ o.errors << Shapes::ShapeRef.new(shape: InternalFailureException)
435
+ o.errors << Shapes::ShapeRef.new(shape: InvalidRequestException)
436
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
437
+ o.errors << Shapes::ShapeRef.new(shape: UnauthorizedException)
438
+ o.errors << Shapes::ShapeRef.new(shape: ForbiddenException)
439
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
440
+ o.errors << Shapes::ShapeRef.new(shape: RequestEntityTooLargeException)
441
+ o.errors << Shapes::ShapeRef.new(shape: GatewayTimeoutException)
442
+ end)
443
+
316
444
  api.add_operation(:update_thing_shadow, Seahorse::Model::Operation.new.tap do |o|
317
445
  o.name = "UpdateThingShadow"
318
446
  o.http_method = "POST"
@@ -29,6 +29,7 @@ module Aws::IoTDataPlane
29
29
  # ## Error Classes
30
30
  # * {ConflictException}
31
31
  # * {ForbiddenException}
32
+ # * {GatewayTimeoutException}
32
33
  # * {InternalFailureException}
33
34
  # * {InvalidRequestException}
34
35
  # * {MethodNotAllowedException}
@@ -75,6 +76,21 @@ module Aws::IoTDataPlane
75
76
  end
76
77
  end
77
78
 
79
+ class GatewayTimeoutException < ServiceError
80
+
81
+ # @param [Seahorse::Client::RequestContext] context
82
+ # @param [String] message
83
+ # @param [Aws::IoTDataPlane::Types::GatewayTimeoutException] data
84
+ def initialize(context, message, data = Aws::EmptyStructure.new)
85
+ super(context, message, data)
86
+ end
87
+
88
+ # @return [String]
89
+ def message
90
+ @message || @data[:message]
91
+ end
92
+ end
93
+
78
94
  class InternalFailureException < ServiceError
79
95
 
80
96
  # @param [Seahorse::Client::RequestContext] context
@@ -25,22 +25,31 @@ module Aws::IoTDataPlane
25
25
  # @!attribute [rw] client_id
26
26
  # The unique identifier of the MQTT client to disconnect. The client
27
27
  # ID can't start with a dollar sign ($).
28
+ #
29
+ # MQTT client IDs must be URL encoded (percent-encoded) when they
30
+ # contain characters that are not valid in HTTP requests, such as
31
+ # spaces, forward slashes (/), and UTF-8 characters.
28
32
  # @return [String]
29
33
  #
30
34
  # @!attribute [rw] clean_session
31
- # Specifies whether to remove the client's session state when
32
- # disconnecting. Set to `TRUE` to delete all session information,
35
+ # Specifies whether to remove the client's persistent session state
36
+ # when disconnecting. Set to `TRUE` to delete all session information,
33
37
  # including subscriptions and queued messages. Set to `FALSE` to
34
- # preserve the session state. By default, this is set to `FALSE`
35
- # (preserves the session state).
38
+ # preserve the session state for [persistent sessions][1]. For clean
39
+ # sessions this parameter will be ignored. By default, this is set to
40
+ # `FALSE` (preserves the session state).
41
+ #
42
+ #
43
+ #
44
+ # [1]: https://docs.aws.amazon.com/iot/latest/developerguide/mqtt.html#mqtt-persistent-sessions
36
45
  # @return [Boolean]
37
46
  #
38
47
  # @!attribute [rw] prevent_will_message
39
48
  # Controls if Amazon Web Services IoT Core publishes the client's
40
49
  # Last Will and Testament (LWT) message upon disconnection. Set to
41
50
  # `TRUE` to prevent publishing the LWT message. Set to `FALSE` to
42
- # allow publishing. By default, this is set to `FALSE` (allows
43
- # publishing the LWT message).
51
+ # ensure that LWT is published. By default, this is set to `FALSE`
52
+ # (LWT message is published).
44
53
  # @return [Boolean]
45
54
  #
46
55
  class DeleteConnectionRequest < Struct.new(
@@ -91,6 +100,147 @@ module Aws::IoTDataPlane
91
100
  include Aws::Structure
92
101
  end
93
102
 
103
+ # The delivery confirmation was not received from the client within the
104
+ # specified timeout period.
105
+ #
106
+ # @!attribute [rw] message
107
+ # The message for the exception.
108
+ # @return [String]
109
+ #
110
+ class GatewayTimeoutException < Struct.new(
111
+ :message)
112
+ SENSITIVE = []
113
+ include Aws::Structure
114
+ end
115
+
116
+ # @!attribute [rw] client_id
117
+ # The unique identifier of the MQTT client to retrieve connection
118
+ # information. The client ID can't start with a dollar sign ($).
119
+ #
120
+ # MQTT client IDs must be URL encoded (percent-encoded) when they
121
+ # contain characters that are not valid in HTTP requests, such as
122
+ # spaces, forward slashes (/), and UTF-8 characters.
123
+ # @return [String]
124
+ #
125
+ # @!attribute [rw] include_socket_information
126
+ # Specifies if socket information (sourcePort, targetPort, sourceIp,
127
+ # targetIp) should be included in the GetConnection response. Set to
128
+ # `TRUE` to include socket information. Set to `FALSE` to omit socket
129
+ # information. By default, this is set to `FALSE`. See the [developer
130
+ # guide][1] for how to authorize this parameter.
131
+ #
132
+ #
133
+ #
134
+ # [1]: https://docs.aws.amazon.com/iot/latest/developerguide/mqtt.html#mqtt-client-disconnect
135
+ # @return [Boolean]
136
+ #
137
+ class GetConnectionRequest < Struct.new(
138
+ :client_id,
139
+ :include_socket_information)
140
+ SENSITIVE = []
141
+ include Aws::Structure
142
+ end
143
+
144
+ # @!attribute [rw] connected
145
+ # The connection state of the client. Returns `true` if the client is
146
+ # currently connected, or `false` if the client is not connected.
147
+ # @return [Boolean]
148
+ #
149
+ # @!attribute [rw] thing_name
150
+ # The name of the thing associated with the principal of the MQTT
151
+ # client, if applicable.
152
+ # @return [String]
153
+ #
154
+ # @!attribute [rw] clean_session
155
+ # Indicates whether the client is using a clean session. Returns
156
+ # `true` for clean sessions or `false` for persistent sessions.
157
+ # @return [Boolean]
158
+ #
159
+ # @!attribute [rw] source_ip
160
+ # The IP address of the client that initiated the connection.
161
+ # @return [String]
162
+ #
163
+ # @!attribute [rw] source_port
164
+ # The client's source port.
165
+ # @return [Integer]
166
+ #
167
+ # @!attribute [rw] target_ip
168
+ # The IP address of the Amazon Web Services IoT Core endpoint that the
169
+ # client connected to. For clients connected to VPC endpoints, this is
170
+ # the private IP address of the network interface the client is
171
+ # connected to.
172
+ # @return [String]
173
+ #
174
+ # @!attribute [rw] target_port
175
+ # The port number of the Amazon Web Services IoT Core endpoint that
176
+ # the client connected to.
177
+ # @return [Integer]
178
+ #
179
+ # @!attribute [rw] keep_alive_duration
180
+ # The keep-alive interval in seconds that the client specified when
181
+ # establishing the connection.
182
+ # @return [Integer]
183
+ #
184
+ # @!attribute [rw] connected_since
185
+ # Unix timestamp (in milliseconds) indicating when the client
186
+ # connected. Present only when connected is true.
187
+ # @return [Integer]
188
+ #
189
+ # @!attribute [rw] disconnected_since
190
+ # Unix timestamp (in milliseconds) indicating when the client
191
+ # disconnected. Present only when connected is false. This information
192
+ # is available for 30 minutes after the client disconnects.
193
+ # @return [Integer]
194
+ #
195
+ # @!attribute [rw] disconnect_reason
196
+ # The reason for the last disconnection, if the client is currently
197
+ # disconnected. See the [developer guide][1] for valid disconnect
198
+ # reasons.
199
+ #
200
+ #
201
+ #
202
+ # [1]: https://docs.aws.amazon.com/iot/latest/developerguide/life-cycle-events.html#connect-disconnect
203
+ # @return [String]
204
+ #
205
+ # @!attribute [rw] session_expiry
206
+ # The session expiry interval in seconds for the MQTT client
207
+ # connection. This is configured by the user. This value indicates how
208
+ # long the session will remain active after the client disconnects.
209
+ # @return [Integer]
210
+ #
211
+ # @!attribute [rw] client_id
212
+ # The unique identifier of the MQTT client. This is the same client ID
213
+ # that was used when the client established the connection.
214
+ # @return [String]
215
+ #
216
+ # @!attribute [rw] vpc_endpoint_id
217
+ # The ID of the VPC endpoint. Present for clients connected to IoT
218
+ # Core via a [VPC endpoint][1].
219
+ #
220
+ #
221
+ #
222
+ # [1]: https://docs.aws.amazon.com/iot/latest/developerguide/IoTCore-VPC.html
223
+ # @return [String]
224
+ #
225
+ class GetConnectionResponse < Struct.new(
226
+ :connected,
227
+ :thing_name,
228
+ :clean_session,
229
+ :source_ip,
230
+ :source_port,
231
+ :target_ip,
232
+ :target_port,
233
+ :keep_alive_duration,
234
+ :connected_since,
235
+ :disconnected_since,
236
+ :disconnect_reason,
237
+ :session_expiry,
238
+ :client_id,
239
+ :vpc_endpoint_id)
240
+ SENSITIVE = []
241
+ include Aws::Structure
242
+ end
243
+
94
244
  # The input for the GetRetainedMessage operation.
95
245
  #
96
246
  # @!attribute [rw] topic
@@ -274,6 +424,51 @@ module Aws::IoTDataPlane
274
424
  include Aws::Structure
275
425
  end
276
426
 
427
+ # @!attribute [rw] client_id
428
+ # The unique identifier of the MQTT client to list subscriptions for.
429
+ # The client ID can't start with a dollar sign ($).
430
+ #
431
+ # MQTT client IDs must be URL encoded (percent-encoded) when they
432
+ # contain characters that are not valid in HTTP requests, such as
433
+ # spaces, forward slashes (/), and UTF-8 characters.
434
+ # @return [String]
435
+ #
436
+ # @!attribute [rw] next_token
437
+ # To retrieve the next set of results, the `nextToken` value from a
438
+ # previous response; otherwise **null** to receive the first set of
439
+ # results.
440
+ # @return [String]
441
+ #
442
+ # @!attribute [rw] max_results
443
+ # The maximum number of subscriptions to return in a single request.
444
+ # By default, this is set to 20.
445
+ # @return [Integer]
446
+ #
447
+ class ListSubscriptionsRequest < Struct.new(
448
+ :client_id,
449
+ :next_token,
450
+ :max_results)
451
+ SENSITIVE = []
452
+ include Aws::Structure
453
+ end
454
+
455
+ # @!attribute [rw] subscriptions
456
+ # A list of topic filters and their associated Quality of Service
457
+ # (QoS) levels that the client is subscribed to.
458
+ # @return [Array<Types::SubscriptionSummary>]
459
+ #
460
+ # @!attribute [rw] next_token
461
+ # The token to use to get the next set of results, or **null** if
462
+ # there are no additional results.
463
+ # @return [String]
464
+ #
465
+ class ListSubscriptionsResponse < Struct.new(
466
+ :subscriptions,
467
+ :next_token)
468
+ SENSITIVE = []
469
+ include Aws::Structure
470
+ end
471
+
277
472
  # The specified combination of HTTP verb and URI is not supported.
278
473
  #
279
474
  # @!attribute [rw] message
@@ -435,6 +630,150 @@ module Aws::IoTDataPlane
435
630
  include Aws::Structure
436
631
  end
437
632
 
633
+ # @!attribute [rw] client_id
634
+ # The unique identifier of the MQTT client to send the message to.
635
+ #
636
+ # Client IDs must not exceed 128 characters and can't start with a
637
+ # dollar sign ($). MQTT client IDs must be URL encoded
638
+ # (percent-encoded) when they contain characters that are not valid in
639
+ # HTTP requests, such as spaces, forward slashes (/), and UTF-8
640
+ # characters. For more information, see [Amazon Web Services IoT Core
641
+ # message broker and protocol limits and quotas][1].
642
+ #
643
+ #
644
+ #
645
+ # [1]: https://docs.aws.amazon.com/general/latest/gr/iot-core.html#message-broker-limits
646
+ # @return [String]
647
+ #
648
+ # @!attribute [rw] topic
649
+ # The topic of the outbound MQTT Publish message to the receiving
650
+ # client. For more information, see [Amazon Web Services IoT Core
651
+ # message broker and protocol limits and quotas][1].
652
+ #
653
+ #
654
+ #
655
+ # [1]: https://docs.aws.amazon.com/general/latest/gr/iot-core.html#message-broker-limits
656
+ # @return [String]
657
+ #
658
+ # @!attribute [rw] content_type
659
+ # The MQTT5 content type property forwarded to the receiving client
660
+ # (for example, `application/json`).
661
+ # @return [String]
662
+ #
663
+ # @!attribute [rw] response_topic
664
+ # A UTF-8 encoded string that's used as the topic name for a response
665
+ # message. The response topic describes the topic which the receiver
666
+ # should publish to as part of the request-response flow. The topic
667
+ # must not contain wildcard characters. For more information, see
668
+ # [Amazon Web Services IoT Core message broker and protocol limits and
669
+ # quotas][1].
670
+ #
671
+ #
672
+ #
673
+ # [1]: https://docs.aws.amazon.com/general/latest/gr/iot-core.html#message-broker-limits
674
+ # @return [String]
675
+ #
676
+ # @!attribute [rw] confirmation
677
+ # A Boolean value that specifies whether to wait for delivery
678
+ # confirmation from the receiving client.
679
+ #
680
+ # When set to `true`, the API delivers the message at QoS 1 and waits
681
+ # for the client to send a delivery confirmation (PUBACK) before
682
+ # returning a successful response. If delivery confirmation is not
683
+ # received within the specified `timeout` period, the API returns HTTP
684
+ # 504.
685
+ #
686
+ # When set to `false`, the API delivers the message at QoS 0 and
687
+ # returns after Amazon Web Services IoT Core attempts to deliver the
688
+ # message.
689
+ #
690
+ # Valid values: `true` \| `false`
691
+ #
692
+ # Default value: `false`
693
+ # @return [Boolean]
694
+ #
695
+ # @!attribute [rw] timeout
696
+ # An integer that represents the maximum time, in seconds, to wait for
697
+ # a delivery confirmation (PUBACK) from the receiving client after the
698
+ # message has been delivered. This parameter is only used when
699
+ # `confirmation` is set to `true`. If `confirmation` is `false`, this
700
+ # parameter is ignored.
701
+ #
702
+ # The total API response time may be higher than this value due to
703
+ # internal processing. Set your HTTP client timeout to a value greater
704
+ # than this parameter.
705
+ #
706
+ # Valid range: 1 to 15 seconds.
707
+ #
708
+ # Default value: `5` seconds.
709
+ # @return [Integer]
710
+ #
711
+ # @!attribute [rw] payload
712
+ # The message body. MQTT accepts text, binary, and empty (null)
713
+ # message payloads.
714
+ # @return [String]
715
+ #
716
+ # @!attribute [rw] user_properties
717
+ # A JSON string that contains an array of JSON objects. If you don't
718
+ # use Amazon Web Services SDK or CLI, you must encode the JSON string
719
+ # to base64 format before adding it to the HTTP header.
720
+ # `userProperties` is an HTTP header value in the API.
721
+ #
722
+ # For MQTT 3.1.1 clients, user properties are silently dropped.
723
+ #
724
+ # The following example `userProperties` parameter is a JSON string
725
+ # which represents two User Properties. Note that it needs to be
726
+ # base64-encoded:
727
+ #
728
+ # `[{"deviceName": "alpha"}, {"deviceCnt": "45"}]`
729
+ # @return [String]
730
+ #
731
+ # @!attribute [rw] payload_format_indicator
732
+ # An `Enum` string value that indicates whether the payload is
733
+ # formatted as UTF-8. `payloadFormatIndicator` is an HTTP header value
734
+ # in the API.
735
+ # @return [String]
736
+ #
737
+ # @!attribute [rw] correlation_data
738
+ # The base64-encoded binary data used by the sender of the request
739
+ # message to identify which request the response message is for when
740
+ # it's received. `correlationData` is an HTTP header value in the
741
+ # API.
742
+ # @return [String]
743
+ #
744
+ class SendDirectMessageRequest < Struct.new(
745
+ :client_id,
746
+ :topic,
747
+ :content_type,
748
+ :response_topic,
749
+ :confirmation,
750
+ :timeout,
751
+ :payload,
752
+ :user_properties,
753
+ :payload_format_indicator,
754
+ :correlation_data)
755
+ SENSITIVE = []
756
+ include Aws::Structure
757
+ end
758
+
759
+ # The output from the SendDirectMessage operation.
760
+ #
761
+ # @!attribute [rw] message
762
+ # The status message indicating the result of the operation.
763
+ # @return [String]
764
+ #
765
+ # @!attribute [rw] trace_id
766
+ # A unique identifier for the request. Include this value when
767
+ # contacting Amazon Web Services Support for troubleshooting.
768
+ # @return [String]
769
+ #
770
+ class SendDirectMessageResponse < Struct.new(
771
+ :message,
772
+ :trace_id)
773
+ SENSITIVE = []
774
+ include Aws::Structure
775
+ end
776
+
438
777
  # The service is temporarily unavailable.
439
778
  #
440
779
  # @!attribute [rw] message
@@ -447,6 +786,26 @@ module Aws::IoTDataPlane
447
786
  include Aws::Structure
448
787
  end
449
788
 
789
+ # Contains information about a subscription for an MQTT client,
790
+ # including the topic filter and Quality of Service (QoS) level.
791
+ #
792
+ # @!attribute [rw] topic_filter
793
+ # The topic filter pattern that the client is subscribed to. May
794
+ # include MQTT wildcards such as + (single-level) and # (multi-level).
795
+ # @return [String]
796
+ #
797
+ # @!attribute [rw] qos
798
+ # The Quality of Service (QoS) level for the subscription. Valid
799
+ # values are 0 (at most once) and 1 (at least once).
800
+ # @return [Integer]
801
+ #
802
+ class SubscriptionSummary < Struct.new(
803
+ :topic_filter,
804
+ :qos)
805
+ SENSITIVE = []
806
+ include Aws::Structure
807
+ end
808
+
450
809
  # The rate exceeds the limit.
451
810
  #
452
811
  # @!attribute [rw] message
@@ -54,7 +54,7 @@ module Aws::IoTDataPlane
54
54
  autoload :EndpointProvider, 'aws-sdk-iotdataplane/endpoint_provider'
55
55
  autoload :Endpoints, 'aws-sdk-iotdataplane/endpoints'
56
56
 
57
- GEM_VERSION = '1.91.0'
57
+ GEM_VERSION = '1.92.0'
58
58
 
59
59
  end
60
60
 
data/sig/client.rbs CHANGED
@@ -97,6 +97,30 @@ module Aws
97
97
  ) -> _DeleteThingShadowResponseSuccess
98
98
  | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _DeleteThingShadowResponseSuccess
99
99
 
100
+ interface _GetConnectionResponseSuccess
101
+ include ::Seahorse::Client::_ResponseSuccess[Types::GetConnectionResponse]
102
+ def connected: () -> bool
103
+ def thing_name: () -> ::String
104
+ def clean_session: () -> bool
105
+ def source_ip: () -> ::String
106
+ def source_port: () -> ::Integer
107
+ def target_ip: () -> ::String
108
+ def target_port: () -> ::Integer
109
+ def keep_alive_duration: () -> ::Integer
110
+ def connected_since: () -> ::Integer
111
+ def disconnected_since: () -> ::Integer
112
+ def disconnect_reason: () -> ::String
113
+ def session_expiry: () -> ::Integer
114
+ def client_id: () -> ::String
115
+ def vpc_endpoint_id: () -> ::String
116
+ end
117
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/IoTDataPlane/Client.html#get_connection-instance_method
118
+ def get_connection: (
119
+ client_id: ::String,
120
+ ?include_socket_information: bool
121
+ ) -> _GetConnectionResponseSuccess
122
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _GetConnectionResponseSuccess
123
+
100
124
  interface _GetRetainedMessageResponseSuccess
101
125
  include ::Seahorse::Client::_ResponseSuccess[Types::GetRetainedMessageResponse]
102
126
  def topic: () -> ::String
@@ -148,6 +172,19 @@ module Aws
148
172
  ) -> _ListRetainedMessagesResponseSuccess
149
173
  | (?Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _ListRetainedMessagesResponseSuccess
150
174
 
175
+ interface _ListSubscriptionsResponseSuccess
176
+ include ::Seahorse::Client::_ResponseSuccess[Types::ListSubscriptionsResponse]
177
+ def subscriptions: () -> ::Array[Types::SubscriptionSummary]
178
+ def next_token: () -> ::String
179
+ end
180
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/IoTDataPlane/Client.html#list_subscriptions-instance_method
181
+ def list_subscriptions: (
182
+ client_id: ::String,
183
+ ?next_token: ::String,
184
+ ?max_results: ::Integer
185
+ ) -> _ListSubscriptionsResponseSuccess
186
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _ListSubscriptionsResponseSuccess
187
+
151
188
  # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/IoTDataPlane/Client.html#publish-instance_method
152
189
  def publish: (
153
190
  topic: ::String,
@@ -163,6 +200,26 @@ module Aws
163
200
  ) -> ::Seahorse::Client::_ResponseSuccess[::Aws::EmptyStructure]
164
201
  | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> ::Seahorse::Client::_ResponseSuccess[::Aws::EmptyStructure]
165
202
 
203
+ interface _SendDirectMessageResponseSuccess
204
+ include ::Seahorse::Client::_ResponseSuccess[Types::SendDirectMessageResponse]
205
+ def message: () -> ::String
206
+ def trace_id: () -> ::String
207
+ end
208
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/IoTDataPlane/Client.html#send_direct_message-instance_method
209
+ def send_direct_message: (
210
+ client_id: ::String,
211
+ topic: ::String,
212
+ ?content_type: ::String,
213
+ ?response_topic: ::String,
214
+ ?confirmation: bool,
215
+ ?timeout: ::Integer,
216
+ ?payload: ::String,
217
+ ?user_properties: ::String,
218
+ ?payload_format_indicator: ("UNSPECIFIED_BYTES" | "UTF8_DATA"),
219
+ ?correlation_data: ::String
220
+ ) -> _SendDirectMessageResponseSuccess
221
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _SendDirectMessageResponseSuccess
222
+
166
223
  interface _UpdateThingShadowResponseSuccess
167
224
  include ::Seahorse::Client::_ResponseSuccess[Types::UpdateThingShadowResponse]
168
225
  def payload: () -> ::String
data/sig/errors.rbs CHANGED
@@ -17,6 +17,9 @@ module Aws
17
17
  class ForbiddenException < ::Aws::Errors::ServiceError
18
18
  def message: () -> ::String
19
19
  end
20
+ class GatewayTimeoutException < ::Aws::Errors::ServiceError
21
+ def message: () -> ::String
22
+ end
20
23
  class InternalFailureException < ::Aws::Errors::ServiceError
21
24
  def message: () -> ::String
22
25
  end
data/sig/types.rbs CHANGED
@@ -36,6 +36,35 @@ module Aws::IoTDataPlane
36
36
  SENSITIVE: []
37
37
  end
38
38
 
39
+ class GatewayTimeoutException
40
+ attr_accessor message: ::String
41
+ SENSITIVE: []
42
+ end
43
+
44
+ class GetConnectionRequest
45
+ attr_accessor client_id: ::String
46
+ attr_accessor include_socket_information: bool
47
+ SENSITIVE: []
48
+ end
49
+
50
+ class GetConnectionResponse
51
+ attr_accessor connected: bool
52
+ attr_accessor thing_name: ::String
53
+ attr_accessor clean_session: bool
54
+ attr_accessor source_ip: ::String
55
+ attr_accessor source_port: ::Integer
56
+ attr_accessor target_ip: ::String
57
+ attr_accessor target_port: ::Integer
58
+ attr_accessor keep_alive_duration: ::Integer
59
+ attr_accessor connected_since: ::Integer
60
+ attr_accessor disconnected_since: ::Integer
61
+ attr_accessor disconnect_reason: ::String
62
+ attr_accessor session_expiry: ::Integer
63
+ attr_accessor client_id: ::String
64
+ attr_accessor vpc_endpoint_id: ::String
65
+ SENSITIVE: []
66
+ end
67
+
39
68
  class GetRetainedMessageRequest
40
69
  attr_accessor topic: ::String
41
70
  SENSITIVE: []
@@ -97,6 +126,19 @@ module Aws::IoTDataPlane
97
126
  SENSITIVE: []
98
127
  end
99
128
 
129
+ class ListSubscriptionsRequest
130
+ attr_accessor client_id: ::String
131
+ attr_accessor next_token: ::String
132
+ attr_accessor max_results: ::Integer
133
+ SENSITIVE: []
134
+ end
135
+
136
+ class ListSubscriptionsResponse
137
+ attr_accessor subscriptions: ::Array[Types::SubscriptionSummary]
138
+ attr_accessor next_token: ::String
139
+ SENSITIVE: []
140
+ end
141
+
100
142
  class MethodNotAllowedException
101
143
  attr_accessor message: ::String
102
144
  SENSITIVE: []
@@ -134,11 +176,37 @@ module Aws::IoTDataPlane
134
176
  SENSITIVE: []
135
177
  end
136
178
 
179
+ class SendDirectMessageRequest
180
+ attr_accessor client_id: ::String
181
+ attr_accessor topic: ::String
182
+ attr_accessor content_type: ::String
183
+ attr_accessor response_topic: ::String
184
+ attr_accessor confirmation: bool
185
+ attr_accessor timeout: ::Integer
186
+ attr_accessor payload: ::String
187
+ attr_accessor user_properties: ::String
188
+ attr_accessor payload_format_indicator: ("UNSPECIFIED_BYTES" | "UTF8_DATA")
189
+ attr_accessor correlation_data: ::String
190
+ SENSITIVE: []
191
+ end
192
+
193
+ class SendDirectMessageResponse
194
+ attr_accessor message: ::String
195
+ attr_accessor trace_id: ::String
196
+ SENSITIVE: []
197
+ end
198
+
137
199
  class ServiceUnavailableException
138
200
  attr_accessor message: ::String
139
201
  SENSITIVE: []
140
202
  end
141
203
 
204
+ class SubscriptionSummary
205
+ attr_accessor topic_filter: ::String
206
+ attr_accessor qos: ::Integer
207
+ SENSITIVE: []
208
+ end
209
+
142
210
  class ThrottlingException
143
211
  attr_accessor message: ::String
144
212
  SENSITIVE: []
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-sdk-iotdataplane
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.91.0
4
+ version: 1.92.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amazon Web Services