surge_api 0.23.0 → 0.25.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 (112) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +28 -0
  3. data/README.md +9 -9
  4. data/lib/surge_api/client.rb +4 -0
  5. data/lib/surge_api/internal/type/union.rb +2 -2
  6. data/lib/surge_api/models/account_retrieve_status_params.rb +1 -0
  7. data/lib/surge_api/models/call_ended_webhook_event.rb +8 -3
  8. data/lib/surge_api/models/campaign.rb +21 -13
  9. data/lib/surge_api/models/campaign_approved_webhook_event.rb +9 -1
  10. data/lib/surge_api/models/campaign_params.rb +11 -12
  11. data/lib/surge_api/models/campaign_rejected_webhook_event.rb +135 -0
  12. data/lib/surge_api/models/campaign_submitted_webhook_event.rb +74 -0
  13. data/lib/surge_api/models/campaign_update_params.rb +188 -1
  14. data/lib/surge_api/models/campaign_warning_webhook_event.rb +134 -0
  15. data/lib/surge_api/models/message.rb +42 -2
  16. data/lib/surge_api/models/message_delivered_webhook_event.rb +29 -1
  17. data/lib/surge_api/models/message_failed_webhook_event.rb +26 -5
  18. data/lib/surge_api/models/message_received_webhook_event.rb +29 -1
  19. data/lib/surge_api/models/message_sent_webhook_event.rb +29 -1
  20. data/lib/surge_api/models/phone_number.rb +9 -1
  21. data/lib/surge_api/models/phone_number_attached_to_campaign_webhook_event.rb +9 -1
  22. data/lib/surge_api/models/phone_number_imported_webhook_event.rb +160 -0
  23. data/lib/surge_api/models/phone_number_purchase_params.rb +9 -1
  24. data/lib/surge_api/models/phone_number_update_params.rb +9 -1
  25. data/lib/surge_api/models/toll_free_campaign.rb +132 -0
  26. data/lib/surge_api/models/toll_free_campaign_consent_flow.rb +176 -0
  27. data/lib/surge_api/models/toll_free_campaign_create_params.rb +22 -0
  28. data/lib/surge_api/models/toll_free_campaign_list_params.rb +42 -0
  29. data/lib/surge_api/models/toll_free_campaign_params.rb +286 -0
  30. data/lib/surge_api/models/toll_free_campaign_retrieve_params.rb +22 -0
  31. data/lib/surge_api/models/toll_free_campaign_update_params.rb +278 -0
  32. data/lib/surge_api/models/unwrap_webhook_event.rb +9 -1
  33. data/lib/surge_api/models/user_create_token_params.rb +15 -1
  34. data/lib/surge_api/models.rb +22 -0
  35. data/lib/surge_api/resources/accounts.rb +2 -2
  36. data/lib/surge_api/resources/campaigns.rb +26 -8
  37. data/lib/surge_api/resources/phone_numbers.rb +6 -2
  38. data/lib/surge_api/resources/toll_free_campaigns.rb +140 -0
  39. data/lib/surge_api/resources/users.rb +6 -1
  40. data/lib/surge_api/resources/webhooks.rb +1 -1
  41. data/lib/surge_api/version.rb +1 -1
  42. data/lib/surge_api.rb +12 -0
  43. data/rbi/surge_api/client.rbi +3 -0
  44. data/rbi/surge_api/models/account_retrieve_status_params.rbi +5 -0
  45. data/rbi/surge_api/models/call_ended_webhook_event.rbi +6 -3
  46. data/rbi/surge_api/models/campaign.rbi +26 -19
  47. data/rbi/surge_api/models/campaign_approved_webhook_event.rbi +8 -0
  48. data/rbi/surge_api/models/campaign_params.rbi +17 -19
  49. data/rbi/surge_api/models/campaign_rejected_webhook_event.rbi +269 -0
  50. data/rbi/surge_api/models/campaign_submitted_webhook_event.rbi +149 -0
  51. data/rbi/surge_api/models/campaign_update_params.rbi +378 -1
  52. data/rbi/surge_api/models/campaign_warning_webhook_event.rbi +259 -0
  53. data/rbi/surge_api/models/message.rbi +50 -3
  54. data/rbi/surge_api/models/message_delivered_webhook_event.rbi +52 -0
  55. data/rbi/surge_api/models/message_failed_webhook_event.rbi +47 -5
  56. data/rbi/surge_api/models/message_received_webhook_event.rbi +49 -0
  57. data/rbi/surge_api/models/message_sent_webhook_event.rbi +46 -0
  58. data/rbi/surge_api/models/phone_number.rbi +8 -0
  59. data/rbi/surge_api/models/phone_number_attached_to_campaign_webhook_event.rbi +8 -0
  60. data/rbi/surge_api/models/phone_number_imported_webhook_event.rbi +318 -0
  61. data/rbi/surge_api/models/phone_number_purchase_params.rbi +11 -0
  62. data/rbi/surge_api/models/phone_number_update_params.rbi +11 -0
  63. data/rbi/surge_api/models/toll_free_campaign.rbi +230 -0
  64. data/rbi/surge_api/models/toll_free_campaign_consent_flow.rbi +476 -0
  65. data/rbi/surge_api/models/toll_free_campaign_create_params.rbi +43 -0
  66. data/rbi/surge_api/models/toll_free_campaign_list_params.rbi +70 -0
  67. data/rbi/surge_api/models/toll_free_campaign_params.rbi +711 -0
  68. data/rbi/surge_api/models/toll_free_campaign_retrieve_params.rbi +43 -0
  69. data/rbi/surge_api/models/toll_free_campaign_update_params.rbi +760 -0
  70. data/rbi/surge_api/models/unwrap_webhook_event.rbi +4 -0
  71. data/rbi/surge_api/models/user_create_token_params.rbi +17 -0
  72. data/rbi/surge_api/models.rbi +25 -0
  73. data/rbi/surge_api/resources/accounts.rbi +2 -2
  74. data/rbi/surge_api/resources/campaigns.rbi +94 -12
  75. data/rbi/surge_api/resources/phone_numbers.rbi +6 -0
  76. data/rbi/surge_api/resources/toll_free_campaigns.rbi +129 -0
  77. data/rbi/surge_api/resources/users.rbi +6 -0
  78. data/rbi/surge_api/resources/webhooks.rbi +4 -0
  79. data/sig/surge_api/client.rbs +2 -0
  80. data/sig/surge_api/models/account_retrieve_status_params.rbs +2 -1
  81. data/sig/surge_api/models/campaign.rbs +8 -1
  82. data/sig/surge_api/models/campaign_approved_webhook_event.rbs +5 -0
  83. data/sig/surge_api/models/campaign_rejected_webhook_event.rbs +115 -0
  84. data/sig/surge_api/models/campaign_submitted_webhook_event.rbs +67 -0
  85. data/sig/surge_api/models/campaign_update_params.rbs +128 -2
  86. data/sig/surge_api/models/campaign_warning_webhook_event.rbs +114 -0
  87. data/sig/surge_api/models/message.rbs +36 -3
  88. data/sig/surge_api/models/message_delivered_webhook_event.rbs +20 -0
  89. data/sig/surge_api/models/message_failed_webhook_event.rbs +19 -4
  90. data/sig/surge_api/models/message_received_webhook_event.rbs +20 -0
  91. data/sig/surge_api/models/message_sent_webhook_event.rbs +20 -0
  92. data/sig/surge_api/models/phone_number.rbs +5 -0
  93. data/sig/surge_api/models/phone_number_attached_to_campaign_webhook_event.rbs +5 -0
  94. data/sig/surge_api/models/phone_number_imported_webhook_event.rbs +130 -0
  95. data/sig/surge_api/models/phone_number_purchase_params.rbs +7 -0
  96. data/sig/surge_api/models/phone_number_update_params.rbs +12 -1
  97. data/sig/surge_api/models/toll_free_campaign.rbs +126 -0
  98. data/sig/surge_api/models/toll_free_campaign_consent_flow.rbs +207 -0
  99. data/sig/surge_api/models/toll_free_campaign_create_params.rbs +25 -0
  100. data/sig/surge_api/models/toll_free_campaign_list_params.rbs +36 -0
  101. data/sig/surge_api/models/toll_free_campaign_params.rbs +321 -0
  102. data/sig/surge_api/models/toll_free_campaign_retrieve_params.rbs +23 -0
  103. data/sig/surge_api/models/toll_free_campaign_update_params.rbs +332 -0
  104. data/sig/surge_api/models/unwrap_webhook_event.rbs +4 -0
  105. data/sig/surge_api/models/user_create_token_params.rbs +7 -1
  106. data/sig/surge_api/models.rbs +22 -0
  107. data/sig/surge_api/resources/campaigns.rbs +9 -1
  108. data/sig/surge_api/resources/phone_numbers.rbs +2 -0
  109. data/sig/surge_api/resources/toll_free_campaigns.rbs +44 -0
  110. data/sig/surge_api/resources/users.rbs +1 -0
  111. data/sig/surge_api/resources/webhooks.rbs +4 -0
  112. metadata +53 -7
@@ -56,6 +56,12 @@ module SurgeAPI
56
56
  # @return [SurgeAPI::Models::MessageSentWebhookEvent::Data::Conversation]
57
57
  required :conversation, -> { SurgeAPI::MessageSentWebhookEvent::Data::Conversation }
58
58
 
59
+ # @!attribute failure_reason
60
+ # The reason the message failed, or null if no failure reason is set
61
+ #
62
+ # @return [String, nil]
63
+ required :failure_reason, String, nil?: true
64
+
59
65
  # @!attribute metadata
60
66
  # Set of key-value pairs that will be stored with the object.
61
67
  #
@@ -68,6 +74,12 @@ module SurgeAPI
68
74
  # @return [Time]
69
75
  required :sent_at, Time
70
76
 
77
+ # @!attribute status
78
+ # The message status represented by this event
79
+ #
80
+ # @return [Symbol, SurgeAPI::Models::MessageSentWebhookEvent::Data::Status]
81
+ required :status, enum: -> { SurgeAPI::MessageSentWebhookEvent::Data::Status }
82
+
71
83
  # @!attribute attachments
72
84
  # Attachments included with the message
73
85
  #
@@ -82,7 +94,7 @@ module SurgeAPI
82
94
  # @return [String, nil]
83
95
  optional :blast_id, String
84
96
 
85
- # @!method initialize(id:, body:, conversation:, metadata:, sent_at:, attachments: nil, blast_id: nil)
97
+ # @!method initialize(id:, body:, conversation:, failure_reason:, metadata:, sent_at:, status:, attachments: nil, blast_id: nil)
86
98
  # Some parameter documentations has been truncated, see
87
99
  # {SurgeAPI::Models::MessageSentWebhookEvent::Data} for more details.
88
100
  #
@@ -94,10 +106,14 @@ module SurgeAPI
94
106
  #
95
107
  # @param conversation [SurgeAPI::Models::MessageSentWebhookEvent::Data::Conversation] The conversation this message belongs to
96
108
  #
109
+ # @param failure_reason [String, nil] The reason the message failed, or null if no failure reason is set
110
+ #
97
111
  # @param metadata [Hash{Symbol=>String}] Set of key-value pairs that will be stored with the object.
98
112
  #
99
113
  # @param sent_at [Time] When the message was sent
100
114
  #
115
+ # @param status [Symbol, SurgeAPI::Models::MessageSentWebhookEvent::Data::Status] The message status represented by this event
116
+ #
101
117
  # @param attachments [Array<SurgeAPI::Models::MessageSentWebhookEvent::Data::Attachment>] Attachments included with the message
102
118
  #
103
119
  # @param blast_id [String] The ID of the blast this message belongs to, if any. This can be used to attribu
@@ -132,6 +148,18 @@ module SurgeAPI
132
148
  # @param phone_number [SurgeAPI::Models::PhoneNumber] A phone number that can be used to send and receive messages and calls
133
149
  end
134
150
 
151
+ # The message status represented by this event
152
+ #
153
+ # @see SurgeAPI::Models::MessageSentWebhookEvent::Data#status
154
+ module Status
155
+ extend SurgeAPI::Internal::Type::Enum
156
+
157
+ SENT = :sent
158
+
159
+ # @!method self.values
160
+ # @return [Array<Symbol>]
161
+ end
162
+
135
163
  class Attachment < SurgeAPI::Internal::Type::BaseModel
136
164
  # @!attribute id
137
165
  # The unique identifier for the attachment
@@ -25,6 +25,12 @@ module SurgeAPI
25
25
  # @return [String, nil]
26
26
  required :campaign_id, String, nil?: true
27
27
 
28
+ # @!attribute metadata
29
+ # Set of key-value pairs that will be stored with the object.
30
+ #
31
+ # @return [Hash{Symbol=>String}]
32
+ required :metadata, SurgeAPI::Internal::Type::HashOf[String]
33
+
28
34
  # @!attribute name
29
35
  # A human-readable name for the phone number
30
36
  #
@@ -43,7 +49,7 @@ module SurgeAPI
43
49
  # @return [Symbol, SurgeAPI::Models::PhoneNumber::Type]
44
50
  required :type, enum: -> { SurgeAPI::PhoneNumber::Type }
45
51
 
46
- # @!method initialize(id:, campaign:, campaign_id:, name:, number:, type:)
52
+ # @!method initialize(id:, campaign:, campaign_id:, metadata:, name:, number:, type:)
47
53
  # Some parameter documentations has been truncated, see
48
54
  # {SurgeAPI::Models::PhoneNumber} for more details.
49
55
  #
@@ -55,6 +61,8 @@ module SurgeAPI
55
61
  #
56
62
  # @param campaign_id [String, nil] Deprecated. The unique identifier of the campaign this phone number is attached
57
63
  #
64
+ # @param metadata [Hash{Symbol=>String}] Set of key-value pairs that will be stored with the object.
65
+ #
58
66
  # @param name [String, nil] A human-readable name for the phone number
59
67
  #
60
68
  # @param number [String] The phone number in E.164 format
@@ -67,6 +67,12 @@ module SurgeAPI
67
67
  # @return [String]
68
68
  required :campaign_id, String
69
69
 
70
+ # @!attribute metadata
71
+ # Set of key-value pairs that will be stored with the object.
72
+ #
73
+ # @return [Hash{Symbol=>String}]
74
+ required :metadata, SurgeAPI::Internal::Type::HashOf[String]
75
+
70
76
  # @!attribute name
71
77
  # A human-readable name for the phone number
72
78
  #
@@ -85,7 +91,7 @@ module SurgeAPI
85
91
  # @return [Symbol, SurgeAPI::Models::PhoneNumberAttachedToCampaignWebhookEvent::Data::Type]
86
92
  required :type, enum: -> { SurgeAPI::PhoneNumberAttachedToCampaignWebhookEvent::Data::Type }
87
93
 
88
- # @!method initialize(id:, campaign:, campaign_id:, name:, number:, type:)
94
+ # @!method initialize(id:, campaign:, campaign_id:, metadata:, name:, number:, type:)
89
95
  # Some parameter documentations has been truncated, see
90
96
  # {SurgeAPI::Models::PhoneNumberAttachedToCampaignWebhookEvent::Data} for more
91
97
  # details.
@@ -98,6 +104,8 @@ module SurgeAPI
98
104
  #
99
105
  # @param campaign_id [String] Deprecated. The unique identifier of the campaign this phone number is attached
100
106
  #
107
+ # @param metadata [Hash{Symbol=>String}] Set of key-value pairs that will be stored with the object.
108
+ #
101
109
  # @param name [String, nil] A human-readable name for the phone number
102
110
  #
103
111
  # @param number [String] The phone number in E.164 format
@@ -0,0 +1,160 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SurgeAPI
4
+ module Models
5
+ class PhoneNumberImportedWebhookEvent < SurgeAPI::Internal::Type::BaseModel
6
+ # @!attribute account_id
7
+ # The ID of the account in which this event occurred
8
+ #
9
+ # @return [String]
10
+ required :account_id, String
11
+
12
+ # @!attribute data
13
+ # The data associated with the event
14
+ #
15
+ # @return [SurgeAPI::Models::PhoneNumberImportedWebhookEvent::Data]
16
+ required :data, -> { SurgeAPI::PhoneNumberImportedWebhookEvent::Data }
17
+
18
+ # @!attribute timestamp
19
+ # The timestamp when this event occurred, in ISO8601 format
20
+ #
21
+ # @return [Time]
22
+ required :timestamp, Time
23
+
24
+ # @!attribute type
25
+ # The type of the event. Always `phone_number.imported` for this event.
26
+ #
27
+ # @return [Symbol, :"phone_number.imported"]
28
+ required :type, const: :"phone_number.imported"
29
+
30
+ # @!method initialize(account_id:, data:, timestamp:, type: :"phone_number.imported")
31
+ # @param account_id [String] The ID of the account in which this event occurred
32
+ #
33
+ # @param data [SurgeAPI::Models::PhoneNumberImportedWebhookEvent::Data] The data associated with the event
34
+ #
35
+ # @param timestamp [Time] The timestamp when this event occurred, in ISO8601 format
36
+ #
37
+ # @param type [Symbol, :"phone_number.imported"] The type of the event. Always `phone_number.imported` for this event.
38
+
39
+ # @see SurgeAPI::Models::PhoneNumberImportedWebhookEvent#data
40
+ class Data < SurgeAPI::Internal::Type::BaseModel
41
+ # @!attribute id
42
+ # The unique identifier for the phone number
43
+ #
44
+ # @return [String]
45
+ required :id, String
46
+
47
+ # @!attribute campaign
48
+ # Campaign attachment details for a domestic local phone number
49
+ #
50
+ # @return [SurgeAPI::Models::PhoneNumberImportedWebhookEvent::Data::Campaign, nil]
51
+ required :campaign, -> { SurgeAPI::PhoneNumberImportedWebhookEvent::Data::Campaign }, nil?: true
52
+
53
+ # @!attribute campaign_id
54
+ # @deprecated Use `campaign.id` instead.
55
+ #
56
+ # Deprecated. The unique identifier of the campaign this phone number is attached
57
+ # to
58
+ #
59
+ # @return [String, nil]
60
+ required :campaign_id, String, nil?: true
61
+
62
+ # @!attribute metadata
63
+ # Set of key-value pairs that will be stored with the object.
64
+ #
65
+ # @return [Hash{Symbol=>String}]
66
+ required :metadata, SurgeAPI::Internal::Type::HashOf[String]
67
+
68
+ # @!attribute name
69
+ # A human-readable name for the phone number
70
+ #
71
+ # @return [String, nil]
72
+ required :name, String, nil?: true
73
+
74
+ # @!attribute number
75
+ # The phone number in E.164 format
76
+ #
77
+ # @return [String]
78
+ required :number, String
79
+
80
+ # @!attribute type
81
+ # Whether the phone number is local, toll-free, or short code
82
+ #
83
+ # @return [Symbol, SurgeAPI::Models::PhoneNumberImportedWebhookEvent::Data::Type]
84
+ required :type, enum: -> { SurgeAPI::PhoneNumberImportedWebhookEvent::Data::Type }
85
+
86
+ # @!method initialize(id:, campaign:, campaign_id:, metadata:, name:, number:, type:)
87
+ # Some parameter documentations has been truncated, see
88
+ # {SurgeAPI::Models::PhoneNumberImportedWebhookEvent::Data} for more details.
89
+ #
90
+ # The data associated with the event
91
+ #
92
+ # @param id [String] The unique identifier for the phone number
93
+ #
94
+ # @param campaign [SurgeAPI::Models::PhoneNumberImportedWebhookEvent::Data::Campaign, nil] Campaign attachment details for a domestic local phone number
95
+ #
96
+ # @param campaign_id [String, nil] Deprecated. The unique identifier of the campaign this phone number is attached
97
+ #
98
+ # @param metadata [Hash{Symbol=>String}] Set of key-value pairs that will be stored with the object.
99
+ #
100
+ # @param name [String, nil] A human-readable name for the phone number
101
+ #
102
+ # @param number [String] The phone number in E.164 format
103
+ #
104
+ # @param type [Symbol, SurgeAPI::Models::PhoneNumberImportedWebhookEvent::Data::Type] Whether the phone number is local, toll-free, or short code
105
+
106
+ # @see SurgeAPI::Models::PhoneNumberImportedWebhookEvent::Data#campaign
107
+ class Campaign < SurgeAPI::Internal::Type::BaseModel
108
+ # @!attribute id
109
+ # The unique identifier of the campaign this phone number is attached to
110
+ #
111
+ # @return [String]
112
+ required :id, String
113
+
114
+ # @!attribute attachment_status
115
+ # The current campaign attachment status for this phone number.
116
+ #
117
+ # @return [Symbol, SurgeAPI::Models::PhoneNumberImportedWebhookEvent::Data::Campaign::AttachmentStatus]
118
+ required :attachment_status,
119
+ enum: -> { SurgeAPI::PhoneNumberImportedWebhookEvent::Data::Campaign::AttachmentStatus }
120
+
121
+ # @!method initialize(id:, attachment_status:)
122
+ # Campaign attachment details for a domestic local phone number
123
+ #
124
+ # @param id [String] The unique identifier of the campaign this phone number is attached to
125
+ #
126
+ # @param attachment_status [Symbol, SurgeAPI::Models::PhoneNumberImportedWebhookEvent::Data::Campaign::AttachmentStatus] The current campaign attachment status for this phone number.
127
+
128
+ # The current campaign attachment status for this phone number.
129
+ #
130
+ # @see SurgeAPI::Models::PhoneNumberImportedWebhookEvent::Data::Campaign#attachment_status
131
+ module AttachmentStatus
132
+ extend SurgeAPI::Internal::Type::Enum
133
+
134
+ ATTACHED = :attached
135
+ ATTACHMENT_PENDING = :attachment_pending
136
+ DETACHED = :detached
137
+ DETACHMENT_PENDING = :detachment_pending
138
+
139
+ # @!method self.values
140
+ # @return [Array<Symbol>]
141
+ end
142
+ end
143
+
144
+ # Whether the phone number is local, toll-free, or short code
145
+ #
146
+ # @see SurgeAPI::Models::PhoneNumberImportedWebhookEvent::Data#type
147
+ module Type
148
+ extend SurgeAPI::Internal::Type::Enum
149
+
150
+ LOCAL = :local
151
+ SHORT_CODE = :short_code
152
+ TOLL_FREE = :toll_free
153
+
154
+ # @!method self.values
155
+ # @return [Array<Symbol>]
156
+ end
157
+ end
158
+ end
159
+ end
160
+ end
@@ -34,6 +34,12 @@ module SurgeAPI
34
34
  # @return [Float, nil]
35
35
  optional :longitude, Float
36
36
 
37
+ # @!attribute metadata
38
+ # Set of key-value pairs that will be stored with the object.
39
+ #
40
+ # @return [Hash{Symbol=>String}, nil]
41
+ optional :metadata, SurgeAPI::Internal::Type::HashOf[String]
42
+
37
43
  # @!attribute name
38
44
  # A human-readable name for the phone number. If not provided, defaults to the
39
45
  # formatted phone number.
@@ -55,7 +61,7 @@ module SurgeAPI
55
61
  # @return [Symbol, SurgeAPI::Models::PhoneNumberPurchaseParams::Type, nil]
56
62
  optional :type, enum: -> { SurgeAPI::PhoneNumberPurchaseParams::Type }
57
63
 
58
- # @!method initialize(account_id:, area_code: nil, latitude: nil, longitude: nil, name: nil, phone_number: nil, type: nil, request_options: {})
64
+ # @!method initialize(account_id:, area_code: nil, latitude: nil, longitude: nil, metadata: nil, name: nil, phone_number: nil, type: nil, request_options: {})
59
65
  # Some parameter documentations has been truncated, see
60
66
  # {SurgeAPI::Models::PhoneNumberPurchaseParams} for more details.
61
67
  #
@@ -67,6 +73,8 @@ module SurgeAPI
67
73
  #
68
74
  # @param longitude [Float] Longitude to search for nearby phone numbers. Must be used with latitude. If pro
69
75
  #
76
+ # @param metadata [Hash{Symbol=>String}] Set of key-value pairs that will be stored with the object.
77
+ #
70
78
  # @param name [String] A human-readable name for the phone number. If not provided, defaults to the for
71
79
  #
72
80
  # @param phone_number [String] The exact phone number to purchase in E.164 format. When provided, all other sea
@@ -19,17 +19,25 @@ module SurgeAPI
19
19
  # @return [String, nil]
20
20
  optional :campaign_id, String
21
21
 
22
+ # @!attribute metadata
23
+ # Set of key-value pairs that will be stored with the object.
24
+ #
25
+ # @return [Hash{Symbol=>String}, nil]
26
+ optional :metadata, SurgeAPI::Internal::Type::HashOf[String]
27
+
22
28
  # @!attribute name
23
29
  # A human-readable name for the phone number.
24
30
  #
25
31
  # @return [String, nil]
26
32
  optional :name, String
27
33
 
28
- # @!method initialize(id:, campaign_id: nil, name: nil, request_options: {})
34
+ # @!method initialize(id:, campaign_id: nil, metadata: nil, name: nil, request_options: {})
29
35
  # @param id [String] The ID of the phone number to update.
30
36
  #
31
37
  # @param campaign_id [String] Campaign ID to attach this number to (`cpn_...`).
32
38
  #
39
+ # @param metadata [Hash{Symbol=>String}] Set of key-value pairs that will be stored with the object.
40
+ #
33
41
  # @param name [String] A human-readable name for the phone number.
34
42
  #
35
43
  # @param request_options [SurgeAPI::RequestOptions, Hash{Symbol=>Object}]
@@ -0,0 +1,132 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SurgeAPI
4
+ module Models
5
+ # @see SurgeAPI::Resources::TollFreeCampaigns#create
6
+ class TollFreeCampaign < SurgeAPI::Internal::Type::BaseModel
7
+ # @!attribute id
8
+ # The toll-free campaign ID
9
+ #
10
+ # @return [String]
11
+ required :id, String
12
+
13
+ # @!attribute consent_flows
14
+ #
15
+ # @return [Array<SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember0, SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember1, SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember2, SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember3, SurgeAPI::Models::TollFreeCampaignConsentFlow::Type>]
16
+ required :consent_flows,
17
+ -> { SurgeAPI::Internal::Type::ArrayOf[union: SurgeAPI::TollFreeCampaignConsentFlow] }
18
+
19
+ # @!attribute description
20
+ #
21
+ # @return [String, nil]
22
+ required :description, String, nil?: true
23
+
24
+ # @!attribute includes
25
+ #
26
+ # @return [Array<Symbol, SurgeAPI::Models::TollFreeCampaign::Include>]
27
+ required :includes, -> { SurgeAPI::Internal::Type::ArrayOf[enum: SurgeAPI::TollFreeCampaign::Include] }
28
+
29
+ # @!attribute message_samples
30
+ #
31
+ # @return [Array<String>]
32
+ required :message_samples, SurgeAPI::Internal::Type::ArrayOf[String]
33
+
34
+ # @!attribute phone_number_id
35
+ # The toll-free phone number ID
36
+ #
37
+ # @return [String]
38
+ required :phone_number_id, String
39
+
40
+ # @!attribute privacy_policy_url
41
+ #
42
+ # @return [String, nil]
43
+ required :privacy_policy_url, String, nil?: true
44
+
45
+ # @!attribute status
46
+ # The current status of the toll-free campaign.
47
+ #
48
+ # @return [Symbol, SurgeAPI::Models::TollFreeCampaign::Status]
49
+ required :status, enum: -> { SurgeAPI::TollFreeCampaign::Status }
50
+
51
+ # @!attribute terms_and_conditions_url
52
+ #
53
+ # @return [String, nil]
54
+ required :terms_and_conditions_url, String, nil?: true
55
+
56
+ # @!attribute use_cases
57
+ #
58
+ # @return [Array<Symbol, SurgeAPI::Models::TollFreeCampaign::UseCase>]
59
+ required :use_cases, -> { SurgeAPI::Internal::Type::ArrayOf[enum: SurgeAPI::TollFreeCampaign::UseCase] }
60
+
61
+ # @!method initialize(id:, consent_flows:, description:, includes:, message_samples:, phone_number_id:, privacy_policy_url:, status:, terms_and_conditions_url:, use_cases:)
62
+ # A toll-free campaign registration for a phone number.
63
+ #
64
+ # @param id [String] The toll-free campaign ID
65
+ #
66
+ # @param consent_flows [Array<SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember0, SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember1, SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember2, SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember3, SurgeAPI::Models::TollFreeCampaignConsentFlow::Type>]
67
+ #
68
+ # @param description [String, nil]
69
+ #
70
+ # @param includes [Array<Symbol, SurgeAPI::Models::TollFreeCampaign::Include>]
71
+ #
72
+ # @param message_samples [Array<String>]
73
+ #
74
+ # @param phone_number_id [String] The toll-free phone number ID
75
+ #
76
+ # @param privacy_policy_url [String, nil]
77
+ #
78
+ # @param status [Symbol, SurgeAPI::Models::TollFreeCampaign::Status] The current status of the toll-free campaign.
79
+ #
80
+ # @param terms_and_conditions_url [String, nil]
81
+ #
82
+ # @param use_cases [Array<Symbol, SurgeAPI::Models::TollFreeCampaign::UseCase>]
83
+
84
+ module Include
85
+ extend SurgeAPI::Internal::Type::Enum
86
+
87
+ AGE_GATED = :age_gated
88
+
89
+ # @!method self.values
90
+ # @return [Array<Symbol>]
91
+ end
92
+
93
+ # The current status of the toll-free campaign.
94
+ #
95
+ # @see SurgeAPI::Models::TollFreeCampaign#status
96
+ module Status
97
+ extend SurgeAPI::Internal::Type::Enum
98
+
99
+ ACTIVE = :active
100
+ CANCELED = :canceled
101
+ CREATED = :created
102
+ IN_REVIEW = :in_review
103
+ REJECTED = :rejected
104
+
105
+ # @!method self.values
106
+ # @return [Array<Symbol>]
107
+ end
108
+
109
+ module UseCase
110
+ extend SurgeAPI::Internal::Type::Enum
111
+
112
+ TWO_FACTOR_AUTHENTICATION = :two_factor_authentication
113
+ ACCOUNT_NOTIFICATION = :account_notification
114
+ CUSTOMER_CARE = :customer_care
115
+ CHARITY = :charity
116
+ DELIVERY_NOTIFICATION = :delivery_notification
117
+ FRAUD_ALERT = :fraud_alert
118
+ EVENT = :event
119
+ HIGHER_EDUCATION = :higher_education
120
+ K12_EDUCATION = :k12_education
121
+ MARKETING = :marketing
122
+ POLLING_VOTING = :polling_voting
123
+ POLITICAL = :political
124
+ PUBLIC_SERVICE_ANNOUNCEMENT = :public_service_announcement
125
+ SECURITY_ALERT = :security_alert
126
+
127
+ # @!method self.values
128
+ # @return [Array<Symbol>]
129
+ end
130
+ end
131
+ end
132
+ end
@@ -0,0 +1,176 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SurgeAPI
4
+ module Models
5
+ # A consent flow returned on toll-free campaign responses.
6
+ module TollFreeCampaignConsentFlow
7
+ extend SurgeAPI::Internal::Type::Union
8
+
9
+ variant -> { SurgeAPI::TollFreeCampaignConsentFlow::UnionMember0 }
10
+
11
+ variant -> { SurgeAPI::TollFreeCampaignConsentFlow::UnionMember1 }
12
+
13
+ variant -> { SurgeAPI::TollFreeCampaignConsentFlow::UnionMember2 }
14
+
15
+ variant -> { SurgeAPI::TollFreeCampaignConsentFlow::UnionMember3 }
16
+
17
+ variant -> { SurgeAPI::TollFreeCampaignConsentFlow::Type }
18
+
19
+ class UnionMember0 < SurgeAPI::Internal::Type::BaseModel
20
+ # @!attribute script
21
+ #
22
+ # @return [String]
23
+ required :script, String
24
+
25
+ # @!attribute type
26
+ #
27
+ # @return [Symbol, SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember0::Type]
28
+ required :type, enum: -> { SurgeAPI::TollFreeCampaignConsentFlow::UnionMember0::Type }
29
+
30
+ # @!method initialize(script:, type:)
31
+ # @param script [String]
32
+ # @param type [Symbol, SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember0::Type]
33
+
34
+ # @see SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember0#type
35
+ module Type
36
+ extend SurgeAPI::Internal::Type::Enum
37
+
38
+ VERBAL = :verbal
39
+
40
+ # @!method self.values
41
+ # @return [Array<Symbol>]
42
+ end
43
+ end
44
+
45
+ class UnionMember1 < SurgeAPI::Internal::Type::BaseModel
46
+ # @!attribute form_url
47
+ #
48
+ # @return [String]
49
+ required :form_url, String
50
+
51
+ # @!attribute type
52
+ #
53
+ # @return [Symbol, SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember1::Type]
54
+ required :type, enum: -> { SurgeAPI::TollFreeCampaignConsentFlow::UnionMember1::Type }
55
+
56
+ # @!method initialize(form_url:, type:)
57
+ # @param form_url [String]
58
+ # @param type [Symbol, SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember1::Type]
59
+
60
+ # @see SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember1#type
61
+ module Type
62
+ extend SurgeAPI::Internal::Type::Enum
63
+
64
+ WEB_FORM = :web_form
65
+
66
+ # @!method self.values
67
+ # @return [Array<Symbol>]
68
+ end
69
+ end
70
+
71
+ class UnionMember2 < SurgeAPI::Internal::Type::BaseModel
72
+ # @!attribute screenshot
73
+ #
74
+ # @return [SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember2::Screenshot]
75
+ required :screenshot, -> { SurgeAPI::TollFreeCampaignConsentFlow::UnionMember2::Screenshot }
76
+
77
+ # @!attribute type
78
+ #
79
+ # @return [Symbol, SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember2::Type]
80
+ required :type, enum: -> { SurgeAPI::TollFreeCampaignConsentFlow::UnionMember2::Type }
81
+
82
+ # @!method initialize(screenshot:, type:)
83
+ # @param screenshot [SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember2::Screenshot]
84
+ # @param type [Symbol, SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember2::Type]
85
+
86
+ # @see SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember2#screenshot
87
+ class Screenshot < SurgeAPI::Internal::Type::BaseModel
88
+ # @!attribute reason
89
+ #
90
+ # @return [Symbol, SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember2::Screenshot::Reason]
91
+ required :reason, enum: -> { SurgeAPI::TollFreeCampaignConsentFlow::UnionMember2::Screenshot::Reason }
92
+
93
+ # @!attribute reason_other
94
+ #
95
+ # @return [String, nil]
96
+ optional :reason_other, String
97
+
98
+ # @!method initialize(reason:, reason_other: nil)
99
+ # @param reason [Symbol, SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember2::Screenshot::Reason]
100
+ # @param reason_other [String]
101
+
102
+ # @see SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember2::Screenshot#reason
103
+ module Reason
104
+ extend SurgeAPI::Internal::Type::Enum
105
+
106
+ BEHIND_LOGIN = :behind_login
107
+ UNDER_CONSTRUCTION = :under_construction
108
+ OTHER = :other
109
+
110
+ # @!method self.values
111
+ # @return [Array<Symbol>]
112
+ end
113
+ end
114
+
115
+ # @see SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember2#type
116
+ module Type
117
+ extend SurgeAPI::Internal::Type::Enum
118
+
119
+ WEB_FORM = :web_form
120
+
121
+ # @!method self.values
122
+ # @return [Array<Symbol>]
123
+ end
124
+ end
125
+
126
+ class UnionMember3 < SurgeAPI::Internal::Type::BaseModel
127
+ # @!attribute type
128
+ #
129
+ # @return [Symbol, SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember3::Type]
130
+ required :type, enum: -> { SurgeAPI::TollFreeCampaignConsentFlow::UnionMember3::Type }
131
+
132
+ # @!attribute keywords
133
+ #
134
+ # @return [Array<String>, nil]
135
+ optional :keywords, SurgeAPI::Internal::Type::ArrayOf[String]
136
+
137
+ # @!method initialize(type:, keywords: nil)
138
+ # @param type [Symbol, SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember3::Type]
139
+ # @param keywords [Array<String>]
140
+
141
+ # @see SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember3#type
142
+ module Type
143
+ extend SurgeAPI::Internal::Type::Enum
144
+
145
+ TEXT = :text
146
+
147
+ # @!method self.values
148
+ # @return [Array<Symbol>]
149
+ end
150
+ end
151
+
152
+ class Type < SurgeAPI::Internal::Type::BaseModel
153
+ # @!attribute type
154
+ #
155
+ # @return [Symbol, SurgeAPI::Models::TollFreeCampaignConsentFlow::Type::Type]
156
+ required :type, enum: -> { SurgeAPI::TollFreeCampaignConsentFlow::Type::Type }
157
+
158
+ # @!method initialize(type:)
159
+ # @param type [Symbol, SurgeAPI::Models::TollFreeCampaignConsentFlow::Type::Type]
160
+
161
+ # @see SurgeAPI::Models::TollFreeCampaignConsentFlow::Type#type
162
+ module Type
163
+ extend SurgeAPI::Internal::Type::Enum
164
+
165
+ PAPER_FORM = :paper_form
166
+
167
+ # @!method self.values
168
+ # @return [Array<Symbol>]
169
+ end
170
+ end
171
+
172
+ # @!method self.variants
173
+ # @return [Array(SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember0, SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember1, SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember2, SurgeAPI::Models::TollFreeCampaignConsentFlow::UnionMember3, SurgeAPI::Models::TollFreeCampaignConsentFlow::Type)]
174
+ end
175
+ end
176
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SurgeAPI
4
+ module Models
5
+ # @see SurgeAPI::Resources::TollFreeCampaigns#create
6
+ class TollFreeCampaignCreateParams < SurgeAPI::Models::TollFreeCampaignParams
7
+ extend SurgeAPI::Internal::Type::RequestParameters::Converter
8
+ include SurgeAPI::Internal::Type::RequestParameters
9
+
10
+ # @!attribute account_id
11
+ # The account for which the toll-free campaign should be created.
12
+ #
13
+ # @return [String]
14
+ required :account_id, String
15
+
16
+ # @!method initialize(account_id:, request_options: {})
17
+ # @param account_id [String] The account for which the toll-free campaign should be created.
18
+ #
19
+ # @param request_options [SurgeAPI::RequestOptions, Hash{Symbol=>Object}]
20
+ end
21
+ end
22
+ end