rcs 2.0.16.pre.rc.2 → 2.0.16
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/.fern/metadata.json +3 -3
- data/.rubocop.yml +16 -10
- data/lib/pinnacle/brands/client.rb +3 -3
- data/lib/pinnacle/campaigns/dlc/client.rb +2 -2
- data/lib/pinnacle/campaigns/rcs/client.rb +2 -2
- data/lib/pinnacle/campaigns/toll_free/client.rb +2 -2
- data/lib/pinnacle/client.rb +1 -6
- data/lib/pinnacle/conversations/client.rb +1 -1
- data/lib/pinnacle/internal/http/base_request.rb +0 -14
- data/lib/pinnacle/internal/http/raw_client.rb +3 -21
- data/lib/pinnacle/internal/json/request.rb +4 -6
- data/lib/pinnacle/internal/multipart/multipart_request.rb +4 -6
- data/lib/pinnacle/internal/types/boolean.rb +1 -1
- data/lib/pinnacle/internal/types/union.rb +1 -1
- data/lib/pinnacle/internal/types/utils.rb +2 -2
- data/lib/pinnacle/messages/client.rb +6 -1
- data/lib/pinnacle/messages/schedule/client.rb +1 -1
- data/lib/pinnacle/{forms/submissions → messages/simulate}/client.rb +9 -15
- data/lib/pinnacle/rcs/client.rb +1 -1
- data/lib/pinnacle/rcs/test/client.rb +3 -3
- data/lib/pinnacle/status/get/client.rb +5 -5
- data/lib/pinnacle/tools/url/client.rb +2 -2
- data/lib/pinnacle/types/simulate_message_input.rb +12 -0
- data/lib/pinnacle/types/{form_gradient.rb → simulate_user_button.rb} +3 -3
- data/lib/pinnacle/types/simulate_user_message.rb +12 -0
- data/lib/pinnacle/types/simulate_user_params.rb +13 -0
- data/lib/pinnacle/types/simulate_user_response.rb +10 -0
- data/lib/pinnacle/types/user_button_press.rb +19 -0
- data/lib/pinnacle/types/user_button_press_call.rb +12 -0
- data/lib/pinnacle/types/user_button_press_open_url.rb +12 -0
- data/lib/pinnacle/types/user_button_press_request_user_location.rb +12 -0
- data/lib/pinnacle/types/user_button_press_request_user_location_location.rb +13 -0
- data/lib/pinnacle/types/user_button_press_schedule_event.rb +15 -0
- data/lib/pinnacle/types/user_button_press_send_location.rb +13 -0
- data/lib/pinnacle/types/user_button_press_send_location_lat_long.rb +11 -0
- data/lib/pinnacle/types/user_button_press_trigger.rb +12 -0
- data/lib/pinnacle/types/webhook_event_enum.rb +0 -1
- data/lib/pinnacle/version.rb +1 -1
- data/lib/pinnacle/wrapper/messages/client.rb +2 -5
- data/lib/pinnacle.rb +16 -66
- data/reference.md +364 -802
- metadata +17 -67
- data/lib/pinnacle/forms/client.rb +0 -217
- data/lib/pinnacle/forms/submissions/types/list_form_submissions_params.rb +0 -15
- data/lib/pinnacle/forms/types/forms_send_response.rb +0 -14
- data/lib/pinnacle/forms/types/list_forms_params.rb +0 -12
- data/lib/pinnacle/forms/types/update_form_params.rb +0 -18
- data/lib/pinnacle/types/address_field.rb +0 -14
- data/lib/pinnacle/types/checkbox_field.rb +0 -13
- data/lib/pinnacle/types/color_field.rb +0 -8
- data/lib/pinnacle/types/create_form_request.rb +0 -23
- data/lib/pinnacle/types/date_field.rb +0 -12
- data/lib/pinnacle/types/datetime_field.rb +0 -12
- data/lib/pinnacle/types/email_field.rb +0 -10
- data/lib/pinnacle/types/field_base.rb +0 -14
- data/lib/pinnacle/types/form.rb +0 -22
- data/lib/pinnacle/types/form_background.rb +0 -17
- data/lib/pinnacle/types/form_background_gradient.rb +0 -12
- data/lib/pinnacle/types/form_background_image.rb +0 -13
- data/lib/pinnacle/types/form_background_pattern.rb +0 -10
- data/lib/pinnacle/types/form_background_pattern_preset.rb +0 -16
- data/lib/pinnacle/types/form_background_solid.rb +0 -34
- data/lib/pinnacle/types/form_color_palette.rb +0 -12
- data/lib/pinnacle/types/form_definition.rb +0 -15
- data/lib/pinnacle/types/form_field.rb +0 -29
- data/lib/pinnacle/types/form_field_option.rb +0 -11
- data/lib/pinnacle/types/form_gradient_angle.rb +0 -12
- data/lib/pinnacle/types/form_id_reference.rb +0 -23
- data/lib/pinnacle/types/form_submission.rb +0 -19
- data/lib/pinnacle/types/form_submission_answer.rb +0 -20
- data/lib/pinnacle/types/form_submission_event.rb +0 -15
- data/lib/pinnacle/types/form_submission_event_conversation.rb +0 -20
- data/lib/pinnacle/types/form_submission_event_form.rb +0 -12
- data/lib/pinnacle/types/form_submission_event_submission.rb +0 -17
- data/lib/pinnacle/types/form_submitted_field.rb +0 -13
- data/lib/pinnacle/types/form_theme_override.rb +0 -25
- data/lib/pinnacle/types/form_theme_override_colors.rb +0 -12
- data/lib/pinnacle/types/form_theme_override_content_alignment.rb +0 -13
- data/lib/pinnacle/types/form_theme_override_corner_radius.rb +0 -13
- data/lib/pinnacle/types/form_theme_override_font_family.rb +0 -15
- data/lib/pinnacle/types/form_theme_override_theme_mode.rb +0 -13
- data/lib/pinnacle/types/list_form_submissions_response.rb +0 -12
- data/lib/pinnacle/types/list_forms_response.rb +0 -12
- data/lib/pinnacle/types/number_field.rb +0 -13
- data/lib/pinnacle/types/phone_field.rb +0 -11
- data/lib/pinnacle/types/radio_field.rb +0 -10
- data/lib/pinnacle/types/range_field.rb +0 -12
- data/lib/pinnacle/types/rating_field.rb +0 -11
- data/lib/pinnacle/types/scheduled_form_send_response_form.rb +0 -10
- data/lib/pinnacle/types/scheduled_form_send_response_submission.rb +0 -10
- data/lib/pinnacle/types/scheduled_form_send_result.rb +0 -13
- data/lib/pinnacle/types/select_field.rb +0 -11
- data/lib/pinnacle/types/send_form_options.rb +0 -11
- data/lib/pinnacle/types/send_form_options_webview_mode.rb +0 -13
- data/lib/pinnacle/types/send_form_params.rb +0 -20
- data/lib/pinnacle/types/send_form_result.rb +0 -17
- data/lib/pinnacle/types/send_form_via_rcs_params.rb +0 -14
- data/lib/pinnacle/types/send_form_via_rcs_request_fallback.rb +0 -10
- data/lib/pinnacle/types/send_form_via_rcs_request_form.rb +0 -13
- data/lib/pinnacle/types/send_form_via_sms_params.rb +0 -13
- data/lib/pinnacle/types/send_form_via_sms_request_form.rb +0 -12
- data/lib/pinnacle/types/text_field.rb +0 -13
- data/lib/pinnacle/types/textarea_field.rb +0 -13
- data/lib/pinnacle/types/time_field.rb +0 -12
- data/lib/pinnacle/types/url_field.rb +0 -10
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: af1df4309329865c8db83166a625b88da9d2247b9657cbce4964e260a8cef0d2
|
|
4
|
+
data.tar.gz: edaebb702d60e2e0d2cefaca64210f518641ed5d4c7455cda0f87abd3409c33a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 518bb3cb3e93e4f69310e5ed0a4556756544746c740d15aa4fe3b888db72d6979c5ccf03eaa71d5c46d0aaf2deb5ebf5aabf4ee1f95d9ae6fbf4a1c0ddc88bc8
|
|
7
|
+
data.tar.gz: b20e523cdc367b741b4b20c2d3bb7b6c2481891540670b06fe4ba8b5a2f2442608fc51e0f518333d77b5ceb9e1cf1d099c25f53f9a1de46ae5a51ea49a608a51
|
data/.fern/metadata.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"cliVersion": "4.58.0",
|
|
3
3
|
"generatorName": "fernapi/fern-ruby-sdk",
|
|
4
|
-
"generatorVersion": "1.
|
|
4
|
+
"generatorVersion": "1.0.0-rc85",
|
|
5
5
|
"generatorConfig": {
|
|
6
6
|
"clientModuleName": "PinnacleBaseClient",
|
|
7
7
|
"flattenModuleStructure": true,
|
|
8
8
|
"useProvidedDefaults": true
|
|
9
9
|
},
|
|
10
|
-
"originGitCommit": "
|
|
11
|
-
"sdkVersion": "2.0.16
|
|
10
|
+
"originGitCommit": "fbc56cbecaab985e0a6ae7ecc7de124c3d4d57d8",
|
|
11
|
+
"sdkVersion": "2.0.16"
|
|
12
12
|
}
|
data/.rubocop.yml
CHANGED
|
@@ -45,11 +45,7 @@ Layout/LineLength:
|
|
|
45
45
|
Enabled: false
|
|
46
46
|
|
|
47
47
|
Naming/VariableNumber:
|
|
48
|
-
|
|
49
|
-
# (snake_case) in generated type classes while shipping a template that
|
|
50
|
-
# enforces `normalcase`. The two are inconsistent, so disable the cop
|
|
51
|
-
# until the generator resolves it upstream.
|
|
52
|
-
Enabled: false
|
|
48
|
+
EnforcedStyle: snake_case
|
|
53
49
|
|
|
54
50
|
Style/Documentation:
|
|
55
51
|
Enabled: false
|
|
@@ -63,11 +59,21 @@ Minitest/MultipleAssertions:
|
|
|
63
59
|
Minitest/UselessAssertion:
|
|
64
60
|
Enabled: false
|
|
65
61
|
|
|
66
|
-
#
|
|
67
|
-
|
|
62
|
+
# The generator emits bare `value` expressions as the fall-through result
|
|
63
|
+
# of `case` blocks; rubocop flags these as void. Excluded here so the
|
|
64
|
+
# suppressions survive Fern regeneration.
|
|
65
|
+
Lint/Void:
|
|
66
|
+
Exclude:
|
|
67
|
+
- 'lib/pinnacle/internal/types/boolean.rb'
|
|
68
|
+
- 'lib/pinnacle/internal/types/utils.rb'
|
|
69
|
+
|
|
70
|
+
# `Union.member?` is not a collection `include?`; the Minitest cops
|
|
71
|
+
# don't distinguish them. Excluded for the union test file so Fern
|
|
72
|
+
# regeneration doesn't need to preserve inline disables.
|
|
73
|
+
Minitest/AssertIncludes:
|
|
68
74
|
Exclude:
|
|
69
|
-
-
|
|
75
|
+
- 'test/unit/internal/types/test_union.rb'
|
|
70
76
|
|
|
71
|
-
|
|
77
|
+
Minitest/RefuteIncludes:
|
|
72
78
|
Exclude:
|
|
73
|
-
-
|
|
79
|
+
- 'test/unit/internal/types/test_union.rb'
|
|
@@ -108,7 +108,7 @@ module Pinnacle
|
|
|
108
108
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
109
109
|
base_url: request_options[:base_url],
|
|
110
110
|
method: "GET",
|
|
111
|
-
path: "brands/#{
|
|
111
|
+
path: "brands/#{params[:id]}",
|
|
112
112
|
query: query_params,
|
|
113
113
|
request_options: request_options
|
|
114
114
|
)
|
|
@@ -143,7 +143,7 @@ module Pinnacle
|
|
|
143
143
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
144
144
|
base_url: request_options[:base_url],
|
|
145
145
|
method: "POST",
|
|
146
|
-
path: "brands/#{
|
|
146
|
+
path: "brands/#{params[:brand_id]}/submit",
|
|
147
147
|
request_options: request_options
|
|
148
148
|
)
|
|
149
149
|
begin
|
|
@@ -216,7 +216,7 @@ module Pinnacle
|
|
|
216
216
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
217
217
|
base_url: request_options[:base_url],
|
|
218
218
|
method: "POST",
|
|
219
|
-
path: "brands/#{
|
|
219
|
+
path: "brands/#{params[:brand_id]}/vet",
|
|
220
220
|
body: body,
|
|
221
221
|
request_options: request_options
|
|
222
222
|
)
|
|
@@ -62,7 +62,7 @@ module Pinnacle
|
|
|
62
62
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
63
63
|
base_url: request_options[:base_url],
|
|
64
64
|
method: "GET",
|
|
65
|
-
path: "campaigns/dlc/#{
|
|
65
|
+
path: "campaigns/dlc/#{params[:campaign_id]}",
|
|
66
66
|
request_options: request_options
|
|
67
67
|
)
|
|
68
68
|
begin
|
|
@@ -96,7 +96,7 @@ module Pinnacle
|
|
|
96
96
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
97
97
|
base_url: request_options[:base_url],
|
|
98
98
|
method: "POST",
|
|
99
|
-
path: "campaigns/dlc/submit/#{
|
|
99
|
+
path: "campaigns/dlc/submit/#{params[:campaign_id]}",
|
|
100
100
|
request_options: request_options
|
|
101
101
|
)
|
|
102
102
|
begin
|
|
@@ -62,7 +62,7 @@ module Pinnacle
|
|
|
62
62
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
63
63
|
base_url: request_options[:base_url],
|
|
64
64
|
method: "GET",
|
|
65
|
-
path: "campaigns/rcs/#{
|
|
65
|
+
path: "campaigns/rcs/#{params[:campaign_id]}",
|
|
66
66
|
request_options: request_options
|
|
67
67
|
)
|
|
68
68
|
begin
|
|
@@ -96,7 +96,7 @@ module Pinnacle
|
|
|
96
96
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
97
97
|
base_url: request_options[:base_url],
|
|
98
98
|
method: "POST",
|
|
99
|
-
path: "campaigns/rcs/submit/#{
|
|
99
|
+
path: "campaigns/rcs/submit/#{params[:campaign_id]}",
|
|
100
100
|
request_options: request_options
|
|
101
101
|
)
|
|
102
102
|
begin
|
|
@@ -62,7 +62,7 @@ module Pinnacle
|
|
|
62
62
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
63
63
|
base_url: request_options[:base_url],
|
|
64
64
|
method: "GET",
|
|
65
|
-
path: "campaigns/toll-free/#{
|
|
65
|
+
path: "campaigns/toll-free/#{params[:campaign_id]}",
|
|
66
66
|
request_options: request_options
|
|
67
67
|
)
|
|
68
68
|
begin
|
|
@@ -96,7 +96,7 @@ module Pinnacle
|
|
|
96
96
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
97
97
|
base_url: request_options[:base_url],
|
|
98
98
|
method: "POST",
|
|
99
|
-
path: "campaigns/toll-free/submit/#{
|
|
99
|
+
path: "campaigns/toll-free/submit/#{params[:campaign_id]}",
|
|
100
100
|
request_options: request_options
|
|
101
101
|
)
|
|
102
102
|
begin
|
data/lib/pinnacle/client.rb
CHANGED
|
@@ -10,7 +10,7 @@ module Pinnacle
|
|
|
10
10
|
@raw_client = Pinnacle::Internal::Http::RawClient.new(
|
|
11
11
|
base_url: base_url || Pinnacle::Environment::DEFAULT,
|
|
12
12
|
headers: {
|
|
13
|
-
"User-Agent" => "rcs/2.0.16
|
|
13
|
+
"User-Agent" => "rcs/2.0.16",
|
|
14
14
|
"X-Fern-Language" => "Ruby",
|
|
15
15
|
"PINNACLE-API-KEY" => api_key.to_s
|
|
16
16
|
}
|
|
@@ -57,11 +57,6 @@ module Pinnacle
|
|
|
57
57
|
@webhooks ||= Pinnacle::Webhooks::Client.new(client: @raw_client)
|
|
58
58
|
end
|
|
59
59
|
|
|
60
|
-
# @return [Pinnacle::Forms::Client]
|
|
61
|
-
def forms
|
|
62
|
-
@forms ||= Pinnacle::Forms::Client.new(client: @raw_client)
|
|
63
|
-
end
|
|
64
|
-
|
|
65
60
|
# @return [Pinnacle::Campaigns::Client]
|
|
66
61
|
def campaigns
|
|
67
62
|
@campaigns ||= Pinnacle::Campaigns::Client.new(client: @raw_client)
|
|
@@ -147,7 +147,7 @@ module Pinnacle
|
|
|
147
147
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
148
148
|
base_url: request_options[:base_url],
|
|
149
149
|
method: "POST",
|
|
150
|
-
path: "conversations/#{
|
|
150
|
+
path: "conversations/#{params[:id]}/messages",
|
|
151
151
|
query: query_params,
|
|
152
152
|
request_options: request_options
|
|
153
153
|
)
|
|
@@ -31,20 +31,6 @@ module Pinnacle
|
|
|
31
31
|
# Child classes should implement:
|
|
32
32
|
# - encode_headers: Returns the encoded HTTP request headers.
|
|
33
33
|
# - encode_body: Returns the encoded HTTP request body.
|
|
34
|
-
|
|
35
|
-
private
|
|
36
|
-
|
|
37
|
-
# Merges additional_headers from request_options into sdk_headers, filtering out
|
|
38
|
-
# any keys that collide with SDK-set or client-protected headers (case-insensitive).
|
|
39
|
-
# @param sdk_headers [Hash] Headers set by the SDK for this request type.
|
|
40
|
-
# @param protected_keys [Array<String>] Additional header keys that must not be overridden.
|
|
41
|
-
# @return [Hash] The merged headers.
|
|
42
|
-
def merge_additional_headers(sdk_headers, protected_keys: [])
|
|
43
|
-
additional_headers = @request_options&.dig(:additional_headers) || @request_options&.dig("additional_headers") || {}
|
|
44
|
-
all_protected = (sdk_headers.keys + protected_keys).to_set { |k| k.to_s.downcase }
|
|
45
|
-
filtered = additional_headers.reject { |key, _| all_protected.include?(key.to_s.downcase) }
|
|
46
|
-
sdk_headers.merge(filtered)
|
|
47
|
-
end
|
|
48
34
|
end
|
|
49
35
|
end
|
|
50
36
|
end
|
|
@@ -43,7 +43,7 @@ module Pinnacle
|
|
|
43
43
|
http_request = build_http_request(
|
|
44
44
|
url:,
|
|
45
45
|
method: request.method,
|
|
46
|
-
headers: request.encode_headers
|
|
46
|
+
headers: request.encode_headers,
|
|
47
47
|
body: request.encode_body
|
|
48
48
|
)
|
|
49
49
|
|
|
@@ -120,8 +120,6 @@ module Pinnacle
|
|
|
120
120
|
[delay + jitter, 0].max
|
|
121
121
|
end
|
|
122
122
|
|
|
123
|
-
LOCALHOST_HOSTS = %w[localhost 127.0.0.1 [::1]].freeze
|
|
124
|
-
|
|
125
123
|
# @param request [Pinnacle::Internal::Http::BaseRequest] The HTTP request.
|
|
126
124
|
# @return [URI::Generic] The URL.
|
|
127
125
|
def build_url(request)
|
|
@@ -131,29 +129,14 @@ module Pinnacle
|
|
|
131
129
|
if request.path.start_with?("http://", "https://")
|
|
132
130
|
url = request.path
|
|
133
131
|
url = "#{url}?#{encode_query(encoded_query)}" if encoded_query&.any?
|
|
134
|
-
|
|
135
|
-
validate_https!(parsed)
|
|
136
|
-
return parsed
|
|
132
|
+
return URI.parse(url)
|
|
137
133
|
end
|
|
138
134
|
|
|
139
135
|
path = request.path.start_with?("/") ? request.path[1..] : request.path
|
|
140
136
|
base = request.base_url || @base_url
|
|
141
137
|
url = "#{base.chomp("/")}/#{path}"
|
|
142
138
|
url = "#{url}?#{encode_query(encoded_query)}" if encoded_query&.any?
|
|
143
|
-
|
|
144
|
-
validate_https!(parsed)
|
|
145
|
-
parsed
|
|
146
|
-
end
|
|
147
|
-
|
|
148
|
-
# Raises if the URL uses http:// for a non-localhost host, which would
|
|
149
|
-
# send authentication credentials in plaintext.
|
|
150
|
-
# @param url [URI::Generic] The parsed URL.
|
|
151
|
-
def validate_https!(url)
|
|
152
|
-
return if url.scheme != "http"
|
|
153
|
-
return if LOCALHOST_HOSTS.include?(url.host)
|
|
154
|
-
|
|
155
|
-
raise ArgumentError, "Refusing to send request to non-HTTPS URL: #{url}. " \
|
|
156
|
-
"HTTP is only allowed for localhost. Use HTTPS or pass a localhost URL."
|
|
139
|
+
URI.parse(url)
|
|
157
140
|
end
|
|
158
141
|
|
|
159
142
|
# @param url [URI::Generic] The url to the resource.
|
|
@@ -197,7 +180,6 @@ module Pinnacle
|
|
|
197
180
|
|
|
198
181
|
http = Net::HTTP.new(url.host, port)
|
|
199
182
|
http.use_ssl = is_https
|
|
200
|
-
http.verify_mode = OpenSSL::SSL::VERIFY_PEER if is_https
|
|
201
183
|
# NOTE: We handle retries at the application level with HTTP status code awareness,
|
|
202
184
|
# so we set max_retries to 0 to disable Net::HTTP's built-in network-level retries.
|
|
203
185
|
http.max_retries = 0
|
|
@@ -21,14 +21,12 @@ module Pinnacle
|
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
# @return [Hash] The encoded HTTP request headers.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
sdk_headers = {
|
|
24
|
+
def encode_headers
|
|
25
|
+
additional_headers = @request_options&.dig(:additional_headers) || @request_options&.dig("additional_headers") || {}
|
|
26
|
+
{
|
|
28
27
|
"Content-Type" => "application/json",
|
|
29
28
|
"Accept" => "application/json"
|
|
30
|
-
}.merge(@headers)
|
|
31
|
-
merge_additional_headers(sdk_headers, protected_keys:)
|
|
29
|
+
}.merge(@headers).merge(additional_headers)
|
|
32
30
|
end
|
|
33
31
|
|
|
34
32
|
# @return [String, nil] The encoded HTTP request body.
|
|
@@ -21,13 +21,11 @@ module Pinnacle
|
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
# @return [Hash] The encoded HTTP request headers.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
sdk_headers = {
|
|
24
|
+
def encode_headers
|
|
25
|
+
additional_headers = @request_options&.dig(:additional_headers) || @request_options&.dig("additional_headers") || {}
|
|
26
|
+
{
|
|
28
27
|
"Content-Type" => @body.content_type
|
|
29
|
-
}.merge(@headers)
|
|
30
|
-
merge_additional_headers(sdk_headers, protected_keys:)
|
|
28
|
+
}.merge(@headers).merge(additional_headers)
|
|
31
29
|
end
|
|
32
30
|
|
|
33
31
|
# @return [String, nil] The encoded HTTP request body.
|
|
@@ -81,10 +81,10 @@ module Pinnacle
|
|
|
81
81
|
}
|
|
82
82
|
return type.coerce(value, strict: strict)
|
|
83
83
|
else
|
|
84
|
-
value
|
|
84
|
+
value
|
|
85
85
|
end
|
|
86
86
|
else
|
|
87
|
-
value
|
|
87
|
+
value
|
|
88
88
|
end
|
|
89
89
|
|
|
90
90
|
raise Errors::TypeError, "cannot coerce value of type `#{value.class}` to `#{target}`" if strict
|
|
@@ -27,7 +27,7 @@ module Pinnacle
|
|
|
27
27
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
28
28
|
base_url: request_options[:base_url],
|
|
29
29
|
method: "GET",
|
|
30
|
-
path: "messages/#{
|
|
30
|
+
path: "messages/#{params[:id]}",
|
|
31
31
|
request_options: request_options
|
|
32
32
|
)
|
|
33
33
|
begin
|
|
@@ -146,6 +146,11 @@ module Pinnacle
|
|
|
146
146
|
def blasts
|
|
147
147
|
@blasts ||= Pinnacle::Messages::Blasts::Client.new(client: @client)
|
|
148
148
|
end
|
|
149
|
+
|
|
150
|
+
# @return [Pinnacle::Simulate::Client]
|
|
151
|
+
def simulate
|
|
152
|
+
@simulate ||= Pinnacle::Messages::Simulate::Client.new(client: @client)
|
|
153
|
+
end
|
|
149
154
|
end
|
|
150
155
|
end
|
|
151
156
|
end
|
|
@@ -31,7 +31,7 @@ module Pinnacle
|
|
|
31
31
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
32
32
|
base_url: request_options[:base_url],
|
|
33
33
|
method: "DELETE",
|
|
34
|
-
path: "messages/schedule/#{
|
|
34
|
+
path: "messages/schedule/#{params[:id]}",
|
|
35
35
|
request_options: request_options
|
|
36
36
|
)
|
|
37
37
|
begin
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Pinnacle
|
|
4
|
-
module
|
|
5
|
-
module
|
|
4
|
+
module Messages
|
|
5
|
+
module Simulate
|
|
6
6
|
class Client
|
|
7
7
|
# @param client [Pinnacle::Internal::Http::RawClient]
|
|
8
8
|
#
|
|
@@ -11,30 +11,24 @@ module Pinnacle
|
|
|
11
11
|
@client = client
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
#
|
|
15
|
-
# by field `key`, the sender/recipient, IP, user-agent, and timestamps.
|
|
14
|
+
# Simulate inbound messages and button presses from a user.
|
|
16
15
|
#
|
|
17
16
|
# @param request_options [Hash]
|
|
18
|
-
# @param params [Pinnacle::
|
|
17
|
+
# @param params [Pinnacle::Types::SimulateUserParams]
|
|
19
18
|
# @option request_options [String] :base_url
|
|
20
19
|
# @option request_options [Hash{String => Object}] :additional_headers
|
|
21
20
|
# @option request_options [Hash{String => Object}] :additional_query_parameters
|
|
22
21
|
# @option request_options [Hash{String => Object}] :additional_body_parameters
|
|
23
22
|
# @option request_options [Integer] :timeout_in_seconds
|
|
24
|
-
# @option params [String] :id
|
|
25
23
|
#
|
|
26
|
-
# @return [Pinnacle::Types::
|
|
27
|
-
def
|
|
24
|
+
# @return [Pinnacle::Types::SimulateUserResponse]
|
|
25
|
+
def user(request_options: {}, **params)
|
|
28
26
|
params = Pinnacle::Internal::Types::Utils.normalize_keys(params)
|
|
29
|
-
request_data = Pinnacle::Forms::Submissions::Types::ListFormSubmissionsParams.new(params).to_h
|
|
30
|
-
non_body_param_names = ["id"]
|
|
31
|
-
body = request_data.except(*non_body_param_names)
|
|
32
|
-
|
|
33
27
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
34
28
|
base_url: request_options[:base_url],
|
|
35
29
|
method: "POST",
|
|
36
|
-
path: "
|
|
37
|
-
body:
|
|
30
|
+
path: "messages/simulate/user",
|
|
31
|
+
body: Pinnacle::Types::SimulateUserParams.new(params).to_h,
|
|
38
32
|
request_options: request_options
|
|
39
33
|
)
|
|
40
34
|
begin
|
|
@@ -44,7 +38,7 @@ module Pinnacle
|
|
|
44
38
|
end
|
|
45
39
|
code = response.code.to_i
|
|
46
40
|
if code.between?(200, 299)
|
|
47
|
-
Pinnacle::Types::
|
|
41
|
+
Pinnacle::Types::SimulateUserResponse.load(response.body)
|
|
48
42
|
else
|
|
49
43
|
error_class = Pinnacle::Errors::ResponseError.subclass_for_code(code)
|
|
50
44
|
raise error_class.new(response.body, code: code)
|
data/lib/pinnacle/rcs/client.rb
CHANGED
|
@@ -30,7 +30,7 @@ module Pinnacle
|
|
|
30
30
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
31
31
|
base_url: request_options[:base_url],
|
|
32
32
|
method: "GET",
|
|
33
|
-
path: "rcs/#{
|
|
33
|
+
path: "rcs/#{params[:agent_id]}",
|
|
34
34
|
request_options: request_options
|
|
35
35
|
)
|
|
36
36
|
begin
|
|
@@ -115,7 +115,7 @@ module Pinnacle
|
|
|
115
115
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
116
116
|
base_url: request_options[:base_url],
|
|
117
117
|
method: "PATCH",
|
|
118
|
-
path: "rcs/test/agents/#{
|
|
118
|
+
path: "rcs/test/agents/#{params[:agent_id]}",
|
|
119
119
|
body: body,
|
|
120
120
|
request_options: request_options
|
|
121
121
|
)
|
|
@@ -186,7 +186,7 @@ module Pinnacle
|
|
|
186
186
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
187
187
|
base_url: request_options[:base_url],
|
|
188
188
|
method: "POST",
|
|
189
|
-
path: "rcs/test/agents/#{
|
|
189
|
+
path: "rcs/test/agents/#{params[:agent_id]}/whitelist",
|
|
190
190
|
body: body,
|
|
191
191
|
request_options: request_options
|
|
192
192
|
)
|
|
@@ -252,7 +252,7 @@ module Pinnacle
|
|
|
252
252
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
253
253
|
base_url: request_options[:base_url],
|
|
254
254
|
method: "GET",
|
|
255
|
-
path: "rcs/test/agents/#{
|
|
255
|
+
path: "rcs/test/agents/#{params[:agent_id]}/numbers",
|
|
256
256
|
query: query_params,
|
|
257
257
|
request_options: request_options
|
|
258
258
|
)
|
|
@@ -28,7 +28,7 @@ module Pinnacle
|
|
|
28
28
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
29
29
|
base_url: request_options[:base_url],
|
|
30
30
|
method: "GET",
|
|
31
|
-
path: "status/brand/#{
|
|
31
|
+
path: "status/brand/#{params[:brand_id]}",
|
|
32
32
|
request_options: request_options
|
|
33
33
|
)
|
|
34
34
|
begin
|
|
@@ -62,7 +62,7 @@ module Pinnacle
|
|
|
62
62
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
63
63
|
base_url: request_options[:base_url],
|
|
64
64
|
method: "GET",
|
|
65
|
-
path: "status/toll-free-campaign/#{
|
|
65
|
+
path: "status/toll-free-campaign/#{params[:campaign_id]}",
|
|
66
66
|
request_options: request_options
|
|
67
67
|
)
|
|
68
68
|
begin
|
|
@@ -96,7 +96,7 @@ module Pinnacle
|
|
|
96
96
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
97
97
|
base_url: request_options[:base_url],
|
|
98
98
|
method: "GET",
|
|
99
|
-
path: "status/dlc-campaign/#{
|
|
99
|
+
path: "status/dlc-campaign/#{params[:campaign_id]}",
|
|
100
100
|
request_options: request_options
|
|
101
101
|
)
|
|
102
102
|
begin
|
|
@@ -130,7 +130,7 @@ module Pinnacle
|
|
|
130
130
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
131
131
|
base_url: request_options[:base_url],
|
|
132
132
|
method: "GET",
|
|
133
|
-
path: "status/rcs-campaign/#{
|
|
133
|
+
path: "status/rcs-campaign/#{params[:campaign_id]}",
|
|
134
134
|
request_options: request_options
|
|
135
135
|
)
|
|
136
136
|
begin
|
|
@@ -166,7 +166,7 @@ module Pinnacle
|
|
|
166
166
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
167
167
|
base_url: request_options[:base_url],
|
|
168
168
|
method: "GET",
|
|
169
|
-
path: "status/phone-number/#{
|
|
169
|
+
path: "status/phone-number/#{params[:phone_number]}",
|
|
170
170
|
request_options: request_options
|
|
171
171
|
)
|
|
172
172
|
begin
|
|
@@ -62,7 +62,7 @@ module Pinnacle
|
|
|
62
62
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
63
63
|
base_url: request_options[:base_url],
|
|
64
64
|
method: "GET",
|
|
65
|
-
path: "tools/url/#{
|
|
65
|
+
path: "tools/url/#{params[:link_id]}",
|
|
66
66
|
request_options: request_options
|
|
67
67
|
)
|
|
68
68
|
begin
|
|
@@ -101,7 +101,7 @@ module Pinnacle
|
|
|
101
101
|
request = Pinnacle::Internal::JSON::Request.new(
|
|
102
102
|
base_url: request_options[:base_url],
|
|
103
103
|
method: "PUT",
|
|
104
|
-
path: "tools/url/#{
|
|
104
|
+
path: "tools/url/#{params[:link_id]}",
|
|
105
105
|
body: body,
|
|
106
106
|
request_options: request_options
|
|
107
107
|
)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pinnacle
|
|
4
|
+
module Types
|
|
5
|
+
# User message payload. At least one of `text` or `mediaUrls` must be non-empty.
|
|
6
|
+
# Send only `text` to simulate an inbound SMS; include `mediaUrls` to simulate an inbound MMS.
|
|
7
|
+
class SimulateMessageInput < Internal::Types::Model
|
|
8
|
+
field :text, -> { String }, optional: true, nullable: false
|
|
9
|
+
field :media_urls, -> { Internal::Types::Array[String] }, optional: true, nullable: false, api_name: "mediaUrls"
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
module Pinnacle
|
|
4
4
|
module Types
|
|
5
|
-
#
|
|
6
|
-
class
|
|
5
|
+
# Simulate a button press from a user.
|
|
6
|
+
class SimulateUserButton < Internal::Types::Model
|
|
7
7
|
field :from, -> { String }, optional: false, nullable: false
|
|
8
8
|
field :to, -> { String }, optional: false, nullable: false
|
|
9
|
-
field :
|
|
9
|
+
field :button, -> { Pinnacle::Types::UserButtonPress }, optional: false, nullable: false
|
|
10
10
|
end
|
|
11
11
|
end
|
|
12
12
|
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pinnacle
|
|
4
|
+
module Types
|
|
5
|
+
# Simulate an inbound message from a user.
|
|
6
|
+
class SimulateUserMessage < Internal::Types::Model
|
|
7
|
+
field :from, -> { String }, optional: false, nullable: false
|
|
8
|
+
field :to, -> { String }, optional: false, nullable: false
|
|
9
|
+
field :message, -> { Pinnacle::Types::SimulateMessageInput }, optional: false, nullable: false
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pinnacle
|
|
4
|
+
module Types
|
|
5
|
+
# Request body for simulating an inbound event from a user.
|
|
6
|
+
class SimulateUserParams < Internal::Types::Model
|
|
7
|
+
extend Pinnacle::Internal::Types::Union
|
|
8
|
+
|
|
9
|
+
member -> { Pinnacle::Types::SimulateUserMessage }
|
|
10
|
+
member -> { Pinnacle::Types::SimulateUserButton }
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pinnacle
|
|
4
|
+
module Types
|
|
5
|
+
# Discriminated union of button presses that can be simulated for a user.
|
|
6
|
+
class UserButtonPress < Internal::Types::Model
|
|
7
|
+
extend Pinnacle::Internal::Types::Union
|
|
8
|
+
|
|
9
|
+
discriminant :type
|
|
10
|
+
|
|
11
|
+
member -> { Pinnacle::Types::UserButtonPressTrigger }, key: "TRIGGER"
|
|
12
|
+
member -> { Pinnacle::Types::UserButtonPressOpenUrl }, key: "OPEN_URL"
|
|
13
|
+
member -> { Pinnacle::Types::UserButtonPressCall }, key: "CALL"
|
|
14
|
+
member -> { Pinnacle::Types::UserButtonPressScheduleEvent }, key: "SCHEDULE_EVENT"
|
|
15
|
+
member -> { Pinnacle::Types::UserButtonPressSendLocation }, key: "SEND_LOCATION"
|
|
16
|
+
member -> { Pinnacle::Types::UserButtonPressRequestUserLocation }, key: "REQUEST_USER_LOCATION"
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pinnacle
|
|
4
|
+
module Types
|
|
5
|
+
# Simulates when a user presses a `call` button.
|
|
6
|
+
class UserButtonPressCall < Internal::Types::Model
|
|
7
|
+
field :title, -> { String }, optional: false, nullable: false
|
|
8
|
+
field :metadata, -> { String }, optional: true, nullable: false
|
|
9
|
+
field :payload, -> { String }, optional: true, nullable: false
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pinnacle
|
|
4
|
+
module Types
|
|
5
|
+
# Simulates when a user presses an `openUrl` button.
|
|
6
|
+
class UserButtonPressOpenUrl < Internal::Types::Model
|
|
7
|
+
field :title, -> { String }, optional: false, nullable: false
|
|
8
|
+
field :metadata, -> { String }, optional: true, nullable: false
|
|
9
|
+
field :payload, -> { String }, optional: true, nullable: false
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|