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.
Files changed (106) hide show
  1. checksums.yaml +4 -4
  2. data/.fern/metadata.json +3 -3
  3. data/.rubocop.yml +16 -10
  4. data/lib/pinnacle/brands/client.rb +3 -3
  5. data/lib/pinnacle/campaigns/dlc/client.rb +2 -2
  6. data/lib/pinnacle/campaigns/rcs/client.rb +2 -2
  7. data/lib/pinnacle/campaigns/toll_free/client.rb +2 -2
  8. data/lib/pinnacle/client.rb +1 -6
  9. data/lib/pinnacle/conversations/client.rb +1 -1
  10. data/lib/pinnacle/internal/http/base_request.rb +0 -14
  11. data/lib/pinnacle/internal/http/raw_client.rb +3 -21
  12. data/lib/pinnacle/internal/json/request.rb +4 -6
  13. data/lib/pinnacle/internal/multipart/multipart_request.rb +4 -6
  14. data/lib/pinnacle/internal/types/boolean.rb +1 -1
  15. data/lib/pinnacle/internal/types/union.rb +1 -1
  16. data/lib/pinnacle/internal/types/utils.rb +2 -2
  17. data/lib/pinnacle/messages/client.rb +6 -1
  18. data/lib/pinnacle/messages/schedule/client.rb +1 -1
  19. data/lib/pinnacle/{forms/submissions → messages/simulate}/client.rb +9 -15
  20. data/lib/pinnacle/rcs/client.rb +1 -1
  21. data/lib/pinnacle/rcs/test/client.rb +3 -3
  22. data/lib/pinnacle/status/get/client.rb +5 -5
  23. data/lib/pinnacle/tools/url/client.rb +2 -2
  24. data/lib/pinnacle/types/simulate_message_input.rb +12 -0
  25. data/lib/pinnacle/types/{form_gradient.rb → simulate_user_button.rb} +3 -3
  26. data/lib/pinnacle/types/simulate_user_message.rb +12 -0
  27. data/lib/pinnacle/types/simulate_user_params.rb +13 -0
  28. data/lib/pinnacle/types/simulate_user_response.rb +10 -0
  29. data/lib/pinnacle/types/user_button_press.rb +19 -0
  30. data/lib/pinnacle/types/user_button_press_call.rb +12 -0
  31. data/lib/pinnacle/types/user_button_press_open_url.rb +12 -0
  32. data/lib/pinnacle/types/user_button_press_request_user_location.rb +12 -0
  33. data/lib/pinnacle/types/user_button_press_request_user_location_location.rb +13 -0
  34. data/lib/pinnacle/types/user_button_press_schedule_event.rb +15 -0
  35. data/lib/pinnacle/types/user_button_press_send_location.rb +13 -0
  36. data/lib/pinnacle/types/user_button_press_send_location_lat_long.rb +11 -0
  37. data/lib/pinnacle/types/user_button_press_trigger.rb +12 -0
  38. data/lib/pinnacle/types/webhook_event_enum.rb +0 -1
  39. data/lib/pinnacle/version.rb +1 -1
  40. data/lib/pinnacle/wrapper/messages/client.rb +2 -5
  41. data/lib/pinnacle.rb +16 -66
  42. data/reference.md +364 -802
  43. metadata +17 -67
  44. data/lib/pinnacle/forms/client.rb +0 -217
  45. data/lib/pinnacle/forms/submissions/types/list_form_submissions_params.rb +0 -15
  46. data/lib/pinnacle/forms/types/forms_send_response.rb +0 -14
  47. data/lib/pinnacle/forms/types/list_forms_params.rb +0 -12
  48. data/lib/pinnacle/forms/types/update_form_params.rb +0 -18
  49. data/lib/pinnacle/types/address_field.rb +0 -14
  50. data/lib/pinnacle/types/checkbox_field.rb +0 -13
  51. data/lib/pinnacle/types/color_field.rb +0 -8
  52. data/lib/pinnacle/types/create_form_request.rb +0 -23
  53. data/lib/pinnacle/types/date_field.rb +0 -12
  54. data/lib/pinnacle/types/datetime_field.rb +0 -12
  55. data/lib/pinnacle/types/email_field.rb +0 -10
  56. data/lib/pinnacle/types/field_base.rb +0 -14
  57. data/lib/pinnacle/types/form.rb +0 -22
  58. data/lib/pinnacle/types/form_background.rb +0 -17
  59. data/lib/pinnacle/types/form_background_gradient.rb +0 -12
  60. data/lib/pinnacle/types/form_background_image.rb +0 -13
  61. data/lib/pinnacle/types/form_background_pattern.rb +0 -10
  62. data/lib/pinnacle/types/form_background_pattern_preset.rb +0 -16
  63. data/lib/pinnacle/types/form_background_solid.rb +0 -34
  64. data/lib/pinnacle/types/form_color_palette.rb +0 -12
  65. data/lib/pinnacle/types/form_definition.rb +0 -15
  66. data/lib/pinnacle/types/form_field.rb +0 -29
  67. data/lib/pinnacle/types/form_field_option.rb +0 -11
  68. data/lib/pinnacle/types/form_gradient_angle.rb +0 -12
  69. data/lib/pinnacle/types/form_id_reference.rb +0 -23
  70. data/lib/pinnacle/types/form_submission.rb +0 -19
  71. data/lib/pinnacle/types/form_submission_answer.rb +0 -20
  72. data/lib/pinnacle/types/form_submission_event.rb +0 -15
  73. data/lib/pinnacle/types/form_submission_event_conversation.rb +0 -20
  74. data/lib/pinnacle/types/form_submission_event_form.rb +0 -12
  75. data/lib/pinnacle/types/form_submission_event_submission.rb +0 -17
  76. data/lib/pinnacle/types/form_submitted_field.rb +0 -13
  77. data/lib/pinnacle/types/form_theme_override.rb +0 -25
  78. data/lib/pinnacle/types/form_theme_override_colors.rb +0 -12
  79. data/lib/pinnacle/types/form_theme_override_content_alignment.rb +0 -13
  80. data/lib/pinnacle/types/form_theme_override_corner_radius.rb +0 -13
  81. data/lib/pinnacle/types/form_theme_override_font_family.rb +0 -15
  82. data/lib/pinnacle/types/form_theme_override_theme_mode.rb +0 -13
  83. data/lib/pinnacle/types/list_form_submissions_response.rb +0 -12
  84. data/lib/pinnacle/types/list_forms_response.rb +0 -12
  85. data/lib/pinnacle/types/number_field.rb +0 -13
  86. data/lib/pinnacle/types/phone_field.rb +0 -11
  87. data/lib/pinnacle/types/radio_field.rb +0 -10
  88. data/lib/pinnacle/types/range_field.rb +0 -12
  89. data/lib/pinnacle/types/rating_field.rb +0 -11
  90. data/lib/pinnacle/types/scheduled_form_send_response_form.rb +0 -10
  91. data/lib/pinnacle/types/scheduled_form_send_response_submission.rb +0 -10
  92. data/lib/pinnacle/types/scheduled_form_send_result.rb +0 -13
  93. data/lib/pinnacle/types/select_field.rb +0 -11
  94. data/lib/pinnacle/types/send_form_options.rb +0 -11
  95. data/lib/pinnacle/types/send_form_options_webview_mode.rb +0 -13
  96. data/lib/pinnacle/types/send_form_params.rb +0 -20
  97. data/lib/pinnacle/types/send_form_result.rb +0 -17
  98. data/lib/pinnacle/types/send_form_via_rcs_params.rb +0 -14
  99. data/lib/pinnacle/types/send_form_via_rcs_request_fallback.rb +0 -10
  100. data/lib/pinnacle/types/send_form_via_rcs_request_form.rb +0 -13
  101. data/lib/pinnacle/types/send_form_via_sms_params.rb +0 -13
  102. data/lib/pinnacle/types/send_form_via_sms_request_form.rb +0 -12
  103. data/lib/pinnacle/types/text_field.rb +0 -13
  104. data/lib/pinnacle/types/textarea_field.rb +0 -13
  105. data/lib/pinnacle/types/time_field.rb +0 -12
  106. data/lib/pinnacle/types/url_field.rb +0 -10
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rcs
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.16.pre.rc.2
4
+ version: 2.0.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pinnacle
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-04-24 00:00:00.000000000 Z
11
+ date: 2026-04-22 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: The Pinnacle Ruby library provides convenient access to the Pinnacle
14
14
  API from Ruby.
@@ -106,12 +106,6 @@ files:
106
106
  - lib/pinnacle/errors/response_error.rb
107
107
  - lib/pinnacle/errors/server_error.rb
108
108
  - lib/pinnacle/errors/timeout_error.rb
109
- - lib/pinnacle/forms/client.rb
110
- - lib/pinnacle/forms/submissions/client.rb
111
- - lib/pinnacle/forms/submissions/types/list_form_submissions_params.rb
112
- - lib/pinnacle/forms/types/forms_send_response.rb
113
- - lib/pinnacle/forms/types/list_forms_params.rb
114
- - lib/pinnacle/forms/types/update_form_params.rb
115
109
  - lib/pinnacle/internal/errors/constraint_error.rb
116
110
  - lib/pinnacle/internal/errors/type_error.rb
117
111
  - lib/pinnacle/internal/http/base_request.rb
@@ -165,6 +159,7 @@ files:
165
159
  - lib/pinnacle/messages/schedules/types/list_scheduled_messages_params.rb
166
160
  - lib/pinnacle/messages/schedules/types/list_scheduled_messages_request_schedule_type.rb
167
161
  - lib/pinnacle/messages/schedules/types/list_scheduled_messages_request_status.rb
162
+ - lib/pinnacle/messages/simulate/client.rb
168
163
  - lib/pinnacle/messages/sms/client.rb
169
164
  - lib/pinnacle/messages/sms/types/send_sms_options.rb
170
165
  - lib/pinnacle/messages/sms/types/sms.rb
@@ -222,7 +217,6 @@ files:
222
217
  - lib/pinnacle/tools/url/types/create_url_params.rb
223
218
  - lib/pinnacle/tools/url/types/list_links_params.rb
224
219
  - lib/pinnacle/tools/url/types/update_url_params.rb
225
- - lib/pinnacle/types/address_field.rb
226
220
  - lib/pinnacle/types/advanced_phone_information.rb
227
221
  - lib/pinnacle/types/advanced_phone_information_carrier.rb
228
222
  - lib/pinnacle/types/advanced_phone_information_contact.rb
@@ -283,8 +277,6 @@ files:
283
277
  - lib/pinnacle/types/campaign_validation_result.rb
284
278
  - lib/pinnacle/types/carrier_launch_status.rb
285
279
  - lib/pinnacle/types/carrier_launches.rb
286
- - lib/pinnacle/types/checkbox_field.rb
287
- - lib/pinnacle/types/color_field.rb
288
280
  - lib/pinnacle/types/company_entity_type_enum.rb
289
281
  - lib/pinnacle/types/company_sector_enum.rb
290
282
  - lib/pinnacle/types/company_type_enum.rb
@@ -296,10 +288,7 @@ files:
296
288
  - lib/pinnacle/types/conversation_contact.rb
297
289
  - lib/pinnacle/types/conversation_list.rb
298
290
  - lib/pinnacle/types/conversation_sender.rb
299
- - lib/pinnacle/types/create_form_request.rb
300
291
  - lib/pinnacle/types/create_url_options.rb
301
- - lib/pinnacle/types/date_field.rb
302
- - lib/pinnacle/types/datetime_field.rb
303
292
  - lib/pinnacle/types/delete_audience_response.rb
304
293
  - lib/pinnacle/types/detach_webhook_result.rb
305
294
  - lib/pinnacle/types/detached_phone_number_result.rb
@@ -319,7 +308,6 @@ files:
319
308
  - lib/pinnacle/types/dlc_with_extended_brand_and_status_mno_tcr_tier.rb
320
309
  - lib/pinnacle/types/dlc_with_extended_brand_and_status_options.rb
321
310
  - lib/pinnacle/types/dlc_with_extended_brand_and_status_use_case.rb
322
- - lib/pinnacle/types/email_field.rb
323
311
  - lib/pinnacle/types/enhanced_contact.rb
324
312
  - lib/pinnacle/types/enhanced_contact_item.rb
325
313
  - lib/pinnacle/types/error.rb
@@ -328,34 +316,6 @@ files:
328
316
  - lib/pinnacle/types/extended_rcs_campaign.rb
329
317
  - lib/pinnacle/types/failed_sender.rb
330
318
  - lib/pinnacle/types/fallback_message.rb
331
- - lib/pinnacle/types/field_base.rb
332
- - lib/pinnacle/types/form.rb
333
- - lib/pinnacle/types/form_background.rb
334
- - lib/pinnacle/types/form_background_gradient.rb
335
- - lib/pinnacle/types/form_background_image.rb
336
- - lib/pinnacle/types/form_background_pattern.rb
337
- - lib/pinnacle/types/form_background_pattern_preset.rb
338
- - lib/pinnacle/types/form_background_solid.rb
339
- - lib/pinnacle/types/form_color_palette.rb
340
- - lib/pinnacle/types/form_definition.rb
341
- - lib/pinnacle/types/form_field.rb
342
- - lib/pinnacle/types/form_field_option.rb
343
- - lib/pinnacle/types/form_gradient.rb
344
- - lib/pinnacle/types/form_gradient_angle.rb
345
- - lib/pinnacle/types/form_id_reference.rb
346
- - lib/pinnacle/types/form_submission.rb
347
- - lib/pinnacle/types/form_submission_answer.rb
348
- - lib/pinnacle/types/form_submission_event.rb
349
- - lib/pinnacle/types/form_submission_event_conversation.rb
350
- - lib/pinnacle/types/form_submission_event_form.rb
351
- - lib/pinnacle/types/form_submission_event_submission.rb
352
- - lib/pinnacle/types/form_submitted_field.rb
353
- - lib/pinnacle/types/form_theme_override.rb
354
- - lib/pinnacle/types/form_theme_override_colors.rb
355
- - lib/pinnacle/types/form_theme_override_content_alignment.rb
356
- - lib/pinnacle/types/form_theme_override_corner_radius.rb
357
- - lib/pinnacle/types/form_theme_override_font_family.rb
358
- - lib/pinnacle/types/form_theme_override_theme_mode.rb
359
319
  - lib/pinnacle/types/get_conversation_params.rb
360
320
  - lib/pinnacle/types/get_dlc_campaign_status_response_updates.rb
361
321
  - lib/pinnacle/types/get_toll_free_campaign_status_response_updates.rb
@@ -367,8 +327,6 @@ files:
367
327
  - lib/pinnacle/types/list_brands_response.rb
368
328
  - lib/pinnacle/types/list_contacts_response.rb
369
329
  - lib/pinnacle/types/list_dlc_campaigns_response.rb
370
- - lib/pinnacle/types/list_form_submissions_response.rb
371
- - lib/pinnacle/types/list_forms_response.rb
372
330
  - lib/pinnacle/types/list_links_response.rb
373
331
  - lib/pinnacle/types/list_messages_response.rb
374
332
  - lib/pinnacle/types/list_phone_numbers_response.rb
@@ -418,7 +376,6 @@ files:
418
376
  - lib/pinnacle/types/mms_validation_response_segments_value_item.rb
419
377
  - lib/pinnacle/types/mms_validation_result.rb
420
378
  - lib/pinnacle/types/not_found_error_body.rb
421
- - lib/pinnacle/types/number_field.rb
422
379
  - lib/pinnacle/types/number_format.rb
423
380
  - lib/pinnacle/types/opt_in_method_enum.rb
424
381
  - lib/pinnacle/types/optional_brand_info.rb
@@ -430,7 +387,6 @@ files:
430
387
  - lib/pinnacle/types/phone_capabilities.rb
431
388
  - lib/pinnacle/types/phone_enum.rb
432
389
  - lib/pinnacle/types/phone_feature_enum.rb
433
- - lib/pinnacle/types/phone_field.rb
434
390
  - lib/pinnacle/types/phone_number_campaign_attach_failed_item.rb
435
391
  - lib/pinnacle/types/phone_number_campaign_attach_phone_numbers_item.rb
436
392
  - lib/pinnacle/types/phone_number_campaign_attach_phone_numbers_item_campaign.rb
@@ -447,9 +403,6 @@ files:
447
403
  - lib/pinnacle/types/pinnacle_url_config.rb
448
404
  - lib/pinnacle/types/profile_status_enum.rb
449
405
  - lib/pinnacle/types/purchased_number.rb
450
- - lib/pinnacle/types/radio_field.rb
451
- - lib/pinnacle/types/range_field.rb
452
- - lib/pinnacle/types/rating_field.rb
453
406
  - lib/pinnacle/types/rcs_agent_details.rb
454
407
  - lib/pinnacle/types/rcs_agent_details_agent_use_case.rb
455
408
  - lib/pinnacle/types/rcs_agent_details_emails_item.rb
@@ -517,23 +470,10 @@ files:
517
470
  - lib/pinnacle/types/schedule_cancel_result.rb
518
471
  - lib/pinnacle/types/scheduled_blast_details.rb
519
472
  - lib/pinnacle/types/scheduled_blast_response_config.rb
520
- - lib/pinnacle/types/scheduled_form_send_response_form.rb
521
- - lib/pinnacle/types/scheduled_form_send_response_submission.rb
522
- - lib/pinnacle/types/scheduled_form_send_result.rb
523
473
  - lib/pinnacle/types/scheduled_message.rb
524
474
  - lib/pinnacle/types/scheduled_message_summary.rb
525
475
  - lib/pinnacle/types/scheduled_message_summary_status.rb
526
476
  - lib/pinnacle/types/scheduled_send_response_config.rb
527
- - lib/pinnacle/types/select_field.rb
528
- - lib/pinnacle/types/send_form_options.rb
529
- - lib/pinnacle/types/send_form_options_webview_mode.rb
530
- - lib/pinnacle/types/send_form_params.rb
531
- - lib/pinnacle/types/send_form_result.rb
532
- - lib/pinnacle/types/send_form_via_rcs_params.rb
533
- - lib/pinnacle/types/send_form_via_rcs_request_fallback.rb
534
- - lib/pinnacle/types/send_form_via_rcs_request_form.rb
535
- - lib/pinnacle/types/send_form_via_sms_params.rb
536
- - lib/pinnacle/types/send_form_via_sms_request_form.rb
537
477
  - lib/pinnacle/types/send_rcs_card_options_standalone_card_image_alignment.rb
538
478
  - lib/pinnacle/types/send_rcs_card_options_standalone_card_orientation.rb
539
479
  - lib/pinnacle/types/send_rich_cards_options.rb
@@ -550,6 +490,11 @@ files:
550
490
  - lib/pinnacle/types/sent_sms_details.rb
551
491
  - lib/pinnacle/types/shortened_url.rb
552
492
  - lib/pinnacle/types/shortened_url_with_click_data.rb
493
+ - lib/pinnacle/types/simulate_message_input.rb
494
+ - lib/pinnacle/types/simulate_user_button.rb
495
+ - lib/pinnacle/types/simulate_user_message.rb
496
+ - lib/pinnacle/types/simulate_user_params.rb
497
+ - lib/pinnacle/types/simulate_user_response.rb
553
498
  - lib/pinnacle/types/sms_content.rb
554
499
  - lib/pinnacle/types/sms_validation_response_segments.rb
555
500
  - lib/pinnacle/types/sms_validation_response_segments_gsm_7.rb
@@ -561,9 +506,6 @@ files:
561
506
  - lib/pinnacle/types/successful_conversation_update.rb
562
507
  - lib/pinnacle/types/test_agent_response.rb
563
508
  - lib/pinnacle/types/test_agent_whitelist_response.rb
564
- - lib/pinnacle/types/text_field.rb
565
- - lib/pinnacle/types/textarea_field.rb
566
- - lib/pinnacle/types/time_field.rb
567
509
  - lib/pinnacle/types/toll_free_campaign.rb
568
510
  - lib/pinnacle/types/toll_free_campaign_schema_keywords.rb
569
511
  - lib/pinnacle/types/toll_free_campaign_schema_keywords_help.rb
@@ -588,7 +530,15 @@ files:
588
530
  - lib/pinnacle/types/tracking.rb
589
531
  - lib/pinnacle/types/updated_contact_id.rb
590
532
  - lib/pinnacle/types/upload_results.rb
591
- - lib/pinnacle/types/url_field.rb
533
+ - lib/pinnacle/types/user_button_press.rb
534
+ - lib/pinnacle/types/user_button_press_call.rb
535
+ - lib/pinnacle/types/user_button_press_open_url.rb
536
+ - lib/pinnacle/types/user_button_press_request_user_location.rb
537
+ - lib/pinnacle/types/user_button_press_request_user_location_location.rb
538
+ - lib/pinnacle/types/user_button_press_schedule_event.rb
539
+ - lib/pinnacle/types/user_button_press_send_location.rb
540
+ - lib/pinnacle/types/user_button_press_send_location_lat_long.rb
541
+ - lib/pinnacle/types/user_button_press_trigger.rb
592
542
  - lib/pinnacle/types/user_event.rb
593
543
  - lib/pinnacle/types/user_event_conversation.rb
594
544
  - lib/pinnacle/types/v_card_address_schema_type_item.rb
@@ -1,217 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Pinnacle
4
- module Forms
5
- class Client
6
- # @param client [Pinnacle::Internal::Http::RawClient]
7
- #
8
- # @return [void]
9
- def initialize(client:)
10
- @client = client
11
- end
12
-
13
- # Retrieve a form by id. Includes submission count, last submission timestamp, and archive state.
14
- #
15
- # @param request_options [Hash]
16
- # @param params [Hash]
17
- # @option request_options [String] :base_url
18
- # @option request_options [Hash{String => Object}] :additional_headers
19
- # @option request_options [Hash{String => Object}] :additional_query_parameters
20
- # @option request_options [Hash{String => Object}] :additional_body_parameters
21
- # @option request_options [Integer] :timeout_in_seconds
22
- # @option params [String] :id
23
- #
24
- # @return [Pinnacle::Types::Form]
25
- def get(request_options: {}, **params)
26
- params = Pinnacle::Internal::Types::Utils.normalize_keys(params)
27
- request = Pinnacle::Internal::JSON::Request.new(
28
- base_url: request_options[:base_url],
29
- method: "GET",
30
- path: "forms/#{URI.encode_uri_component(params[:id].to_s)}",
31
- request_options: request_options
32
- )
33
- begin
34
- response = @client.send(request)
35
- rescue Net::HTTPRequestTimeout
36
- raise Pinnacle::Errors::TimeoutError
37
- end
38
- code = response.code.to_i
39
- if code.between?(200, 299)
40
- Pinnacle::Types::Form.load(response.body)
41
- else
42
- error_class = Pinnacle::Errors::ResponseError.subclass_for_code(code)
43
- raise error_class.new(response.body, code: code)
44
- end
45
- end
46
-
47
- # Partial update. Only keys present in the body are applied. Archived forms (non-null `archived_at`) cannot be
48
- # updated — restore the form by setting `archived_at: null` in a PATCH first.
49
- #
50
- # @param request_options [Hash]
51
- # @param params [Pinnacle::Forms::Types::UpdateFormParams]
52
- # @option request_options [String] :base_url
53
- # @option request_options [Hash{String => Object}] :additional_headers
54
- # @option request_options [Hash{String => Object}] :additional_query_parameters
55
- # @option request_options [Hash{String => Object}] :additional_body_parameters
56
- # @option request_options [Integer] :timeout_in_seconds
57
- # @option params [String] :id
58
- #
59
- # @return [Pinnacle::Types::Form]
60
- def update(request_options: {}, **params)
61
- params = Pinnacle::Internal::Types::Utils.normalize_keys(params)
62
- request_data = Pinnacle::Forms::Types::UpdateFormParams.new(params).to_h
63
- non_body_param_names = ["id"]
64
- body = request_data.except(*non_body_param_names)
65
-
66
- request = Pinnacle::Internal::JSON::Request.new(
67
- base_url: request_options[:base_url],
68
- method: "PATCH",
69
- path: "forms/#{URI.encode_uri_component(params[:id].to_s)}",
70
- body: body,
71
- request_options: request_options
72
- )
73
- begin
74
- response = @client.send(request)
75
- rescue Net::HTTPRequestTimeout
76
- raise Pinnacle::Errors::TimeoutError
77
- end
78
- code = response.code.to_i
79
- if code.between?(200, 299)
80
- Pinnacle::Types::Form.load(response.body)
81
- else
82
- error_class = Pinnacle::Errors::ResponseError.subclass_for_code(code)
83
- raise error_class.new(response.body, code: code)
84
- end
85
- end
86
-
87
- # Paginated list of forms on your team, sorted by creation date (newest first). Includes archived forms.
88
- #
89
- # @param request_options [Hash]
90
- # @param params [Pinnacle::Forms::Types::ListFormsParams]
91
- # @option request_options [String] :base_url
92
- # @option request_options [Hash{String => Object}] :additional_headers
93
- # @option request_options [Hash{String => Object}] :additional_query_parameters
94
- # @option request_options [Hash{String => Object}] :additional_body_parameters
95
- # @option request_options [Integer] :timeout_in_seconds
96
- #
97
- # @return [Pinnacle::Types::ListFormsResponse]
98
- def list(request_options: {}, **params)
99
- params = Pinnacle::Internal::Types::Utils.normalize_keys(params)
100
- request = Pinnacle::Internal::JSON::Request.new(
101
- base_url: request_options[:base_url],
102
- method: "POST",
103
- path: "forms/list",
104
- body: Pinnacle::Forms::Types::ListFormsParams.new(params).to_h,
105
- request_options: request_options
106
- )
107
- begin
108
- response = @client.send(request)
109
- rescue Net::HTTPRequestTimeout
110
- raise Pinnacle::Errors::TimeoutError
111
- end
112
- code = response.code.to_i
113
- if code.between?(200, 299)
114
- Pinnacle::Types::ListFormsResponse.load(response.body)
115
- else
116
- error_class = Pinnacle::Errors::ResponseError.subclass_for_code(code)
117
- raise error_class.new(response.body, code: code)
118
- end
119
- end
120
-
121
- # Create a hosted form without sending it. <br>
122
- #
123
- # Returns the form object including its public URL — `https://forms.pinnacle.sh/{form_id}`. <br>
124
- #
125
- # To also deliver the URL to a recipient over SMS or RCS in a single call, use [`POST
126
- # /forms/send`](/api-reference/forms/send-form).
127
- #
128
- # @param request_options [Hash]
129
- # @param params [Pinnacle::Types::CreateFormRequest]
130
- # @option request_options [String] :base_url
131
- # @option request_options [Hash{String => Object}] :additional_headers
132
- # @option request_options [Hash{String => Object}] :additional_query_parameters
133
- # @option request_options [Hash{String => Object}] :additional_body_parameters
134
- # @option request_options [Integer] :timeout_in_seconds
135
- #
136
- # @return [Pinnacle::Types::Form]
137
- def create(request_options: {}, **params)
138
- params = Pinnacle::Internal::Types::Utils.normalize_keys(params)
139
- request = Pinnacle::Internal::JSON::Request.new(
140
- base_url: request_options[:base_url],
141
- method: "POST",
142
- path: "forms",
143
- body: params,
144
- request_options: request_options
145
- )
146
- begin
147
- response = @client.send(request)
148
- rescue Net::HTTPRequestTimeout
149
- raise Pinnacle::Errors::TimeoutError
150
- end
151
- code = response.code.to_i
152
- if code.between?(200, 299)
153
- Pinnacle::Types::Form.load(response.body)
154
- else
155
- error_class = Pinnacle::Errors::ResponseError.subclass_for_code(code)
156
- raise error_class.new(response.body, code: code)
157
- end
158
- end
159
-
160
- # Send a form to a recipient over SMS or RCS, or mint a standalone submission URL.
161
- #
162
- # Pass `form` as either an existing form id (`form_*`) or an inline `{ fields, ... }` definition to mint a new
163
- # form for this send.
164
- #
165
- # The delivery channel is inferred from `from`:
166
- # - `from: "agent_*"` → RCS (with optional SMS `fallback`)
167
- # - `from: "+E.164"` → SMS
168
- #
169
- # When `to` is provided, Pinnacle dispatches a message whose body contains the submission URL and the recipient is
170
- # recorded on the response: `submission.to` echoes the same E.164 number and `message_id` is the id of the
171
- # outbound SMS/RCS.
172
- #
173
- # When `to` is omitted, no message is sent — `submission.to` and `message_id` are both `null` — which is useful
174
- # for embedding the URL in your own outreach.
175
- #
176
- # On completion, a `FORM.SUBMISSION` webhook event is delivered to webhooks subscribed to the sender. See
177
- # [Receiving Messages and User Events](/guides/messages/receiving).
178
- #
179
- # @param request_options [Hash]
180
- # @param params [Pinnacle::Types::SendFormParams]
181
- # @option request_options [String] :base_url
182
- # @option request_options [Hash{String => Object}] :additional_headers
183
- # @option request_options [Hash{String => Object}] :additional_query_parameters
184
- # @option request_options [Hash{String => Object}] :additional_body_parameters
185
- # @option request_options [Integer] :timeout_in_seconds
186
- #
187
- # @return [Pinnacle::Forms::Types::FormsSendResponse]
188
- def send_(request_options: {}, **params)
189
- params = Pinnacle::Internal::Types::Utils.normalize_keys(params)
190
- request = Pinnacle::Internal::JSON::Request.new(
191
- base_url: request_options[:base_url],
192
- method: "POST",
193
- path: "forms/send",
194
- body: Pinnacle::Types::SendFormParams.new(params).to_h,
195
- request_options: request_options
196
- )
197
- begin
198
- response = @client.send(request)
199
- rescue Net::HTTPRequestTimeout
200
- raise Pinnacle::Errors::TimeoutError
201
- end
202
- code = response.code.to_i
203
- if code.between?(200, 299)
204
- Pinnacle::Forms::Types::FormsSendResponse.load(response.body)
205
- else
206
- error_class = Pinnacle::Errors::ResponseError.subclass_for_code(code)
207
- raise error_class.new(response.body, code: code)
208
- end
209
- end
210
-
211
- # @return [Pinnacle::Submissions::Client]
212
- def submissions
213
- @submissions ||= Pinnacle::Forms::Submissions::Client.new(client: @client)
214
- end
215
- end
216
- end
217
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Pinnacle
4
- module Forms
5
- module Submissions
6
- module Types
7
- class ListFormSubmissionsParams < Internal::Types::Model
8
- field :id, -> { String }, optional: false, nullable: false
9
- field :page_index, -> { Integer }, optional: true, nullable: false, api_name: "pageIndex"
10
- field :page_size, -> { Integer }, optional: true, nullable: false, api_name: "pageSize"
11
- end
12
- end
13
- end
14
- end
15
- end
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Pinnacle
4
- module Forms
5
- module Types
6
- class FormsSendResponse < Internal::Types::Model
7
- extend Pinnacle::Internal::Types::Union
8
-
9
- member -> { Pinnacle::Types::SendFormResult }
10
- member -> { Pinnacle::Types::ScheduledFormSendResult }
11
- end
12
- end
13
- end
14
- end
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Pinnacle
4
- module Forms
5
- module Types
6
- class ListFormsParams < Internal::Types::Model
7
- field :page_index, -> { Integer }, optional: true, nullable: false, api_name: "pageIndex"
8
- field :page_size, -> { Integer }, optional: true, nullable: false, api_name: "pageSize"
9
- end
10
- end
11
- end
12
- end
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Pinnacle
4
- module Forms
5
- module Types
6
- class UpdateFormParams < Internal::Types::Model
7
- field :id, -> { String }, optional: false, nullable: false
8
- field :name, -> { String }, optional: true, nullable: false
9
- field :description, -> { String }, optional: true, nullable: false
10
- field :fields, -> { Internal::Types::Array[Pinnacle::Types::FormField] }, optional: true, nullable: false
11
- field :can_update, -> { Internal::Types::Boolean }, optional: true, nullable: false
12
- field :expires_at, -> { String }, optional: true, nullable: false
13
- field :theme_override, -> { Pinnacle::Types::FormThemeOverride }, optional: true, nullable: false
14
- field :archived_at, -> { String }, optional: true, nullable: false
15
- end
16
- end
17
- end
18
- end
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Pinnacle
4
- module Types
5
- # Free-form text input backed by a client-side Google Places autocomplete. Shares text-field validation (length /
6
- # pattern); the place lookup happens entirely in the browser and is purely for suggestion UX.
7
- class AddressField < Internal::Types::Model
8
- field :placeholder, -> { String }, optional: true, nullable: false
9
- field :pattern, -> { String }, optional: true, nullable: false
10
- field :min_length, -> { Integer }, optional: true, nullable: false
11
- field :max_length, -> { Integer }, optional: true, nullable: false
12
- end
13
- end
14
- end
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Pinnacle
4
- module Types
5
- # Multi-select checkbox group when `options` is provided. If `options` is omitted the field renders as a single
6
- # boolean checkbox.
7
- class CheckboxField < Internal::Types::Model
8
- field :options, -> { Internal::Types::Array[Pinnacle::Types::FormFieldOption] }, optional: true, nullable: false
9
- field :min_selected, -> { Integer }, optional: true, nullable: false
10
- field :max_selected, -> { Integer }, optional: true, nullable: false
11
- end
12
- end
13
- end
@@ -1,8 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Pinnacle
4
- module Types
5
- # Native color picker. Submitted value is a 6-digit hex string like `#ff6b35`.
6
- class ColorField < Internal::Types::Model; end
7
- end
8
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Pinnacle
4
- module Types
5
- module CreateFormRequest
6
- # CreateFormRequest is an alias for FormDefinition
7
-
8
- # @option str [String]
9
- #
10
- # @return [untyped]
11
- def self.load(str)
12
- ::JSON.parse(str)
13
- end
14
-
15
- # @option value [untyped]
16
- #
17
- # @return [String]
18
- def self.dump(value)
19
- ::JSON.generate(value)
20
- end
21
- end
22
- end
23
- end
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Pinnacle
4
- module Types
5
- # Date picker. `min`/`max` accept `YYYY-MM-DD`.
6
- class DateField < Internal::Types::Model
7
- field :placeholder, -> { String }, optional: true, nullable: false
8
- field :min, -> { String }, optional: true, nullable: false
9
- field :max, -> { String }, optional: true, nullable: false
10
- end
11
- end
12
- end
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Pinnacle
4
- module Types
5
- # Local-datetime picker. `min`/`max` accept ISO 8601 timestamps.
6
- class DatetimeField < Internal::Types::Model
7
- field :placeholder, -> { String }, optional: true, nullable: false
8
- field :min, -> { String }, optional: true, nullable: false
9
- field :max, -> { String }, optional: true, nullable: false
10
- end
11
- end
12
- end
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Pinnacle
4
- module Types
5
- # Email input. Server rejects values that fail RFC 5322 validation.
6
- class EmailField < Internal::Types::Model
7
- field :placeholder, -> { String }, optional: true, nullable: false
8
- end
9
- end
10
- end
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Pinnacle
4
- module Types
5
- # Properties shared by every field variant. Not intended to be referenced directly — use a specific field type from
6
- # `FormField`.
7
- class FieldBase < Internal::Types::Model
8
- field :key, -> { String }, optional: false, nullable: false
9
- field :label, -> { String }, optional: false, nullable: false
10
- field :required, -> { Internal::Types::Boolean }, optional: true, nullable: false
11
- field :help_text, -> { String }, optional: true, nullable: false
12
- end
13
- end
14
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Pinnacle
4
- module Types
5
- # A hosted form definition.
6
- class Form < Internal::Types::Model
7
- field :id, -> { String }, optional: false, nullable: false
8
- field :url, -> { String }, optional: false, nullable: false
9
- field :name, -> { String }, optional: false, nullable: true
10
- field :description, -> { String }, optional: false, nullable: true
11
- field :fields, -> { Internal::Types::Array[Pinnacle::Types::FormField] }, optional: false, nullable: false
12
- field :can_update, -> { Internal::Types::Boolean }, optional: false, nullable: false
13
- field :expires_at, -> { String }, optional: false, nullable: true
14
- field :theme_override, -> { Pinnacle::Types::FormThemeOverride }, optional: false, nullable: true
15
- field :submission_count, -> { Integer }, optional: false, nullable: false
16
- field :last_submitted_at, -> { String }, optional: false, nullable: true
17
- field :archived_at, -> { String }, optional: false, nullable: true
18
- field :created_at, -> { String }, optional: false, nullable: false
19
- field :updated_at, -> { String }, optional: false, nullable: false
20
- end
21
- end
22
- end
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Pinnacle
4
- module Types
5
- # Background layer for the form page. Discriminated by `type`.
6
- class FormBackground < Internal::Types::Model
7
- extend Pinnacle::Internal::Types::Union
8
-
9
- discriminant :type
10
-
11
- member -> { Pinnacle::Types::FormBackgroundSolid }, key: "SOLID"
12
- member -> { Pinnacle::Types::FormBackgroundGradient }, key: "GRADIENT"
13
- member -> { Pinnacle::Types::FormBackgroundImage }, key: "IMAGE"
14
- member -> { Pinnacle::Types::FormBackgroundPattern }, key: "PATTERN"
15
- end
16
- end
17
- end
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Pinnacle
4
- module Types
5
- # Two-stop linear gradient. Supply separate light- and dark-mode gradients; the renderer picks based on
6
- # `theme_mode`.
7
- class FormBackgroundGradient < Internal::Types::Model
8
- field :light, -> { Pinnacle::Types::FormGradient }, optional: false, nullable: false
9
- field :dark, -> { Pinnacle::Types::FormGradient }, optional: false, nullable: false
10
- end
11
- end
12
- end