surge_api 0.2.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +40 -0
- data/README.md +1 -1
- data/lib/surge_api/internal/transport/base_client.rb +7 -1
- data/lib/surge_api/internal/transport/pooled_net_requester.rb +18 -12
- data/lib/surge_api/internal/type/union.rb +12 -0
- data/lib/surge_api/internal/util.rb +7 -2
- data/lib/surge_api/models/account_archive_params.rb +14 -0
- data/lib/surge_api/models/message_retrieve_params.rb +14 -0
- data/lib/surge_api/models/unwrap_webhook_event.rb +11 -9
- data/lib/surge_api/models.rb +4 -0
- data/lib/surge_api/resources/accounts.rb +29 -0
- data/lib/surge_api/resources/messages.rb +20 -0
- data/lib/surge_api/version.rb +1 -1
- data/lib/surge_api.rb +4 -0
- data/manifest.yaml +2 -0
- data/rbi/surge_api/internal/transport/base_client.rbi +5 -0
- data/rbi/surge_api/internal/transport/pooled_net_requester.rbi +6 -2
- data/rbi/surge_api/internal/type/base_model.rbi +8 -4
- data/rbi/surge_api/models/account_archive_params.rbi +27 -0
- data/rbi/surge_api/models/message_retrieve_params.rbi +27 -0
- data/rbi/surge_api/models.rbi +4 -0
- data/rbi/surge_api/resources/accounts.rbi +23 -0
- data/rbi/surge_api/resources/messages.rbi +14 -0
- data/sig/surge_api/internal/transport/base_client.rbs +2 -0
- data/sig/surge_api/internal/transport/pooled_net_requester.rbs +4 -1
- data/sig/surge_api/models/account_archive_params.rbs +15 -0
- data/sig/surge_api/models/message_retrieve_params.rbs +15 -0
- data/sig/surge_api/models.rbs +4 -0
- data/sig/surge_api/resources/accounts.rbs +5 -0
- data/sig/surge_api/resources/messages.rbs +5 -0
- metadata +22 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: da7c01aaa992d5a9324e6a320821c240261535e5c85ef840624e00e82ff3a722
|
|
4
|
+
data.tar.gz: 1219ffe72345fb81de26f7f7be3c6a05d11d790de928bb8e3821c59ca837ad86
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 44b3bd94a28e639bdae0131f72893b3e0fbbccc4ef11eaef833cd4214d167879bbbdb36ab964ce991c07d8cf844b2a59225c1a2e4afd231ac1045472e6c5f2b0
|
|
7
|
+
data.tar.gz: aeba66370a29d5bc640f998625e6bde7e3a040f9579a24253442d434d9b671fa1f46d42c84afb07913958d696836e89a226ab2a989585ec90fc156150e45bbb2
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,45 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.4.0 (2026-01-10)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v0.3.0...v0.4.0](https://github.com/surgeapi/ruby-sdk/compare/v0.3.0...v0.4.0)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* **api:** add archive account endpoint ([b56a3ac](https://github.com/surgeapi/ruby-sdk/commit/b56a3ac799df5e73cfea5416bb6af32cdeaac64d))
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
* issue where json.parse errors when receiving HTTP 204 with nobody ([a54e6ff](https://github.com/surgeapi/ruby-sdk/commit/a54e6ff310c9d5d146161a33971eb0dc541c9774))
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Chores
|
|
18
|
+
|
|
19
|
+
* **internal:** codegen related update ([6dda266](https://github.com/surgeapi/ruby-sdk/commit/6dda2669de3018139c1ff15a9c23edda513fd899))
|
|
20
|
+
* move `cgi` into dependencies for ruby 4 ([03ce06b](https://github.com/surgeapi/ruby-sdk/commit/03ce06b6a4f4d7f510dee6ece06e89ff93ede89d))
|
|
21
|
+
|
|
22
|
+
## 0.3.0 (2025-12-17)
|
|
23
|
+
|
|
24
|
+
Full Changelog: [v0.2.1...v0.3.0](https://github.com/surgeapi/ruby-sdk/compare/v0.2.1...v0.3.0)
|
|
25
|
+
|
|
26
|
+
### Features
|
|
27
|
+
|
|
28
|
+
* **api:** add retrieve message endpoint ([55df346](https://github.com/surgeapi/ruby-sdk/commit/55df346f91c99fece77d130057afc55b021666c7))
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
### Bug Fixes
|
|
32
|
+
|
|
33
|
+
* better thread safety via early initializing SSL store during HTTP client creation ([0d14e5e](https://github.com/surgeapi/ruby-sdk/commit/0d14e5e73496e95743359c4c8dbab6da1c384a6e))
|
|
34
|
+
* calling `break` out of streams should be instantaneous ([b43c7e5](https://github.com/surgeapi/ruby-sdk/commit/b43c7e54e9dfaaf31ffa0fe498c53fcc51bbb81c))
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
### Chores
|
|
38
|
+
|
|
39
|
+
* bump dependency version and update sorbet types ([e00a588](https://github.com/surgeapi/ruby-sdk/commit/e00a5886df58170099838c7a2b1ba25fe36588d6))
|
|
40
|
+
* explicitly require "base64" gem ([a25ee53](https://github.com/surgeapi/ruby-sdk/commit/a25ee53f821df6c2d177b0e41c864e15e4b8bae9))
|
|
41
|
+
* **internal:** codegen related update ([744a068](https://github.com/surgeapi/ruby-sdk/commit/744a0682fa04890d445106232878d0d5be7d7273))
|
|
42
|
+
|
|
3
43
|
## 0.2.1 (2025-10-31)
|
|
4
44
|
|
|
5
45
|
Full Changelog: [v0.2.0...v0.2.1](https://github.com/surgeapi/ruby-sdk/compare/v0.2.0...v0.2.1)
|
data/README.md
CHANGED
|
@@ -201,7 +201,8 @@ module SurgeAPI
|
|
|
201
201
|
self.class::PLATFORM_HEADERS,
|
|
202
202
|
{
|
|
203
203
|
"accept" => "application/json",
|
|
204
|
-
"content-type" => "application/json"
|
|
204
|
+
"content-type" => "application/json",
|
|
205
|
+
"user-agent" => user_agent
|
|
205
206
|
},
|
|
206
207
|
headers
|
|
207
208
|
)
|
|
@@ -219,6 +220,11 @@ module SurgeAPI
|
|
|
219
220
|
# @return [Hash{String=>String}]
|
|
220
221
|
private def auth_headers = {}
|
|
221
222
|
|
|
223
|
+
# @api private
|
|
224
|
+
#
|
|
225
|
+
# @return [String]
|
|
226
|
+
private def user_agent = "#{self.class.name}/Ruby #{SurgeAPI::VERSION}"
|
|
227
|
+
|
|
222
228
|
# @api private
|
|
223
229
|
#
|
|
224
230
|
# @return [String]
|
|
@@ -16,10 +16,11 @@ module SurgeAPI
|
|
|
16
16
|
class << self
|
|
17
17
|
# @api private
|
|
18
18
|
#
|
|
19
|
+
# @param cert_store [OpenSSL::X509::Store]
|
|
19
20
|
# @param url [URI::Generic]
|
|
20
21
|
#
|
|
21
22
|
# @return [Net::HTTP]
|
|
22
|
-
def connect(url)
|
|
23
|
+
def connect(cert_store:, url:)
|
|
23
24
|
port =
|
|
24
25
|
case [url.port, url.scheme]
|
|
25
26
|
in [Integer, _]
|
|
@@ -33,6 +34,8 @@ module SurgeAPI
|
|
|
33
34
|
Net::HTTP.new(url.host, port).tap do
|
|
34
35
|
_1.use_ssl = %w[https wss].include?(url.scheme)
|
|
35
36
|
_1.max_retries = 0
|
|
37
|
+
|
|
38
|
+
(_1.cert_store = cert_store) if _1.use_ssl?
|
|
36
39
|
end
|
|
37
40
|
end
|
|
38
41
|
|
|
@@ -102,7 +105,7 @@ module SurgeAPI
|
|
|
102
105
|
pool =
|
|
103
106
|
@mutex.synchronize do
|
|
104
107
|
@pools[origin] ||= ConnectionPool.new(size: @size) do
|
|
105
|
-
self.class.connect(url)
|
|
108
|
+
self.class.connect(cert_store: @cert_store, url: url)
|
|
106
109
|
end
|
|
107
110
|
end
|
|
108
111
|
|
|
@@ -150,17 +153,19 @@ module SurgeAPI
|
|
|
150
153
|
end
|
|
151
154
|
|
|
152
155
|
self.class.calibrate_socket_timeout(conn, deadline)
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
156
|
+
::Kernel.catch(:jump) do
|
|
157
|
+
conn.request(req) do |rsp|
|
|
158
|
+
y << [req, rsp]
|
|
159
|
+
::Kernel.throw(:jump) if finished
|
|
160
|
+
|
|
161
|
+
rsp.read_body do |bytes|
|
|
162
|
+
y << bytes.force_encoding(Encoding::BINARY)
|
|
163
|
+
::Kernel.throw(:jump) if finished
|
|
164
|
+
|
|
165
|
+
self.class.calibrate_socket_timeout(conn, deadline)
|
|
166
|
+
end
|
|
167
|
+
eof = true
|
|
162
168
|
end
|
|
163
|
-
eof = true
|
|
164
169
|
end
|
|
165
170
|
end
|
|
166
171
|
ensure
|
|
@@ -192,6 +197,7 @@ module SurgeAPI
|
|
|
192
197
|
def initialize(size: self.class::DEFAULT_MAX_CONNECTIONS)
|
|
193
198
|
@mutex = Mutex.new
|
|
194
199
|
@size = size
|
|
200
|
+
@cert_store = OpenSSL::X509::Store.new.tap(&:set_default_paths)
|
|
195
201
|
@pools = {}
|
|
196
202
|
end
|
|
197
203
|
|
|
@@ -17,6 +17,18 @@ module SurgeAPI
|
|
|
17
17
|
# else
|
|
18
18
|
# puts(unwrap_webhook_event)
|
|
19
19
|
# end
|
|
20
|
+
#
|
|
21
|
+
# @example
|
|
22
|
+
# case unwrap_webhook_event
|
|
23
|
+
# in {type: :"call.ended", account_id: account_id, data: data, timestamp: timestamp}
|
|
24
|
+
# puts(account_id)
|
|
25
|
+
# in {type: :"campaign.approved", account_id: account_id, data: data, timestamp: timestamp}
|
|
26
|
+
# puts(data)
|
|
27
|
+
# in {type: :"contact.opted_in", account_id: account_id, data: data, timestamp: timestamp}
|
|
28
|
+
# puts(timestamp)
|
|
29
|
+
# else
|
|
30
|
+
# puts(unwrap_webhook_event)
|
|
31
|
+
# end
|
|
20
32
|
module Union
|
|
21
33
|
include SurgeAPI::Internal::Type::Converter
|
|
22
34
|
include SurgeAPI::Internal::Util::SorbetRuntimeSupport
|
|
@@ -657,7 +657,8 @@ module SurgeAPI
|
|
|
657
657
|
def decode_content(headers, stream:, suppress_error: false)
|
|
658
658
|
case (content_type = headers["content-type"])
|
|
659
659
|
in SurgeAPI::Internal::Util::JSON_CONTENT
|
|
660
|
-
json = stream.to_a.join
|
|
660
|
+
return nil if (json = stream.to_a.join).empty?
|
|
661
|
+
|
|
661
662
|
begin
|
|
662
663
|
JSON.parse(json, symbolize_names: true)
|
|
663
664
|
rescue JSON::ParserError => e
|
|
@@ -667,7 +668,11 @@ module SurgeAPI
|
|
|
667
668
|
in SurgeAPI::Internal::Util::JSONL_CONTENT
|
|
668
669
|
lines = decode_lines(stream)
|
|
669
670
|
chain_fused(lines) do |y|
|
|
670
|
-
lines.each
|
|
671
|
+
lines.each do
|
|
672
|
+
next if _1.empty?
|
|
673
|
+
|
|
674
|
+
y << JSON.parse(_1, symbolize_names: true)
|
|
675
|
+
end
|
|
671
676
|
end
|
|
672
677
|
in %r{^text/event-stream}
|
|
673
678
|
lines = decode_lines(stream)
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module SurgeAPI
|
|
4
|
+
module Models
|
|
5
|
+
# @see SurgeAPI::Resources::Accounts#archive
|
|
6
|
+
class AccountArchiveParams < SurgeAPI::Internal::Type::BaseModel
|
|
7
|
+
extend SurgeAPI::Internal::Type::RequestParameters::Converter
|
|
8
|
+
include SurgeAPI::Internal::Type::RequestParameters
|
|
9
|
+
|
|
10
|
+
# @!method initialize(request_options: {})
|
|
11
|
+
# @param request_options [SurgeAPI::RequestOptions, Hash{Symbol=>Object}]
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module SurgeAPI
|
|
4
|
+
module Models
|
|
5
|
+
# @see SurgeAPI::Resources::Messages#retrieve
|
|
6
|
+
class MessageRetrieveParams < SurgeAPI::Internal::Type::BaseModel
|
|
7
|
+
extend SurgeAPI::Internal::Type::RequestParameters::Converter
|
|
8
|
+
include SurgeAPI::Internal::Type::RequestParameters
|
|
9
|
+
|
|
10
|
+
# @!method initialize(request_options: {})
|
|
11
|
+
# @param request_options [SurgeAPI::RequestOptions, Hash{Symbol=>Object}]
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -5,23 +5,25 @@ module SurgeAPI
|
|
|
5
5
|
module UnwrapWebhookEvent
|
|
6
6
|
extend SurgeAPI::Internal::Type::Union
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
discriminator :type
|
|
9
9
|
|
|
10
|
-
variant -> { SurgeAPI::
|
|
10
|
+
variant :"call.ended", -> { SurgeAPI::CallEndedWebhookEvent }
|
|
11
11
|
|
|
12
|
-
variant -> { SurgeAPI::
|
|
12
|
+
variant :"campaign.approved", -> { SurgeAPI::CampaignApprovedWebhookEvent }
|
|
13
13
|
|
|
14
|
-
variant -> { SurgeAPI::
|
|
14
|
+
variant :"contact.opted_in", -> { SurgeAPI::ContactOptedInWebhookEvent }
|
|
15
15
|
|
|
16
|
-
variant -> { SurgeAPI::
|
|
16
|
+
variant :"contact.opted_out", -> { SurgeAPI::ContactOptedOutWebhookEvent }
|
|
17
17
|
|
|
18
|
-
variant -> { SurgeAPI::
|
|
18
|
+
variant :"conversation.created", -> { SurgeAPI::ConversationCreatedWebhookEvent }
|
|
19
19
|
|
|
20
|
-
variant -> { SurgeAPI::
|
|
20
|
+
variant :"message.delivered", -> { SurgeAPI::MessageDeliveredWebhookEvent }
|
|
21
21
|
|
|
22
|
-
variant -> { SurgeAPI::
|
|
22
|
+
variant :"message.failed", -> { SurgeAPI::MessageFailedWebhookEvent }
|
|
23
23
|
|
|
24
|
-
variant -> { SurgeAPI::
|
|
24
|
+
variant :"message.received", -> { SurgeAPI::MessageReceivedWebhookEvent }
|
|
25
|
+
|
|
26
|
+
variant :"message.sent", -> { SurgeAPI::MessageSentWebhookEvent }
|
|
25
27
|
|
|
26
28
|
# @!method self.variants
|
|
27
29
|
# @return [Array(SurgeAPI::Models::CallEndedWebhookEvent, SurgeAPI::Models::CampaignApprovedWebhookEvent, SurgeAPI::Models::ContactOptedInWebhookEvent, SurgeAPI::Models::ContactOptedOutWebhookEvent, SurgeAPI::Models::ConversationCreatedWebhookEvent, SurgeAPI::Models::MessageDeliveredWebhookEvent, SurgeAPI::Models::MessageFailedWebhookEvent, SurgeAPI::Models::MessageReceivedWebhookEvent, SurgeAPI::Models::MessageSentWebhookEvent)]
|
data/lib/surge_api/models.rb
CHANGED
|
@@ -41,6 +41,8 @@ module SurgeAPI
|
|
|
41
41
|
|
|
42
42
|
Account = SurgeAPI::Models::Account
|
|
43
43
|
|
|
44
|
+
AccountArchiveParams = SurgeAPI::Models::AccountArchiveParams
|
|
45
|
+
|
|
44
46
|
AccountCreateParams = SurgeAPI::Models::AccountCreateParams
|
|
45
47
|
|
|
46
48
|
AccountRetrieveStatusParams = SurgeAPI::Models::AccountRetrieveStatusParams
|
|
@@ -91,6 +93,8 @@ module SurgeAPI
|
|
|
91
93
|
|
|
92
94
|
MessageReceivedWebhookEvent = SurgeAPI::Models::MessageReceivedWebhookEvent
|
|
93
95
|
|
|
96
|
+
MessageRetrieveParams = SurgeAPI::Models::MessageRetrieveParams
|
|
97
|
+
|
|
94
98
|
MessageSentWebhookEvent = SurgeAPI::Models::MessageSentWebhookEvent
|
|
95
99
|
|
|
96
100
|
Organization = SurgeAPI::Models::Organization
|
|
@@ -67,6 +67,35 @@ module SurgeAPI
|
|
|
67
67
|
)
|
|
68
68
|
end
|
|
69
69
|
|
|
70
|
+
# Archives an account and releases all associated resources.
|
|
71
|
+
#
|
|
72
|
+
# **Warning**: This action will:
|
|
73
|
+
#
|
|
74
|
+
# - Release all phone numbers associated with the account
|
|
75
|
+
# - Deactivate all campaigns
|
|
76
|
+
# - Make the account unusable for sending messages
|
|
77
|
+
#
|
|
78
|
+
# This operation is irreversible. If you need to send SMS in the future, you will
|
|
79
|
+
# need to re-register new phone numbers and campaigns.
|
|
80
|
+
#
|
|
81
|
+
# @overload archive(id, request_options: {})
|
|
82
|
+
#
|
|
83
|
+
# @param id [String] The ID of the account to archive.
|
|
84
|
+
#
|
|
85
|
+
# @param request_options [SurgeAPI::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
86
|
+
#
|
|
87
|
+
# @return [SurgeAPI::Models::Account]
|
|
88
|
+
#
|
|
89
|
+
# @see SurgeAPI::Models::AccountArchiveParams
|
|
90
|
+
def archive(id, params = {})
|
|
91
|
+
@client.request(
|
|
92
|
+
method: :delete,
|
|
93
|
+
path: ["accounts/%1$s", id],
|
|
94
|
+
model: SurgeAPI::Account,
|
|
95
|
+
options: params[:request_options]
|
|
96
|
+
)
|
|
97
|
+
end
|
|
98
|
+
|
|
70
99
|
# Check an account's status and capabilities
|
|
71
100
|
#
|
|
72
101
|
# @overload retrieve_status(account_id, capabilities: nil, request_options: {})
|
|
@@ -59,6 +59,26 @@ module SurgeAPI
|
|
|
59
59
|
)
|
|
60
60
|
end
|
|
61
61
|
|
|
62
|
+
# Retrieves a Message object.
|
|
63
|
+
#
|
|
64
|
+
# @overload retrieve(id, request_options: {})
|
|
65
|
+
#
|
|
66
|
+
# @param id [String] The ID of the message to retrieve.
|
|
67
|
+
#
|
|
68
|
+
# @param request_options [SurgeAPI::RequestOptions, Hash{Symbol=>Object}, nil]
|
|
69
|
+
#
|
|
70
|
+
# @return [SurgeAPI::Models::Message]
|
|
71
|
+
#
|
|
72
|
+
# @see SurgeAPI::Models::MessageRetrieveParams
|
|
73
|
+
def retrieve(id, params = {})
|
|
74
|
+
@client.request(
|
|
75
|
+
method: :get,
|
|
76
|
+
path: ["messages/%1$s", id],
|
|
77
|
+
model: SurgeAPI::Message,
|
|
78
|
+
options: params[:request_options]
|
|
79
|
+
)
|
|
80
|
+
end
|
|
81
|
+
|
|
62
82
|
# @api private
|
|
63
83
|
#
|
|
64
84
|
# @param client [SurgeAPI::Client]
|
data/lib/surge_api/version.rb
CHANGED
data/lib/surge_api.rb
CHANGED
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
# Standard libraries.
|
|
4
4
|
# rubocop:disable Lint/RedundantRequireStatement
|
|
5
5
|
require "English"
|
|
6
|
+
require "base64"
|
|
6
7
|
require "cgi"
|
|
7
8
|
require "date"
|
|
8
9
|
require "erb"
|
|
9
10
|
require "etc"
|
|
10
11
|
require "json"
|
|
11
12
|
require "net/http"
|
|
13
|
+
require "openssl"
|
|
12
14
|
require "pathname"
|
|
13
15
|
require "rbconfig"
|
|
14
16
|
require "securerandom"
|
|
@@ -53,6 +55,7 @@ require_relative "surge_api/client"
|
|
|
53
55
|
require_relative "surge_api/models/campaign_params"
|
|
54
56
|
require_relative "surge_api/models/message_params"
|
|
55
57
|
require_relative "surge_api/models/account"
|
|
58
|
+
require_relative "surge_api/models/account_archive_params"
|
|
56
59
|
require_relative "surge_api/models/account_create_params"
|
|
57
60
|
require_relative "surge_api/models/account_retrieve_status_params"
|
|
58
61
|
require_relative "surge_api/models/account_status"
|
|
@@ -76,6 +79,7 @@ require_relative "surge_api/models/message_create_params"
|
|
|
76
79
|
require_relative "surge_api/models/message_delivered_webhook_event"
|
|
77
80
|
require_relative "surge_api/models/message_failed_webhook_event"
|
|
78
81
|
require_relative "surge_api/models/message_received_webhook_event"
|
|
82
|
+
require_relative "surge_api/models/message_retrieve_params"
|
|
79
83
|
require_relative "surge_api/models/message_sent_webhook_event"
|
|
80
84
|
require_relative "surge_api/models/organization"
|
|
81
85
|
require_relative "surge_api/models/phone_number"
|
data/manifest.yaml
CHANGED
|
@@ -26,8 +26,12 @@ module SurgeAPI
|
|
|
26
26
|
|
|
27
27
|
class << self
|
|
28
28
|
# @api private
|
|
29
|
-
sig
|
|
30
|
-
|
|
29
|
+
sig do
|
|
30
|
+
params(cert_store: OpenSSL::X509::Store, url: URI::Generic).returns(
|
|
31
|
+
Net::HTTP
|
|
32
|
+
)
|
|
33
|
+
end
|
|
34
|
+
def connect(cert_store:, url:)
|
|
31
35
|
end
|
|
32
36
|
|
|
33
37
|
# @api private
|
|
@@ -31,7 +31,7 @@ module SurgeAPI
|
|
|
31
31
|
#
|
|
32
32
|
# Assumes superclass fields are totally defined before fields are accessed /
|
|
33
33
|
# defined on subclasses.
|
|
34
|
-
sig { params(child:
|
|
34
|
+
sig { params(child: SurgeAPI::Internal::Type::BaseModel).void }
|
|
35
35
|
def inherited(child)
|
|
36
36
|
end
|
|
37
37
|
|
|
@@ -274,9 +274,13 @@ module SurgeAPI
|
|
|
274
274
|
|
|
275
275
|
# Create a new instance of a model.
|
|
276
276
|
sig do
|
|
277
|
-
params(
|
|
278
|
-
|
|
279
|
-
|
|
277
|
+
params(
|
|
278
|
+
data:
|
|
279
|
+
T.any(
|
|
280
|
+
T::Hash[Symbol, T.anything],
|
|
281
|
+
SurgeAPI::Internal::Type::BaseModel
|
|
282
|
+
)
|
|
283
|
+
).returns(T.attached_class)
|
|
280
284
|
end
|
|
281
285
|
def self.new(data = {})
|
|
282
286
|
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module SurgeAPI
|
|
4
|
+
module Models
|
|
5
|
+
class AccountArchiveParams < 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::AccountArchiveParams, SurgeAPI::Internal::AnyHash)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
sig do
|
|
15
|
+
params(request_options: SurgeAPI::RequestOptions::OrHash).returns(
|
|
16
|
+
T.attached_class
|
|
17
|
+
)
|
|
18
|
+
end
|
|
19
|
+
def self.new(request_options: {})
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
sig { override.returns({ request_options: SurgeAPI::RequestOptions }) }
|
|
23
|
+
def to_hash
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module SurgeAPI
|
|
4
|
+
module Models
|
|
5
|
+
class MessageRetrieveParams < 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::MessageRetrieveParams, SurgeAPI::Internal::AnyHash)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
sig do
|
|
15
|
+
params(request_options: SurgeAPI::RequestOptions::OrHash).returns(
|
|
16
|
+
T.attached_class
|
|
17
|
+
)
|
|
18
|
+
end
|
|
19
|
+
def self.new(request_options: {})
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
sig { override.returns({ request_options: SurgeAPI::RequestOptions }) }
|
|
23
|
+
def to_hash
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
data/rbi/surge_api/models.rbi
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
module SurgeAPI
|
|
4
4
|
Account = SurgeAPI::Models::Account
|
|
5
5
|
|
|
6
|
+
AccountArchiveParams = SurgeAPI::Models::AccountArchiveParams
|
|
7
|
+
|
|
6
8
|
AccountCreateParams = SurgeAPI::Models::AccountCreateParams
|
|
7
9
|
|
|
8
10
|
AccountRetrieveStatusParams = SurgeAPI::Models::AccountRetrieveStatusParams
|
|
@@ -54,6 +56,8 @@ module SurgeAPI
|
|
|
54
56
|
|
|
55
57
|
MessageReceivedWebhookEvent = SurgeAPI::Models::MessageReceivedWebhookEvent
|
|
56
58
|
|
|
59
|
+
MessageRetrieveParams = SurgeAPI::Models::MessageRetrieveParams
|
|
60
|
+
|
|
57
61
|
MessageSentWebhookEvent = SurgeAPI::Models::MessageSentWebhookEvent
|
|
58
62
|
|
|
59
63
|
Organization = SurgeAPI::Models::Organization
|
|
@@ -65,6 +65,29 @@ module SurgeAPI
|
|
|
65
65
|
)
|
|
66
66
|
end
|
|
67
67
|
|
|
68
|
+
# Archives an account and releases all associated resources.
|
|
69
|
+
#
|
|
70
|
+
# **Warning**: This action will:
|
|
71
|
+
#
|
|
72
|
+
# - Release all phone numbers associated with the account
|
|
73
|
+
# - Deactivate all campaigns
|
|
74
|
+
# - Make the account unusable for sending messages
|
|
75
|
+
#
|
|
76
|
+
# This operation is irreversible. If you need to send SMS in the future, you will
|
|
77
|
+
# need to re-register new phone numbers and campaigns.
|
|
78
|
+
sig do
|
|
79
|
+
params(
|
|
80
|
+
id: String,
|
|
81
|
+
request_options: SurgeAPI::RequestOptions::OrHash
|
|
82
|
+
).returns(SurgeAPI::Account)
|
|
83
|
+
end
|
|
84
|
+
def archive(
|
|
85
|
+
# The ID of the account to archive.
|
|
86
|
+
id,
|
|
87
|
+
request_options: {}
|
|
88
|
+
)
|
|
89
|
+
end
|
|
90
|
+
|
|
68
91
|
# Check an account's status and capabilities
|
|
69
92
|
sig do
|
|
70
93
|
params(
|
|
@@ -46,6 +46,20 @@ module SurgeAPI
|
|
|
46
46
|
)
|
|
47
47
|
end
|
|
48
48
|
|
|
49
|
+
# Retrieves a Message object.
|
|
50
|
+
sig do
|
|
51
|
+
params(
|
|
52
|
+
id: String,
|
|
53
|
+
request_options: SurgeAPI::RequestOptions::OrHash
|
|
54
|
+
).returns(SurgeAPI::Message)
|
|
55
|
+
end
|
|
56
|
+
def retrieve(
|
|
57
|
+
# The ID of the message to retrieve.
|
|
58
|
+
id,
|
|
59
|
+
request_options: {}
|
|
60
|
+
)
|
|
61
|
+
end
|
|
62
|
+
|
|
49
63
|
# @api private
|
|
50
64
|
sig { params(client: SurgeAPI::Client).returns(T.attached_class) }
|
|
51
65
|
def self.new(client:)
|
|
@@ -17,7 +17,10 @@ module SurgeAPI
|
|
|
17
17
|
|
|
18
18
|
DEFAULT_MAX_CONNECTIONS: Integer
|
|
19
19
|
|
|
20
|
-
def self.connect: (
|
|
20
|
+
def self.connect: (
|
|
21
|
+
cert_store: OpenSSL::X509::Store,
|
|
22
|
+
url: URI::Generic
|
|
23
|
+
) -> top
|
|
21
24
|
|
|
22
25
|
def self.calibrate_socket_timeout: (top conn, Float deadline) -> void
|
|
23
26
|
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module SurgeAPI
|
|
2
|
+
module Models
|
|
3
|
+
type account_archive_params =
|
|
4
|
+
{ } & SurgeAPI::Internal::Type::request_parameters
|
|
5
|
+
|
|
6
|
+
class AccountArchiveParams < SurgeAPI::Internal::Type::BaseModel
|
|
7
|
+
extend SurgeAPI::Internal::Type::RequestParameters::Converter
|
|
8
|
+
include SurgeAPI::Internal::Type::RequestParameters
|
|
9
|
+
|
|
10
|
+
def initialize: (?request_options: SurgeAPI::request_opts) -> void
|
|
11
|
+
|
|
12
|
+
def to_hash: -> { request_options: SurgeAPI::RequestOptions }
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module SurgeAPI
|
|
2
|
+
module Models
|
|
3
|
+
type message_retrieve_params =
|
|
4
|
+
{ } & SurgeAPI::Internal::Type::request_parameters
|
|
5
|
+
|
|
6
|
+
class MessageRetrieveParams < SurgeAPI::Internal::Type::BaseModel
|
|
7
|
+
extend SurgeAPI::Internal::Type::RequestParameters::Converter
|
|
8
|
+
include SurgeAPI::Internal::Type::RequestParameters
|
|
9
|
+
|
|
10
|
+
def initialize: (?request_options: SurgeAPI::request_opts) -> void
|
|
11
|
+
|
|
12
|
+
def to_hash: -> { request_options: SurgeAPI::RequestOptions }
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
data/sig/surge_api/models.rbs
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
module SurgeAPI
|
|
2
2
|
class Account = SurgeAPI::Models::Account
|
|
3
3
|
|
|
4
|
+
class AccountArchiveParams = SurgeAPI::Models::AccountArchiveParams
|
|
5
|
+
|
|
4
6
|
class AccountCreateParams = SurgeAPI::Models::AccountCreateParams
|
|
5
7
|
|
|
6
8
|
class AccountRetrieveStatusParams = SurgeAPI::Models::AccountRetrieveStatusParams
|
|
@@ -51,6 +53,8 @@ module SurgeAPI
|
|
|
51
53
|
|
|
52
54
|
class MessageReceivedWebhookEvent = SurgeAPI::Models::MessageReceivedWebhookEvent
|
|
53
55
|
|
|
56
|
+
class MessageRetrieveParams = SurgeAPI::Models::MessageRetrieveParams
|
|
57
|
+
|
|
54
58
|
class MessageSentWebhookEvent = SurgeAPI::Models::MessageSentWebhookEvent
|
|
55
59
|
|
|
56
60
|
class Organization = SurgeAPI::Models::Organization
|
|
@@ -18,6 +18,11 @@ module SurgeAPI
|
|
|
18
18
|
?request_options: SurgeAPI::request_opts
|
|
19
19
|
) -> SurgeAPI::Account
|
|
20
20
|
|
|
21
|
+
def archive: (
|
|
22
|
+
String id,
|
|
23
|
+
?request_options: SurgeAPI::request_opts
|
|
24
|
+
) -> SurgeAPI::Account
|
|
25
|
+
|
|
21
26
|
def retrieve_status: (
|
|
22
27
|
String account_id,
|
|
23
28
|
?capabilities: ::Array[SurgeAPI::Models::AccountRetrieveStatusParams::capability],
|
|
@@ -7,6 +7,11 @@ module SurgeAPI
|
|
|
7
7
|
?request_options: SurgeAPI::request_opts
|
|
8
8
|
) -> SurgeAPI::Message
|
|
9
9
|
|
|
10
|
+
def retrieve: (
|
|
11
|
+
String id,
|
|
12
|
+
?request_options: SurgeAPI::request_opts
|
|
13
|
+
) -> SurgeAPI::Message
|
|
14
|
+
|
|
10
15
|
def initialize: (client: SurgeAPI::Client) -> void
|
|
11
16
|
end
|
|
12
17
|
end
|
metadata
CHANGED
|
@@ -1,15 +1,29 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: surge_api
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Surge
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2026-01-11 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: cgi
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '0'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - ">="
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '0'
|
|
13
27
|
- !ruby/object:Gem::Dependency
|
|
14
28
|
name: connection_pool
|
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -56,6 +70,7 @@ files:
|
|
|
56
70
|
- lib/surge_api/internal/util.rb
|
|
57
71
|
- lib/surge_api/models.rb
|
|
58
72
|
- lib/surge_api/models/account.rb
|
|
73
|
+
- lib/surge_api/models/account_archive_params.rb
|
|
59
74
|
- lib/surge_api/models/account_create_params.rb
|
|
60
75
|
- lib/surge_api/models/account_retrieve_status_params.rb
|
|
61
76
|
- lib/surge_api/models/account_status.rb
|
|
@@ -81,6 +96,7 @@ files:
|
|
|
81
96
|
- lib/surge_api/models/message_failed_webhook_event.rb
|
|
82
97
|
- lib/surge_api/models/message_params.rb
|
|
83
98
|
- lib/surge_api/models/message_received_webhook_event.rb
|
|
99
|
+
- lib/surge_api/models/message_retrieve_params.rb
|
|
84
100
|
- lib/surge_api/models/message_sent_webhook_event.rb
|
|
85
101
|
- lib/surge_api/models/organization.rb
|
|
86
102
|
- lib/surge_api/models/phone_number.rb
|
|
@@ -129,6 +145,7 @@ files:
|
|
|
129
145
|
- rbi/surge_api/internal/util.rbi
|
|
130
146
|
- rbi/surge_api/models.rbi
|
|
131
147
|
- rbi/surge_api/models/account.rbi
|
|
148
|
+
- rbi/surge_api/models/account_archive_params.rbi
|
|
132
149
|
- rbi/surge_api/models/account_create_params.rbi
|
|
133
150
|
- rbi/surge_api/models/account_retrieve_status_params.rbi
|
|
134
151
|
- rbi/surge_api/models/account_status.rbi
|
|
@@ -154,6 +171,7 @@ files:
|
|
|
154
171
|
- rbi/surge_api/models/message_failed_webhook_event.rbi
|
|
155
172
|
- rbi/surge_api/models/message_params.rbi
|
|
156
173
|
- rbi/surge_api/models/message_received_webhook_event.rbi
|
|
174
|
+
- rbi/surge_api/models/message_retrieve_params.rbi
|
|
157
175
|
- rbi/surge_api/models/message_sent_webhook_event.rbi
|
|
158
176
|
- rbi/surge_api/models/organization.rbi
|
|
159
177
|
- rbi/surge_api/models/phone_number.rbi
|
|
@@ -201,6 +219,7 @@ files:
|
|
|
201
219
|
- sig/surge_api/internal/util.rbs
|
|
202
220
|
- sig/surge_api/models.rbs
|
|
203
221
|
- sig/surge_api/models/account.rbs
|
|
222
|
+
- sig/surge_api/models/account_archive_params.rbs
|
|
204
223
|
- sig/surge_api/models/account_create_params.rbs
|
|
205
224
|
- sig/surge_api/models/account_retrieve_status_params.rbs
|
|
206
225
|
- sig/surge_api/models/account_status.rbs
|
|
@@ -226,6 +245,7 @@ files:
|
|
|
226
245
|
- sig/surge_api/models/message_failed_webhook_event.rbs
|
|
227
246
|
- sig/surge_api/models/message_params.rbs
|
|
228
247
|
- sig/surge_api/models/message_received_webhook_event.rbs
|
|
248
|
+
- sig/surge_api/models/message_retrieve_params.rbs
|
|
229
249
|
- sig/surge_api/models/message_sent_webhook_event.rbs
|
|
230
250
|
- sig/surge_api/models/organization.rbs
|
|
231
251
|
- sig/surge_api/models/phone_number.rbs
|