sentdm 0.0.2
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 +7 -0
- data/.ignore +2 -0
- data/CHANGELOG.md +11 -0
- data/README.md +240 -0
- data/SECURITY.md +27 -0
- data/lib/sentdm/client.rb +115 -0
- data/lib/sentdm/errors.rb +228 -0
- data/lib/sentdm/file_part.rb +58 -0
- data/lib/sentdm/internal/transport/base_client.rb +573 -0
- data/lib/sentdm/internal/transport/pooled_net_requester.rb +210 -0
- data/lib/sentdm/internal/type/array_of.rb +168 -0
- data/lib/sentdm/internal/type/base_model.rb +531 -0
- data/lib/sentdm/internal/type/base_page.rb +55 -0
- data/lib/sentdm/internal/type/boolean.rb +77 -0
- data/lib/sentdm/internal/type/converter.rb +327 -0
- data/lib/sentdm/internal/type/enum.rb +131 -0
- data/lib/sentdm/internal/type/file_input.rb +111 -0
- data/lib/sentdm/internal/type/hash_of.rb +188 -0
- data/lib/sentdm/internal/type/request_parameters.rb +42 -0
- data/lib/sentdm/internal/type/union.rb +237 -0
- data/lib/sentdm/internal/type/unknown.rb +81 -0
- data/lib/sentdm/internal/util.rb +920 -0
- data/lib/sentdm/internal.rb +20 -0
- data/lib/sentdm/models/contact_list_item.rb +96 -0
- data/lib/sentdm/models/contact_list_params.rb +30 -0
- data/lib/sentdm/models/contact_list_response.rb +40 -0
- data/lib/sentdm/models/contact_retrieve_by_phone_params.rb +22 -0
- data/lib/sentdm/models/contact_retrieve_id_params.rb +22 -0
- data/lib/sentdm/models/message_retrieve_params.rb +14 -0
- data/lib/sentdm/models/message_retrieve_response.rb +227 -0
- data/lib/sentdm/models/message_send_quick_message_params.rb +34 -0
- data/lib/sentdm/models/message_send_to_contact_params.rb +46 -0
- data/lib/sentdm/models/message_send_to_phone_params.rb +47 -0
- data/lib/sentdm/models/number_lookup_retrieve_params.rb +20 -0
- data/lib/sentdm/models/number_lookup_retrieve_response.rb +83 -0
- data/lib/sentdm/models/organization_list_params.rb +14 -0
- data/lib/sentdm/models/organization_list_response.rb +57 -0
- data/lib/sentdm/models/organization_retrieve_profiles_params.rb +14 -0
- data/lib/sentdm/models/organization_retrieve_profiles_response.rb +22 -0
- data/lib/sentdm/models/organizations/customer_user.rb +96 -0
- data/lib/sentdm/models/organizations/user_delete_params.rb +22 -0
- data/lib/sentdm/models/organizations/user_invite_params.rb +40 -0
- data/lib/sentdm/models/organizations/user_list_params.rb +28 -0
- data/lib/sentdm/models/organizations/user_list_response.rb +36 -0
- data/lib/sentdm/models/organizations/user_retrieve_params.rb +22 -0
- data/lib/sentdm/models/organizations/user_update_role_params.rb +28 -0
- data/lib/sentdm/models/profile_summary.rb +45 -0
- data/lib/sentdm/models/template_body_content.rb +27 -0
- data/lib/sentdm/models/template_create_params.rb +53 -0
- data/lib/sentdm/models/template_definition.rb +310 -0
- data/lib/sentdm/models/template_delete_params.rb +14 -0
- data/lib/sentdm/models/template_list_params.rb +54 -0
- data/lib/sentdm/models/template_list_response.rb +40 -0
- data/lib/sentdm/models/template_response.rb +100 -0
- data/lib/sentdm/models/template_retrieve_params.rb +14 -0
- data/lib/sentdm/models/template_variable.rb +74 -0
- data/lib/sentdm/models.rb +83 -0
- data/lib/sentdm/request_options.rb +77 -0
- data/lib/sentdm/resources/contacts.rb +88 -0
- data/lib/sentdm/resources/messages.rb +130 -0
- data/lib/sentdm/resources/number_lookup.rb +37 -0
- data/lib/sentdm/resources/organizations/users.rb +150 -0
- data/lib/sentdm/resources/organizations.rb +58 -0
- data/lib/sentdm/resources/templates.rb +131 -0
- data/lib/sentdm/version.rb +5 -0
- data/lib/sentdm.rb +94 -0
- data/manifest.yaml +17 -0
- data/rbi/sentdm/client.rbi +80 -0
- data/rbi/sentdm/errors.rbi +205 -0
- data/rbi/sentdm/file_part.rbi +37 -0
- data/rbi/sentdm/internal/transport/base_client.rbi +297 -0
- data/rbi/sentdm/internal/transport/pooled_net_requester.rbi +82 -0
- data/rbi/sentdm/internal/type/array_of.rbi +104 -0
- data/rbi/sentdm/internal/type/base_model.rbi +299 -0
- data/rbi/sentdm/internal/type/base_page.rbi +42 -0
- data/rbi/sentdm/internal/type/boolean.rbi +58 -0
- data/rbi/sentdm/internal/type/converter.rbi +204 -0
- data/rbi/sentdm/internal/type/enum.rbi +82 -0
- data/rbi/sentdm/internal/type/file_input.rbi +59 -0
- data/rbi/sentdm/internal/type/hash_of.rbi +104 -0
- data/rbi/sentdm/internal/type/request_parameters.rbi +29 -0
- data/rbi/sentdm/internal/type/union.rbi +126 -0
- data/rbi/sentdm/internal/type/unknown.rbi +58 -0
- data/rbi/sentdm/internal/util.rbi +484 -0
- data/rbi/sentdm/internal.rbi +16 -0
- data/rbi/sentdm/models/contact_list_item.rbi +144 -0
- data/rbi/sentdm/models/contact_list_params.rbi +51 -0
- data/rbi/sentdm/models/contact_list_response.rbi +74 -0
- data/rbi/sentdm/models/contact_retrieve_by_phone_params.rbi +40 -0
- data/rbi/sentdm/models/contact_retrieve_id_params.rbi +40 -0
- data/rbi/sentdm/models/message_retrieve_params.rbi +27 -0
- data/rbi/sentdm/models/message_retrieve_response.rbi +376 -0
- data/rbi/sentdm/models/message_send_quick_message_params.rbi +56 -0
- data/rbi/sentdm/models/message_send_to_contact_params.rbi +63 -0
- data/rbi/sentdm/models/message_send_to_phone_params.rbi +65 -0
- data/rbi/sentdm/models/number_lookup_retrieve_params.rbi +35 -0
- data/rbi/sentdm/models/number_lookup_retrieve_response.rbi +132 -0
- data/rbi/sentdm/models/organization_list_params.rbi +27 -0
- data/rbi/sentdm/models/organization_list_response.rbi +131 -0
- data/rbi/sentdm/models/organization_retrieve_profiles_params.rbi +30 -0
- data/rbi/sentdm/models/organization_retrieve_profiles_response.rbi +47 -0
- data/rbi/sentdm/models/organizations/customer_user.rbi +129 -0
- data/rbi/sentdm/models/organizations/user_delete_params.rbi +40 -0
- data/rbi/sentdm/models/organizations/user_invite_params.rbi +73 -0
- data/rbi/sentdm/models/organizations/user_list_params.rbi +48 -0
- data/rbi/sentdm/models/organizations/user_list_response.rbi +71 -0
- data/rbi/sentdm/models/organizations/user_retrieve_params.rbi +40 -0
- data/rbi/sentdm/models/organizations/user_update_role_params.rbi +51 -0
- data/rbi/sentdm/models/profile_summary.rbi +74 -0
- data/rbi/sentdm/models/template_body_content.rbi +46 -0
- data/rbi/sentdm/models/template_create_params.rbi +81 -0
- data/rbi/sentdm/models/template_definition.rbi +497 -0
- data/rbi/sentdm/models/template_delete_params.rbi +27 -0
- data/rbi/sentdm/models/template_list_params.rbi +75 -0
- data/rbi/sentdm/models/template_list_response.rbi +74 -0
- data/rbi/sentdm/models/template_response.rbi +149 -0
- data/rbi/sentdm/models/template_retrieve_params.rbi +27 -0
- data/rbi/sentdm/models/template_variable.rbi +120 -0
- data/rbi/sentdm/models.rbi +46 -0
- data/rbi/sentdm/request_options.rbi +55 -0
- data/rbi/sentdm/resources/contacts.rbi +63 -0
- data/rbi/sentdm/resources/messages.rbi +97 -0
- data/rbi/sentdm/resources/number_lookup.rbi +24 -0
- data/rbi/sentdm/resources/organizations/users.rbi +95 -0
- data/rbi/sentdm/resources/organizations.rbi +37 -0
- data/rbi/sentdm/resources/templates.rbi +103 -0
- data/rbi/sentdm/version.rbi +5 -0
- data/sig/sentdm/client.rbs +41 -0
- data/sig/sentdm/errors.rbs +117 -0
- data/sig/sentdm/file_part.rbs +21 -0
- data/sig/sentdm/internal/transport/base_client.rbs +133 -0
- data/sig/sentdm/internal/transport/pooled_net_requester.rbs +48 -0
- data/sig/sentdm/internal/type/array_of.rbs +48 -0
- data/sig/sentdm/internal/type/base_model.rbs +102 -0
- data/sig/sentdm/internal/type/base_page.rbs +24 -0
- data/sig/sentdm/internal/type/boolean.rbs +26 -0
- data/sig/sentdm/internal/type/converter.rbs +79 -0
- data/sig/sentdm/internal/type/enum.rbs +32 -0
- data/sig/sentdm/internal/type/file_input.rbs +25 -0
- data/sig/sentdm/internal/type/hash_of.rbs +48 -0
- data/sig/sentdm/internal/type/request_parameters.rbs +17 -0
- data/sig/sentdm/internal/type/union.rbs +52 -0
- data/sig/sentdm/internal/type/unknown.rbs +26 -0
- data/sig/sentdm/internal/util.rbs +185 -0
- data/sig/sentdm/internal.rbs +9 -0
- data/sig/sentdm/models/contact_list_item.rbs +85 -0
- data/sig/sentdm/models/contact_list_params.rbs +28 -0
- data/sig/sentdm/models/contact_list_response.rbs +52 -0
- data/sig/sentdm/models/contact_retrieve_by_phone_params.rbs +23 -0
- data/sig/sentdm/models/contact_retrieve_id_params.rbs +20 -0
- data/sig/sentdm/models/message_retrieve_params.rbs +15 -0
- data/sig/sentdm/models/message_retrieve_response.rbs +188 -0
- data/sig/sentdm/models/message_send_quick_message_params.rbs +28 -0
- data/sig/sentdm/models/message_send_to_contact_params.rbs +36 -0
- data/sig/sentdm/models/message_send_to_phone_params.rbs +36 -0
- data/sig/sentdm/models/number_lookup_retrieve_params.rbs +23 -0
- data/sig/sentdm/models/number_lookup_retrieve_response.rbs +78 -0
- data/sig/sentdm/models/organization_list_params.rbs +15 -0
- data/sig/sentdm/models/organization_list_response.rbs +76 -0
- data/sig/sentdm/models/organization_retrieve_profiles_params.rbs +15 -0
- data/sig/sentdm/models/organization_retrieve_profiles_response.rbs +28 -0
- data/sig/sentdm/models/organizations/customer_user.rbs +91 -0
- data/sig/sentdm/models/organizations/user_delete_params.rbs +25 -0
- data/sig/sentdm/models/organizations/user_invite_params.rbs +44 -0
- data/sig/sentdm/models/organizations/user_list_params.rbs +30 -0
- data/sig/sentdm/models/organizations/user_list_response.rbs +47 -0
- data/sig/sentdm/models/organizations/user_retrieve_params.rbs +25 -0
- data/sig/sentdm/models/organizations/user_update_role_params.rbs +32 -0
- data/sig/sentdm/models/profile_summary.rbs +51 -0
- data/sig/sentdm/models/template_body_content.rbs +32 -0
- data/sig/sentdm/models/template_create_params.rbs +43 -0
- data/sig/sentdm/models/template_definition.rbs +258 -0
- data/sig/sentdm/models/template_delete_params.rbs +15 -0
- data/sig/sentdm/models/template_list_params.rbs +46 -0
- data/sig/sentdm/models/template_list_response.rbs +52 -0
- data/sig/sentdm/models/template_response.rbs +92 -0
- data/sig/sentdm/models/template_retrieve_params.rbs +15 -0
- data/sig/sentdm/models/template_variable.rbs +87 -0
- data/sig/sentdm/models.rbs +43 -0
- data/sig/sentdm/request_options.rbs +34 -0
- data/sig/sentdm/resources/contacts.rbs +23 -0
- data/sig/sentdm/resources/messages.rbs +32 -0
- data/sig/sentdm/resources/number_lookup.rbs +12 -0
- data/sig/sentdm/resources/organizations/users.rbs +44 -0
- data/sig/sentdm/resources/organizations.rbs +18 -0
- data/sig/sentdm/resources/templates.rbs +31 -0
- data/sig/sentdm/version.rbs +3 -0
- metadata +259 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Sentdm
|
|
4
|
+
# Specify HTTP behaviour to use for a specific request. These options supplement
|
|
5
|
+
# or override those provided at the client level.
|
|
6
|
+
#
|
|
7
|
+
# When making a request, you can pass an actual {RequestOptions} instance, or
|
|
8
|
+
# simply pass a Hash with symbol keys matching the attributes on this class.
|
|
9
|
+
class RequestOptions < Sentdm::Internal::Type::BaseModel
|
|
10
|
+
# @api private
|
|
11
|
+
#
|
|
12
|
+
# @param opts [Sentdm::RequestOptions, Hash{Symbol=>Object}]
|
|
13
|
+
#
|
|
14
|
+
# @raise [ArgumentError]
|
|
15
|
+
def self.validate!(opts)
|
|
16
|
+
case opts
|
|
17
|
+
in Sentdm::RequestOptions | Hash
|
|
18
|
+
opts.to_h.each_key do |k|
|
|
19
|
+
unless fields.include?(k)
|
|
20
|
+
raise ArgumentError.new("Request `opts` keys must be one of #{fields.keys}, got #{k.inspect}")
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
else
|
|
24
|
+
raise ArgumentError.new("Request `opts` must be a Hash or RequestOptions, got #{opts.inspect}")
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# @!attribute idempotency_key
|
|
29
|
+
# Idempotency key to send with request and all associated retries. Will only be
|
|
30
|
+
# sent for write requests.
|
|
31
|
+
#
|
|
32
|
+
# @return [String, nil]
|
|
33
|
+
optional :idempotency_key, String
|
|
34
|
+
|
|
35
|
+
# @!attribute extra_query
|
|
36
|
+
# Extra query params to send with the request. These are `.merge`’d into any
|
|
37
|
+
# `query` given at the client level.
|
|
38
|
+
#
|
|
39
|
+
# @return [Hash{String=>Array<String>, String, nil}, nil]
|
|
40
|
+
optional :extra_query, Sentdm::Internal::Type::HashOf[Sentdm::Internal::Type::ArrayOf[String]]
|
|
41
|
+
|
|
42
|
+
# @!attribute extra_headers
|
|
43
|
+
# Extra headers to send with the request. These are `.merged`’d into any
|
|
44
|
+
# `extra_headers` given at the client level.
|
|
45
|
+
#
|
|
46
|
+
# @return [Hash{String=>String, nil}, nil]
|
|
47
|
+
optional :extra_headers, Sentdm::Internal::Type::HashOf[String, nil?: true]
|
|
48
|
+
|
|
49
|
+
# @!attribute extra_body
|
|
50
|
+
# Extra data to send with the request. These are deep merged into any data
|
|
51
|
+
# generated as part of the normal request.
|
|
52
|
+
#
|
|
53
|
+
# @return [Object, nil]
|
|
54
|
+
optional :extra_body, Sentdm::Internal::Type::HashOf[Sentdm::Internal::Type::Unknown]
|
|
55
|
+
|
|
56
|
+
# @!attribute max_retries
|
|
57
|
+
# Maximum number of retries to attempt after a failed initial request.
|
|
58
|
+
#
|
|
59
|
+
# @return [Integer, nil]
|
|
60
|
+
optional :max_retries, Integer
|
|
61
|
+
|
|
62
|
+
# @!attribute timeout
|
|
63
|
+
# Request timeout in seconds.
|
|
64
|
+
#
|
|
65
|
+
# @return [Float, nil]
|
|
66
|
+
optional :timeout, Float
|
|
67
|
+
|
|
68
|
+
# @!method initialize(values = {})
|
|
69
|
+
# Returns a new instance of RequestOptions.
|
|
70
|
+
#
|
|
71
|
+
# @param values [Hash{Symbol=>Object}]
|
|
72
|
+
|
|
73
|
+
define_sorbet_constant!(:OrHash) do
|
|
74
|
+
T.type_alias { T.any(Sentdm::RequestOptions, Sentdm::Internal::AnyHash) }
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Sentdm
|
|
4
|
+
module Resources
|
|
5
|
+
class Contacts
|
|
6
|
+
# Retrieves a paginated list of contacts for the authenticated customer. Supports
|
|
7
|
+
# server-side pagination with configurable page size. The customer ID is extracted
|
|
8
|
+
# from the authentication token.
|
|
9
|
+
#
|
|
10
|
+
# @overload list(page:, page_size:, request_options: {})
|
|
11
|
+
#
|
|
12
|
+
# @param page [Integer] The page number (zero-indexed). Default is 0.
|
|
13
|
+
#
|
|
14
|
+
# @param page_size [Integer] The number of items per page. Default is 20.
|
|
15
|
+
#
|
|
16
|
+
# @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
17
|
+
#
|
|
18
|
+
# @return [Sentdm::Models::ContactListResponse]
|
|
19
|
+
#
|
|
20
|
+
# @see Sentdm::Models::ContactListParams
|
|
21
|
+
def list(params)
|
|
22
|
+
parsed, options = Sentdm::ContactListParams.dump_request(params)
|
|
23
|
+
@client.request(
|
|
24
|
+
method: :get,
|
|
25
|
+
path: "v2/contacts",
|
|
26
|
+
query: parsed.transform_keys(page_size: "pageSize"),
|
|
27
|
+
model: Sentdm::Models::ContactListResponse,
|
|
28
|
+
options: options
|
|
29
|
+
)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Retrieves a contact by their phone number for the authenticated customer. Phone
|
|
33
|
+
# number should be in international format (e.g., +1234567890). The customer ID is
|
|
34
|
+
# extracted from the authentication token.
|
|
35
|
+
#
|
|
36
|
+
# @overload retrieve_by_phone(phone_number:, request_options: {})
|
|
37
|
+
#
|
|
38
|
+
# @param phone_number [String] The phone number in international format (e.g., +1234567890)
|
|
39
|
+
#
|
|
40
|
+
# @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
41
|
+
#
|
|
42
|
+
# @return [Sentdm::Models::ContactListItem]
|
|
43
|
+
#
|
|
44
|
+
# @see Sentdm::Models::ContactRetrieveByPhoneParams
|
|
45
|
+
def retrieve_by_phone(params)
|
|
46
|
+
parsed, options = Sentdm::ContactRetrieveByPhoneParams.dump_request(params)
|
|
47
|
+
@client.request(
|
|
48
|
+
method: :get,
|
|
49
|
+
path: "v2/contacts/phone",
|
|
50
|
+
query: parsed.transform_keys(phone_number: "phoneNumber"),
|
|
51
|
+
model: Sentdm::ContactListItem,
|
|
52
|
+
options: options
|
|
53
|
+
)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Retrieves a specific contact by their unique identifier for the authenticated
|
|
57
|
+
# customer. The customer ID is extracted from the authentication token. Returns
|
|
58
|
+
# detailed contact information including phone number and creation timestamp.
|
|
59
|
+
#
|
|
60
|
+
# @overload retrieve_id(id:, request_options: {})
|
|
61
|
+
#
|
|
62
|
+
# @param id [String] The unique identifier (GUID) of the resource to retrieve
|
|
63
|
+
#
|
|
64
|
+
# @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
65
|
+
#
|
|
66
|
+
# @return [Sentdm::Models::ContactListItem]
|
|
67
|
+
#
|
|
68
|
+
# @see Sentdm::Models::ContactRetrieveIDParams
|
|
69
|
+
def retrieve_id(params)
|
|
70
|
+
parsed, options = Sentdm::ContactRetrieveIDParams.dump_request(params)
|
|
71
|
+
@client.request(
|
|
72
|
+
method: :get,
|
|
73
|
+
path: "v2/contacts/id",
|
|
74
|
+
query: parsed,
|
|
75
|
+
model: Sentdm::ContactListItem,
|
|
76
|
+
options: options
|
|
77
|
+
)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# @api private
|
|
81
|
+
#
|
|
82
|
+
# @param client [Sentdm::Client]
|
|
83
|
+
def initialize(client:)
|
|
84
|
+
@client = client
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Sentdm
|
|
4
|
+
module Resources
|
|
5
|
+
class Messages
|
|
6
|
+
# Retrieves comprehensive details about a specific message using the message ID.
|
|
7
|
+
# Returns complete message data including delivery status, channel information,
|
|
8
|
+
# template details, contact information, and pricing. The customer ID is extracted
|
|
9
|
+
# from the authentication token to ensure the message belongs to the authenticated
|
|
10
|
+
# customer.
|
|
11
|
+
#
|
|
12
|
+
# @overload retrieve(id, request_options: {})
|
|
13
|
+
#
|
|
14
|
+
# @param id [String]
|
|
15
|
+
# @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
16
|
+
#
|
|
17
|
+
# @return [Sentdm::Models::MessageRetrieveResponse]
|
|
18
|
+
#
|
|
19
|
+
# @see Sentdm::Models::MessageRetrieveParams
|
|
20
|
+
def retrieve(id, params = {})
|
|
21
|
+
@client.request(
|
|
22
|
+
method: :get,
|
|
23
|
+
path: ["v2/messages/%1$s", id],
|
|
24
|
+
model: Sentdm::Models::MessageRetrieveResponse,
|
|
25
|
+
options: params[:request_options]
|
|
26
|
+
)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Some parameter documentations has been truncated, see
|
|
30
|
+
# {Sentdm::Models::MessageSendQuickMessageParams} for more details.
|
|
31
|
+
#
|
|
32
|
+
# Sends a message to a phone number using the default template. This endpoint is
|
|
33
|
+
# rate limited to 5 messages per customer per day. The customer ID is extracted
|
|
34
|
+
# from the authentication token.
|
|
35
|
+
#
|
|
36
|
+
# @overload send_quick_message(custom_message:, phone_number:, request_options: {})
|
|
37
|
+
#
|
|
38
|
+
# @param custom_message [String] The custom message content to include in the template
|
|
39
|
+
#
|
|
40
|
+
# @param phone_number [String] The phone number to send the message to, in international format (e.g., +1234567
|
|
41
|
+
#
|
|
42
|
+
# @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
43
|
+
#
|
|
44
|
+
# @return [nil]
|
|
45
|
+
#
|
|
46
|
+
# @see Sentdm::Models::MessageSendQuickMessageParams
|
|
47
|
+
def send_quick_message(params)
|
|
48
|
+
parsed, options = Sentdm::MessageSendQuickMessageParams.dump_request(params)
|
|
49
|
+
@client.request(
|
|
50
|
+
method: :post,
|
|
51
|
+
path: "v2/messages/quick-message",
|
|
52
|
+
body: parsed,
|
|
53
|
+
model: NilClass,
|
|
54
|
+
options: options
|
|
55
|
+
)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Some parameter documentations has been truncated, see
|
|
59
|
+
# {Sentdm::Models::MessageSendToContactParams} for more details.
|
|
60
|
+
#
|
|
61
|
+
# Sends a message to a specific contact using a template. The message can be sent
|
|
62
|
+
# via SMS or WhatsApp depending on the contact's capabilities. Optionally specify
|
|
63
|
+
# a webhook URL to receive delivery status updates. The customer ID is extracted
|
|
64
|
+
# from the authentication token.
|
|
65
|
+
#
|
|
66
|
+
# @overload send_to_contact(contact_id:, template_id:, template_variables: nil, request_options: {})
|
|
67
|
+
#
|
|
68
|
+
# @param contact_id [String] The unique identifier of the contact to send the message to
|
|
69
|
+
#
|
|
70
|
+
# @param template_id [String] The unique identifier of the template to use for the message
|
|
71
|
+
#
|
|
72
|
+
# @param template_variables [Hash{Symbol=>String}, nil] Optional key-value pairs of template variables to replace in the template body.
|
|
73
|
+
#
|
|
74
|
+
# @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
75
|
+
#
|
|
76
|
+
# @return [nil]
|
|
77
|
+
#
|
|
78
|
+
# @see Sentdm::Models::MessageSendToContactParams
|
|
79
|
+
def send_to_contact(params)
|
|
80
|
+
parsed, options = Sentdm::MessageSendToContactParams.dump_request(params)
|
|
81
|
+
@client.request(
|
|
82
|
+
method: :post,
|
|
83
|
+
path: "v2/messages/contact",
|
|
84
|
+
body: parsed,
|
|
85
|
+
model: NilClass,
|
|
86
|
+
options: options
|
|
87
|
+
)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# Some parameter documentations has been truncated, see
|
|
91
|
+
# {Sentdm::Models::MessageSendToPhoneParams} for more details.
|
|
92
|
+
#
|
|
93
|
+
# Sends a message to a phone number using a template. The phone number doesn't
|
|
94
|
+
# need to be a pre-existing contact. The message can be sent via SMS or WhatsApp.
|
|
95
|
+
# Optionally specify a webhook URL to receive delivery status updates. The
|
|
96
|
+
# customer ID is extracted from the authentication token.
|
|
97
|
+
#
|
|
98
|
+
# @overload send_to_phone(phone_number:, template_id:, template_variables: nil, request_options: {})
|
|
99
|
+
#
|
|
100
|
+
# @param phone_number [String] The phone number to send the message to, in international format (e.g., +1234567
|
|
101
|
+
#
|
|
102
|
+
# @param template_id [String] The unique identifier of the template to use for the message
|
|
103
|
+
#
|
|
104
|
+
# @param template_variables [Hash{Symbol=>String}, nil] Optional key-value pairs of template variables to replace in the template body.
|
|
105
|
+
#
|
|
106
|
+
# @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
107
|
+
#
|
|
108
|
+
# @return [nil]
|
|
109
|
+
#
|
|
110
|
+
# @see Sentdm::Models::MessageSendToPhoneParams
|
|
111
|
+
def send_to_phone(params)
|
|
112
|
+
parsed, options = Sentdm::MessageSendToPhoneParams.dump_request(params)
|
|
113
|
+
@client.request(
|
|
114
|
+
method: :post,
|
|
115
|
+
path: "v2/messages/phone",
|
|
116
|
+
body: parsed,
|
|
117
|
+
model: NilClass,
|
|
118
|
+
options: options
|
|
119
|
+
)
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
# @api private
|
|
123
|
+
#
|
|
124
|
+
# @param client [Sentdm::Client]
|
|
125
|
+
def initialize(client:)
|
|
126
|
+
@client = client
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Sentdm
|
|
4
|
+
module Resources
|
|
5
|
+
class NumberLookup
|
|
6
|
+
# Retrieves detailed information about a phone number including validation,
|
|
7
|
+
# formatting, country information, and available messaging channels. The customer
|
|
8
|
+
# ID is extracted from the authentication token.
|
|
9
|
+
#
|
|
10
|
+
# @overload retrieve(phone_number:, request_options: {})
|
|
11
|
+
#
|
|
12
|
+
# @param phone_number [String]
|
|
13
|
+
# @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
14
|
+
#
|
|
15
|
+
# @return [Sentdm::Models::NumberLookupRetrieveResponse]
|
|
16
|
+
#
|
|
17
|
+
# @see Sentdm::Models::NumberLookupRetrieveParams
|
|
18
|
+
def retrieve(params)
|
|
19
|
+
parsed, options = Sentdm::NumberLookupRetrieveParams.dump_request(params)
|
|
20
|
+
@client.request(
|
|
21
|
+
method: :get,
|
|
22
|
+
path: "v2/number-lookup",
|
|
23
|
+
query: parsed.transform_keys(phone_number: "phoneNumber"),
|
|
24
|
+
model: Sentdm::Models::NumberLookupRetrieveResponse,
|
|
25
|
+
options: options
|
|
26
|
+
)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# @api private
|
|
30
|
+
#
|
|
31
|
+
# @param client [Sentdm::Client]
|
|
32
|
+
def initialize(client:)
|
|
33
|
+
@client = client
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Sentdm
|
|
4
|
+
module Resources
|
|
5
|
+
class Organizations
|
|
6
|
+
class Users
|
|
7
|
+
# Retrieves a specific user by their ID. Requires appropriate permissions. The
|
|
8
|
+
# customerId can be either an organization ID or a profile ID.
|
|
9
|
+
#
|
|
10
|
+
# @overload retrieve(user_id, customer_id:, request_options: {})
|
|
11
|
+
#
|
|
12
|
+
# @param user_id [String]
|
|
13
|
+
# @param customer_id [String]
|
|
14
|
+
# @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
15
|
+
#
|
|
16
|
+
# @return [Sentdm::Models::Organizations::CustomerUser]
|
|
17
|
+
#
|
|
18
|
+
# @see Sentdm::Models::Organizations::UserRetrieveParams
|
|
19
|
+
def retrieve(user_id, params)
|
|
20
|
+
parsed, options = Sentdm::Organizations::UserRetrieveParams.dump_request(params)
|
|
21
|
+
customer_id =
|
|
22
|
+
parsed.delete(:customer_id) do
|
|
23
|
+
raise ArgumentError.new("missing required path argument #{_1}")
|
|
24
|
+
end
|
|
25
|
+
@client.request(
|
|
26
|
+
method: :get,
|
|
27
|
+
path: ["v2/organizations/%1$s/users/%2$s", customer_id, user_id],
|
|
28
|
+
model: Sentdm::Organizations::CustomerUser,
|
|
29
|
+
options: options
|
|
30
|
+
)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Retrieves all users associated with an organization or sender profile. Requires
|
|
34
|
+
# appropriate permissions. Supports pagination.
|
|
35
|
+
#
|
|
36
|
+
# @overload list(customer_id, page:, page_size:, request_options: {})
|
|
37
|
+
#
|
|
38
|
+
# @param customer_id [String]
|
|
39
|
+
# @param page [Integer]
|
|
40
|
+
# @param page_size [Integer]
|
|
41
|
+
# @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
42
|
+
#
|
|
43
|
+
# @return [Sentdm::Models::Organizations::UserListResponse]
|
|
44
|
+
#
|
|
45
|
+
# @see Sentdm::Models::Organizations::UserListParams
|
|
46
|
+
def list(customer_id, params)
|
|
47
|
+
parsed, options = Sentdm::Organizations::UserListParams.dump_request(params)
|
|
48
|
+
@client.request(
|
|
49
|
+
method: :get,
|
|
50
|
+
path: ["v2/organizations/%1$s/users", customer_id],
|
|
51
|
+
query: parsed.transform_keys(page_size: "pageSize"),
|
|
52
|
+
model: Sentdm::Models::Organizations::UserListResponse,
|
|
53
|
+
options: options
|
|
54
|
+
)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Removes a user from an organization or sender profile. Requires admin
|
|
58
|
+
# permissions. This action permanently deletes the user association.
|
|
59
|
+
#
|
|
60
|
+
# @overload delete(user_id, customer_id:, request_options: {})
|
|
61
|
+
#
|
|
62
|
+
# @param user_id [String]
|
|
63
|
+
# @param customer_id [String]
|
|
64
|
+
# @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
65
|
+
#
|
|
66
|
+
# @return [nil]
|
|
67
|
+
#
|
|
68
|
+
# @see Sentdm::Models::Organizations::UserDeleteParams
|
|
69
|
+
def delete(user_id, params)
|
|
70
|
+
parsed, options = Sentdm::Organizations::UserDeleteParams.dump_request(params)
|
|
71
|
+
customer_id =
|
|
72
|
+
parsed.delete(:customer_id) do
|
|
73
|
+
raise ArgumentError.new("missing required path argument #{_1}")
|
|
74
|
+
end
|
|
75
|
+
@client.request(
|
|
76
|
+
method: :delete,
|
|
77
|
+
path: ["v2/organizations/%1$s/users/%2$s", customer_id, user_id],
|
|
78
|
+
model: NilClass,
|
|
79
|
+
options: options
|
|
80
|
+
)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# Invites a user to an organization or sender profile with a specified role.
|
|
84
|
+
# Requires appropriate permissions. The customerId can be either an organization
|
|
85
|
+
# ID or a profile ID.
|
|
86
|
+
#
|
|
87
|
+
# @overload invite(customer_id, email: nil, invited_by: nil, name: nil, role: nil, request_options: {})
|
|
88
|
+
#
|
|
89
|
+
# @param customer_id [String]
|
|
90
|
+
# @param email [String]
|
|
91
|
+
# @param invited_by [String, nil]
|
|
92
|
+
# @param name [String]
|
|
93
|
+
# @param role [String]
|
|
94
|
+
# @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
95
|
+
#
|
|
96
|
+
# @return [Sentdm::Models::Organizations::CustomerUser]
|
|
97
|
+
#
|
|
98
|
+
# @see Sentdm::Models::Organizations::UserInviteParams
|
|
99
|
+
def invite(customer_id, params = {})
|
|
100
|
+
parsed, options = Sentdm::Organizations::UserInviteParams.dump_request(params)
|
|
101
|
+
@client.request(
|
|
102
|
+
method: :post,
|
|
103
|
+
path: ["v2/organizations/%1$s/users", customer_id],
|
|
104
|
+
body: parsed,
|
|
105
|
+
model: Sentdm::Organizations::CustomerUser,
|
|
106
|
+
options: options
|
|
107
|
+
)
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
# Updates a user's role within an organization or sender profile. Requires admin
|
|
111
|
+
# permissions. Valid roles are: admin, billing, developer.
|
|
112
|
+
#
|
|
113
|
+
# @overload update_role(user_id, customer_id:, role: nil, request_options: {})
|
|
114
|
+
#
|
|
115
|
+
# @param user_id [String] Path param
|
|
116
|
+
#
|
|
117
|
+
# @param customer_id [String] Path param
|
|
118
|
+
#
|
|
119
|
+
# @param role [String] Body param
|
|
120
|
+
#
|
|
121
|
+
# @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
122
|
+
#
|
|
123
|
+
# @return [Sentdm::Models::Organizations::CustomerUser]
|
|
124
|
+
#
|
|
125
|
+
# @see Sentdm::Models::Organizations::UserUpdateRoleParams
|
|
126
|
+
def update_role(user_id, params)
|
|
127
|
+
parsed, options = Sentdm::Organizations::UserUpdateRoleParams.dump_request(params)
|
|
128
|
+
customer_id =
|
|
129
|
+
parsed.delete(:customer_id) do
|
|
130
|
+
raise ArgumentError.new("missing required path argument #{_1}")
|
|
131
|
+
end
|
|
132
|
+
@client.request(
|
|
133
|
+
method: :put,
|
|
134
|
+
path: ["v2/organizations/%1$s/users/%2$s", customer_id, user_id],
|
|
135
|
+
body: parsed,
|
|
136
|
+
model: Sentdm::Organizations::CustomerUser,
|
|
137
|
+
options: options
|
|
138
|
+
)
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
# @api private
|
|
142
|
+
#
|
|
143
|
+
# @param client [Sentdm::Client]
|
|
144
|
+
def initialize(client:)
|
|
145
|
+
@client = client
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Sentdm
|
|
4
|
+
module Resources
|
|
5
|
+
class Organizations
|
|
6
|
+
# @return [Sentdm::Resources::Organizations::Users]
|
|
7
|
+
attr_reader :users
|
|
8
|
+
|
|
9
|
+
# Retrieves all organizations that the authenticated user has access to, including
|
|
10
|
+
# the sender profiles within each organization that the user can access. Returns
|
|
11
|
+
# organization details with nested profiles filtered by user permissions.
|
|
12
|
+
#
|
|
13
|
+
# @overload list(request_options: {})
|
|
14
|
+
#
|
|
15
|
+
# @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
16
|
+
#
|
|
17
|
+
# @return [Sentdm::Models::OrganizationListResponse]
|
|
18
|
+
#
|
|
19
|
+
# @see Sentdm::Models::OrganizationListParams
|
|
20
|
+
def list(params = {})
|
|
21
|
+
@client.request(
|
|
22
|
+
method: :get,
|
|
23
|
+
path: "v2/organizations",
|
|
24
|
+
model: Sentdm::Models::OrganizationListResponse,
|
|
25
|
+
options: params[:request_options]
|
|
26
|
+
)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Retrieves all sender profiles within an organization that the authenticated user
|
|
30
|
+
# has access to. Returns filtered list based on user's permissions.
|
|
31
|
+
#
|
|
32
|
+
# @overload retrieve_profiles(org_id, request_options: {})
|
|
33
|
+
#
|
|
34
|
+
# @param org_id [String]
|
|
35
|
+
# @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
36
|
+
#
|
|
37
|
+
# @return [Sentdm::Models::OrganizationRetrieveProfilesResponse]
|
|
38
|
+
#
|
|
39
|
+
# @see Sentdm::Models::OrganizationRetrieveProfilesParams
|
|
40
|
+
def retrieve_profiles(org_id, params = {})
|
|
41
|
+
@client.request(
|
|
42
|
+
method: :get,
|
|
43
|
+
path: ["v2/organizations/%1$s/profiles", org_id],
|
|
44
|
+
model: Sentdm::Models::OrganizationRetrieveProfilesResponse,
|
|
45
|
+
options: params[:request_options]
|
|
46
|
+
)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# @api private
|
|
50
|
+
#
|
|
51
|
+
# @param client [Sentdm::Client]
|
|
52
|
+
def initialize(client:)
|
|
53
|
+
@client = client
|
|
54
|
+
@users = Sentdm::Resources::Organizations::Users.new(client: client)
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Sentdm
|
|
4
|
+
module Resources
|
|
5
|
+
class Templates
|
|
6
|
+
# Some parameter documentations has been truncated, see
|
|
7
|
+
# {Sentdm::Models::TemplateCreateParams} for more details.
|
|
8
|
+
#
|
|
9
|
+
# Creates a new message template for the authenticated customer with comprehensive
|
|
10
|
+
# template definitions including headers, body, footer, and interactive buttons.
|
|
11
|
+
# Supports automatic metadata generation using AI (display name, language,
|
|
12
|
+
# category). Optionally submits the template for WhatsApp review. The customer ID
|
|
13
|
+
# is extracted from the authentication token.
|
|
14
|
+
#
|
|
15
|
+
# @overload create(definition:, category: nil, language: nil, submit_for_review: nil, request_options: {})
|
|
16
|
+
#
|
|
17
|
+
# @param definition [Sentdm::Models::TemplateDefinition] Template definition containing header, body, footer, and buttons
|
|
18
|
+
#
|
|
19
|
+
# @param category [String, nil] The template category (e.g., MARKETING, UTILITY, AUTHENTICATION). Can only be se
|
|
20
|
+
#
|
|
21
|
+
# @param language [String, nil] The template language code (e.g., en_US, es_ES). Can only be set when creating a
|
|
22
|
+
#
|
|
23
|
+
# @param submit_for_review [Boolean] When false, the template will be saved as draft.
|
|
24
|
+
#
|
|
25
|
+
# @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
26
|
+
#
|
|
27
|
+
# @return [Sentdm::Models::TemplateResponse]
|
|
28
|
+
#
|
|
29
|
+
# @see Sentdm::Models::TemplateCreateParams
|
|
30
|
+
def create(params)
|
|
31
|
+
parsed, options = Sentdm::TemplateCreateParams.dump_request(params)
|
|
32
|
+
@client.request(
|
|
33
|
+
method: :post,
|
|
34
|
+
path: "v2/templates",
|
|
35
|
+
body: parsed,
|
|
36
|
+
model: Sentdm::TemplateResponse,
|
|
37
|
+
options: options
|
|
38
|
+
)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Retrieves a specific message template by its unique identifier for the
|
|
42
|
+
# authenticated customer with comprehensive template definitions including
|
|
43
|
+
# headers, body, footer, and interactive buttons. The customer ID is extracted
|
|
44
|
+
# from the authentication token.
|
|
45
|
+
#
|
|
46
|
+
# @overload retrieve(id, request_options: {})
|
|
47
|
+
#
|
|
48
|
+
# @param id [String]
|
|
49
|
+
# @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
50
|
+
#
|
|
51
|
+
# @return [Sentdm::Models::TemplateResponse]
|
|
52
|
+
#
|
|
53
|
+
# @see Sentdm::Models::TemplateRetrieveParams
|
|
54
|
+
def retrieve(id, params = {})
|
|
55
|
+
@client.request(
|
|
56
|
+
method: :get,
|
|
57
|
+
path: ["v2/templates/%1$s", id],
|
|
58
|
+
model: Sentdm::TemplateResponse,
|
|
59
|
+
options: params[:request_options]
|
|
60
|
+
)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# Retrieves all message templates available for the authenticated customer with
|
|
64
|
+
# comprehensive template definitions including headers, body, footer, and
|
|
65
|
+
# interactive buttons. Supports advanced filtering by search term, status, and
|
|
66
|
+
# category, plus pagination. The customer ID is extracted from the authentication
|
|
67
|
+
# token.
|
|
68
|
+
#
|
|
69
|
+
# @overload list(page:, page_size:, category: nil, search: nil, status: nil, request_options: {})
|
|
70
|
+
#
|
|
71
|
+
# @param page [Integer] The page number (zero-indexed). Default is 0.
|
|
72
|
+
#
|
|
73
|
+
# @param page_size [Integer] The number of items per page (1-1000). Default is 100.
|
|
74
|
+
#
|
|
75
|
+
# @param category [String, nil] Optional filter by template category (e.g., MARKETING, UTILITY, AUTHENTICATION)
|
|
76
|
+
#
|
|
77
|
+
# @param search [String, nil] Optional search term to filter templates by name or content
|
|
78
|
+
#
|
|
79
|
+
# @param status [String, nil] Optional filter by template status (e.g., APPROVED, PENDING, REJECTED, DRAFT)
|
|
80
|
+
#
|
|
81
|
+
# @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
82
|
+
#
|
|
83
|
+
# @return [Sentdm::Models::TemplateListResponse]
|
|
84
|
+
#
|
|
85
|
+
# @see Sentdm::Models::TemplateListParams
|
|
86
|
+
def list(params)
|
|
87
|
+
parsed, options = Sentdm::TemplateListParams.dump_request(params)
|
|
88
|
+
@client.request(
|
|
89
|
+
method: :get,
|
|
90
|
+
path: "v2/templates",
|
|
91
|
+
query: parsed.transform_keys(page_size: "pageSize"),
|
|
92
|
+
model: Sentdm::Models::TemplateListResponse,
|
|
93
|
+
options: options
|
|
94
|
+
)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# Deletes a specific message template by its unique identifier for the
|
|
98
|
+
# authenticated customer with smart deletion strategy. Deletion behavior: - If
|
|
99
|
+
# template has NO messages: Permanently deleted from database (hard delete). - If
|
|
100
|
+
# template has messages: Marked as deleted but preserved for message history (soft
|
|
101
|
+
# delete with snapshot). The template must exist and belong to the authenticated
|
|
102
|
+
# customer to be deleted successfully. The customer ID is extracted from the
|
|
103
|
+
# authentication token.
|
|
104
|
+
#
|
|
105
|
+
# @overload delete(id, request_options: {})
|
|
106
|
+
#
|
|
107
|
+
# @param id [String] The unique identifier (GUID) of the resource to retrieve
|
|
108
|
+
#
|
|
109
|
+
# @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
110
|
+
#
|
|
111
|
+
# @return [nil]
|
|
112
|
+
#
|
|
113
|
+
# @see Sentdm::Models::TemplateDeleteParams
|
|
114
|
+
def delete(id, params = {})
|
|
115
|
+
@client.request(
|
|
116
|
+
method: :delete,
|
|
117
|
+
path: ["v2/templates/%1$s", id],
|
|
118
|
+
model: NilClass,
|
|
119
|
+
options: params[:request_options]
|
|
120
|
+
)
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# @api private
|
|
124
|
+
#
|
|
125
|
+
# @param client [Sentdm::Client]
|
|
126
|
+
def initialize(client:)
|
|
127
|
+
@client = client
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
end
|