sentdm 0.3.0 → 0.4.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.
Files changed (217) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +24 -0
  3. data/README.md +18 -9
  4. data/lib/sentdm/client.rb +7 -0
  5. data/lib/sentdm/internal/util.rb +31 -0
  6. data/lib/sentdm/models/api_meta.rb +1 -9
  7. data/lib/sentdm/models/brand_data.rb +235 -198
  8. data/lib/sentdm/models/brand_with_kyc.rb +249 -214
  9. data/lib/sentdm/models/brands/api_response_tcr_campaign_with_use_cases.rb +0 -1
  10. data/lib/sentdm/models/contact_create_params.rb +13 -6
  11. data/lib/sentdm/models/contact_delete_params.rb +15 -1
  12. data/lib/sentdm/models/contact_list_params.rb +10 -2
  13. data/lib/sentdm/models/contact_retrieve_params.rb +13 -1
  14. data/lib/sentdm/models/contact_update_params.rb +20 -6
  15. data/lib/sentdm/models/me_retrieve_params.rb +7 -1
  16. data/lib/sentdm/models/me_retrieve_response.rb +152 -7
  17. data/lib/sentdm/models/message_retrieve_activities_params.rb +13 -1
  18. data/lib/sentdm/models/message_retrieve_activities_response.rb +19 -5
  19. data/lib/sentdm/models/message_retrieve_status_params.rb +13 -1
  20. data/lib/sentdm/models/message_retrieve_status_response.rb +8 -1
  21. data/lib/sentdm/models/message_send_params.rb +17 -10
  22. data/lib/sentdm/models/mutation_request.rb +6 -6
  23. data/lib/sentdm/models/profile_complete_params.rb +20 -6
  24. data/lib/sentdm/models/profile_create_params.rb +192 -10
  25. data/lib/sentdm/models/profile_delete_params.rb +21 -14
  26. data/lib/sentdm/models/profile_detail.rb +144 -95
  27. data/lib/sentdm/models/profile_list_params.rb +7 -1
  28. data/lib/sentdm/models/profile_retrieve_params.rb +13 -1
  29. data/lib/sentdm/models/profile_update_params.rb +146 -19
  30. data/lib/sentdm/models/template_create_params.rb +17 -10
  31. data/lib/sentdm/models/template_delete_params.rb +20 -6
  32. data/lib/sentdm/models/template_list_params.rb +18 -2
  33. data/lib/sentdm/models/template_retrieve_params.rb +13 -1
  34. data/lib/sentdm/models/template_update_params.rb +24 -10
  35. data/lib/sentdm/models/template_variable.rb +7 -1
  36. data/lib/sentdm/models/user_invite_params.rb +13 -6
  37. data/lib/sentdm/models/user_list_params.rb +7 -1
  38. data/lib/sentdm/models/user_remove_params.rb +20 -13
  39. data/lib/sentdm/models/user_retrieve_params.rb +13 -1
  40. data/lib/sentdm/models/user_update_role_params.rb +19 -13
  41. data/lib/sentdm/models/webhook_create_params.rb +13 -6
  42. data/lib/sentdm/models/webhook_delete_params.rb +13 -1
  43. data/lib/sentdm/models/webhook_list_event_types_params.rb +7 -1
  44. data/lib/sentdm/models/webhook_list_events_params.rb +13 -1
  45. data/lib/sentdm/models/webhook_list_params.rb +7 -1
  46. data/lib/sentdm/models/webhook_retrieve_params.rb +13 -1
  47. data/lib/sentdm/models/webhook_rotate_secret_params.rb +13 -1
  48. data/lib/sentdm/models/webhook_test_params.rb +20 -6
  49. data/lib/sentdm/models/webhook_toggle_status_params.rb +20 -6
  50. data/lib/sentdm/models/webhook_update_params.rb +20 -6
  51. data/lib/sentdm/models.rb +0 -12
  52. data/lib/sentdm/resources/brands/campaigns.rb +0 -128
  53. data/lib/sentdm/resources/brands.rb +0 -110
  54. data/lib/sentdm/resources/contacts.rb +44 -19
  55. data/lib/sentdm/resources/lookup.rb +0 -21
  56. data/lib/sentdm/resources/me.rb +25 -5
  57. data/lib/sentdm/resources/messages.rb +25 -8
  58. data/lib/sentdm/resources/profiles.rb +117 -32
  59. data/lib/sentdm/resources/templates.rb +48 -23
  60. data/lib/sentdm/resources/users.rb +41 -23
  61. data/lib/sentdm/resources/webhooks.rb +93 -32
  62. data/lib/sentdm/version.rb +1 -1
  63. data/lib/sentdm.rb +1 -14
  64. data/rbi/sentdm/client.rbi +7 -0
  65. data/rbi/sentdm/internal/util.rbi +20 -0
  66. data/rbi/sentdm/models/api_meta.rbi +4 -18
  67. data/rbi/sentdm/models/brand_data.rbi +326 -203
  68. data/rbi/sentdm/models/brand_with_kyc.rbi +334 -216
  69. data/rbi/sentdm/models/brands/tcr_campaign_with_use_cases.rbi +6 -8
  70. data/rbi/sentdm/models/contact_create_params.rbi +19 -10
  71. data/rbi/sentdm/models/contact_delete_params.rbi +15 -0
  72. data/rbi/sentdm/models/contact_list_params.rbi +11 -0
  73. data/rbi/sentdm/models/contact_retrieve_params.rbi +24 -5
  74. data/rbi/sentdm/models/contact_update_params.rbi +25 -10
  75. data/rbi/sentdm/models/me_retrieve_params.rbi +16 -5
  76. data/rbi/sentdm/models/me_retrieve_response.rbi +316 -16
  77. data/rbi/sentdm/models/message_retrieve_activities_params.rbi +24 -5
  78. data/rbi/sentdm/models/message_retrieve_activities_response.rbi +18 -6
  79. data/rbi/sentdm/models/message_retrieve_status_params.rbi +24 -5
  80. data/rbi/sentdm/models/message_retrieve_status_response.rbi +6 -0
  81. data/rbi/sentdm/models/message_send_params.rbi +22 -13
  82. data/rbi/sentdm/models/mutation_request.rbi +10 -10
  83. data/rbi/sentdm/models/profile_complete_params.rbi +25 -10
  84. data/rbi/sentdm/models/profile_create_params.rbi +323 -15
  85. data/rbi/sentdm/models/profile_delete_params.rbi +38 -20
  86. data/rbi/sentdm/models/profile_detail.rbi +184 -128
  87. data/rbi/sentdm/models/profile_list_params.rbi +16 -5
  88. data/rbi/sentdm/models/profile_retrieve_params.rbi +24 -5
  89. data/rbi/sentdm/models/profile_update_params.rbi +233 -26
  90. data/rbi/sentdm/models/template_create_params.rbi +22 -13
  91. data/rbi/sentdm/models/template_delete_params.rbi +25 -10
  92. data/rbi/sentdm/models/template_list_params.rbi +19 -0
  93. data/rbi/sentdm/models/template_retrieve_params.rbi +24 -5
  94. data/rbi/sentdm/models/template_update_params.rbi +28 -13
  95. data/rbi/sentdm/models/template_variable.rbi +6 -0
  96. data/rbi/sentdm/models/user_invite_params.rbi +19 -10
  97. data/rbi/sentdm/models/user_list_params.rbi +16 -5
  98. data/rbi/sentdm/models/user_remove_params.rbi +37 -19
  99. data/rbi/sentdm/models/user_retrieve_params.rbi +24 -5
  100. data/rbi/sentdm/models/user_update_role_params.rbi +25 -21
  101. data/rbi/sentdm/models/webhook_create_params.rbi +19 -10
  102. data/rbi/sentdm/models/webhook_delete_params.rbi +24 -5
  103. data/rbi/sentdm/models/webhook_list_event_types_params.rbi +16 -5
  104. data/rbi/sentdm/models/webhook_list_events_params.rbi +21 -1
  105. data/rbi/sentdm/models/webhook_list_params.rbi +9 -0
  106. data/rbi/sentdm/models/webhook_retrieve_params.rbi +24 -5
  107. data/rbi/sentdm/models/webhook_rotate_secret_params.rbi +20 -1
  108. data/rbi/sentdm/models/webhook_test_params.rbi +25 -10
  109. data/rbi/sentdm/models/webhook_toggle_status_params.rbi +25 -10
  110. data/rbi/sentdm/models/webhook_update_params.rbi +25 -10
  111. data/rbi/sentdm/models.rbi +0 -12
  112. data/rbi/sentdm/resources/brands/campaigns.rbi +0 -94
  113. data/rbi/sentdm/resources/brands.rbi +0 -78
  114. data/rbi/sentdm/resources/contacts.rbi +38 -12
  115. data/rbi/sentdm/resources/lookup.rbi +0 -12
  116. data/rbi/sentdm/resources/me.rbi +26 -7
  117. data/rbi/sentdm/resources/messages.rbi +18 -4
  118. data/rbi/sentdm/resources/profiles.rbi +179 -38
  119. data/rbi/sentdm/resources/templates.rbi +48 -19
  120. data/rbi/sentdm/resources/users.rbi +48 -25
  121. data/rbi/sentdm/resources/webhooks.rbi +93 -20
  122. data/sig/sentdm/internal/util.rbs +10 -0
  123. data/sig/sentdm/models/api_meta.rbs +2 -16
  124. data/sig/sentdm/models/brand_data.rbs +188 -142
  125. data/sig/sentdm/models/brand_with_kyc.rbs +184 -133
  126. data/sig/sentdm/models/contact_create_params.rbs +16 -5
  127. data/sig/sentdm/models/contact_delete_params.rbs +15 -1
  128. data/sig/sentdm/models/contact_list_params.rbs +8 -1
  129. data/sig/sentdm/models/contact_retrieve_params.rbs +18 -3
  130. data/sig/sentdm/models/contact_update_params.rbs +18 -6
  131. data/sig/sentdm/models/me_retrieve_params.rbs +14 -3
  132. data/sig/sentdm/models/me_retrieve_response.rbs +134 -7
  133. data/sig/sentdm/models/message_retrieve_activities_params.rbs +18 -3
  134. data/sig/sentdm/models/message_retrieve_activities_response.rbs +9 -4
  135. data/sig/sentdm/models/message_retrieve_status_params.rbs +18 -3
  136. data/sig/sentdm/models/message_retrieve_status_response.rbs +5 -0
  137. data/sig/sentdm/models/message_send_params.rbs +15 -8
  138. data/sig/sentdm/models/mutation_request.rbs +5 -5
  139. data/sig/sentdm/models/profile_complete_params.rbs +21 -5
  140. data/sig/sentdm/models/profile_create_params.rbs +111 -7
  141. data/sig/sentdm/models/profile_delete_params.rbs +23 -9
  142. data/sig/sentdm/models/profile_detail.rbs +105 -84
  143. data/sig/sentdm/models/profile_list_params.rbs +14 -3
  144. data/sig/sentdm/models/profile_retrieve_params.rbs +18 -3
  145. data/sig/sentdm/models/profile_update_params.rbs +87 -13
  146. data/sig/sentdm/models/template_create_params.rbs +15 -8
  147. data/sig/sentdm/models/template_delete_params.rbs +20 -5
  148. data/sig/sentdm/models/template_list_params.rbs +13 -1
  149. data/sig/sentdm/models/template_retrieve_params.rbs +18 -3
  150. data/sig/sentdm/models/template_update_params.rbs +20 -8
  151. data/sig/sentdm/models/template_variable.rbs +5 -0
  152. data/sig/sentdm/models/user_invite_params.rbs +13 -6
  153. data/sig/sentdm/models/user_list_params.rbs +14 -3
  154. data/sig/sentdm/models/user_remove_params.rbs +23 -9
  155. data/sig/sentdm/models/user_retrieve_params.rbs +18 -3
  156. data/sig/sentdm/models/user_update_role_params.rbs +18 -13
  157. data/sig/sentdm/models/webhook_create_params.rbs +13 -6
  158. data/sig/sentdm/models/webhook_delete_params.rbs +18 -3
  159. data/sig/sentdm/models/webhook_list_event_types_params.rbs +13 -3
  160. data/sig/sentdm/models/webhook_list_events_params.rbs +17 -1
  161. data/sig/sentdm/models/webhook_list_params.rbs +13 -1
  162. data/sig/sentdm/models/webhook_retrieve_params.rbs +18 -3
  163. data/sig/sentdm/models/webhook_rotate_secret_params.rbs +16 -1
  164. data/sig/sentdm/models/webhook_test_params.rbs +21 -5
  165. data/sig/sentdm/models/webhook_toggle_status_params.rbs +21 -5
  166. data/sig/sentdm/models/webhook_update_params.rbs +18 -6
  167. data/sig/sentdm/models.rbs +0 -12
  168. data/sig/sentdm/resources/brands/campaigns.rbs +0 -29
  169. data/sig/sentdm/resources/brands.rbs +0 -25
  170. data/sig/sentdm/resources/contacts.rbs +7 -2
  171. data/sig/sentdm/resources/lookup.rbs +0 -5
  172. data/sig/sentdm/resources/me.rbs +1 -0
  173. data/sig/sentdm/resources/messages.rbs +4 -1
  174. data/sig/sentdm/resources/profiles.rbs +19 -8
  175. data/sig/sentdm/resources/templates.rbs +9 -3
  176. data/sig/sentdm/resources/users.rbs +10 -7
  177. data/sig/sentdm/resources/webhooks.rbs +18 -5
  178. metadata +2 -41
  179. data/lib/sentdm/models/api_response_brand_with_kyc.rb +0 -43
  180. data/lib/sentdm/models/brand_create_params.rb +0 -41
  181. data/lib/sentdm/models/brand_delete_params.rb +0 -27
  182. data/lib/sentdm/models/brand_list_params.rb +0 -14
  183. data/lib/sentdm/models/brand_list_response.rb +0 -43
  184. data/lib/sentdm/models/brand_update_params.rb +0 -41
  185. data/lib/sentdm/models/brands/campaign_create_params.rb +0 -43
  186. data/lib/sentdm/models/brands/campaign_delete_params.rb +0 -36
  187. data/lib/sentdm/models/brands/campaign_list_params.rb +0 -16
  188. data/lib/sentdm/models/brands/campaign_list_response.rb +0 -47
  189. data/lib/sentdm/models/brands/campaign_update_params.rb +0 -50
  190. data/lib/sentdm/models/lookup_retrieve_phone_info_params.rb +0 -14
  191. data/lib/sentdm/models/lookup_retrieve_phone_info_response.rb +0 -104
  192. data/rbi/sentdm/models/api_response_brand_with_kyc.rbi +0 -74
  193. data/rbi/sentdm/models/brand_create_params.rbi +0 -68
  194. data/rbi/sentdm/models/brand_delete_params.rbi +0 -62
  195. data/rbi/sentdm/models/brand_list_params.rbi +0 -27
  196. data/rbi/sentdm/models/brand_list_response.rbi +0 -71
  197. data/rbi/sentdm/models/brand_update_params.rbi +0 -68
  198. data/rbi/sentdm/models/brands/campaign_create_params.rbi +0 -73
  199. data/rbi/sentdm/models/brands/campaign_delete_params.rbi +0 -78
  200. data/rbi/sentdm/models/brands/campaign_list_params.rbi +0 -29
  201. data/rbi/sentdm/models/brands/campaign_list_response.rbi +0 -82
  202. data/rbi/sentdm/models/brands/campaign_update_params.rbi +0 -79
  203. data/rbi/sentdm/models/lookup_retrieve_phone_info_params.rbi +0 -30
  204. data/rbi/sentdm/models/lookup_retrieve_phone_info_response.rbi +0 -183
  205. data/sig/sentdm/models/api_response_brand_with_kyc.rbs +0 -39
  206. data/sig/sentdm/models/brand_create_params.rbs +0 -36
  207. data/sig/sentdm/models/brand_delete_params.rbs +0 -32
  208. data/sig/sentdm/models/brand_list_params.rbs +0 -14
  209. data/sig/sentdm/models/brand_list_response.rbs +0 -39
  210. data/sig/sentdm/models/brand_update_params.rbs +0 -36
  211. data/sig/sentdm/models/brands/campaign_create_params.rbs +0 -42
  212. data/sig/sentdm/models/brands/campaign_delete_params.rbs +0 -38
  213. data/sig/sentdm/models/brands/campaign_list_params.rbs +0 -17
  214. data/sig/sentdm/models/brands/campaign_list_response.rbs +0 -41
  215. data/sig/sentdm/models/brands/campaign_update_params.rbs +0 -47
  216. data/sig/sentdm/models/lookup_retrieve_phone_info_params.rbs +0 -15
  217. data/sig/sentdm/models/lookup_retrieve_phone_info_response.rbs +0 -102
@@ -2,32 +2,46 @@
2
2
 
3
3
  module Sentdm
4
4
  module Resources
5
+ # Invite, update, and manage organization users and roles
5
6
  class Users
7
+ # Some parameter documentations has been truncated, see
8
+ # {Sentdm::Models::UserRetrieveParams} for more details.
9
+ #
6
10
  # Retrieves detailed information about a specific user in an organization or
7
11
  # profile. Requires developer role or higher.
8
12
  #
9
- # @overload retrieve(user_id, request_options: {})
13
+ # @overload retrieve(user_id, x_profile_id: nil, request_options: {})
10
14
  #
11
15
  # @param user_id [String]
16
+ #
17
+ # @param x_profile_id [String] Profile UUID to scope the request to a child profile. Only organization API keys
18
+ #
12
19
  # @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
13
20
  #
14
21
  # @return [Sentdm::Models::APIResponseOfUser]
15
22
  #
16
23
  # @see Sentdm::Models::UserRetrieveParams
17
24
  def retrieve(user_id, params = {})
25
+ parsed, options = Sentdm::UserRetrieveParams.dump_request(params)
18
26
  @client.request(
19
27
  method: :get,
20
28
  path: ["v3/users/%1$s", user_id],
29
+ headers: parsed.transform_keys(x_profile_id: "x-profile-id"),
21
30
  model: Sentdm::APIResponseOfUser,
22
- options: params[:request_options]
31
+ options: options
23
32
  )
24
33
  end
25
34
 
35
+ # Some parameter documentations has been truncated, see
36
+ # {Sentdm::Models::UserListParams} for more details.
37
+ #
26
38
  # Retrieves all users who have access to the organization or profile identified by
27
39
  # the API key, including their roles and status. Shows invited users (pending
28
40
  # acceptance) and active users. Requires developer role or higher.
29
41
  #
30
- # @overload list(request_options: {})
42
+ # @overload list(x_profile_id: nil, request_options: {})
43
+ #
44
+ # @param x_profile_id [String] Profile UUID to scope the request to a child profile. Only organization API keys
31
45
  #
32
46
  # @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
33
47
  #
@@ -35,11 +49,13 @@ module Sentdm
35
49
  #
36
50
  # @see Sentdm::Models::UserListParams
37
51
  def list(params = {})
52
+ parsed, options = Sentdm::UserListParams.dump_request(params)
38
53
  @client.request(
39
54
  method: :get,
40
55
  path: "v3/users",
56
+ headers: parsed.transform_keys(x_profile_id: "x-profile-id"),
41
57
  model: Sentdm::Models::UserListResponse,
42
- options: params[:request_options]
58
+ options: options
43
59
  )
44
60
  end
45
61
 
@@ -50,7 +66,7 @@ module Sentdm
50
66
  # specific role. Requires admin role. The user will receive an invitation email
51
67
  # with a token to accept. Invitation tokens expire after 7 days.
52
68
  #
53
- # @overload invite(email: nil, name: nil, role: nil, test_mode: nil, idempotency_key: nil, request_options: {})
69
+ # @overload invite(email: nil, name: nil, role: nil, sandbox: nil, idempotency_key: nil, x_profile_id: nil, request_options: {})
54
70
  #
55
71
  # @param email [String] Body param: User email address (required)
56
72
  #
@@ -58,10 +74,12 @@ module Sentdm
58
74
  #
59
75
  # @param role [String] Body param: User role: admin, billing, or developer (required)
60
76
  #
61
- # @param test_mode [Boolean] Body param: Test mode flag - when true, the operation is simulated without side
77
+ # @param sandbox [Boolean] Body param: Sandbox flag - when true, the operation is simulated without side ef
62
78
  #
63
79
  # @param idempotency_key [String] Header param: Unique key to ensure idempotent request processing. Must be 1-255
64
80
  #
81
+ # @param x_profile_id [String] Header param: Profile UUID to scope the request to a child profile. Only organiz
82
+ #
65
83
  # @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
66
84
  #
67
85
  # @return [Sentdm::Models::APIResponseOfUser]
@@ -69,7 +87,7 @@ module Sentdm
69
87
  # @see Sentdm::Models::UserInviteParams
70
88
  def invite(params = {})
71
89
  parsed, options = Sentdm::UserInviteParams.dump_request(params)
72
- header_params = {idempotency_key: "idempotency-key"}
90
+ header_params = {idempotency_key: "idempotency-key", x_profile_id: "x-profile-id"}
73
91
  @client.request(
74
92
  method: :post,
75
93
  path: "v3/users",
@@ -86,26 +104,26 @@ module Sentdm
86
104
  # Removes a user's access to an organization or profile. Requires admin role. You
87
105
  # cannot remove yourself or remove the last admin.
88
106
  #
89
- # @overload remove(path_user_id, test_mode: nil, body_user_id: nil, request_options: {})
107
+ # @overload remove(user_id, body:, x_profile_id: nil, request_options: {})
90
108
  #
91
- # @param path_user_id [String]
109
+ # @param user_id [String] Path param
92
110
  #
93
- # @param test_mode [Boolean] Test mode flag - when true, the operation is simulated without side effects
111
+ # @param body [Sentdm::Models::UserRemoveParams::Body] Body param: Request to remove a user from an organization
94
112
  #
95
- # @param body_user_id [String] User ID from route parameter
113
+ # @param x_profile_id [String] Header param: Profile UUID to scope the request to a child profile. Only organiz
96
114
  #
97
115
  # @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
98
116
  #
99
117
  # @return [nil]
100
118
  #
101
119
  # @see Sentdm::Models::UserRemoveParams
102
- def remove(path_user_id, params = {})
120
+ def remove(user_id, params)
103
121
  parsed, options = Sentdm::UserRemoveParams.dump_request(params)
104
122
  @client.request(
105
123
  method: :delete,
106
- path: ["v3/users/%1$s", path_user_id],
107
- headers: {"content-type" => "*/*"},
108
- body: parsed,
124
+ path: ["v3/users/%1$s", user_id],
125
+ headers: parsed.except(:body).transform_keys(x_profile_id: "x-profile-id"),
126
+ body: parsed[:body],
109
127
  model: NilClass,
110
128
  options: options
111
129
  )
@@ -117,29 +135,29 @@ module Sentdm
117
135
  # Updates a user's role in the organization or profile. Requires admin role. You
118
136
  # cannot change your own role or demote the last admin.
119
137
  #
120
- # @overload update_role(path_user_id, role: nil, test_mode: nil, body_user_id: nil, idempotency_key: nil, request_options: {})
138
+ # @overload update_role(user_id, role: nil, sandbox: nil, idempotency_key: nil, x_profile_id: nil, request_options: {})
121
139
  #
122
- # @param path_user_id [String] Path param
140
+ # @param user_id [String] Path param
123
141
  #
124
142
  # @param role [String] Body param: User role: admin, billing, or developer (required)
125
143
  #
126
- # @param test_mode [Boolean] Body param: Test mode flag - when true, the operation is simulated without side
127
- #
128
- # @param body_user_id [String] Body param: User ID from route parameter
144
+ # @param sandbox [Boolean] Body param: Sandbox flag - when true, the operation is simulated without side ef
129
145
  #
130
146
  # @param idempotency_key [String] Header param: Unique key to ensure idempotent request processing. Must be 1-255
131
147
  #
148
+ # @param x_profile_id [String] Header param: Profile UUID to scope the request to a child profile. Only organiz
149
+ #
132
150
  # @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
133
151
  #
134
152
  # @return [Sentdm::Models::APIResponseOfUser]
135
153
  #
136
154
  # @see Sentdm::Models::UserUpdateRoleParams
137
- def update_role(path_user_id, params = {})
155
+ def update_role(user_id, params = {})
138
156
  parsed, options = Sentdm::UserUpdateRoleParams.dump_request(params)
139
- header_params = {idempotency_key: "idempotency-key"}
157
+ header_params = {idempotency_key: "idempotency-key", x_profile_id: "x-profile-id"}
140
158
  @client.request(
141
159
  method: :patch,
142
- path: ["v3/users/%1$s", path_user_id],
160
+ path: ["v3/users/%1$s", user_id],
143
161
  headers: parsed.slice(*header_params.keys).transform_keys(header_params),
144
162
  body: parsed.except(*header_params.keys),
145
163
  model: Sentdm::APIResponseOfUser,
@@ -2,13 +2,14 @@
2
2
 
3
3
  module Sentdm
4
4
  module Resources
5
+ # Configure webhook endpoints for real-time event delivery
5
6
  class Webhooks
6
7
  # Some parameter documentations has been truncated, see
7
8
  # {Sentdm::Models::WebhookCreateParams} for more details.
8
9
  #
9
10
  # Creates a new webhook endpoint for the authenticated customer.
10
11
  #
11
- # @overload create(display_name: nil, endpoint_url: nil, event_types: nil, retry_count: nil, test_mode: nil, timeout_seconds: nil, idempotency_key: nil, request_options: {})
12
+ # @overload create(display_name: nil, endpoint_url: nil, event_types: nil, retry_count: nil, sandbox: nil, timeout_seconds: nil, idempotency_key: nil, x_profile_id: nil, request_options: {})
12
13
  #
13
14
  # @param display_name [String] Body param
14
15
  #
@@ -18,12 +19,14 @@ module Sentdm
18
19
  #
19
20
  # @param retry_count [Integer] Body param
20
21
  #
21
- # @param test_mode [Boolean] Body param: Test mode flag - when true, the operation is simulated without side
22
+ # @param sandbox [Boolean] Body param: Sandbox flag - when true, the operation is simulated without side ef
22
23
  #
23
24
  # @param timeout_seconds [Integer] Body param
24
25
  #
25
26
  # @param idempotency_key [String] Header param: Unique key to ensure idempotent request processing. Must be 1-255
26
27
  #
28
+ # @param x_profile_id [String] Header param: Profile UUID to scope the request to a child profile. Only organiz
29
+ #
27
30
  # @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
28
31
  #
29
32
  # @return [Sentdm::Models::APIResponseWebhook]
@@ -31,7 +34,7 @@ module Sentdm
31
34
  # @see Sentdm::Models::WebhookCreateParams
32
35
  def create(params = {})
33
36
  parsed, options = Sentdm::WebhookCreateParams.dump_request(params)
34
- header_params = {idempotency_key: "idempotency-key"}
37
+ header_params = {idempotency_key: "idempotency-key", x_profile_id: "x-profile-id"}
35
38
  @client.request(
36
39
  method: :post,
37
40
  path: "v3/webhooks",
@@ -42,22 +45,30 @@ module Sentdm
42
45
  )
43
46
  end
44
47
 
48
+ # Some parameter documentations has been truncated, see
49
+ # {Sentdm::Models::WebhookRetrieveParams} for more details.
50
+ #
45
51
  # Retrieves a single webhook by ID for the authenticated customer.
46
52
  #
47
- # @overload retrieve(id, request_options: {})
53
+ # @overload retrieve(id, x_profile_id: nil, request_options: {})
48
54
  #
49
55
  # @param id [String]
56
+ #
57
+ # @param x_profile_id [String] Profile UUID to scope the request to a child profile. Only organization API keys
58
+ #
50
59
  # @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
51
60
  #
52
61
  # @return [Sentdm::Models::APIResponseWebhook]
53
62
  #
54
63
  # @see Sentdm::Models::WebhookRetrieveParams
55
64
  def retrieve(id, params = {})
65
+ parsed, options = Sentdm::WebhookRetrieveParams.dump_request(params)
56
66
  @client.request(
57
67
  method: :get,
58
68
  path: ["v3/webhooks/%1$s", id],
69
+ headers: parsed.transform_keys(x_profile_id: "x-profile-id"),
59
70
  model: Sentdm::APIResponseWebhook,
60
- options: params[:request_options]
71
+ options: options
61
72
  )
62
73
  end
63
74
 
@@ -66,7 +77,7 @@ module Sentdm
66
77
  #
67
78
  # Updates an existing webhook for the authenticated customer.
68
79
  #
69
- # @overload update(id, display_name: nil, endpoint_url: nil, event_types: nil, retry_count: nil, test_mode: nil, timeout_seconds: nil, idempotency_key: nil, request_options: {})
80
+ # @overload update(id, display_name: nil, endpoint_url: nil, event_types: nil, retry_count: nil, sandbox: nil, timeout_seconds: nil, idempotency_key: nil, x_profile_id: nil, request_options: {})
70
81
  #
71
82
  # @param id [String] Path param
72
83
  #
@@ -78,12 +89,14 @@ module Sentdm
78
89
  #
79
90
  # @param retry_count [Integer] Body param
80
91
  #
81
- # @param test_mode [Boolean] Body param: Test mode flag - when true, the operation is simulated without side
92
+ # @param sandbox [Boolean] Body param: Sandbox flag - when true, the operation is simulated without side ef
82
93
  #
83
94
  # @param timeout_seconds [Integer] Body param
84
95
  #
85
96
  # @param idempotency_key [String] Header param: Unique key to ensure idempotent request processing. Must be 1-255
86
97
  #
98
+ # @param x_profile_id [String] Header param: Profile UUID to scope the request to a child profile. Only organiz
99
+ #
87
100
  # @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
88
101
  #
89
102
  # @return [Sentdm::Models::APIResponseWebhook]
@@ -91,7 +104,7 @@ module Sentdm
91
104
  # @see Sentdm::Models::WebhookUpdateParams
92
105
  def update(id, params = {})
93
106
  parsed, options = Sentdm::WebhookUpdateParams.dump_request(params)
94
- header_params = {idempotency_key: "idempotency-key"}
107
+ header_params = {idempotency_key: "idempotency-key", x_profile_id: "x-profile-id"}
95
108
  @client.request(
96
109
  method: :put,
97
110
  path: ["v3/webhooks/%1$s", id],
@@ -102,52 +115,77 @@ module Sentdm
102
115
  )
103
116
  end
104
117
 
118
+ # Some parameter documentations has been truncated, see
119
+ # {Sentdm::Models::WebhookListParams} for more details.
120
+ #
105
121
  # Retrieves a paginated list of webhooks for the authenticated customer.
106
122
  #
107
- # @overload list(page:, page_size:, is_active: nil, search: nil, request_options: {})
123
+ # @overload list(page:, page_size:, is_active: nil, search: nil, x_profile_id: nil, request_options: {})
124
+ #
125
+ # @param page [Integer] Query param
126
+ #
127
+ # @param page_size [Integer] Query param
128
+ #
129
+ # @param is_active [Boolean, nil] Query param
130
+ #
131
+ # @param search [String, nil] Query param
132
+ #
133
+ # @param x_profile_id [String] Header param: Profile UUID to scope the request to a child profile. Only organiz
108
134
  #
109
- # @param page [Integer]
110
- # @param page_size [Integer]
111
- # @param is_active [Boolean, nil]
112
- # @param search [String, nil]
113
135
  # @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
114
136
  #
115
137
  # @return [Sentdm::Models::WebhookListResponse]
116
138
  #
117
139
  # @see Sentdm::Models::WebhookListParams
118
140
  def list(params)
141
+ query_params = [:page, :page_size, :is_active, :search]
119
142
  parsed, options = Sentdm::WebhookListParams.dump_request(params)
143
+ query = Sentdm::Internal::Util.encode_query_params(parsed.slice(*query_params))
120
144
  @client.request(
121
145
  method: :get,
122
146
  path: "v3/webhooks",
123
- query: parsed.transform_keys(page_size: "pageSize", is_active: "isActive"),
147
+ query: query,
148
+ headers: parsed.except(*query_params).transform_keys(x_profile_id: "x-profile-id"),
124
149
  model: Sentdm::Models::WebhookListResponse,
125
150
  options: options
126
151
  )
127
152
  end
128
153
 
154
+ # Some parameter documentations has been truncated, see
155
+ # {Sentdm::Models::WebhookDeleteParams} for more details.
156
+ #
129
157
  # Deletes a webhook for the authenticated customer.
130
158
  #
131
- # @overload delete(id, request_options: {})
159
+ # @overload delete(id, x_profile_id: nil, request_options: {})
132
160
  #
133
161
  # @param id [String]
162
+ #
163
+ # @param x_profile_id [String] Profile UUID to scope the request to a child profile. Only organization API keys
164
+ #
134
165
  # @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
135
166
  #
136
167
  # @return [nil]
137
168
  #
138
169
  # @see Sentdm::Models::WebhookDeleteParams
139
170
  def delete(id, params = {})
171
+ parsed, options = Sentdm::WebhookDeleteParams.dump_request(params)
140
172
  @client.request(
141
173
  method: :delete,
142
174
  path: ["v3/webhooks/%1$s", id],
175
+ headers: parsed.transform_keys(x_profile_id: "x-profile-id"),
143
176
  model: NilClass,
144
- options: params[:request_options]
177
+ options: options
145
178
  )
146
179
  end
147
180
 
181
+ # Some parameter documentations has been truncated, see
182
+ # {Sentdm::Models::WebhookListEventTypesParams} for more details.
183
+ #
148
184
  # Retrieves all available webhook event types that can be subscribed to.
149
185
  #
150
- # @overload list_event_types(request_options: {})
186
+ # @overload list_event_types(x_profile_id: nil, request_options: {})
187
+ #
188
+ # @param x_profile_id [String] Profile UUID to scope the request to a child profile. Only organization API keys
151
189
  #
152
190
  # @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
153
191
  #
@@ -155,33 +193,47 @@ module Sentdm
155
193
  #
156
194
  # @see Sentdm::Models::WebhookListEventTypesParams
157
195
  def list_event_types(params = {})
196
+ parsed, options = Sentdm::WebhookListEventTypesParams.dump_request(params)
158
197
  @client.request(
159
198
  method: :get,
160
199
  path: "v3/webhooks/event-types",
200
+ headers: parsed.transform_keys(x_profile_id: "x-profile-id"),
161
201
  model: Sentdm::Models::WebhookListEventTypesResponse,
162
- options: params[:request_options]
202
+ options: options
163
203
  )
164
204
  end
165
205
 
206
+ # Some parameter documentations has been truncated, see
207
+ # {Sentdm::Models::WebhookListEventsParams} for more details.
208
+ #
166
209
  # Retrieves a paginated list of delivery events for the specified webhook.
167
210
  #
168
- # @overload list_events(id, page:, page_size:, search: nil, request_options: {})
211
+ # @overload list_events(id, page:, page_size:, search: nil, x_profile_id: nil, request_options: {})
212
+ #
213
+ # @param id [String] Path param
214
+ #
215
+ # @param page [Integer] Query param
216
+ #
217
+ # @param page_size [Integer] Query param
218
+ #
219
+ # @param search [String, nil] Query param
220
+ #
221
+ # @param x_profile_id [String] Header param: Profile UUID to scope the request to a child profile. Only organiz
169
222
  #
170
- # @param id [String]
171
- # @param page [Integer]
172
- # @param page_size [Integer]
173
- # @param search [String, nil]
174
223
  # @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
175
224
  #
176
225
  # @return [Sentdm::Models::WebhookListEventsResponse]
177
226
  #
178
227
  # @see Sentdm::Models::WebhookListEventsParams
179
228
  def list_events(id, params)
229
+ query_params = [:page, :page_size, :search]
180
230
  parsed, options = Sentdm::WebhookListEventsParams.dump_request(params)
231
+ query = Sentdm::Internal::Util.encode_query_params(parsed.slice(*query_params))
181
232
  @client.request(
182
233
  method: :get,
183
234
  path: ["v3/webhooks/%1$s/events", id],
184
- query: parsed.transform_keys(page_size: "pageSize"),
235
+ query: query,
236
+ headers: parsed.except(*query_params).transform_keys(x_profile_id: "x-profile-id"),
185
237
  model: Sentdm::Models::WebhookListEventsResponse,
186
238
  options: options
187
239
  )
@@ -193,7 +245,7 @@ module Sentdm
193
245
  # Generates a new signing secret for the specified webhook. The old secret is
194
246
  # immediately invalidated.
195
247
  #
196
- # @overload rotate_secret(id, body:, idempotency_key: nil, request_options: {})
248
+ # @overload rotate_secret(id, body:, idempotency_key: nil, x_profile_id: nil, request_options: {})
197
249
  #
198
250
  # @param id [String] Path param
199
251
  #
@@ -201,6 +253,8 @@ module Sentdm
201
253
  #
202
254
  # @param idempotency_key [String] Header param: Unique key to ensure idempotent request processing. Must be 1-255
203
255
  #
256
+ # @param x_profile_id [String] Header param: Profile UUID to scope the request to a child profile. Only organiz
257
+ #
204
258
  # @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
205
259
  #
206
260
  # @return [Sentdm::Models::WebhookRotateSecretResponse]
@@ -211,7 +265,10 @@ module Sentdm
211
265
  @client.request(
212
266
  method: :post,
213
267
  path: ["v3/webhooks/%1$s/rotate-secret", id],
214
- headers: parsed.except(:body).transform_keys(idempotency_key: "idempotency-key"),
268
+ headers: parsed.except(:body).transform_keys(
269
+ idempotency_key: "idempotency-key",
270
+ x_profile_id: "x-profile-id"
271
+ ),
215
272
  body: parsed[:body],
216
273
  model: Sentdm::Models::WebhookRotateSecretResponse,
217
274
  options: options
@@ -223,16 +280,18 @@ module Sentdm
223
280
  #
224
281
  # Sends a test event to the specified webhook endpoint to verify connectivity.
225
282
  #
226
- # @overload test_(id, event_type: nil, test_mode: nil, idempotency_key: nil, request_options: {})
283
+ # @overload test_(id, event_type: nil, sandbox: nil, idempotency_key: nil, x_profile_id: nil, request_options: {})
227
284
  #
228
285
  # @param id [String] Path param
229
286
  #
230
287
  # @param event_type [String] Body param
231
288
  #
232
- # @param test_mode [Boolean] Body param: Test mode flag - when true, the operation is simulated without side
289
+ # @param sandbox [Boolean] Body param: Sandbox flag - when true, the operation is simulated without side ef
233
290
  #
234
291
  # @param idempotency_key [String] Header param: Unique key to ensure idempotent request processing. Must be 1-255
235
292
  #
293
+ # @param x_profile_id [String] Header param: Profile UUID to scope the request to a child profile. Only organiz
294
+ #
236
295
  # @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
237
296
  #
238
297
  # @return [Sentdm::Models::WebhookTestResponse]
@@ -240,7 +299,7 @@ module Sentdm
240
299
  # @see Sentdm::Models::WebhookTestParams
241
300
  def test_(id, params = {})
242
301
  parsed, options = Sentdm::WebhookTestParams.dump_request(params)
243
- header_params = {idempotency_key: "idempotency-key"}
302
+ header_params = {idempotency_key: "idempotency-key", x_profile_id: "x-profile-id"}
244
303
  @client.request(
245
304
  method: :post,
246
305
  path: ["v3/webhooks/%1$s/test", id],
@@ -256,16 +315,18 @@ module Sentdm
256
315
  #
257
316
  # Activates or deactivates a webhook for the authenticated customer.
258
317
  #
259
- # @overload toggle_status(id, is_active: nil, test_mode: nil, idempotency_key: nil, request_options: {})
318
+ # @overload toggle_status(id, is_active: nil, sandbox: nil, idempotency_key: nil, x_profile_id: nil, request_options: {})
260
319
  #
261
320
  # @param id [String] Path param
262
321
  #
263
322
  # @param is_active [Boolean] Body param
264
323
  #
265
- # @param test_mode [Boolean] Body param: Test mode flag - when true, the operation is simulated without side
324
+ # @param sandbox [Boolean] Body param: Sandbox flag - when true, the operation is simulated without side ef
266
325
  #
267
326
  # @param idempotency_key [String] Header param: Unique key to ensure idempotent request processing. Must be 1-255
268
327
  #
328
+ # @param x_profile_id [String] Header param: Profile UUID to scope the request to a child profile. Only organiz
329
+ #
269
330
  # @param request_options [Sentdm::RequestOptions, Hash{Symbol=>Object}, nil]
270
331
  #
271
332
  # @return [Sentdm::Models::APIResponseWebhook]
@@ -273,7 +334,7 @@ module Sentdm
273
334
  # @see Sentdm::Models::WebhookToggleStatusParams
274
335
  def toggle_status(id, params = {})
275
336
  parsed, options = Sentdm::WebhookToggleStatusParams.dump_request(params)
276
- header_params = {idempotency_key: "idempotency-key"}
337
+ header_params = {idempotency_key: "idempotency-key", x_profile_id: "x-profile-id"}
277
338
  @client.request(
278
339
  method: :patch,
279
340
  path: ["v3/webhooks/%1$s/toggle-status", id],
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sentdm
4
- VERSION = "0.3.0"
4
+ VERSION = "0.4.0"
5
5
  end
data/lib/sentdm.rb CHANGED
@@ -52,32 +52,21 @@ require_relative "sentdm/errors"
52
52
  require_relative "sentdm/internal/transport/base_client"
53
53
  require_relative "sentdm/internal/transport/pooled_net_requester"
54
54
  require_relative "sentdm/client"
55
- require_relative "sentdm/models/mutation_request"
56
55
  require_relative "sentdm/models/brands/base_dto"
56
+ require_relative "sentdm/models/mutation_request"
57
57
  require_relative "sentdm/models/api_error"
58
58
  require_relative "sentdm/models/api_meta"
59
- require_relative "sentdm/models/api_response_brand_with_kyc"
60
59
  require_relative "sentdm/models/api_response_contact"
61
60
  require_relative "sentdm/models/api_response_of_profile_detail"
62
61
  require_relative "sentdm/models/api_response_of_user"
63
62
  require_relative "sentdm/models/api_response_template"
64
63
  require_relative "sentdm/models/api_response_webhook"
65
- require_relative "sentdm/models/brand_create_params"
66
64
  require_relative "sentdm/models/brand_data"
67
- require_relative "sentdm/models/brand_delete_params"
68
- require_relative "sentdm/models/brand_list_params"
69
- require_relative "sentdm/models/brand_list_response"
70
65
  require_relative "sentdm/models/brands/api_response_tcr_campaign_with_use_cases"
71
- require_relative "sentdm/models/brands/campaign_create_params"
72
66
  require_relative "sentdm/models/brands/campaign_data"
73
- require_relative "sentdm/models/brands/campaign_delete_params"
74
- require_relative "sentdm/models/brands/campaign_list_params"
75
- require_relative "sentdm/models/brands/campaign_list_response"
76
- require_relative "sentdm/models/brands/campaign_update_params"
77
67
  require_relative "sentdm/models/brands/messaging_use_case_us"
78
68
  require_relative "sentdm/models/brands/sent_dm_services_endpoints_customer_ap_iv3_contracts_requests_campaigns_campaign_use_case_data"
79
69
  require_relative "sentdm/models/brands/tcr_campaign_with_use_cases"
80
- require_relative "sentdm/models/brand_update_params"
81
70
  require_relative "sentdm/models/brand_with_kyc"
82
71
  require_relative "sentdm/models/contact"
83
72
  require_relative "sentdm/models/contact_create_params"
@@ -87,8 +76,6 @@ require_relative "sentdm/models/contact_list_response"
87
76
  require_relative "sentdm/models/contact_retrieve_params"
88
77
  require_relative "sentdm/models/contact_update_params"
89
78
  require_relative "sentdm/models/destination_country"
90
- require_relative "sentdm/models/lookup_retrieve_phone_info_params"
91
- require_relative "sentdm/models/lookup_retrieve_phone_info_response"
92
79
  require_relative "sentdm/models/me_retrieve_params"
93
80
  require_relative "sentdm/models/me_retrieve_response"
94
81
  require_relative "sentdm/models/message_retrieve_activities_params"
@@ -15,30 +15,37 @@ module Sentdm
15
15
  sig { returns(String) }
16
16
  attr_reader :api_key
17
17
 
18
+ # Configure webhook endpoints for real-time event delivery
18
19
  sig { returns(Sentdm::Resources::Webhooks) }
19
20
  attr_reader :webhooks
20
21
 
22
+ # Invite, update, and manage organization users and roles
21
23
  sig { returns(Sentdm::Resources::Users) }
22
24
  attr_reader :users
23
25
 
26
+ # Manage message templates with variable substitution
24
27
  sig { returns(Sentdm::Resources::Templates) }
25
28
  attr_reader :templates
26
29
 
30
+ # Manage organization profiles
27
31
  sig { returns(Sentdm::Resources::Profiles) }
28
32
  attr_reader :profiles
29
33
 
34
+ # Send and track SMS and WhatsApp messages
30
35
  sig { returns(Sentdm::Resources::Messages) }
31
36
  attr_reader :messages
32
37
 
33
38
  sig { returns(Sentdm::Resources::Lookup) }
34
39
  attr_reader :lookup
35
40
 
41
+ # Create, update, and manage customer contact lists
36
42
  sig { returns(Sentdm::Resources::Contacts) }
37
43
  attr_reader :contacts
38
44
 
39
45
  sig { returns(Sentdm::Resources::Brands) }
40
46
  attr_reader :brands
41
47
 
48
+ # Retrieve account details
42
49
  sig { returns(Sentdm::Resources::Me) }
43
50
  attr_reader :me
44
51
 
@@ -301,6 +301,26 @@ module Sentdm
301
301
  T.let(%r{^application/(:?x-(?:n|l)djson)|(:?(?:x-)?jsonl)}, Regexp)
302
302
 
303
303
  class << self
304
+ # @api private
305
+ sig do
306
+ params(query: Sentdm::Internal::AnyHash).returns(
307
+ Sentdm::Internal::AnyHash
308
+ )
309
+ end
310
+ def encode_query_params(query)
311
+ end
312
+
313
+ # @api private
314
+ sig do
315
+ params(
316
+ collection: Sentdm::Internal::AnyHash,
317
+ key: String,
318
+ element: T.anything
319
+ ).void
320
+ end
321
+ private def write_query_param_element!(collection, key, element)
322
+ end
323
+
304
324
  # @api private
305
325
  sig do
306
326
  params(
@@ -13,10 +13,6 @@ module Sentdm
13
13
  sig { params(request_id: String).void }
14
14
  attr_writer :request_id
15
15
 
16
- # Response time in milliseconds (optional)
17
- sig { returns(T.nilable(Integer)) }
18
- attr_accessor :response_time_ms
19
-
20
16
  # Server timestamp when the response was generated
21
17
  sig { returns(T.nilable(Time)) }
22
18
  attr_reader :timestamp
@@ -33,18 +29,13 @@ module Sentdm
33
29
 
34
30
  # Request and response metadata
35
31
  sig do
36
- params(
37
- request_id: String,
38
- response_time_ms: T.nilable(Integer),
39
- timestamp: Time,
40
- version: String
41
- ).returns(T.attached_class)
32
+ params(request_id: String, timestamp: Time, version: String).returns(
33
+ T.attached_class
34
+ )
42
35
  end
43
36
  def self.new(
44
37
  # Unique identifier for this request (for tracing and support)
45
38
  request_id: nil,
46
- # Response time in milliseconds (optional)
47
- response_time_ms: nil,
48
39
  # Server timestamp when the response was generated
49
40
  timestamp: nil,
50
41
  # API version used for this request
@@ -54,12 +45,7 @@ module Sentdm
54
45
 
55
46
  sig do
56
47
  override.returns(
57
- {
58
- request_id: String,
59
- response_time_ms: T.nilable(Integer),
60
- timestamp: Time,
61
- version: String
62
- }
48
+ { request_id: String, timestamp: Time, version: String }
63
49
  )
64
50
  end
65
51
  def to_hash