surge_api 0.17.0 → 0.19.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 (164) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +30 -0
  3. data/README.md +51 -16
  4. data/lib/surge_api/client.rb +22 -1
  5. data/lib/surge_api/internal/transport/base_client.rb +5 -0
  6. data/lib/surge_api/internal/util.rb +22 -7
  7. data/lib/surge_api/models/account_archive_params.rb +9 -1
  8. data/lib/surge_api/models/account_retrieve_status_params.rb +9 -1
  9. data/lib/surge_api/models/account_update_params.rb +9 -1
  10. data/lib/surge_api/models/attachment_get_file_params.rb +9 -1
  11. data/lib/surge_api/models/audience_add_contact_params.rb +9 -1
  12. data/lib/surge_api/models/audience_create_params.rb +9 -1
  13. data/lib/surge_api/models/audience_list_contacts_params.rb +9 -1
  14. data/lib/surge_api/models/blast_create_params.rb +9 -1
  15. data/lib/surge_api/models/call_ended_webhook_event.rb +25 -1
  16. data/lib/surge_api/models/campaign_create_params.rb +6 -10
  17. data/lib/surge_api/models/campaign_list_params.rb +9 -1
  18. data/lib/surge_api/models/campaign_retrieve_params.rb +9 -1
  19. data/lib/surge_api/models/campaign_update_params.rb +6 -10
  20. data/lib/surge_api/models/contact_create_params.rb +9 -1
  21. data/lib/surge_api/models/contact_list_params.rb +9 -1
  22. data/lib/surge_api/models/contact_retrieve_params.rb +9 -1
  23. data/lib/surge_api/models/contact_update_params.rb +9 -1
  24. data/lib/surge_api/models/message.rb +1 -0
  25. data/lib/surge_api/models/message_create_params.rb +6 -11
  26. data/lib/surge_api/models/message_delivered_webhook_event.rb +1 -0
  27. data/lib/surge_api/models/message_failed_webhook_event.rb +1 -0
  28. data/lib/surge_api/models/message_list_params.rb +9 -1
  29. data/lib/surge_api/models/message_params.rb +74 -2
  30. data/lib/surge_api/models/message_received_webhook_event.rb +1 -0
  31. data/lib/surge_api/models/message_retrieve_params.rb +9 -1
  32. data/lib/surge_api/models/message_sent_webhook_event.rb +1 -0
  33. data/lib/surge_api/models/phone_number.rb +1 -1
  34. data/lib/surge_api/models/phone_number_list_params.rb +9 -1
  35. data/lib/surge_api/models/phone_number_purchase_params.rb +9 -1
  36. data/lib/surge_api/models/phone_number_release_params.rb +22 -0
  37. data/lib/surge_api/models/phone_number_update_params.rb +38 -0
  38. data/lib/surge_api/models/recording_completed_webhook_event.rb +25 -1
  39. data/lib/surge_api/models/recording_delete_params.rb +9 -1
  40. data/lib/surge_api/models/recording_get_file_params.rb +9 -1
  41. data/lib/surge_api/models/recording_list_params.rb +9 -1
  42. data/lib/surge_api/models/recording_retrieve_params.rb +9 -1
  43. data/lib/surge_api/models/user_create_params.rb +9 -1
  44. data/lib/surge_api/models/user_create_token_params.rb +9 -1
  45. data/lib/surge_api/models/user_delete_params.rb +9 -1
  46. data/lib/surge_api/models/user_list_params.rb +9 -1
  47. data/lib/surge_api/models/user_retrieve_params.rb +9 -1
  48. data/lib/surge_api/models/user_update_params.rb +9 -1
  49. data/lib/surge_api/models/verification_check_params.rb +9 -1
  50. data/lib/surge_api/models/verification_create_params.rb +9 -1
  51. data/lib/surge_api/models/voicemail_received_webhook_event.rb +25 -1
  52. data/lib/surge_api/models.rb +4 -0
  53. data/lib/surge_api/resources/campaigns.rb +4 -14
  54. data/lib/surge_api/resources/messages.rb +6 -7
  55. data/lib/surge_api/resources/phone_numbers.rb +46 -0
  56. data/lib/surge_api/resources/verifications.rb +7 -4
  57. data/lib/surge_api/resources/webhooks.rb +11 -1
  58. data/lib/surge_api/version.rb +1 -1
  59. data/lib/surge_api.rb +3 -0
  60. data/rbi/surge_api/client.rbi +6 -0
  61. data/rbi/surge_api/internal/util.rbi +8 -0
  62. data/rbi/surge_api/models/account_archive_params.rbi +18 -5
  63. data/rbi/surge_api/models/account_retrieve_status_params.rbi +8 -0
  64. data/rbi/surge_api/models/account_update_params.rbi +8 -0
  65. data/rbi/surge_api/models/attachment_get_file_params.rbi +18 -5
  66. data/rbi/surge_api/models/audience_add_contact_params.rbi +12 -1
  67. data/rbi/surge_api/models/audience_create_params.rbi +12 -1
  68. data/rbi/surge_api/models/audience_list_contacts_params.rbi +8 -0
  69. data/rbi/surge_api/models/blast_create_params.rbi +8 -0
  70. data/rbi/surge_api/models/call_ended_webhook_event.rbi +27 -3
  71. data/rbi/surge_api/models/campaign_create_params.rbi +7 -27
  72. data/rbi/surge_api/models/campaign_list_params.rbi +8 -0
  73. data/rbi/surge_api/models/campaign_retrieve_params.rbi +18 -5
  74. data/rbi/surge_api/models/campaign_update_params.rbi +7 -27
  75. data/rbi/surge_api/models/contact_create_params.rbi +8 -0
  76. data/rbi/surge_api/models/contact_list_params.rbi +8 -0
  77. data/rbi/surge_api/models/contact_retrieve_params.rbi +18 -5
  78. data/rbi/surge_api/models/contact_update_params.rbi +8 -0
  79. data/rbi/surge_api/models/message.rbi +2 -0
  80. data/rbi/surge_api/models/message_create_params.rbi +7 -29
  81. data/rbi/surge_api/models/message_delivered_webhook_event.rbi +5 -0
  82. data/rbi/surge_api/models/message_failed_webhook_event.rbi +5 -0
  83. data/rbi/surge_api/models/message_list_params.rbi +8 -0
  84. data/rbi/surge_api/models/message_params.rbi +225 -6
  85. data/rbi/surge_api/models/message_received_webhook_event.rbi +5 -0
  86. data/rbi/surge_api/models/message_retrieve_params.rbi +18 -5
  87. data/rbi/surge_api/models/message_sent_webhook_event.rbi +5 -0
  88. data/rbi/surge_api/models/phone_number_list_params.rbi +8 -0
  89. data/rbi/surge_api/models/phone_number_purchase_params.rbi +8 -0
  90. data/rbi/surge_api/models/phone_number_release_params.rbi +40 -0
  91. data/rbi/surge_api/models/phone_number_update_params.rbi +65 -0
  92. data/rbi/surge_api/models/recording_completed_webhook_event.rbi +27 -3
  93. data/rbi/surge_api/models/recording_delete_params.rbi +18 -5
  94. data/rbi/surge_api/models/recording_get_file_params.rbi +18 -5
  95. data/rbi/surge_api/models/recording_list_params.rbi +8 -0
  96. data/rbi/surge_api/models/recording_retrieve_params.rbi +18 -5
  97. data/rbi/surge_api/models/user_create_params.rbi +8 -0
  98. data/rbi/surge_api/models/user_create_token_params.rbi +8 -0
  99. data/rbi/surge_api/models/user_delete_params.rbi +18 -5
  100. data/rbi/surge_api/models/user_list_params.rbi +8 -0
  101. data/rbi/surge_api/models/user_retrieve_params.rbi +18 -5
  102. data/rbi/surge_api/models/user_update_params.rbi +8 -0
  103. data/rbi/surge_api/models/verification_check_params.rbi +12 -1
  104. data/rbi/surge_api/models/verification_create_params.rbi +12 -1
  105. data/rbi/surge_api/models/voicemail_received_webhook_event.rbi +27 -3
  106. data/rbi/surge_api/models.rbi +4 -0
  107. data/rbi/surge_api/resources/campaigns.rbi +10 -2
  108. data/rbi/surge_api/resources/messages.rbi +9 -1
  109. data/rbi/surge_api/resources/phone_numbers.rbi +34 -0
  110. data/rbi/surge_api/resources/verifications.rbi +5 -1
  111. data/rbi/surge_api/resources/webhooks.rbi +10 -2
  112. data/sig/surge_api/client.rbs +3 -0
  113. data/sig/surge_api/internal/util.rbs +4 -0
  114. data/sig/surge_api/models/account_archive_params.rbs +8 -3
  115. data/sig/surge_api/models/account_retrieve_status_params.rbs +5 -0
  116. data/sig/surge_api/models/account_update_params.rbs +5 -0
  117. data/sig/surge_api/models/attachment_get_file_params.rbs +11 -3
  118. data/sig/surge_api/models/audience_add_contact_params.rbs +10 -2
  119. data/sig/surge_api/models/audience_create_params.rbs +6 -1
  120. data/sig/surge_api/models/audience_list_contacts_params.rbs +5 -1
  121. data/sig/surge_api/models/blast_create_params.rbs +5 -0
  122. data/sig/surge_api/models/call_ended_webhook_event.rbs +18 -3
  123. data/sig/surge_api/models/campaign_create_params.rbs +4 -9
  124. data/sig/surge_api/models/campaign_list_params.rbs +5 -1
  125. data/sig/surge_api/models/campaign_retrieve_params.rbs +8 -3
  126. data/sig/surge_api/models/campaign_update_params.rbs +4 -12
  127. data/sig/surge_api/models/contact_create_params.rbs +5 -0
  128. data/sig/surge_api/models/contact_list_params.rbs +5 -1
  129. data/sig/surge_api/models/contact_retrieve_params.rbs +8 -3
  130. data/sig/surge_api/models/contact_update_params.rbs +5 -0
  131. data/sig/surge_api/models/message.rbs +2 -1
  132. data/sig/surge_api/models/message_create_params.rbs +4 -9
  133. data/sig/surge_api/models/message_delivered_webhook_event.rbs +2 -1
  134. data/sig/surge_api/models/message_failed_webhook_event.rbs +2 -1
  135. data/sig/surge_api/models/message_list_params.rbs +5 -1
  136. data/sig/surge_api/models/message_params.rbs +88 -6
  137. data/sig/surge_api/models/message_received_webhook_event.rbs +2 -1
  138. data/sig/surge_api/models/message_retrieve_params.rbs +8 -3
  139. data/sig/surge_api/models/message_sent_webhook_event.rbs +2 -1
  140. data/sig/surge_api/models/phone_number_list_params.rbs +5 -1
  141. data/sig/surge_api/models/phone_number_purchase_params.rbs +5 -0
  142. data/sig/surge_api/models/phone_number_release_params.rbs +20 -0
  143. data/sig/surge_api/models/phone_number_update_params.rbs +36 -0
  144. data/sig/surge_api/models/recording_completed_webhook_event.rbs +18 -3
  145. data/sig/surge_api/models/recording_delete_params.rbs +8 -3
  146. data/sig/surge_api/models/recording_get_file_params.rbs +11 -3
  147. data/sig/surge_api/models/recording_list_params.rbs +5 -1
  148. data/sig/surge_api/models/recording_retrieve_params.rbs +8 -3
  149. data/sig/surge_api/models/user_create_params.rbs +5 -0
  150. data/sig/surge_api/models/user_create_token_params.rbs +5 -1
  151. data/sig/surge_api/models/user_delete_params.rbs +8 -3
  152. data/sig/surge_api/models/user_list_params.rbs +5 -1
  153. data/sig/surge_api/models/user_retrieve_params.rbs +8 -3
  154. data/sig/surge_api/models/user_update_params.rbs +5 -0
  155. data/sig/surge_api/models/verification_check_params.rbs +6 -1
  156. data/sig/surge_api/models/verification_create_params.rbs +6 -1
  157. data/sig/surge_api/models/voicemail_received_webhook_event.rbs +18 -3
  158. data/sig/surge_api/models.rbs +4 -0
  159. data/sig/surge_api/resources/campaigns.rbs +2 -2
  160. data/sig/surge_api/resources/messages.rbs +1 -1
  161. data/sig/surge_api/resources/phone_numbers.rbs +12 -0
  162. data/sig/surge_api/resources/verifications.rbs +1 -0
  163. data/sig/surge_api/resources/webhooks.rbs +3 -1
  164. metadata +22 -2
@@ -85,6 +85,24 @@ module SurgeAPI
85
85
  sig { params(send_at: Time).void }
86
86
  attr_writer :send_at
87
87
 
88
+ # Per-message setting overrides.
89
+ sig do
90
+ returns(
91
+ T.nilable(
92
+ SurgeAPI::MessageParams::MessageParamsWithConversation::Settings
93
+ )
94
+ )
95
+ end
96
+ attr_reader :settings
97
+
98
+ sig do
99
+ params(
100
+ settings:
101
+ SurgeAPI::MessageParams::MessageParamsWithConversation::Settings::OrHash
102
+ ).void
103
+ end
104
+ attr_writer :settings
105
+
88
106
  # Create a message while including parameters for the conversation in which the
89
107
  # message should be sent.
90
108
  sig do
@@ -97,7 +115,9 @@ module SurgeAPI
97
115
  ],
98
116
  body: String,
99
117
  metadata: T::Hash[Symbol, String],
100
- send_at: Time
118
+ send_at: Time,
119
+ settings:
120
+ SurgeAPI::MessageParams::MessageParamsWithConversation::Settings::OrHash
101
121
  ).returns(T.attached_class)
102
122
  end
103
123
  def self.new(
@@ -111,7 +131,9 @@ module SurgeAPI
111
131
  metadata: nil,
112
132
  # An optional datetime for scheduling message up to a couple of months in the
113
133
  # future.
114
- send_at: nil
134
+ send_at: nil,
135
+ # Per-message setting overrides.
136
+ settings: nil
115
137
  )
116
138
  end
117
139
 
@@ -126,7 +148,9 @@ module SurgeAPI
126
148
  ],
127
149
  body: String,
128
150
  metadata: T::Hash[Symbol, String],
129
- send_at: Time
151
+ send_at: Time,
152
+ settings:
153
+ SurgeAPI::MessageParams::MessageParamsWithConversation::Settings
130
154
  }
131
155
  )
132
156
  end
@@ -302,6 +326,93 @@ module SurgeAPI
302
326
  def to_hash
303
327
  end
304
328
  end
329
+
330
+ class Settings < SurgeAPI::Internal::Type::BaseModel
331
+ OrHash =
332
+ T.type_alias do
333
+ T.any(
334
+ SurgeAPI::MessageParams::MessageParamsWithConversation::Settings,
335
+ SurgeAPI::Internal::AnyHash
336
+ )
337
+ end
338
+
339
+ # Override link shortening for this message.
340
+ sig do
341
+ returns(
342
+ T.nilable(
343
+ SurgeAPI::MessageParams::MessageParamsWithConversation::Settings::LinkShortening::OrSymbol
344
+ )
345
+ )
346
+ end
347
+ attr_reader :link_shortening
348
+
349
+ sig do
350
+ params(
351
+ link_shortening:
352
+ SurgeAPI::MessageParams::MessageParamsWithConversation::Settings::LinkShortening::OrSymbol
353
+ ).void
354
+ end
355
+ attr_writer :link_shortening
356
+
357
+ # Per-message setting overrides.
358
+ sig do
359
+ params(
360
+ link_shortening:
361
+ SurgeAPI::MessageParams::MessageParamsWithConversation::Settings::LinkShortening::OrSymbol
362
+ ).returns(T.attached_class)
363
+ end
364
+ def self.new(
365
+ # Override link shortening for this message.
366
+ link_shortening: nil
367
+ )
368
+ end
369
+
370
+ sig do
371
+ override.returns(
372
+ {
373
+ link_shortening:
374
+ SurgeAPI::MessageParams::MessageParamsWithConversation::Settings::LinkShortening::OrSymbol
375
+ }
376
+ )
377
+ end
378
+ def to_hash
379
+ end
380
+
381
+ # Override link shortening for this message.
382
+ module LinkShortening
383
+ extend SurgeAPI::Internal::Type::Enum
384
+
385
+ TaggedSymbol =
386
+ T.type_alias do
387
+ T.all(
388
+ Symbol,
389
+ SurgeAPI::MessageParams::MessageParamsWithConversation::Settings::LinkShortening
390
+ )
391
+ end
392
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
393
+
394
+ ENABLED =
395
+ T.let(
396
+ :enabled,
397
+ SurgeAPI::MessageParams::MessageParamsWithConversation::Settings::LinkShortening::TaggedSymbol
398
+ )
399
+ DISABLED =
400
+ T.let(
401
+ :disabled,
402
+ SurgeAPI::MessageParams::MessageParamsWithConversation::Settings::LinkShortening::TaggedSymbol
403
+ )
404
+
405
+ sig do
406
+ override.returns(
407
+ T::Array[
408
+ SurgeAPI::MessageParams::MessageParamsWithConversation::Settings::LinkShortening::TaggedSymbol
409
+ ]
410
+ )
411
+ end
412
+ def self.values
413
+ end
414
+ end
415
+ end
305
416
  end
306
417
 
307
418
  class SimpleMessageParams < SurgeAPI::Internal::Type::BaseModel
@@ -367,6 +478,22 @@ module SurgeAPI
367
478
  sig { params(send_at: Time).void }
368
479
  attr_writer :send_at
369
480
 
481
+ # Per-message setting overrides.
482
+ sig do
483
+ returns(
484
+ T.nilable(SurgeAPI::MessageParams::SimpleMessageParams::Settings)
485
+ )
486
+ end
487
+ attr_reader :settings
488
+
489
+ sig do
490
+ params(
491
+ settings:
492
+ SurgeAPI::MessageParams::SimpleMessageParams::Settings::OrHash
493
+ ).void
494
+ end
495
+ attr_writer :settings
496
+
370
497
  # Create a basic message by specifying just the to/from phone numbers.
371
498
  sig do
372
499
  params(
@@ -378,7 +505,9 @@ module SurgeAPI
378
505
  body: String,
379
506
  from: String,
380
507
  metadata: T::Hash[Symbol, String],
381
- send_at: Time
508
+ send_at: Time,
509
+ settings:
510
+ SurgeAPI::MessageParams::SimpleMessageParams::Settings::OrHash
382
511
  ).returns(T.attached_class)
383
512
  end
384
513
  def self.new(
@@ -395,7 +524,9 @@ module SurgeAPI
395
524
  metadata: nil,
396
525
  # An optional datetime for scheduling message up to a couple of months in the
397
526
  # future.
398
- send_at: nil
527
+ send_at: nil,
528
+ # Per-message setting overrides.
529
+ settings: nil
399
530
  )
400
531
  end
401
532
 
@@ -410,7 +541,8 @@ module SurgeAPI
410
541
  body: String,
411
542
  from: String,
412
543
  metadata: T::Hash[Symbol, String],
413
- send_at: Time
544
+ send_at: Time,
545
+ settings: SurgeAPI::MessageParams::SimpleMessageParams::Settings
414
546
  }
415
547
  )
416
548
  end
@@ -442,6 +574,93 @@ module SurgeAPI
442
574
  def to_hash
443
575
  end
444
576
  end
577
+
578
+ class Settings < SurgeAPI::Internal::Type::BaseModel
579
+ OrHash =
580
+ T.type_alias do
581
+ T.any(
582
+ SurgeAPI::MessageParams::SimpleMessageParams::Settings,
583
+ SurgeAPI::Internal::AnyHash
584
+ )
585
+ end
586
+
587
+ # Override link shortening for this message.
588
+ sig do
589
+ returns(
590
+ T.nilable(
591
+ SurgeAPI::MessageParams::SimpleMessageParams::Settings::LinkShortening::OrSymbol
592
+ )
593
+ )
594
+ end
595
+ attr_reader :link_shortening
596
+
597
+ sig do
598
+ params(
599
+ link_shortening:
600
+ SurgeAPI::MessageParams::SimpleMessageParams::Settings::LinkShortening::OrSymbol
601
+ ).void
602
+ end
603
+ attr_writer :link_shortening
604
+
605
+ # Per-message setting overrides.
606
+ sig do
607
+ params(
608
+ link_shortening:
609
+ SurgeAPI::MessageParams::SimpleMessageParams::Settings::LinkShortening::OrSymbol
610
+ ).returns(T.attached_class)
611
+ end
612
+ def self.new(
613
+ # Override link shortening for this message.
614
+ link_shortening: nil
615
+ )
616
+ end
617
+
618
+ sig do
619
+ override.returns(
620
+ {
621
+ link_shortening:
622
+ SurgeAPI::MessageParams::SimpleMessageParams::Settings::LinkShortening::OrSymbol
623
+ }
624
+ )
625
+ end
626
+ def to_hash
627
+ end
628
+
629
+ # Override link shortening for this message.
630
+ module LinkShortening
631
+ extend SurgeAPI::Internal::Type::Enum
632
+
633
+ TaggedSymbol =
634
+ T.type_alias do
635
+ T.all(
636
+ Symbol,
637
+ SurgeAPI::MessageParams::SimpleMessageParams::Settings::LinkShortening
638
+ )
639
+ end
640
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
641
+
642
+ ENABLED =
643
+ T.let(
644
+ :enabled,
645
+ SurgeAPI::MessageParams::SimpleMessageParams::Settings::LinkShortening::TaggedSymbol
646
+ )
647
+ DISABLED =
648
+ T.let(
649
+ :disabled,
650
+ SurgeAPI::MessageParams::SimpleMessageParams::Settings::LinkShortening::TaggedSymbol
651
+ )
652
+
653
+ sig do
654
+ override.returns(
655
+ T::Array[
656
+ SurgeAPI::MessageParams::SimpleMessageParams::Settings::LinkShortening::TaggedSymbol
657
+ ]
658
+ )
659
+ end
660
+ def self.values
661
+ end
662
+ end
663
+ end
445
664
  end
446
665
 
447
666
  sig { override.returns(T::Array[SurgeAPI::MessageParams::Variants]) }
@@ -329,6 +329,11 @@ module SurgeAPI
329
329
  :link,
330
330
  SurgeAPI::MessageReceivedWebhookEvent::Data::Attachment::Type::TaggedSymbol
331
331
  )
332
+ CONTACT =
333
+ T.let(
334
+ :contact,
335
+ SurgeAPI::MessageReceivedWebhookEvent::Data::Attachment::Type::TaggedSymbol
336
+ )
332
337
  VIDEO =
333
338
  T.let(
334
339
  :video,
@@ -11,15 +11,28 @@ module SurgeAPI
11
11
  T.any(SurgeAPI::MessageRetrieveParams, SurgeAPI::Internal::AnyHash)
12
12
  end
13
13
 
14
+ # The ID of the message to retrieve.
15
+ sig { returns(String) }
16
+ attr_accessor :id
17
+
14
18
  sig do
15
- params(request_options: SurgeAPI::RequestOptions::OrHash).returns(
16
- T.attached_class
17
- )
19
+ params(
20
+ id: String,
21
+ request_options: SurgeAPI::RequestOptions::OrHash
22
+ ).returns(T.attached_class)
18
23
  end
19
- def self.new(request_options: {})
24
+ def self.new(
25
+ # The ID of the message to retrieve.
26
+ id:,
27
+ request_options: {}
28
+ )
20
29
  end
21
30
 
22
- sig { override.returns({ request_options: SurgeAPI::RequestOptions }) }
31
+ sig do
32
+ override.returns(
33
+ { id: String, request_options: SurgeAPI::RequestOptions }
34
+ )
35
+ end
23
36
  def to_hash
24
37
  end
25
38
  end
@@ -320,6 +320,11 @@ module SurgeAPI
320
320
  :link,
321
321
  SurgeAPI::MessageSentWebhookEvent::Data::Attachment::Type::TaggedSymbol
322
322
  )
323
+ CONTACT =
324
+ T.let(
325
+ :contact,
326
+ SurgeAPI::MessageSentWebhookEvent::Data::Attachment::Type::TaggedSymbol
327
+ )
323
328
  VIDEO =
324
329
  T.let(
325
330
  :video,
@@ -11,6 +11,10 @@ module SurgeAPI
11
11
  T.any(SurgeAPI::PhoneNumberListParams, SurgeAPI::Internal::AnyHash)
12
12
  end
13
13
 
14
+ # The account ID to list phone numbers for.
15
+ sig { returns(String) }
16
+ attr_accessor :account_id
17
+
14
18
  # Cursor for forward pagination. Use the next_cursor from a previous response.
15
19
  sig { returns(T.nilable(String)) }
16
20
  attr_reader :after
@@ -28,12 +32,15 @@ module SurgeAPI
28
32
 
29
33
  sig do
30
34
  params(
35
+ account_id: String,
31
36
  after: String,
32
37
  before: String,
33
38
  request_options: SurgeAPI::RequestOptions::OrHash
34
39
  ).returns(T.attached_class)
35
40
  end
36
41
  def self.new(
42
+ # The account ID to list phone numbers for.
43
+ account_id:,
37
44
  # Cursor for forward pagination. Use the next_cursor from a previous response.
38
45
  after: nil,
39
46
  # Cursor for backward pagination. Use the previous_cursor from a previous
@@ -46,6 +53,7 @@ module SurgeAPI
46
53
  sig do
47
54
  override.returns(
48
55
  {
56
+ account_id: String,
49
57
  after: String,
50
58
  before: String,
51
59
  request_options: SurgeAPI::RequestOptions
@@ -14,6 +14,10 @@ module SurgeAPI
14
14
  )
15
15
  end
16
16
 
17
+ # The account for which the phone number should be created.
18
+ sig { returns(String) }
19
+ attr_accessor :account_id
20
+
17
21
  # The desired area code for this phone number. If provided without type, the type
18
22
  # will be inferred.
19
23
  sig { returns(T.nilable(String)) }
@@ -60,6 +64,7 @@ module SurgeAPI
60
64
 
61
65
  sig do
62
66
  params(
67
+ account_id: String,
63
68
  area_code: String,
64
69
  latitude: Float,
65
70
  longitude: Float,
@@ -69,6 +74,8 @@ module SurgeAPI
69
74
  ).returns(T.attached_class)
70
75
  end
71
76
  def self.new(
77
+ # The account for which the phone number should be created.
78
+ account_id:,
72
79
  # The desired area code for this phone number. If provided without type, the type
73
80
  # will be inferred.
74
81
  area_code: nil,
@@ -91,6 +98,7 @@ module SurgeAPI
91
98
  sig do
92
99
  override.returns(
93
100
  {
101
+ account_id: String,
94
102
  area_code: String,
95
103
  latitude: Float,
96
104
  longitude: Float,
@@ -0,0 +1,40 @@
1
+ # typed: strong
2
+
3
+ module SurgeAPI
4
+ module Models
5
+ class PhoneNumberReleaseParams < SurgeAPI::Internal::Type::BaseModel
6
+ extend SurgeAPI::Internal::Type::RequestParameters::Converter
7
+ include SurgeAPI::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(SurgeAPI::PhoneNumberReleaseParams, SurgeAPI::Internal::AnyHash)
12
+ end
13
+
14
+ # The ID of the phone number to release.
15
+ sig { returns(String) }
16
+ attr_accessor :id
17
+
18
+ sig do
19
+ params(
20
+ id: String,
21
+ request_options: SurgeAPI::RequestOptions::OrHash
22
+ ).returns(T.attached_class)
23
+ end
24
+ def self.new(
25
+ # The ID of the phone number to release.
26
+ id:,
27
+ request_options: {}
28
+ )
29
+ end
30
+
31
+ sig do
32
+ override.returns(
33
+ { id: String, request_options: SurgeAPI::RequestOptions }
34
+ )
35
+ end
36
+ def to_hash
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,65 @@
1
+ # typed: strong
2
+
3
+ module SurgeAPI
4
+ module Models
5
+ class PhoneNumberUpdateParams < SurgeAPI::Internal::Type::BaseModel
6
+ extend SurgeAPI::Internal::Type::RequestParameters::Converter
7
+ include SurgeAPI::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(SurgeAPI::PhoneNumberUpdateParams, SurgeAPI::Internal::AnyHash)
12
+ end
13
+
14
+ # The ID of the phone number to update.
15
+ sig { returns(String) }
16
+ attr_accessor :id
17
+
18
+ # Campaign ID to attach this number to (`cpn_...`).
19
+ sig { returns(T.nilable(String)) }
20
+ attr_reader :campaign_id
21
+
22
+ sig { params(campaign_id: String).void }
23
+ attr_writer :campaign_id
24
+
25
+ # A human-readable name for the phone number.
26
+ sig { returns(T.nilable(String)) }
27
+ attr_reader :name
28
+
29
+ sig { params(name: String).void }
30
+ attr_writer :name
31
+
32
+ sig do
33
+ params(
34
+ id: String,
35
+ campaign_id: String,
36
+ name: String,
37
+ request_options: SurgeAPI::RequestOptions::OrHash
38
+ ).returns(T.attached_class)
39
+ end
40
+ def self.new(
41
+ # The ID of the phone number to update.
42
+ id:,
43
+ # Campaign ID to attach this number to (`cpn_...`).
44
+ campaign_id: nil,
45
+ # A human-readable name for the phone number.
46
+ name: nil,
47
+ request_options: {}
48
+ )
49
+ end
50
+
51
+ sig do
52
+ override.returns(
53
+ {
54
+ id: String,
55
+ campaign_id: String,
56
+ name: String,
57
+ request_options: SurgeAPI::RequestOptions
58
+ }
59
+ )
60
+ end
61
+ def to_hash
62
+ end
63
+ end
64
+ end
65
+ end
@@ -161,6 +161,18 @@ module SurgeAPI
161
161
  end
162
162
  attr_accessor :status
163
163
 
164
+ # The E.164 phone number of the caller
165
+ sig { returns(T.nilable(String)) }
166
+ attr_accessor :from
167
+
168
+ # The Surge phone number ID (e.g. pn\_...)
169
+ sig { returns(T.nilable(String)) }
170
+ attr_accessor :phone_number_id
171
+
172
+ # The E.164 phone number of the callee
173
+ sig { returns(T.nilable(String)) }
174
+ attr_accessor :to
175
+
164
176
  # The call that produced this recording
165
177
  sig do
166
178
  params(
@@ -169,7 +181,10 @@ module SurgeAPI
169
181
  duration: Integer,
170
182
  initiated_at: Time,
171
183
  status:
172
- SurgeAPI::RecordingCompletedWebhookEvent::Data::Call::Status::OrSymbol
184
+ SurgeAPI::RecordingCompletedWebhookEvent::Data::Call::Status::OrSymbol,
185
+ from: T.nilable(String),
186
+ phone_number_id: T.nilable(String),
187
+ to: T.nilable(String)
173
188
  ).returns(T.attached_class)
174
189
  end
175
190
  def self.new(
@@ -182,7 +197,13 @@ module SurgeAPI
182
197
  # When the call was initiated
183
198
  initiated_at:,
184
199
  # The status of the call
185
- status:
200
+ status:,
201
+ # The E.164 phone number of the caller
202
+ from: nil,
203
+ # The Surge phone number ID (e.g. pn\_...)
204
+ phone_number_id: nil,
205
+ # The E.164 phone number of the callee
206
+ to: nil
186
207
  )
187
208
  end
188
209
 
@@ -194,7 +215,10 @@ module SurgeAPI
194
215
  duration: Integer,
195
216
  initiated_at: Time,
196
217
  status:
197
- SurgeAPI::RecordingCompletedWebhookEvent::Data::Call::Status::TaggedSymbol
218
+ SurgeAPI::RecordingCompletedWebhookEvent::Data::Call::Status::TaggedSymbol,
219
+ from: T.nilable(String),
220
+ phone_number_id: T.nilable(String),
221
+ to: T.nilable(String)
198
222
  }
199
223
  )
200
224
  end
@@ -11,15 +11,28 @@ module SurgeAPI
11
11
  T.any(SurgeAPI::RecordingDeleteParams, SurgeAPI::Internal::AnyHash)
12
12
  end
13
13
 
14
+ # The ID of the recording.
15
+ sig { returns(String) }
16
+ attr_accessor :id
17
+
14
18
  sig do
15
- params(request_options: SurgeAPI::RequestOptions::OrHash).returns(
16
- T.attached_class
17
- )
19
+ params(
20
+ id: String,
21
+ request_options: SurgeAPI::RequestOptions::OrHash
22
+ ).returns(T.attached_class)
18
23
  end
19
- def self.new(request_options: {})
24
+ def self.new(
25
+ # The ID of the recording.
26
+ id:,
27
+ request_options: {}
28
+ )
20
29
  end
21
30
 
22
- sig { override.returns({ request_options: SurgeAPI::RequestOptions }) }
31
+ sig do
32
+ override.returns(
33
+ { id: String, request_options: SurgeAPI::RequestOptions }
34
+ )
35
+ end
23
36
  def to_hash
24
37
  end
25
38
  end
@@ -11,15 +11,28 @@ module SurgeAPI
11
11
  T.any(SurgeAPI::RecordingGetFileParams, SurgeAPI::Internal::AnyHash)
12
12
  end
13
13
 
14
+ # The ID of the recording.
15
+ sig { returns(String) }
16
+ attr_accessor :recording_id
17
+
14
18
  sig do
15
- params(request_options: SurgeAPI::RequestOptions::OrHash).returns(
16
- T.attached_class
17
- )
19
+ params(
20
+ recording_id: String,
21
+ request_options: SurgeAPI::RequestOptions::OrHash
22
+ ).returns(T.attached_class)
18
23
  end
19
- def self.new(request_options: {})
24
+ def self.new(
25
+ # The ID of the recording.
26
+ recording_id:,
27
+ request_options: {}
28
+ )
20
29
  end
21
30
 
22
- sig { override.returns({ request_options: SurgeAPI::RequestOptions }) }
31
+ sig do
32
+ override.returns(
33
+ { recording_id: String, request_options: SurgeAPI::RequestOptions }
34
+ )
35
+ end
23
36
  def to_hash
24
37
  end
25
38
  end
@@ -11,6 +11,10 @@ module SurgeAPI
11
11
  T.any(SurgeAPI::RecordingListParams, SurgeAPI::Internal::AnyHash)
12
12
  end
13
13
 
14
+ # The account ID to list recordings for.
15
+ sig { returns(String) }
16
+ attr_accessor :account_id
17
+
14
18
  # Cursor for forward pagination. Use the next_cursor from a previous response.
15
19
  sig { returns(T.nilable(String)) }
16
20
  attr_reader :after
@@ -28,12 +32,15 @@ module SurgeAPI
28
32
 
29
33
  sig do
30
34
  params(
35
+ account_id: String,
31
36
  after: String,
32
37
  before: String,
33
38
  request_options: SurgeAPI::RequestOptions::OrHash
34
39
  ).returns(T.attached_class)
35
40
  end
36
41
  def self.new(
42
+ # The account ID to list recordings for.
43
+ account_id:,
37
44
  # Cursor for forward pagination. Use the next_cursor from a previous response.
38
45
  after: nil,
39
46
  # Cursor for backward pagination. Use the previous_cursor from a previous
@@ -46,6 +53,7 @@ module SurgeAPI
46
53
  sig do
47
54
  override.returns(
48
55
  {
56
+ account_id: String,
49
57
  after: String,
50
58
  before: String,
51
59
  request_options: SurgeAPI::RequestOptions