surge_api 0.1.0 → 0.2.1

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 (50) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +39 -0
  3. data/README.md +12 -63
  4. data/lib/surge_api/file_part.rb +10 -7
  5. data/lib/surge_api/internal/transport/pooled_net_requester.rb +34 -31
  6. data/lib/surge_api/internal/type/file_input.rb +7 -4
  7. data/lib/surge_api/internal/type/union.rb +1 -1
  8. data/lib/surge_api/internal/util.rb +5 -5
  9. data/lib/surge_api/models/account_create_params.rb +13 -6
  10. data/lib/surge_api/models/account_update_params.rb +13 -6
  11. data/lib/surge_api/models/campaign_create_params.rb +7 -183
  12. data/lib/surge_api/models/campaign_params.rb +228 -0
  13. data/lib/surge_api/models/contact_opted_in_webhook_event.rb +54 -0
  14. data/lib/surge_api/models/contact_opted_out_webhook_event.rb +54 -0
  15. data/lib/surge_api/models/message_create_params.rb +8 -134
  16. data/lib/surge_api/models/message_params.rb +216 -0
  17. data/lib/surge_api/models/unwrap_webhook_event.rb +5 -1
  18. data/lib/surge_api/models.rb +8 -0
  19. data/lib/surge_api/resources/campaigns.rb +7 -18
  20. data/lib/surge_api/resources/messages.rb +7 -12
  21. data/lib/surge_api/resources/webhooks.rb +1 -1
  22. data/lib/surge_api/version.rb +1 -1
  23. data/lib/surge_api.rb +4 -0
  24. data/rbi/surge_api/file_part.rbi +1 -1
  25. data/rbi/surge_api/models/account_create_params.rbi +19 -8
  26. data/rbi/surge_api/models/account_update_params.rbi +19 -8
  27. data/rbi/surge_api/models/campaign_create_params.rbi +20 -346
  28. data/rbi/surge_api/models/campaign_params.rbi +481 -0
  29. data/rbi/surge_api/models/contact_opted_in_webhook_event.rbi +95 -0
  30. data/rbi/surge_api/models/contact_opted_out_webhook_event.rbi +95 -0
  31. data/rbi/surge_api/models/message_create_params.rbi +24 -243
  32. data/rbi/surge_api/models/message_params.rbi +430 -0
  33. data/rbi/surge_api/models/unwrap_webhook_event.rbi +2 -0
  34. data/rbi/surge_api/models.rbi +8 -0
  35. data/rbi/surge_api/resources/campaigns.rbi +4 -89
  36. data/rbi/surge_api/resources/messages.rbi +5 -22
  37. data/rbi/surge_api/resources/webhooks.rbi +2 -0
  38. data/sig/surge_api/file_part.rbs +1 -1
  39. data/sig/surge_api/models/campaign_create_params.rbs +7 -106
  40. data/sig/surge_api/models/campaign_params.rbs +141 -0
  41. data/sig/surge_api/models/contact_opted_in_webhook_event.rbs +45 -0
  42. data/sig/surge_api/models/contact_opted_out_webhook_event.rbs +45 -0
  43. data/sig/surge_api/models/message_create_params.rbs +7 -119
  44. data/sig/surge_api/models/message_params.rbs +189 -0
  45. data/sig/surge_api/models/unwrap_webhook_event.rbs +2 -0
  46. data/sig/surge_api/models.rbs +8 -0
  47. data/sig/surge_api/resources/campaigns.rbs +1 -9
  48. data/sig/surge_api/resources/messages.rbs +1 -6
  49. data/sig/surge_api/resources/webhooks.rbs +2 -0
  50. metadata +14 -2
@@ -1,127 +1,28 @@
1
1
  module SurgeAPI
2
2
  module Models
3
3
  type campaign_create_params =
4
- {
5
- consent_flow: String,
6
- description: String,
7
- message_samples: ::Array[String],
8
- privacy_policy_url: String,
9
- use_cases: ::Array[SurgeAPI::Models::CampaignCreateParams::use_case],
10
- volume: SurgeAPI::Models::CampaignCreateParams::volume,
11
- includes: ::Array[SurgeAPI::Models::CampaignCreateParams::include_],
12
- link_sample: String,
13
- terms_and_conditions_url: String
14
- }
4
+ { campaign_params: SurgeAPI::Models::campaign_params }
15
5
  & SurgeAPI::Internal::Type::request_parameters
16
6
 
17
7
  class CampaignCreateParams < SurgeAPI::Internal::Type::BaseModel
18
8
  extend SurgeAPI::Internal::Type::RequestParameters::Converter
19
9
  include SurgeAPI::Internal::Type::RequestParameters
20
10
 
21
- attr_accessor consent_flow: String
22
-
23
- attr_accessor description: String
24
-
25
- attr_accessor message_samples: ::Array[String]
26
-
27
- attr_accessor privacy_policy_url: String
28
-
29
- attr_accessor use_cases: ::Array[SurgeAPI::Models::CampaignCreateParams::use_case]
30
-
31
- attr_accessor volume: SurgeAPI::Models::CampaignCreateParams::volume
11
+ def campaign_params: -> SurgeAPI::Models::campaign_params
32
12
 
33
- attr_reader includes: ::Array[SurgeAPI::Models::CampaignCreateParams::include_]?
34
-
35
- def includes=: (
36
- ::Array[SurgeAPI::Models::CampaignCreateParams::include_]
37
- ) -> ::Array[SurgeAPI::Models::CampaignCreateParams::include_]
38
-
39
- attr_reader link_sample: String?
40
-
41
- def link_sample=: (String) -> String
42
-
43
- attr_reader terms_and_conditions_url: String?
44
-
45
- def terms_and_conditions_url=: (String) -> String
13
+ def campaign_params=: (
14
+ SurgeAPI::Models::campaign_params _
15
+ ) -> SurgeAPI::Models::campaign_params
46
16
 
47
17
  def initialize: (
48
- consent_flow: String,
49
- description: String,
50
- message_samples: ::Array[String],
51
- privacy_policy_url: String,
52
- use_cases: ::Array[SurgeAPI::Models::CampaignCreateParams::use_case],
53
- volume: SurgeAPI::Models::CampaignCreateParams::volume,
54
- ?includes: ::Array[SurgeAPI::Models::CampaignCreateParams::include_],
55
- ?link_sample: String,
56
- ?terms_and_conditions_url: String,
18
+ campaign_params: SurgeAPI::Models::campaign_params,
57
19
  ?request_options: SurgeAPI::request_opts
58
20
  ) -> void
59
21
 
60
22
  def to_hash: -> {
61
- consent_flow: String,
62
- description: String,
63
- message_samples: ::Array[String],
64
- privacy_policy_url: String,
65
- use_cases: ::Array[SurgeAPI::Models::CampaignCreateParams::use_case],
66
- volume: SurgeAPI::Models::CampaignCreateParams::volume,
67
- includes: ::Array[SurgeAPI::Models::CampaignCreateParams::include_],
68
- link_sample: String,
69
- terms_and_conditions_url: String,
23
+ campaign_params: SurgeAPI::Models::campaign_params,
70
24
  request_options: SurgeAPI::RequestOptions
71
25
  }
72
-
73
- type use_case =
74
- :account_notification
75
- | :customer_care
76
- | :delivery_notification
77
- | :fraud_alert
78
- | :higher_education
79
- | :marketing
80
- | :polling_voting
81
- | :public_service_announcement
82
- | :security_alert
83
- | :two_factor_authentication
84
-
85
- module UseCase
86
- extend SurgeAPI::Internal::Type::Enum
87
-
88
- ACCOUNT_NOTIFICATION: :account_notification
89
- CUSTOMER_CARE: :customer_care
90
- DELIVERY_NOTIFICATION: :delivery_notification
91
- FRAUD_ALERT: :fraud_alert
92
- HIGHER_EDUCATION: :higher_education
93
- MARKETING: :marketing
94
- POLLING_VOTING: :polling_voting
95
- PUBLIC_SERVICE_ANNOUNCEMENT: :public_service_announcement
96
- SECURITY_ALERT: :security_alert
97
- TWO_FACTOR_AUTHENTICATION: :two_factor_authentication
98
-
99
- def self?.values: -> ::Array[SurgeAPI::Models::CampaignCreateParams::use_case]
100
- end
101
-
102
- type volume = :high | :low
103
-
104
- module Volume
105
- extend SurgeAPI::Internal::Type::Enum
106
-
107
- HIGH: :high
108
- LOW: :low
109
-
110
- def self?.values: -> ::Array[SurgeAPI::Models::CampaignCreateParams::volume]
111
- end
112
-
113
- type include_ = :links | :phone_numbers | :age_gated | :direct_lending
114
-
115
- module Include
116
- extend SurgeAPI::Internal::Type::Enum
117
-
118
- LINKS: :links
119
- PHONE_NUMBERS: :phone_numbers
120
- AGE_GATED: :age_gated
121
- DIRECT_LENDING: :direct_lending
122
-
123
- def self?.values: -> ::Array[SurgeAPI::Models::CampaignCreateParams::include_]
124
- end
125
26
  end
126
27
  end
127
28
  end
@@ -0,0 +1,141 @@
1
+ module SurgeAPI
2
+ module Models
3
+ type campaign_params =
4
+ SurgeAPI::CampaignParams::StandardCampaignParams
5
+ | SurgeAPI::CampaignParams::ExternalCampaignParams
6
+
7
+ module CampaignParams
8
+ extend SurgeAPI::Internal::Type::Union
9
+
10
+ type standard_campaign_params =
11
+ {
12
+ consent_flow: String,
13
+ description: String,
14
+ message_samples: ::Array[String],
15
+ privacy_policy_url: String,
16
+ use_cases: ::Array[SurgeAPI::Models::CampaignParams::StandardCampaignParams::use_case],
17
+ volume: SurgeAPI::Models::CampaignParams::StandardCampaignParams::volume,
18
+ includes: ::Array[SurgeAPI::Models::CampaignParams::StandardCampaignParams::include_],
19
+ link_sample: String,
20
+ terms_and_conditions_url: String
21
+ }
22
+
23
+ class StandardCampaignParams < SurgeAPI::Internal::Type::BaseModel
24
+ attr_accessor consent_flow: String
25
+
26
+ attr_accessor description: String
27
+
28
+ attr_accessor message_samples: ::Array[String]
29
+
30
+ attr_accessor privacy_policy_url: String
31
+
32
+ attr_accessor use_cases: ::Array[SurgeAPI::Models::CampaignParams::StandardCampaignParams::use_case]
33
+
34
+ attr_accessor volume: SurgeAPI::Models::CampaignParams::StandardCampaignParams::volume
35
+
36
+ attr_reader includes: ::Array[SurgeAPI::Models::CampaignParams::StandardCampaignParams::include_]?
37
+
38
+ def includes=: (
39
+ ::Array[SurgeAPI::Models::CampaignParams::StandardCampaignParams::include_]
40
+ ) -> ::Array[SurgeAPI::Models::CampaignParams::StandardCampaignParams::include_]
41
+
42
+ attr_reader link_sample: String?
43
+
44
+ def link_sample=: (String) -> String
45
+
46
+ attr_reader terms_and_conditions_url: String?
47
+
48
+ def terms_and_conditions_url=: (String) -> String
49
+
50
+ def initialize: (
51
+ consent_flow: String,
52
+ description: String,
53
+ message_samples: ::Array[String],
54
+ privacy_policy_url: String,
55
+ use_cases: ::Array[SurgeAPI::Models::CampaignParams::StandardCampaignParams::use_case],
56
+ volume: SurgeAPI::Models::CampaignParams::StandardCampaignParams::volume,
57
+ ?includes: ::Array[SurgeAPI::Models::CampaignParams::StandardCampaignParams::include_],
58
+ ?link_sample: String,
59
+ ?terms_and_conditions_url: String
60
+ ) -> void
61
+
62
+ def to_hash: -> {
63
+ consent_flow: String,
64
+ description: String,
65
+ message_samples: ::Array[String],
66
+ privacy_policy_url: String,
67
+ use_cases: ::Array[SurgeAPI::Models::CampaignParams::StandardCampaignParams::use_case],
68
+ volume: SurgeAPI::Models::CampaignParams::StandardCampaignParams::volume,
69
+ includes: ::Array[SurgeAPI::Models::CampaignParams::StandardCampaignParams::include_],
70
+ link_sample: String,
71
+ terms_and_conditions_url: String
72
+ }
73
+
74
+ type use_case =
75
+ :account_notification
76
+ | :customer_care
77
+ | :delivery_notification
78
+ | :fraud_alert
79
+ | :higher_education
80
+ | :marketing
81
+ | :polling_voting
82
+ | :public_service_announcement
83
+ | :security_alert
84
+ | :two_factor_authentication
85
+
86
+ module UseCase
87
+ extend SurgeAPI::Internal::Type::Enum
88
+
89
+ ACCOUNT_NOTIFICATION: :account_notification
90
+ CUSTOMER_CARE: :customer_care
91
+ DELIVERY_NOTIFICATION: :delivery_notification
92
+ FRAUD_ALERT: :fraud_alert
93
+ HIGHER_EDUCATION: :higher_education
94
+ MARKETING: :marketing
95
+ POLLING_VOTING: :polling_voting
96
+ PUBLIC_SERVICE_ANNOUNCEMENT: :public_service_announcement
97
+ SECURITY_ALERT: :security_alert
98
+ TWO_FACTOR_AUTHENTICATION: :two_factor_authentication
99
+
100
+ def self?.values: -> ::Array[SurgeAPI::Models::CampaignParams::StandardCampaignParams::use_case]
101
+ end
102
+
103
+ type volume = :high | :low
104
+
105
+ module Volume
106
+ extend SurgeAPI::Internal::Type::Enum
107
+
108
+ HIGH: :high
109
+ LOW: :low
110
+
111
+ def self?.values: -> ::Array[SurgeAPI::Models::CampaignParams::StandardCampaignParams::volume]
112
+ end
113
+
114
+ type include_ = :links | :phone_numbers | :age_gated | :direct_lending
115
+
116
+ module Include
117
+ extend SurgeAPI::Internal::Type::Enum
118
+
119
+ LINKS: :links
120
+ PHONE_NUMBERS: :phone_numbers
121
+ AGE_GATED: :age_gated
122
+ DIRECT_LENDING: :direct_lending
123
+
124
+ def self?.values: -> ::Array[SurgeAPI::Models::CampaignParams::StandardCampaignParams::include_]
125
+ end
126
+ end
127
+
128
+ type external_campaign_params = { tcr_id: String }
129
+
130
+ class ExternalCampaignParams < SurgeAPI::Internal::Type::BaseModel
131
+ attr_accessor tcr_id: String
132
+
133
+ def initialize: (tcr_id: String) -> void
134
+
135
+ def to_hash: -> { tcr_id: String }
136
+ end
137
+
138
+ def self?.variants: -> ::Array[SurgeAPI::Models::campaign_params]
139
+ end
140
+ end
141
+ end
@@ -0,0 +1,45 @@
1
+ module SurgeAPI
2
+ module Models
3
+ type contact_opted_in_webhook_event =
4
+ {
5
+ account_id: String,
6
+ data: SurgeAPI::ContactOptedInWebhookEvent::Data,
7
+ timestamp: Time,
8
+ type: :"contact.opted_in"
9
+ }
10
+
11
+ class ContactOptedInWebhookEvent < SurgeAPI::Internal::Type::BaseModel
12
+ attr_accessor account_id: String
13
+
14
+ attr_accessor data: SurgeAPI::ContactOptedInWebhookEvent::Data
15
+
16
+ attr_accessor timestamp: Time
17
+
18
+ attr_accessor type: :"contact.opted_in"
19
+
20
+ def initialize: (
21
+ account_id: String,
22
+ data: SurgeAPI::ContactOptedInWebhookEvent::Data,
23
+ timestamp: Time,
24
+ ?type: :"contact.opted_in"
25
+ ) -> void
26
+
27
+ def to_hash: -> {
28
+ account_id: String,
29
+ data: SurgeAPI::ContactOptedInWebhookEvent::Data,
30
+ timestamp: Time,
31
+ type: :"contact.opted_in"
32
+ }
33
+
34
+ type data = { id: String }
35
+
36
+ class Data < SurgeAPI::Internal::Type::BaseModel
37
+ attr_accessor id: String
38
+
39
+ def initialize: (id: String) -> void
40
+
41
+ def to_hash: -> { id: String }
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,45 @@
1
+ module SurgeAPI
2
+ module Models
3
+ type contact_opted_out_webhook_event =
4
+ {
5
+ account_id: String,
6
+ data: SurgeAPI::ContactOptedOutWebhookEvent::Data,
7
+ timestamp: Time,
8
+ type: :"contact.opted_out"
9
+ }
10
+
11
+ class ContactOptedOutWebhookEvent < SurgeAPI::Internal::Type::BaseModel
12
+ attr_accessor account_id: String
13
+
14
+ attr_accessor data: SurgeAPI::ContactOptedOutWebhookEvent::Data
15
+
16
+ attr_accessor timestamp: Time
17
+
18
+ attr_accessor type: :"contact.opted_out"
19
+
20
+ def initialize: (
21
+ account_id: String,
22
+ data: SurgeAPI::ContactOptedOutWebhookEvent::Data,
23
+ timestamp: Time,
24
+ ?type: :"contact.opted_out"
25
+ ) -> void
26
+
27
+ def to_hash: -> {
28
+ account_id: String,
29
+ data: SurgeAPI::ContactOptedOutWebhookEvent::Data,
30
+ timestamp: Time,
31
+ type: :"contact.opted_out"
32
+ }
33
+
34
+ type data = { id: String }
35
+
36
+ class Data < SurgeAPI::Internal::Type::BaseModel
37
+ attr_accessor id: String
38
+
39
+ def initialize: (id: String) -> void
40
+
41
+ def to_hash: -> { id: String }
42
+ end
43
+ end
44
+ end
45
+ end
@@ -1,140 +1,28 @@
1
1
  module SurgeAPI
2
2
  module Models
3
3
  type message_create_params =
4
- {
5
- conversation: SurgeAPI::MessageCreateParams::Conversation,
6
- attachments: ::Array[SurgeAPI::MessageCreateParams::Attachment],
7
- body: String,
8
- send_at: Time,
9
- to: String,
10
- from: String
11
- }
4
+ { message_params: SurgeAPI::Models::message_params }
12
5
  & SurgeAPI::Internal::Type::request_parameters
13
6
 
14
7
  class MessageCreateParams < SurgeAPI::Internal::Type::BaseModel
15
8
  extend SurgeAPI::Internal::Type::RequestParameters::Converter
16
9
  include SurgeAPI::Internal::Type::RequestParameters
17
10
 
18
- attr_accessor conversation: SurgeAPI::MessageCreateParams::Conversation
19
-
20
- attr_reader attachments: ::Array[SurgeAPI::MessageCreateParams::Attachment]?
21
-
22
- def attachments=: (
23
- ::Array[SurgeAPI::MessageCreateParams::Attachment]
24
- ) -> ::Array[SurgeAPI::MessageCreateParams::Attachment]
25
-
26
- attr_reader body: String?
27
-
28
- def body=: (String) -> String
29
-
30
- attr_reader send_at: Time?
31
-
32
- def send_at=: (Time) -> Time
33
-
34
- attr_accessor to: String
11
+ def message_params: -> SurgeAPI::Models::message_params
35
12
 
36
- attr_reader from: String?
37
-
38
- def from=: (String) -> String
13
+ def message_params=: (
14
+ SurgeAPI::Models::message_params _
15
+ ) -> SurgeAPI::Models::message_params
39
16
 
40
17
  def initialize: (
41
- conversation: SurgeAPI::MessageCreateParams::Conversation,
42
- to: String,
43
- ?attachments: ::Array[SurgeAPI::MessageCreateParams::Attachment],
44
- ?body: String,
45
- ?send_at: Time,
46
- ?from: String,
18
+ message_params: SurgeAPI::Models::message_params,
47
19
  ?request_options: SurgeAPI::request_opts
48
20
  ) -> void
49
21
 
50
22
  def to_hash: -> {
51
- conversation: SurgeAPI::MessageCreateParams::Conversation,
52
- attachments: ::Array[SurgeAPI::MessageCreateParams::Attachment],
53
- body: String,
54
- send_at: Time,
55
- to: String,
56
- from: String,
23
+ message_params: SurgeAPI::Models::message_params,
57
24
  request_options: SurgeAPI::RequestOptions
58
25
  }
59
-
60
- type conversation =
61
- {
62
- contact: SurgeAPI::MessageCreateParams::Conversation::Contact,
63
- phone_number: String
64
- }
65
-
66
- class Conversation < SurgeAPI::Internal::Type::BaseModel
67
- attr_accessor contact: SurgeAPI::MessageCreateParams::Conversation::Contact
68
-
69
- attr_reader phone_number: String?
70
-
71
- def phone_number=: (String) -> String
72
-
73
- def initialize: (
74
- contact: SurgeAPI::MessageCreateParams::Conversation::Contact,
75
- ?phone_number: String
76
- ) -> void
77
-
78
- def to_hash: -> {
79
- contact: SurgeAPI::MessageCreateParams::Conversation::Contact,
80
- phone_number: String
81
- }
82
-
83
- type contact =
84
- {
85
- phone_number: String,
86
- email: String,
87
- first_name: String,
88
- last_name: String,
89
- metadata: ::Hash[Symbol, String]
90
- }
91
-
92
- class Contact < SurgeAPI::Internal::Type::BaseModel
93
- attr_accessor phone_number: String
94
-
95
- attr_reader email: String?
96
-
97
- def email=: (String) -> String
98
-
99
- attr_reader first_name: String?
100
-
101
- def first_name=: (String) -> String
102
-
103
- attr_reader last_name: String?
104
-
105
- def last_name=: (String) -> String
106
-
107
- attr_reader metadata: ::Hash[Symbol, String]?
108
-
109
- def metadata=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String]
110
-
111
- def initialize: (
112
- phone_number: String,
113
- ?email: String,
114
- ?first_name: String,
115
- ?last_name: String,
116
- ?metadata: ::Hash[Symbol, String]
117
- ) -> void
118
-
119
- def to_hash: -> {
120
- phone_number: String,
121
- email: String,
122
- first_name: String,
123
- last_name: String,
124
- metadata: ::Hash[Symbol, String]
125
- }
126
- end
127
- end
128
-
129
- type attachment = { url: String }
130
-
131
- class Attachment < SurgeAPI::Internal::Type::BaseModel
132
- attr_accessor url: String
133
-
134
- def initialize: (url: String) -> void
135
-
136
- def to_hash: -> { url: String }
137
- end
138
26
  end
139
27
  end
140
28
  end
@@ -0,0 +1,189 @@
1
+ module SurgeAPI
2
+ module Models
3
+ type message_params =
4
+ SurgeAPI::MessageParams::MessageParamsWithConversation
5
+ | SurgeAPI::MessageParams::SimpleMessageParams
6
+
7
+ module MessageParams
8
+ extend SurgeAPI::Internal::Type::Union
9
+
10
+ type message_params_with_conversation =
11
+ {
12
+ conversation: SurgeAPI::MessageParams::MessageParamsWithConversation::Conversation,
13
+ attachments: ::Array[SurgeAPI::MessageParams::MessageParamsWithConversation::Attachment],
14
+ body: String,
15
+ send_at: Time
16
+ }
17
+
18
+ class MessageParamsWithConversation < SurgeAPI::Internal::Type::BaseModel
19
+ attr_accessor conversation: SurgeAPI::MessageParams::MessageParamsWithConversation::Conversation
20
+
21
+ attr_reader attachments: ::Array[SurgeAPI::MessageParams::MessageParamsWithConversation::Attachment]?
22
+
23
+ def attachments=: (
24
+ ::Array[SurgeAPI::MessageParams::MessageParamsWithConversation::Attachment]
25
+ ) -> ::Array[SurgeAPI::MessageParams::MessageParamsWithConversation::Attachment]
26
+
27
+ attr_reader body: String?
28
+
29
+ def body=: (String) -> String
30
+
31
+ attr_reader send_at: Time?
32
+
33
+ def send_at=: (Time) -> Time
34
+
35
+ def initialize: (
36
+ conversation: SurgeAPI::MessageParams::MessageParamsWithConversation::Conversation,
37
+ ?attachments: ::Array[SurgeAPI::MessageParams::MessageParamsWithConversation::Attachment],
38
+ ?body: String,
39
+ ?send_at: Time
40
+ ) -> void
41
+
42
+ def to_hash: -> {
43
+ conversation: SurgeAPI::MessageParams::MessageParamsWithConversation::Conversation,
44
+ attachments: ::Array[SurgeAPI::MessageParams::MessageParamsWithConversation::Attachment],
45
+ body: String,
46
+ send_at: Time
47
+ }
48
+
49
+ type conversation =
50
+ {
51
+ contact: SurgeAPI::MessageParams::MessageParamsWithConversation::Conversation::Contact,
52
+ phone_number: String
53
+ }
54
+
55
+ class Conversation < SurgeAPI::Internal::Type::BaseModel
56
+ attr_accessor contact: SurgeAPI::MessageParams::MessageParamsWithConversation::Conversation::Contact
57
+
58
+ attr_reader phone_number: String?
59
+
60
+ def phone_number=: (String) -> String
61
+
62
+ def initialize: (
63
+ contact: SurgeAPI::MessageParams::MessageParamsWithConversation::Conversation::Contact,
64
+ ?phone_number: String
65
+ ) -> void
66
+
67
+ def to_hash: -> {
68
+ contact: SurgeAPI::MessageParams::MessageParamsWithConversation::Conversation::Contact,
69
+ phone_number: String
70
+ }
71
+
72
+ type contact =
73
+ {
74
+ phone_number: String,
75
+ email: String,
76
+ first_name: String,
77
+ last_name: String,
78
+ metadata: ::Hash[Symbol, String]
79
+ }
80
+
81
+ class Contact < SurgeAPI::Internal::Type::BaseModel
82
+ attr_accessor phone_number: String
83
+
84
+ attr_reader email: String?
85
+
86
+ def email=: (String) -> String
87
+
88
+ attr_reader first_name: String?
89
+
90
+ def first_name=: (String) -> String
91
+
92
+ attr_reader last_name: String?
93
+
94
+ def last_name=: (String) -> String
95
+
96
+ attr_reader metadata: ::Hash[Symbol, String]?
97
+
98
+ def metadata=: (::Hash[Symbol, String]) -> ::Hash[Symbol, String]
99
+
100
+ def initialize: (
101
+ phone_number: String,
102
+ ?email: String,
103
+ ?first_name: String,
104
+ ?last_name: String,
105
+ ?metadata: ::Hash[Symbol, String]
106
+ ) -> void
107
+
108
+ def to_hash: -> {
109
+ phone_number: String,
110
+ email: String,
111
+ first_name: String,
112
+ last_name: String,
113
+ metadata: ::Hash[Symbol, String]
114
+ }
115
+ end
116
+ end
117
+
118
+ type attachment = { url: String }
119
+
120
+ class Attachment < SurgeAPI::Internal::Type::BaseModel
121
+ attr_accessor url: String
122
+
123
+ def initialize: (url: String) -> void
124
+
125
+ def to_hash: -> { url: String }
126
+ end
127
+ end
128
+
129
+ type simple_message_params =
130
+ {
131
+ to: String,
132
+ attachments: ::Array[SurgeAPI::MessageParams::SimpleMessageParams::Attachment],
133
+ body: String,
134
+ from: String,
135
+ send_at: Time
136
+ }
137
+
138
+ class SimpleMessageParams < SurgeAPI::Internal::Type::BaseModel
139
+ attr_accessor to: String
140
+
141
+ attr_reader attachments: ::Array[SurgeAPI::MessageParams::SimpleMessageParams::Attachment]?
142
+
143
+ def attachments=: (
144
+ ::Array[SurgeAPI::MessageParams::SimpleMessageParams::Attachment]
145
+ ) -> ::Array[SurgeAPI::MessageParams::SimpleMessageParams::Attachment]
146
+
147
+ attr_reader body: String?
148
+
149
+ def body=: (String) -> String
150
+
151
+ attr_reader from: String?
152
+
153
+ def from=: (String) -> String
154
+
155
+ attr_reader send_at: Time?
156
+
157
+ def send_at=: (Time) -> Time
158
+
159
+ def initialize: (
160
+ to: String,
161
+ ?attachments: ::Array[SurgeAPI::MessageParams::SimpleMessageParams::Attachment],
162
+ ?body: String,
163
+ ?from: String,
164
+ ?send_at: Time
165
+ ) -> void
166
+
167
+ def to_hash: -> {
168
+ to: String,
169
+ attachments: ::Array[SurgeAPI::MessageParams::SimpleMessageParams::Attachment],
170
+ body: String,
171
+ from: String,
172
+ send_at: Time
173
+ }
174
+
175
+ type attachment = { url: String }
176
+
177
+ class Attachment < SurgeAPI::Internal::Type::BaseModel
178
+ attr_accessor url: String
179
+
180
+ def initialize: (url: String) -> void
181
+
182
+ def to_hash: -> { url: String }
183
+ end
184
+ end
185
+
186
+ def self?.variants: -> ::Array[SurgeAPI::Models::message_params]
187
+ end
188
+ end
189
+ end