sentdm 0.34.0 → 0.36.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 (171) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -0
  3. data/README.md +11 -9
  4. data/lib/sentdm/client.rb +30 -0
  5. data/lib/sentdm/internal/calls_page.rb +115 -0
  6. data/lib/sentdm/models/api_response_of_call.rb +43 -0
  7. data/lib/sentdm/models/api_response_of_call_recordings.rb +43 -0
  8. data/lib/sentdm/models/api_response_of_calls_list.rb +42 -0
  9. data/lib/sentdm/models/call.rb +134 -0
  10. data/lib/sentdm/models/call_event.rb +72 -0
  11. data/lib/sentdm/models/call_event_payload.rb +102 -0
  12. data/lib/sentdm/models/call_hangup_params.rb +32 -0
  13. data/lib/sentdm/models/call_list_params.rb +83 -0
  14. data/lib/sentdm/models/call_list_recordings_params.rb +26 -0
  15. data/lib/sentdm/models/call_party.rb +31 -0
  16. data/lib/sentdm/models/call_record_params.rb +55 -0
  17. data/lib/sentdm/models/call_recording.rb +38 -0
  18. data/lib/sentdm/models/call_recordings.rb +24 -0
  19. data/lib/sentdm/models/call_retrieve_params.rb +26 -0
  20. data/lib/sentdm/models/call_timeline_entry.rb +26 -0
  21. data/lib/sentdm/models/calls/api_response_of_list_of_call_participant.rb +45 -0
  22. data/lib/sentdm/models/calls/call_participant.rb +60 -0
  23. data/lib/sentdm/models/calls/call_participant_target.rb +30 -0
  24. data/lib/sentdm/models/calls/participant_add_params.rb +66 -0
  25. data/lib/sentdm/models/calls/participant_list_params.rb +28 -0
  26. data/lib/sentdm/models/calls/participant_remove_all_params.rb +28 -0
  27. data/lib/sentdm/models/calls/participant_remove_params.rb +34 -0
  28. data/lib/sentdm/models/calls/participant_update_params.rb +64 -0
  29. data/lib/sentdm/models/calls_list.rb +26 -0
  30. data/lib/sentdm/models/channels/api_response_of_list_of_voice_number.rb +45 -0
  31. data/lib/sentdm/models/channels/api_response_of_voice_callback_test.rb +45 -0
  32. data/lib/sentdm/models/channels/api_response_of_voice_number.rb +45 -0
  33. data/lib/sentdm/models/channels/api_response_of_voice_number_created.rb +45 -0
  34. data/lib/sentdm/models/channels/api_response_of_voice_secret.rb +45 -0
  35. data/lib/sentdm/models/channels/api_response_of_voice_token.rb +45 -0
  36. data/lib/sentdm/models/channels/voice_callback_test.rb +65 -0
  37. data/lib/sentdm/models/channels/voice_callback_test_error_info.rb +41 -0
  38. data/lib/sentdm/models/channels/voice_callback_test_request_info.rb +40 -0
  39. data/lib/sentdm/models/channels/voice_callback_test_response_info.rb +28 -0
  40. data/lib/sentdm/models/channels/voice_create_params.rb +86 -0
  41. data/lib/sentdm/models/channels/voice_create_token_params.rb +69 -0
  42. data/lib/sentdm/models/channels/voice_list_params.rb +22 -0
  43. data/lib/sentdm/models/channels/voice_number.rb +68 -0
  44. data/lib/sentdm/models/channels/voice_number_created.rb +26 -0
  45. data/lib/sentdm/models/channels/voice_retrieve_params.rb +28 -0
  46. data/lib/sentdm/models/channels/voice_rotate_secret_params.rb +34 -0
  47. data/lib/sentdm/models/channels/voice_secret.rb +25 -0
  48. data/lib/sentdm/models/channels/voice_test_params.rb +34 -0
  49. data/lib/sentdm/models/channels/voice_token.rb +44 -0
  50. data/lib/sentdm/models/channels/voice_update_params.rb +95 -0
  51. data/lib/sentdm/models/message_event_payload.rb +9 -4
  52. data/lib/sentdm/models/message_retrieve_activities_response.rb +7 -5
  53. data/lib/sentdm/models/webhook_list_events_response.rb +4 -173
  54. data/lib/sentdm/models.rb +36 -0
  55. data/lib/sentdm/resources/calls/participants.rb +231 -0
  56. data/lib/sentdm/resources/calls.rb +236 -0
  57. data/lib/sentdm/resources/channels/voice.rb +381 -0
  58. data/lib/sentdm/resources/channels.rb +45 -0
  59. data/lib/sentdm/resources/messages.rb +10 -4
  60. data/lib/sentdm/version.rb +1 -1
  61. data/lib/sentdm.rb +50 -0
  62. data/rbi/sentdm/client.rbi +28 -0
  63. data/rbi/sentdm/internal/calls_page.rbi +71 -0
  64. data/rbi/sentdm/models/api_response_of_call.rbi +74 -0
  65. data/rbi/sentdm/models/api_response_of_call_recordings.rbi +74 -0
  66. data/rbi/sentdm/models/api_response_of_calls_list.rbi +74 -0
  67. data/rbi/sentdm/models/call.rbi +179 -0
  68. data/rbi/sentdm/models/call_event.rbi +114 -0
  69. data/rbi/sentdm/models/call_event_payload.rbi +135 -0
  70. data/rbi/sentdm/models/call_hangup_params.rbi +59 -0
  71. data/rbi/sentdm/models/call_list_params.rbi +112 -0
  72. data/rbi/sentdm/models/call_list_recordings_params.rbi +46 -0
  73. data/rbi/sentdm/models/call_party.rbi +41 -0
  74. data/rbi/sentdm/models/call_record_params.rbi +83 -0
  75. data/rbi/sentdm/models/call_recording.rbi +59 -0
  76. data/rbi/sentdm/models/call_recordings.rbi +39 -0
  77. data/rbi/sentdm/models/call_retrieve_params.rbi +46 -0
  78. data/rbi/sentdm/models/call_timeline_entry.rbi +40 -0
  79. data/rbi/sentdm/models/calls/api_response_of_list_of_call_participant.rbi +76 -0
  80. data/rbi/sentdm/models/calls/call_participant.rbi +92 -0
  81. data/rbi/sentdm/models/calls/call_participant_target.rbi +47 -0
  82. data/rbi/sentdm/models/calls/participant_add_params.rbi +98 -0
  83. data/rbi/sentdm/models/calls/participant_list_params.rbi +51 -0
  84. data/rbi/sentdm/models/calls/participant_remove_all_params.rbi +51 -0
  85. data/rbi/sentdm/models/calls/participant_remove_params.rbi +61 -0
  86. data/rbi/sentdm/models/calls/participant_update_params.rbi +94 -0
  87. data/rbi/sentdm/models/calls_list.rbi +47 -0
  88. data/rbi/sentdm/models/channels/api_response_of_list_of_voice_number.rbi +76 -0
  89. data/rbi/sentdm/models/channels/api_response_of_voice_callback_test.rbi +83 -0
  90. data/rbi/sentdm/models/channels/api_response_of_voice_number.rbi +81 -0
  91. data/rbi/sentdm/models/channels/api_response_of_voice_number_created.rbi +83 -0
  92. data/rbi/sentdm/models/channels/api_response_of_voice_secret.rbi +81 -0
  93. data/rbi/sentdm/models/channels/api_response_of_voice_token.rbi +81 -0
  94. data/rbi/sentdm/models/channels/voice_callback_test.rbi +126 -0
  95. data/rbi/sentdm/models/channels/voice_callback_test_error_info.rbi +65 -0
  96. data/rbi/sentdm/models/channels/voice_callback_test_request_info.rbi +66 -0
  97. data/rbi/sentdm/models/channels/voice_callback_test_response_info.rbi +48 -0
  98. data/rbi/sentdm/models/channels/voice_create_params.rbi +127 -0
  99. data/rbi/sentdm/models/channels/voice_create_token_params.rbi +104 -0
  100. data/rbi/sentdm/models/channels/voice_list_params.rbi +40 -0
  101. data/rbi/sentdm/models/channels/voice_number.rbi +105 -0
  102. data/rbi/sentdm/models/channels/voice_number_created.rbi +42 -0
  103. data/rbi/sentdm/models/channels/voice_retrieve_params.rbi +51 -0
  104. data/rbi/sentdm/models/channels/voice_rotate_secret_params.rbi +64 -0
  105. data/rbi/sentdm/models/channels/voice_secret.rbi +35 -0
  106. data/rbi/sentdm/models/channels/voice_test_params.rbi +61 -0
  107. data/rbi/sentdm/models/channels/voice_token.rbi +76 -0
  108. data/rbi/sentdm/models/channels/voice_update_params.rbi +158 -0
  109. data/rbi/sentdm/models/message_event_payload.rbi +16 -6
  110. data/rbi/sentdm/models/message_retrieve_activities_response.rbi +12 -8
  111. data/rbi/sentdm/models/webhook_list_events_response.rbi +3 -269
  112. data/rbi/sentdm/models.rbi +36 -0
  113. data/rbi/sentdm/resources/calls/participants.rbi +199 -0
  114. data/rbi/sentdm/resources/calls.rbi +207 -0
  115. data/rbi/sentdm/resources/channels/voice.rbi +371 -0
  116. data/rbi/sentdm/resources/channels.rbi +42 -0
  117. data/rbi/sentdm/resources/messages.rbi +10 -4
  118. data/sig/sentdm/client.rbs +4 -0
  119. data/sig/sentdm/internal/calls_page.rbs +41 -0
  120. data/sig/sentdm/models/api_response_of_call.rbs +39 -0
  121. data/sig/sentdm/models/api_response_of_call_recordings.rbs +39 -0
  122. data/sig/sentdm/models/api_response_of_calls_list.rbs +39 -0
  123. data/sig/sentdm/models/call.rbs +101 -0
  124. data/sig/sentdm/models/call_event.rbs +44 -0
  125. data/sig/sentdm/models/call_event_payload.rbs +68 -0
  126. data/sig/sentdm/models/call_hangup_params.rbs +38 -0
  127. data/sig/sentdm/models/call_list_params.rbs +67 -0
  128. data/sig/sentdm/models/call_list_recordings_params.rbs +30 -0
  129. data/sig/sentdm/models/call_party.rbs +17 -0
  130. data/sig/sentdm/models/call_record_params.rbs +54 -0
  131. data/sig/sentdm/models/call_recording.rbs +32 -0
  132. data/sig/sentdm/models/call_recordings.rbs +17 -0
  133. data/sig/sentdm/models/call_retrieve_params.rbs +30 -0
  134. data/sig/sentdm/models/call_timeline_entry.rbs +19 -0
  135. data/sig/sentdm/models/calls/api_response_of_list_of_call_participant.rbs +41 -0
  136. data/sig/sentdm/models/calls/call_participant.rbs +52 -0
  137. data/sig/sentdm/models/calls/call_participant_target.rbs +23 -0
  138. data/sig/sentdm/models/calls/participant_add_params.rbs +63 -0
  139. data/sig/sentdm/models/calls/participant_list_params.rbs +32 -0
  140. data/sig/sentdm/models/calls/participant_remove_all_params.rbs +34 -0
  141. data/sig/sentdm/models/calls/participant_remove_params.rbs +40 -0
  142. data/sig/sentdm/models/calls/participant_update_params.rbs +61 -0
  143. data/sig/sentdm/models/calls_list.rbs +26 -0
  144. data/sig/sentdm/models/channels/api_response_of_list_of_voice_number.rbs +41 -0
  145. data/sig/sentdm/models/channels/api_response_of_voice_callback_test.rbs +41 -0
  146. data/sig/sentdm/models/channels/api_response_of_voice_number.rbs +41 -0
  147. data/sig/sentdm/models/channels/api_response_of_voice_number_created.rbs +41 -0
  148. data/sig/sentdm/models/channels/api_response_of_voice_secret.rbs +41 -0
  149. data/sig/sentdm/models/channels/api_response_of_voice_token.rbs +41 -0
  150. data/sig/sentdm/models/channels/voice_callback_test.rbs +51 -0
  151. data/sig/sentdm/models/channels/voice_callback_test_error_info.rbs +28 -0
  152. data/sig/sentdm/models/channels/voice_callback_test_request_info.rbs +34 -0
  153. data/sig/sentdm/models/channels/voice_callback_test_response_info.rbs +20 -0
  154. data/sig/sentdm/models/channels/voice_create_params.rbs +64 -0
  155. data/sig/sentdm/models/channels/voice_create_token_params.rbs +61 -0
  156. data/sig/sentdm/models/channels/voice_list_params.rbs +27 -0
  157. data/sig/sentdm/models/channels/voice_number.rbs +57 -0
  158. data/sig/sentdm/models/channels/voice_number_created.rbs +17 -0
  159. data/sig/sentdm/models/channels/voice_retrieve_params.rbs +32 -0
  160. data/sig/sentdm/models/channels/voice_rotate_secret_params.rbs +40 -0
  161. data/sig/sentdm/models/channels/voice_secret.rbs +17 -0
  162. data/sig/sentdm/models/channels/voice_test_params.rbs +40 -0
  163. data/sig/sentdm/models/channels/voice_token.rbs +40 -0
  164. data/sig/sentdm/models/channels/voice_update_params.rbs +78 -0
  165. data/sig/sentdm/models/webhook_list_events_response.rbs +1 -107
  166. data/sig/sentdm/models.rbs +36 -0
  167. data/sig/sentdm/resources/calls/participants.rbs +50 -0
  168. data/sig/sentdm/resources/calls.rbs +50 -0
  169. data/sig/sentdm/resources/channels/voice.rbs +68 -0
  170. data/sig/sentdm/resources/channels.rbs +9 -0
  171. metadata +152 -2
@@ -19,6 +19,11 @@ module Sentdm
19
19
  # the send pipeline. It is a new attempt, not a free retry: every policy runs
20
20
  # again, the message is billed again, and its status webhooks fire again. A
21
21
  # FILTERED message is never resendable.
22
+ #
23
+ # **A scheduled message can be called off.** `POST /v3/messages/{id}/cancel`
24
+ # cancels a send you scheduled with `scheduled_at`, as long as it has not been
25
+ # released yet. Cancelling is free, fires `message.cancelled`, and is final — a
26
+ # cancelled message cannot be resent.
22
27
  class Messages
23
28
  # Some parameter documentations has been truncated, see
24
29
  # {Sentdm::Models::MessageRetrieveActivitiesParams} for more details.
@@ -55,10 +60,11 @@ module Sentdm
55
60
  #
56
61
  # Retrieves the current status and details of a message by ID. Includes delivery
57
62
  # status, timestamps, and error information if applicable. A message that is or
58
- # was held for a later time (a send you scheduled with scheduled_at, or a
59
- # quiet-hours hold) is returned as a ScheduledMessageResponse: the same fields
60
- # plus scheduled_at, the release instant in UTC. A message sent immediately has no
61
- # scheduled_at key.
63
+ # was held for a later time (a send you scheduled with scheduled_at, a quiet-hours
64
+ # hold, or a message you cancelled while it was held) is returned as a
65
+ # ScheduledMessageResponse: the same fields plus scheduled_at, the instant it is
66
+ # held for in UTC — or, on a CANCELLED message, the instant that was called off. A
67
+ # message sent immediately has no scheduled_at key.
62
68
  #
63
69
  # @overload retrieve_status(id, x_profile_id: nil, request_options: {})
64
70
  #
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sentdm
4
- VERSION = "0.34.0"
4
+ VERSION = "0.36.0"
5
5
  end
data/lib/sentdm.rb CHANGED
@@ -52,14 +52,19 @@ 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/internal/calls_page"
55
56
  require_relative "sentdm/internal/contacts_page"
56
57
  require_relative "sentdm/internal/conversations_page"
57
58
  require_relative "sentdm/internal/templates_page"
58
59
  require_relative "sentdm/internal/webhook_events_page"
59
60
  require_relative "sentdm/internal/webhooks_page"
60
61
  require_relative "sentdm/models/mutation_request"
62
+ require_relative "sentdm/models/channels/voice_number"
61
63
  require_relative "sentdm/models/template_body_content"
62
64
  require_relative "sentdm/models/api_meta"
65
+ require_relative "sentdm/models/api_response_of_call"
66
+ require_relative "sentdm/models/api_response_of_call_recordings"
67
+ require_relative "sentdm/models/api_response_of_calls_list"
63
68
  require_relative "sentdm/models/api_response_of_contact"
64
69
  require_relative "sentdm/models/api_response_of_contact_message_summary"
65
70
  require_relative "sentdm/models/api_response_of_conversation_messages_list"
@@ -73,8 +78,49 @@ require_relative "sentdm/models/brand_business_info"
73
78
  require_relative "sentdm/models/brand_compliance_info"
74
79
  require_relative "sentdm/models/brand_contact_info"
75
80
  require_relative "sentdm/models/brands_brand_data"
81
+ require_relative "sentdm/models/call"
82
+ require_relative "sentdm/models/call_event"
83
+ require_relative "sentdm/models/call_event_payload"
84
+ require_relative "sentdm/models/call_hangup_params"
85
+ require_relative "sentdm/models/call_list_params"
86
+ require_relative "sentdm/models/call_list_recordings_params"
87
+ require_relative "sentdm/models/call_party"
88
+ require_relative "sentdm/models/call_recording"
89
+ require_relative "sentdm/models/call_recordings"
90
+ require_relative "sentdm/models/call_record_params"
91
+ require_relative "sentdm/models/call_retrieve_params"
92
+ require_relative "sentdm/models/calls/api_response_of_list_of_call_participant"
93
+ require_relative "sentdm/models/calls/call_participant"
94
+ require_relative "sentdm/models/calls/call_participant_target"
95
+ require_relative "sentdm/models/calls/participant_add_params"
96
+ require_relative "sentdm/models/calls/participant_list_params"
97
+ require_relative "sentdm/models/calls/participant_remove_all_params"
98
+ require_relative "sentdm/models/calls/participant_remove_params"
99
+ require_relative "sentdm/models/calls/participant_update_params"
100
+ require_relative "sentdm/models/calls_list"
101
+ require_relative "sentdm/models/call_timeline_entry"
76
102
  require_relative "sentdm/models/channel_event"
77
103
  require_relative "sentdm/models/channel_event_payload"
104
+ require_relative "sentdm/models/channels/api_response_of_list_of_voice_number"
105
+ require_relative "sentdm/models/channels/api_response_of_voice_callback_test"
106
+ require_relative "sentdm/models/channels/api_response_of_voice_number"
107
+ require_relative "sentdm/models/channels/api_response_of_voice_number_created"
108
+ require_relative "sentdm/models/channels/api_response_of_voice_secret"
109
+ require_relative "sentdm/models/channels/api_response_of_voice_token"
110
+ require_relative "sentdm/models/channels/voice_callback_test"
111
+ require_relative "sentdm/models/channels/voice_callback_test_error_info"
112
+ require_relative "sentdm/models/channels/voice_callback_test_request_info"
113
+ require_relative "sentdm/models/channels/voice_callback_test_response_info"
114
+ require_relative "sentdm/models/channels/voice_create_params"
115
+ require_relative "sentdm/models/channels/voice_create_token_params"
116
+ require_relative "sentdm/models/channels/voice_list_params"
117
+ require_relative "sentdm/models/channels/voice_number_created"
118
+ require_relative "sentdm/models/channels/voice_retrieve_params"
119
+ require_relative "sentdm/models/channels/voice_rotate_secret_params"
120
+ require_relative "sentdm/models/channels/voice_secret"
121
+ require_relative "sentdm/models/channels/voice_test_params"
122
+ require_relative "sentdm/models/channels/voice_token"
123
+ require_relative "sentdm/models/channels/voice_update_params"
78
124
  require_relative "sentdm/models/contact_create_params"
79
125
  require_relative "sentdm/models/contact_delete_params"
80
126
  require_relative "sentdm/models/contact_event"
@@ -168,6 +214,10 @@ require_relative "sentdm/models/webhook_test_response"
168
214
  require_relative "sentdm/models/webhook_toggle_status_params"
169
215
  require_relative "sentdm/models/webhook_update_params"
170
216
  require_relative "sentdm/models"
217
+ require_relative "sentdm/resources/calls"
218
+ require_relative "sentdm/resources/calls/participants"
219
+ require_relative "sentdm/resources/channels"
220
+ require_relative "sentdm/resources/channels/voice"
171
221
  require_relative "sentdm/resources/contacts"
172
222
  require_relative "sentdm/resources/conversations"
173
223
  require_relative "sentdm/resources/me"
@@ -84,6 +84,11 @@ module Sentdm
84
84
  # the send pipeline. It is a new attempt, not a free retry: every policy runs
85
85
  # again, the message is billed again, and its status webhooks fire again. A
86
86
  # FILTERED message is never resendable.
87
+ #
88
+ # **A scheduled message can be called off.** `POST /v3/messages/{id}/cancel`
89
+ # cancels a send you scheduled with `scheduled_at`, as long as it has not been
90
+ # released yet. Cancelling is free, fires `message.cancelled`, and is final — a
91
+ # cancelled message cannot be resent.
87
92
  sig { returns(Sentdm::Resources::Messages) }
88
93
  attr_reader :messages
89
94
 
@@ -110,6 +115,29 @@ module Sentdm
110
115
  sig { returns(Sentdm::Resources::Conversations) }
111
116
  attr_reader :conversations
112
117
 
118
+ # Phone calls from the numbers you hold, driven by your own callback URL.
119
+ #
120
+ # `POST /v3/channels/voice` enables a number for calls, with the callback URL Sent
121
+ # asks what to do with each call on it, and `POST /v3/channels/voice/tokens` mints
122
+ # a short-lived token that lets a user of your app place and receive calls as that
123
+ # number. When a call arrives or a caller presses a key, a signed question is
124
+ # POSTed to the callback URL and the answer decides the call;
125
+ # `POST /v3/channels/voice/{number}/test` checks the URL answers the way we need
126
+ # before a real call reaches it, and
127
+ # `POST /v3/channels/voice/{number}/rotate-secret` replaces the signing secret.
128
+ # The call events themselves (`call.completed` and the rest) arrive through your
129
+ # webhooks.
130
+ #
131
+ # Every call is a record under `/v3/calls`: read it, list its recordings once one
132
+ # is ready, hang it up, start or stop recording, and add, mute or remove
133
+ # conference participants while it is live. A leg to a phone number runs for at
134
+ # most what your balance affords at the destination's rate.
135
+ sig { returns(Sentdm::Resources::Calls) }
136
+ attr_reader :calls
137
+
138
+ sig { returns(Sentdm::Resources::Channels) }
139
+ attr_reader :channels
140
+
113
141
  # Who the current key is.
114
142
  #
115
143
  # `GET /v3/me` answers with the account the key authenticates as, which is the
@@ -0,0 +1,71 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Internal
5
+ class CallsPage
6
+ include Sentdm::Internal::Type::BasePage
7
+
8
+ Elem = type_member
9
+
10
+ sig { returns(Data) }
11
+ attr_accessor :data
12
+
13
+ # @api private
14
+ sig { returns(String) }
15
+ def inspect
16
+ end
17
+
18
+ class Data < Sentdm::Internal::Type::BaseModel
19
+ OrHash = T.type_alias { T.any(Data, Sentdm::Internal::AnyHash) }
20
+
21
+ sig { returns(T.nilable(T::Array[T.anything])) }
22
+ attr_reader :calls
23
+
24
+ sig { params(calls: T::Array[T.anything]).void }
25
+ attr_writer :calls
26
+
27
+ sig { returns(T.nilable(Data::Pagination)) }
28
+ attr_reader :pagination
29
+
30
+ sig { params(pagination: Data::Pagination::OrHash).void }
31
+ attr_writer :pagination
32
+
33
+ sig do
34
+ params(
35
+ calls: T::Array[T.anything],
36
+ pagination: Data::Pagination::OrHash
37
+ ).returns(T.attached_class)
38
+ end
39
+ def self.new(calls: nil, pagination: nil)
40
+ end
41
+
42
+ sig do
43
+ override.returns(
44
+ { calls: T::Array[T.anything], pagination: Data::Pagination }
45
+ )
46
+ end
47
+ def to_hash
48
+ end
49
+
50
+ class Pagination < Sentdm::Internal::Type::BaseModel
51
+ OrHash =
52
+ T.type_alias { T.any(Data::Pagination, Sentdm::Internal::AnyHash) }
53
+
54
+ sig { returns(T.nilable(T::Boolean)) }
55
+ attr_reader :has_more
56
+
57
+ sig { params(has_more: T::Boolean).void }
58
+ attr_writer :has_more
59
+
60
+ sig { params(has_more: T::Boolean).returns(T.attached_class) }
61
+ def self.new(has_more: nil)
62
+ end
63
+
64
+ sig { override.returns({ has_more: T::Boolean }) }
65
+ def to_hash
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,74 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class APIResponseOfCall < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Sentdm::APIResponseOfCall, Sentdm::Internal::AnyHash)
9
+ end
10
+
11
+ # A call record
12
+ sig { returns(T.nilable(Sentdm::Call)) }
13
+ attr_reader :data
14
+
15
+ sig { params(data: T.nilable(Sentdm::Call::OrHash)).void }
16
+ attr_writer :data
17
+
18
+ # Error information
19
+ sig { returns(T.nilable(Sentdm::ErrorDetail)) }
20
+ attr_reader :error
21
+
22
+ sig { params(error: T.nilable(Sentdm::ErrorDetail::OrHash)).void }
23
+ attr_writer :error
24
+
25
+ # Request and response metadata
26
+ sig { returns(T.nilable(Sentdm::APIMeta)) }
27
+ attr_reader :meta
28
+
29
+ sig { params(meta: Sentdm::APIMeta::OrHash).void }
30
+ attr_writer :meta
31
+
32
+ # Indicates whether the request was successful
33
+ sig { returns(T.nilable(T::Boolean)) }
34
+ attr_reader :success
35
+
36
+ sig { params(success: T::Boolean).void }
37
+ attr_writer :success
38
+
39
+ # Standard API response envelope for all v3 endpoints
40
+ sig do
41
+ params(
42
+ data: T.nilable(Sentdm::Call::OrHash),
43
+ error: T.nilable(Sentdm::ErrorDetail::OrHash),
44
+ meta: Sentdm::APIMeta::OrHash,
45
+ success: T::Boolean
46
+ ).returns(T.attached_class)
47
+ end
48
+ def self.new(
49
+ # A call record
50
+ data: nil,
51
+ # Error information
52
+ error: nil,
53
+ # Request and response metadata
54
+ meta: nil,
55
+ # Indicates whether the request was successful
56
+ success: nil
57
+ )
58
+ end
59
+
60
+ sig do
61
+ override.returns(
62
+ {
63
+ data: T.nilable(Sentdm::Call),
64
+ error: T.nilable(Sentdm::ErrorDetail),
65
+ meta: Sentdm::APIMeta,
66
+ success: T::Boolean
67
+ }
68
+ )
69
+ end
70
+ def to_hash
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,74 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class APIResponseOfCallRecordings < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Sentdm::APIResponseOfCallRecordings, Sentdm::Internal::AnyHash)
9
+ end
10
+
11
+ # The recordings of a call, each as a short-lived download link
12
+ sig { returns(T.nilable(Sentdm::CallRecordings)) }
13
+ attr_reader :data
14
+
15
+ sig { params(data: T.nilable(Sentdm::CallRecordings::OrHash)).void }
16
+ attr_writer :data
17
+
18
+ # Error information
19
+ sig { returns(T.nilable(Sentdm::ErrorDetail)) }
20
+ attr_reader :error
21
+
22
+ sig { params(error: T.nilable(Sentdm::ErrorDetail::OrHash)).void }
23
+ attr_writer :error
24
+
25
+ # Request and response metadata
26
+ sig { returns(T.nilable(Sentdm::APIMeta)) }
27
+ attr_reader :meta
28
+
29
+ sig { params(meta: Sentdm::APIMeta::OrHash).void }
30
+ attr_writer :meta
31
+
32
+ # Indicates whether the request was successful
33
+ sig { returns(T.nilable(T::Boolean)) }
34
+ attr_reader :success
35
+
36
+ sig { params(success: T::Boolean).void }
37
+ attr_writer :success
38
+
39
+ # Standard API response envelope for all v3 endpoints
40
+ sig do
41
+ params(
42
+ data: T.nilable(Sentdm::CallRecordings::OrHash),
43
+ error: T.nilable(Sentdm::ErrorDetail::OrHash),
44
+ meta: Sentdm::APIMeta::OrHash,
45
+ success: T::Boolean
46
+ ).returns(T.attached_class)
47
+ end
48
+ def self.new(
49
+ # The recordings of a call, each as a short-lived download link
50
+ data: nil,
51
+ # Error information
52
+ error: nil,
53
+ # Request and response metadata
54
+ meta: nil,
55
+ # Indicates whether the request was successful
56
+ success: nil
57
+ )
58
+ end
59
+
60
+ sig do
61
+ override.returns(
62
+ {
63
+ data: T.nilable(Sentdm::CallRecordings),
64
+ error: T.nilable(Sentdm::ErrorDetail),
65
+ meta: Sentdm::APIMeta,
66
+ success: T::Boolean
67
+ }
68
+ )
69
+ end
70
+ def to_hash
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,74 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class APIResponseOfCallsList < Sentdm::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Sentdm::APIResponseOfCallsList, Sentdm::Internal::AnyHash)
9
+ end
10
+
11
+ # Paginated list of calls
12
+ sig { returns(T.nilable(Sentdm::CallsList)) }
13
+ attr_reader :data
14
+
15
+ sig { params(data: T.nilable(Sentdm::CallsList::OrHash)).void }
16
+ attr_writer :data
17
+
18
+ # Error information
19
+ sig { returns(T.nilable(Sentdm::ErrorDetail)) }
20
+ attr_reader :error
21
+
22
+ sig { params(error: T.nilable(Sentdm::ErrorDetail::OrHash)).void }
23
+ attr_writer :error
24
+
25
+ # Request and response metadata
26
+ sig { returns(T.nilable(Sentdm::APIMeta)) }
27
+ attr_reader :meta
28
+
29
+ sig { params(meta: Sentdm::APIMeta::OrHash).void }
30
+ attr_writer :meta
31
+
32
+ # Indicates whether the request was successful
33
+ sig { returns(T.nilable(T::Boolean)) }
34
+ attr_reader :success
35
+
36
+ sig { params(success: T::Boolean).void }
37
+ attr_writer :success
38
+
39
+ # Standard API response envelope for all v3 endpoints
40
+ sig do
41
+ params(
42
+ data: T.nilable(Sentdm::CallsList::OrHash),
43
+ error: T.nilable(Sentdm::ErrorDetail::OrHash),
44
+ meta: Sentdm::APIMeta::OrHash,
45
+ success: T::Boolean
46
+ ).returns(T.attached_class)
47
+ end
48
+ def self.new(
49
+ # Paginated list of calls
50
+ data: nil,
51
+ # Error information
52
+ error: nil,
53
+ # Request and response metadata
54
+ meta: nil,
55
+ # Indicates whether the request was successful
56
+ success: nil
57
+ )
58
+ end
59
+
60
+ sig do
61
+ override.returns(
62
+ {
63
+ data: T.nilable(Sentdm::CallsList),
64
+ error: T.nilable(Sentdm::ErrorDetail),
65
+ meta: Sentdm::APIMeta,
66
+ success: T::Boolean
67
+ }
68
+ )
69
+ end
70
+ def to_hash
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,179 @@
1
+ # typed: strong
2
+
3
+ module Sentdm
4
+ module Models
5
+ class Call < Sentdm::Internal::Type::BaseModel
6
+ OrHash = T.type_alias { T.any(Sentdm::Call, Sentdm::Internal::AnyHash) }
7
+
8
+ # The call id, the same one carried by the call.request question and every call
9
+ # webhook
10
+ sig { returns(T.nilable(String)) }
11
+ attr_reader :id
12
+
13
+ sig { params(id: String).void }
14
+ attr_writer :id
15
+
16
+ # When the call was answered (UTC). Null until then, and always null for a call
17
+ # between two of your app users
18
+ sig { returns(T.nilable(Time)) }
19
+ attr_accessor :answered_at
20
+
21
+ # outbound for a call placed from your app, inbound for a call to one of your
22
+ # numbers
23
+ sig { returns(T.nilable(String)) }
24
+ attr_reader :direction
25
+
26
+ sig { params(direction: String).void }
27
+ attr_writer :direction
28
+
29
+ # Billable duration in seconds. Null while the call is live
30
+ sig { returns(T.nilable(Integer)) }
31
+ attr_accessor :duration_seconds
32
+
33
+ # When the call ended (UTC). Null while the call is live
34
+ sig { returns(T.nilable(Time)) }
35
+ attr_accessor :ended_at
36
+
37
+ # Why the call did not complete: callback_timeout, invalid_answer,
38
+ # insufficient_balance, destination_blocked, callback_not_configured, rejected or
39
+ # no_answer. Null while the call is live, when it completed, and when it failed
40
+ # without a recorded reason
41
+ sig { returns(T.nilable(String)) }
42
+ attr_accessor :failure_reason
43
+
44
+ # One end of a call
45
+ sig { returns(T.nilable(Sentdm::CallParty)) }
46
+ attr_reader :from
47
+
48
+ sig { params(from: Sentdm::CallParty::OrHash).void }
49
+ attr_writer :from
50
+
51
+ # Your number that owns the call, in E.164 format: the dialed number for an
52
+ # inbound call, the caller's bound number for a call placed from your app
53
+ sig { returns(T.nilable(String)) }
54
+ attr_reader :number
55
+
56
+ sig { params(number: String).void }
57
+ attr_writer :number
58
+
59
+ # What the call cost. Null until it has been priced
60
+ sig { returns(T.nilable(Float)) }
61
+ attr_accessor :price
62
+
63
+ # True once a recording of the call is available
64
+ sig { returns(T.nilable(T::Boolean)) }
65
+ attr_reader :recording_available
66
+
67
+ sig { params(recording_available: T::Boolean).void }
68
+ attr_writer :recording_available
69
+
70
+ # When the call was placed (UTC)
71
+ sig { returns(T.nilable(Time)) }
72
+ attr_reader :started_at
73
+
74
+ sig { params(started_at: Time).void }
75
+ attr_writer :started_at
76
+
77
+ # INITIATED, RINGING, ANSWERED, COMPLETED, FAILED, NO_ANSWER or REJECTED
78
+ sig { returns(T.nilable(String)) }
79
+ attr_reader :status
80
+
81
+ sig { params(status: String).void }
82
+ attr_writer :status
83
+
84
+ # When the call entered each status, oldest first. Only returned when reading one
85
+ # call
86
+ sig { returns(T.nilable(T::Array[Sentdm::CallTimelineEntry])) }
87
+ attr_accessor :timeline
88
+
89
+ # One end of a call
90
+ sig { returns(T.nilable(Sentdm::CallParty)) }
91
+ attr_reader :to
92
+
93
+ sig { params(to: Sentdm::CallParty::OrHash).void }
94
+ attr_writer :to
95
+
96
+ # A call record
97
+ sig do
98
+ params(
99
+ id: String,
100
+ answered_at: T.nilable(Time),
101
+ direction: String,
102
+ duration_seconds: T.nilable(Integer),
103
+ ended_at: T.nilable(Time),
104
+ failure_reason: T.nilable(String),
105
+ from: Sentdm::CallParty::OrHash,
106
+ number: String,
107
+ price: T.nilable(Float),
108
+ recording_available: T::Boolean,
109
+ started_at: Time,
110
+ status: String,
111
+ timeline: T.nilable(T::Array[Sentdm::CallTimelineEntry::OrHash]),
112
+ to: Sentdm::CallParty::OrHash
113
+ ).returns(T.attached_class)
114
+ end
115
+ def self.new(
116
+ # The call id, the same one carried by the call.request question and every call
117
+ # webhook
118
+ id: nil,
119
+ # When the call was answered (UTC). Null until then, and always null for a call
120
+ # between two of your app users
121
+ answered_at: nil,
122
+ # outbound for a call placed from your app, inbound for a call to one of your
123
+ # numbers
124
+ direction: nil,
125
+ # Billable duration in seconds. Null while the call is live
126
+ duration_seconds: nil,
127
+ # When the call ended (UTC). Null while the call is live
128
+ ended_at: nil,
129
+ # Why the call did not complete: callback_timeout, invalid_answer,
130
+ # insufficient_balance, destination_blocked, callback_not_configured, rejected or
131
+ # no_answer. Null while the call is live, when it completed, and when it failed
132
+ # without a recorded reason
133
+ failure_reason: nil,
134
+ # One end of a call
135
+ from: nil,
136
+ # Your number that owns the call, in E.164 format: the dialed number for an
137
+ # inbound call, the caller's bound number for a call placed from your app
138
+ number: nil,
139
+ # What the call cost. Null until it has been priced
140
+ price: nil,
141
+ # True once a recording of the call is available
142
+ recording_available: nil,
143
+ # When the call was placed (UTC)
144
+ started_at: nil,
145
+ # INITIATED, RINGING, ANSWERED, COMPLETED, FAILED, NO_ANSWER or REJECTED
146
+ status: nil,
147
+ # When the call entered each status, oldest first. Only returned when reading one
148
+ # call
149
+ timeline: nil,
150
+ # One end of a call
151
+ to: nil
152
+ )
153
+ end
154
+
155
+ sig do
156
+ override.returns(
157
+ {
158
+ id: String,
159
+ answered_at: T.nilable(Time),
160
+ direction: String,
161
+ duration_seconds: T.nilable(Integer),
162
+ ended_at: T.nilable(Time),
163
+ failure_reason: T.nilable(String),
164
+ from: Sentdm::CallParty,
165
+ number: String,
166
+ price: T.nilable(Float),
167
+ recording_available: T::Boolean,
168
+ started_at: Time,
169
+ status: String,
170
+ timeline: T.nilable(T::Array[Sentdm::CallTimelineEntry]),
171
+ to: Sentdm::CallParty
172
+ }
173
+ )
174
+ end
175
+ def to_hash
176
+ end
177
+ end
178
+ end
179
+ end