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
data/reference.md CHANGED
@@ -28,13 +28,13 @@ Automatically populate brand information based on partial input data you provide
28
28
 
29
29
  ```ruby
30
30
  client.brands.autofill(
31
- additional_info: "A developer-friendly, compliant API for SMS, MMS, and RCS, built to scale real conversations.",
32
- name: "Pinnacle",
31
+ additional_info: 'A developer-friendly, compliant API for SMS, MMS, and RCS, built to scale real conversations.',
32
+ name: 'Pinnacle',
33
33
  options: {
34
34
  force_reload: true
35
35
  },
36
- website: "https://www.pinnacle.sh"
37
- )
36
+ website: 'https://www.pinnacle.sh'
37
+ );
38
38
  ```
39
39
  </dd>
40
40
  </dl>
@@ -127,24 +127,24 @@ All fields are **required** except `description` and `dba`, and will be validate
127
127
 
128
128
  ```ruby
129
129
  client.brands.upsert(
130
- address: "500 Folsom St, San Francisco, CA 94105",
130
+ address: '500 Folsom St, San Francisco, CA 94105',
131
131
  contact: {
132
- email: "michael.chen@trypinnacle.app",
133
- name: "Michael Chen",
134
- phone: "+14155551234",
135
- title: "Customer Support Representative"
132
+ email: 'michael.chen@trypinnacle.app',
133
+ name: 'Michael Chen',
134
+ phone: '+14155551234',
135
+ title: 'Customer Support Representative'
136
136
  },
137
- dba: "Pinnacle RCS",
138
- description: "A developer-friendly, compliant API for SMS, MMS, and RCS, built to scale real conversations.",
139
- ein: "88-1234567",
140
- email: "founders@trypinnacle.app",
141
- id: "b_1234567890",
142
- name: "Pinnacle",
143
- sector: "TECHNOLOGY",
144
- type: "PRIVATE_PROFIT",
145
- entity_type: "LLC",
146
- website: "https://www.pinnacle.sh"
147
- )
137
+ dba: 'Pinnacle RCS',
138
+ description: 'A developer-friendly, compliant API for SMS, MMS, and RCS, built to scale real conversations.',
139
+ ein: '88-1234567',
140
+ email: 'founders@trypinnacle.app',
141
+ id: 'b_1234567890',
142
+ name: 'Pinnacle',
143
+ sector: 'TECHNOLOGY',
144
+ type: 'PRIVATE_PROFIT',
145
+ entity_type: 'LLC',
146
+ website: 'https://www.pinnacle.sh'
147
+ );
148
148
  ```
149
149
  </dd>
150
150
  </dl>
@@ -297,7 +297,7 @@ Retrieve detailed information for a specific brand in your account by ID.
297
297
  <dd>
298
298
 
299
299
  ```ruby
300
- client.brands.get(id: "b_1234567890")
300
+ client.brands.get(id: 'b_1234567890');
301
301
  ```
302
302
  </dd>
303
303
  </dl>
@@ -374,7 +374,7 @@ Submit your brand for review and approval by the compliance team.
374
374
  <dd>
375
375
 
376
376
  ```ruby
377
- client.brands.submit(brand_id: "b_1234567890")
377
+ client.brands.submit(brand_id: 'b_1234567890');
378
378
  ```
379
379
  </dd>
380
380
  </dl>
@@ -439,7 +439,7 @@ Validate your brand information for compliance and correctness before submission
439
439
  <dd>
440
440
 
441
441
  ```ruby
442
- client.brands.validate
442
+ client.brands.validate();
443
443
  ```
444
444
  </dd>
445
445
  </dl>
@@ -502,11 +502,11 @@ Submit a brand for external vetting verification to enhance your brand's trust s
502
502
 
503
503
  ```ruby
504
504
  client.brands.vet(
505
- brand_id: "b_1234567890",
506
- type: "EXTERNAL",
507
- provider: "AEGIS",
508
- vetting_class: "STANDARD"
509
- )
505
+ brand_id: 'b_1234567890',
506
+ type: 'EXTERNAL',
507
+ provider: 'AEGIS',
508
+ vetting_class: 'STANDARD'
509
+ );
510
510
  ```
511
511
  </dd>
512
512
  </dl>
@@ -596,7 +596,7 @@ List all brands with optional filtering and pagination. Results are sorted by cr
596
596
  <dd>
597
597
 
598
598
  ```ruby
599
- client.brands.list
599
+ client.brands.list();
600
600
  ```
601
601
  </dd>
602
602
  </dl>
@@ -691,7 +691,7 @@ Retrieve an audience by ID with optional pagination.
691
691
  <dd>
692
692
 
693
693
  ```ruby
694
- client.audiences.get(id: "aud_abc123")
694
+ client.audiences.get(id: 'aud_abc123');
695
695
  ```
696
696
  </dd>
697
697
  </dl>
@@ -770,9 +770,9 @@ Create a new audience with optional initial contacts. Phone numbers that don't e
770
770
 
771
771
  ```ruby
772
772
  client.audiences.create(
773
- name: "Marketing Campaign Q1",
774
- description: "Contacts for Q1 marketing push"
775
- )
773
+ name: 'Marketing Campaign Q1',
774
+ description: 'Contacts for Q1 marketing push'
775
+ );
776
776
  ```
777
777
  </dd>
778
778
  </dl>
@@ -852,7 +852,7 @@ Note: This will NOT delete the contacts themselves, only the audience and its me
852
852
  <dd>
853
853
 
854
854
  ```ruby
855
- client.audiences.delete(id: "aud_abc123")
855
+ client.audiences.delete(id: 'aud_abc123');
856
856
  ```
857
857
  </dd>
858
858
  </dl>
@@ -917,10 +917,10 @@ To add or remove contacts, use the [Add Contacts](/api-reference/audiences/add-c
917
917
 
918
918
  ```ruby
919
919
  client.audiences.update(
920
- id: "aud_abc123",
921
- name: "Updated Audience Name",
922
- description: "New description"
923
- )
920
+ id: 'aud_abc123',
921
+ name: 'Updated Audience Name',
922
+ description: 'New description'
923
+ );
924
924
  ```
925
925
  </dd>
926
926
  </dl>
@@ -998,7 +998,7 @@ List all audiences with optional filtering and pagination. Results are sorted by
998
998
  <dd>
999
999
 
1000
1000
  ```ruby
1001
- client.audiences.list
1001
+ client.audiences.list();
1002
1002
  ```
1003
1003
  </dd>
1004
1004
  </dl>
@@ -1077,7 +1077,7 @@ Retrieve contact information for a given number.
1077
1077
  <dd>
1078
1078
 
1079
1079
  ```ruby
1080
- client.contacts.get(id: "co_1234567890")
1080
+ client.contacts.get(id: 'co_1234567890');
1081
1081
  ```
1082
1082
  </dd>
1083
1083
  </dl>
@@ -1151,7 +1151,7 @@ Create a new contact for a given phone number.
1151
1151
  <dd>
1152
1152
 
1153
1153
  ```ruby
1154
- client.contacts.create(phone_number: "phoneNumber")
1154
+ client.contacts.create(phone_number: 'phoneNumber');
1155
1155
  ```
1156
1156
  </dd>
1157
1157
  </dl>
@@ -1214,12 +1214,12 @@ Update an existing contact.
1214
1214
 
1215
1215
  ```ruby
1216
1216
  client.contacts.update(
1217
- description: "Retired",
1218
- email: "alvaroopedtech@pinnacle.sh",
1219
- name: "Retired Bestie",
1220
- tags: ["friend"],
1221
- id: "co_1234567890"
1222
- )
1217
+ description: 'Retired',
1218
+ email: 'alvaroopedtech@pinnacle.sh',
1219
+ name: 'Retired Bestie',
1220
+ tags: ['friend'],
1221
+ id: 'co_1234567890'
1222
+ );
1223
1223
  ```
1224
1224
  </dd>
1225
1225
  </dl>
@@ -1281,7 +1281,7 @@ List all contacts with optional filtering and pagination. Results are sorted by
1281
1281
  <dd>
1282
1282
 
1283
1283
  ```ruby
1284
- client.contacts.list
1284
+ client.contacts.list();
1285
1285
  ```
1286
1286
  </dd>
1287
1287
  </dl>
@@ -1384,7 +1384,7 @@ Fetch a specific conversation using either its unique identifier or by matching
1384
1384
  <dd>
1385
1385
 
1386
1386
  ```ruby
1387
- client.conversations.get(id: "conv_1234567890")
1387
+ client.conversations.get(id: 'conv_1234567890');
1388
1388
  ```
1389
1389
  </dd>
1390
1390
  </dl>
@@ -1447,14 +1447,14 @@ Retrieves conversations by page with optional filtering based off provided param
1447
1447
 
1448
1448
  ```ruby
1449
1449
  client.conversations.list(
1450
- brand_id: "b_1234567890",
1451
- campaign_id: "tf_1234567890",
1452
- campaign_type: "TOLL_FREE",
1450
+ brand_id: 'b_1234567890',
1451
+ campaign_id: 'tf_1234567890',
1452
+ campaign_type: 'TOLL_FREE',
1453
1453
  page_index: 0,
1454
1454
  page_size: 20,
1455
- receiver: "+16509231662",
1456
- sender: "+18445551234"
1457
- )
1455
+ receiver: '+16509231662',
1456
+ sender: '+18445551234'
1457
+ );
1458
1458
  ```
1459
1459
  </dd>
1460
1460
  </dl>
@@ -1570,9 +1570,9 @@ Update the notes associated with a specific conversation.
1570
1570
 
1571
1571
  ```ruby
1572
1572
  client.conversations.update(
1573
- id: "conv_1234567890",
1574
- notes: "Follow-up completed. Customer satisfied with resolution."
1575
- )
1573
+ id: 'conv_1234567890',
1574
+ notes: 'Follow-up completed. Customer satisfied with resolution.'
1575
+ );
1576
1576
  ```
1577
1577
  </dd>
1578
1578
  </dl>
@@ -1642,7 +1642,7 @@ Retrieve a paginated and filtered list of messages for a specific conversation.
1642
1642
  <dd>
1643
1643
 
1644
1644
  ```ruby
1645
- client.conversations.list_messages(id: "id")
1645
+ client.conversations.list_messages(id: 'id');
1646
1646
  ```
1647
1647
  </dd>
1648
1648
  </dl>
@@ -1779,7 +1779,7 @@ Retrieve a previously sent message.
1779
1779
  <dd>
1780
1780
 
1781
1781
  ```ruby
1782
- client.messages.get(id: "msg_1234567890")
1782
+ client.messages.get(id: 'msg_1234567890');
1783
1783
  ```
1784
1784
  </dd>
1785
1785
  </dl>
@@ -1842,12 +1842,12 @@ Add or remove an emoji reaction to a previously sent message.
1842
1842
 
1843
1843
  ```ruby
1844
1844
  client.messages.react(
1845
- message_id: "msg_1234567890",
1845
+ message_id: 'msg_1234567890',
1846
1846
  options: {
1847
1847
  force: true
1848
1848
  },
1849
- reaction: "👍"
1850
- )
1849
+ reaction: '👍'
1850
+ );
1851
1851
  ```
1852
1852
  </dd>
1853
1853
  </dl>
@@ -1929,7 +1929,7 @@ List all messages with optional filtering and pagination. Results are sorted by
1929
1929
  <dd>
1930
1930
 
1931
1931
  ```ruby
1932
- client.messages.list
1932
+ client.messages.list();
1933
1933
  ```
1934
1934
  </dd>
1935
1935
  </dl>
@@ -2073,20 +2073,20 @@ Search for available phone numbers that match your exact criteria.
2073
2073
 
2074
2074
  ```ruby
2075
2075
  client.phone_numbers.search(
2076
- features: %w[SMS MMS],
2076
+ features: ['SMS', 'MMS'],
2077
2077
  location: {
2078
- city: "New York",
2079
- national_destination_code: "212"
2078
+ city: 'New York',
2079
+ national_destination_code: '212'
2080
2080
  },
2081
2081
  number: {
2082
- contains: "514",
2083
- starts_with: "45"
2082
+ contains: '514',
2083
+ starts_with: '45'
2084
2084
  },
2085
2085
  options: {
2086
2086
  limit: 4
2087
2087
  },
2088
- type: ["LOCAL"]
2089
- )
2088
+ type: ['LOCAL']
2089
+ );
2090
2090
  ```
2091
2091
  </dd>
2092
2092
  </dl>
@@ -2186,7 +2186,7 @@ Billing uses your account credits and the numbers are ready for immediate use.
2186
2186
  <dd>
2187
2187
 
2188
2188
  ```ruby
2189
- client.phone_numbers.buy(numbers: ["+18559491727"])
2189
+ client.phone_numbers.buy(numbers: ['+18559491727']);
2190
2190
  ```
2191
2191
  </dd>
2192
2192
  </dl>
@@ -2255,15 +2255,15 @@ Retrieve information about any phone number.
2255
2255
 
2256
2256
  ```ruby
2257
2257
  client.phone_numbers.get(
2258
- phone: "+11234567890",
2259
- level: "advanced",
2258
+ phone: '+11234567890',
2259
+ level: 'advanced',
2260
2260
  options: {
2261
2261
  risk: true,
2262
2262
  enhanced_contact_info: {
2263
- context: "This is my friend from JZ. He has done a lot in the crypto space."
2263
+ context: 'This is my friend from JZ. He has done a lot in the crypto space.'
2264
2264
  }
2265
2265
  }
2266
- )
2266
+ );
2267
2267
  ```
2268
2268
  </dd>
2269
2269
  </dl>
@@ -2345,7 +2345,7 @@ List all owned phone numbers with pagination. Results are sorted by creation dat
2345
2345
  <dd>
2346
2346
 
2347
2347
  ```ruby
2348
- client.phone_numbers.list
2348
+ client.phone_numbers.list();
2349
2349
  ```
2350
2350
  </dd>
2351
2351
  </dl>
@@ -2419,7 +2419,7 @@ contact information, and other settings.
2419
2419
  <dd>
2420
2420
 
2421
2421
  ```ruby
2422
- client.rcs.get_agent(agent_id: "agent_abc123def456")
2422
+ client.rcs.get_agent(agent_id: 'agent_abc123def456');
2423
2423
  ```
2424
2424
  </dd>
2425
2425
  </dl>
@@ -2484,7 +2484,7 @@ on specific phone numbers before sending RCS messages to them.
2484
2484
  <dd>
2485
2485
 
2486
2486
  ```ruby
2487
- client.rcs.get_capabilities(phone_numbers: %w[+12345678901 +19876543210])
2487
+ client.rcs.get_capabilities(phone_numbers: ['+12345678901', '+19876543210']);
2488
2488
  ```
2489
2489
  </dd>
2490
2490
  </dl>
@@ -2561,10 +2561,10 @@ from websites, emails, or other applications.
2561
2561
 
2562
2562
  ```ruby
2563
2563
  client.rcs.get_link(
2564
- agent_id: "agent_XXXXXXXXXXXX",
2565
- phone_number: "+12345678901",
2566
- body: "Hello, I need help with my order"
2567
- )
2564
+ agent_id: 'agent_XXXXXXXXXXXX',
2565
+ phone_number: '+12345678901',
2566
+ body: 'Hello, I need help with my order'
2567
+ );
2568
2568
  ```
2569
2569
  </dd>
2570
2570
  </dl>
@@ -2643,7 +2643,7 @@ Retrieve all webhook that are set up to receive events for specific URLs or phon
2643
2643
  <dd>
2644
2644
 
2645
2645
  ```ruby
2646
- client.webhooks.get(identifiers: %w[https://www.pinnacle.sh/payment +14155678901 https://www.pinnacle.sh/sms-callback +14153456659])
2646
+ client.webhooks.get(identifiers: ['https://www.pinnacle.sh/payment', '+14155678901', 'https://www.pinnacle.sh/sms-callback', '+14153456659']);
2647
2647
  ```
2648
2648
  </dd>
2649
2649
  </dl>
@@ -2708,7 +2708,7 @@ List all webhooks with optional filtering and pagination. Results are sorted by
2708
2708
  <dd>
2709
2709
 
2710
2710
  ```ruby
2711
- client.webhooks.list
2711
+ client.webhooks.list();
2712
2712
  ```
2713
2713
  </dd>
2714
2714
  </dl>
@@ -2800,7 +2800,7 @@ Subscriptions are additive — attaching new senders does not remove existing on
2800
2800
  <dd>
2801
2801
 
2802
2802
  ```ruby
2803
- client.webhooks.attach(senders: %w[+14155551234 agent_abc123])
2803
+ client.webhooks.attach(senders: ['+14155551234', 'agent_abc123']);
2804
2804
  ```
2805
2805
  </dd>
2806
2806
  </dl>
@@ -2921,9 +2921,9 @@ The webhook itself is not deleted and remains available for use with other sende
2921
2921
 
2922
2922
  ```ruby
2923
2923
  client.webhooks.detach(
2924
- webhook_id: "webhookId",
2925
- senders: %w[+14155551234 agent_abc123]
2926
- )
2924
+ webhook_id: 'webhookId',
2925
+ senders: ['+14155551234', 'agent_abc123']
2926
+ );
2927
2927
  ```
2928
2928
  </dd>
2929
2929
  </dl>
@@ -2962,426 +2962,6 @@ client.webhooks.detach(
2962
2962
  </dl>
2963
2963
 
2964
2964
 
2965
- </dd>
2966
- </dl>
2967
- </details>
2968
-
2969
- ## Forms
2970
- <details><summary><code>client.forms.<a href="/lib/pinnacle/forms/client.rb">get</a>(id) -> Pinnacle::Types::Form</code></summary>
2971
- <dl>
2972
- <dd>
2973
-
2974
- #### 📝 Description
2975
-
2976
- <dl>
2977
- <dd>
2978
-
2979
- <dl>
2980
- <dd>
2981
-
2982
- Retrieve a form by id. Includes submission count, last submission timestamp, and archive state.
2983
- </dd>
2984
- </dl>
2985
- </dd>
2986
- </dl>
2987
-
2988
- #### 🔌 Usage
2989
-
2990
- <dl>
2991
- <dd>
2992
-
2993
- <dl>
2994
- <dd>
2995
-
2996
- ```ruby
2997
- client.forms.get(id: "form_Oy2n7iUoi9CJwUU6")
2998
- ```
2999
- </dd>
3000
- </dl>
3001
- </dd>
3002
- </dl>
3003
-
3004
- #### ⚙️ Parameters
3005
-
3006
- <dl>
3007
- <dd>
3008
-
3009
- <dl>
3010
- <dd>
3011
-
3012
- **id:** `String`
3013
-
3014
- The unique identifier of the form you want to retrieve.
3015
- <br><br> This identifier is a string that always begins with the prefix `form_`, for example: `form_Oy2n7iUoi9CJwUU6`. It's returned on every form response (`Form.id`) and by [`POST /forms/send`](/api-reference/forms/send-form) (`response.form.id`).
3016
-
3017
- </dd>
3018
- </dl>
3019
-
3020
- <dl>
3021
- <dd>
3022
-
3023
- **request_options:** `Pinnacle::Forms::RequestOptions`
3024
-
3025
- </dd>
3026
- </dl>
3027
- </dd>
3028
- </dl>
3029
-
3030
-
3031
- </dd>
3032
- </dl>
3033
- </details>
3034
-
3035
- <details><summary><code>client.forms.<a href="/lib/pinnacle/forms/client.rb">update</a>(id, request) -> Pinnacle::Types::Form</code></summary>
3036
- <dl>
3037
- <dd>
3038
-
3039
- #### 📝 Description
3040
-
3041
- <dl>
3042
- <dd>
3043
-
3044
- <dl>
3045
- <dd>
3046
-
3047
- Partial update. Only keys present in the body are applied. Archived forms (non-null `archived_at`) cannot be updated — restore the form by setting `archived_at: null` in a PATCH first.
3048
- </dd>
3049
- </dl>
3050
- </dd>
3051
- </dl>
3052
-
3053
- #### 🔌 Usage
3054
-
3055
- <dl>
3056
- <dd>
3057
-
3058
- <dl>
3059
- <dd>
3060
-
3061
- ```ruby
3062
- client.forms.update(
3063
- id: "form_Oy2n7iUoi9CJwUU6",
3064
- name: "Contact request (v2)",
3065
- can_update: true,
3066
- expires_at: "2026-12-31T23:59:59Z"
3067
- )
3068
- ```
3069
- </dd>
3070
- </dl>
3071
- </dd>
3072
- </dl>
3073
-
3074
- #### ⚙️ Parameters
3075
-
3076
- <dl>
3077
- <dd>
3078
-
3079
- <dl>
3080
- <dd>
3081
-
3082
- **id:** `String`
3083
-
3084
- The unique identifier of the form you want to update.
3085
- <br><br> This identifier is a string that always begins with the prefix `form_`, for example: `form_Oy2n7iUoi9CJwUU6`.
3086
-
3087
- </dd>
3088
- </dl>
3089
-
3090
- <dl>
3091
- <dd>
3092
-
3093
- **name:** `String` — Replace the form's title. Pass `null` to clear.
3094
-
3095
- </dd>
3096
- </dl>
3097
-
3098
- <dl>
3099
- <dd>
3100
-
3101
- **description:** `String` — Replace the form's description. Pass `null` to clear.
3102
-
3103
- </dd>
3104
- </dl>
3105
-
3106
- <dl>
3107
- <dd>
3108
-
3109
- **fields:** `Internal::Types::Array[Pinnacle::Types::FormField]` — Replace the full set of fields on the form. Partial field updates aren't supported — send the complete new list.
3110
-
3111
- </dd>
3112
- </dl>
3113
-
3114
- <dl>
3115
- <dd>
3116
-
3117
- **can_update:** `Internal::Types::Boolean` — Toggle whether the recipient can re-edit their submission.
3118
-
3119
- </dd>
3120
- </dl>
3121
-
3122
- <dl>
3123
- <dd>
3124
-
3125
- **expires_at:** `String` — Set or clear the form's expiration timestamp.
3126
-
3127
- </dd>
3128
- </dl>
3129
-
3130
- <dl>
3131
- <dd>
3132
-
3133
- **theme_override:** `Pinnacle::Types::FormThemeOverride` — Replace the per-form theme override. Pass `null` to revert to team defaults.
3134
-
3135
- </dd>
3136
- </dl>
3137
-
3138
- <dl>
3139
- <dd>
3140
-
3141
- **archived_at:** `String` — Set to an ISO timestamp to archive the form (soft-delete), or `null` to restore an archived form.
3142
-
3143
- </dd>
3144
- </dl>
3145
-
3146
- <dl>
3147
- <dd>
3148
-
3149
- **request_options:** `Pinnacle::Forms::RequestOptions`
3150
-
3151
- </dd>
3152
- </dl>
3153
- </dd>
3154
- </dl>
3155
-
3156
-
3157
- </dd>
3158
- </dl>
3159
- </details>
3160
-
3161
- <details><summary><code>client.forms.<a href="/lib/pinnacle/forms/client.rb">list</a>(request) -> Pinnacle::Types::ListFormsResponse</code></summary>
3162
- <dl>
3163
- <dd>
3164
-
3165
- #### 📝 Description
3166
-
3167
- <dl>
3168
- <dd>
3169
-
3170
- <dl>
3171
- <dd>
3172
-
3173
- Paginated list of forms on your team, sorted by creation date (newest first). Includes archived forms.
3174
- </dd>
3175
- </dl>
3176
- </dd>
3177
- </dl>
3178
-
3179
- #### 🔌 Usage
3180
-
3181
- <dl>
3182
- <dd>
3183
-
3184
- <dl>
3185
- <dd>
3186
-
3187
- ```ruby
3188
- client.forms.list(
3189
- page_index: 0,
3190
- page_size: 20
3191
- )
3192
- ```
3193
- </dd>
3194
- </dl>
3195
- </dd>
3196
- </dl>
3197
-
3198
- #### ⚙️ Parameters
3199
-
3200
- <dl>
3201
- <dd>
3202
-
3203
- <dl>
3204
- <dd>
3205
-
3206
- **page_index:** `Integer` — Zero-based page index.
3207
-
3208
- </dd>
3209
- </dl>
3210
-
3211
- <dl>
3212
- <dd>
3213
-
3214
- **page_size:** `Integer` — Number of forms to return in a single page. Max 100.
3215
-
3216
- </dd>
3217
- </dl>
3218
-
3219
- <dl>
3220
- <dd>
3221
-
3222
- **request_options:** `Pinnacle::Forms::RequestOptions`
3223
-
3224
- </dd>
3225
- </dl>
3226
- </dd>
3227
- </dl>
3228
-
3229
-
3230
- </dd>
3231
- </dl>
3232
- </details>
3233
-
3234
- <details><summary><code>client.forms.<a href="/lib/pinnacle/forms/client.rb">create</a>(request) -> Pinnacle::Types::Form</code></summary>
3235
- <dl>
3236
- <dd>
3237
-
3238
- #### 📝 Description
3239
-
3240
- <dl>
3241
- <dd>
3242
-
3243
- <dl>
3244
- <dd>
3245
-
3246
- Create a hosted form without sending it. <br>
3247
-
3248
- Returns the form object including its public URL — `https://forms.pinnacle.sh/{form_id}`. <br>
3249
-
3250
- To also deliver the URL to a recipient over SMS or RCS in a single call, use [`POST /forms/send`](/api-reference/forms/send-form).
3251
- </dd>
3252
- </dl>
3253
- </dd>
3254
- </dl>
3255
-
3256
- #### 🔌 Usage
3257
-
3258
- <dl>
3259
- <dd>
3260
-
3261
- <dl>
3262
- <dd>
3263
-
3264
- ```ruby
3265
- client.forms.create(
3266
- name: "Contact request",
3267
- description: "We'll follow up over SMS or RCS.",
3268
- fields: [],
3269
- can_update: false
3270
- )
3271
- ```
3272
- </dd>
3273
- </dl>
3274
- </dd>
3275
- </dl>
3276
-
3277
- #### ⚙️ Parameters
3278
-
3279
- <dl>
3280
- <dd>
3281
-
3282
- <dl>
3283
- <dd>
3284
-
3285
- **request:** `Pinnacle::Types::FormDefinition`
3286
-
3287
- </dd>
3288
- </dl>
3289
-
3290
- <dl>
3291
- <dd>
3292
-
3293
- **request_options:** `Pinnacle::Forms::RequestOptions`
3294
-
3295
- </dd>
3296
- </dl>
3297
- </dd>
3298
- </dl>
3299
-
3300
-
3301
- </dd>
3302
- </dl>
3303
- </details>
3304
-
3305
- <details><summary><code>client.forms.<a href="/lib/pinnacle/forms/client.rb">send_</a>(request) -> Pinnacle::Forms::Types::FormsSendResponse</code></summary>
3306
- <dl>
3307
- <dd>
3308
-
3309
- #### 📝 Description
3310
-
3311
- <dl>
3312
- <dd>
3313
-
3314
- <dl>
3315
- <dd>
3316
-
3317
- Send a form to a recipient over SMS or RCS, or mint a standalone submission URL.
3318
-
3319
- Pass `form` as either an existing form id (`form_*`) or an inline `{ fields, ... }` definition to mint a new form for this send.
3320
-
3321
- The delivery channel is inferred from `from`:
3322
- - `from: "agent_*"` → RCS (with optional SMS `fallback`)
3323
- - `from: "+E.164"` → SMS
3324
-
3325
- When `to` is provided, Pinnacle dispatches a message whose body contains the submission URL and the recipient is recorded on the response: `submission.to` echoes the same E.164 number and `message_id` is the id of the outbound SMS/RCS.
3326
-
3327
- When `to` is omitted, no message is sent — `submission.to` and `message_id` are both `null` — which is useful for embedding the URL in your own outreach.
3328
-
3329
- On completion, a `FORM.SUBMISSION` webhook event is delivered to webhooks subscribed to the sender. See [Receiving Messages and User Events](/guides/messages/receiving).
3330
- </dd>
3331
- </dl>
3332
- </dd>
3333
- </dl>
3334
-
3335
- #### 🔌 Usage
3336
-
3337
- <dl>
3338
- <dd>
3339
-
3340
- <dl>
3341
- <dd>
3342
-
3343
- ```ruby
3344
- client.forms.send_(
3345
- from: "agent_iM9wQcyBBjYn",
3346
- to: "+14155551234",
3347
- form: "form_Oy2n7iUoi9CJwUU6",
3348
- fallback: {
3349
- from: "+14155550000"
3350
- },
3351
- options: {
3352
- webview_mode: "FULL"
3353
- }
3354
- )
3355
- ```
3356
- </dd>
3357
- </dl>
3358
- </dd>
3359
- </dl>
3360
-
3361
- #### ⚙️ Parameters
3362
-
3363
- <dl>
3364
- <dd>
3365
-
3366
- <dl>
3367
- <dd>
3368
-
3369
- **request:** `Pinnacle::Types::SendFormParams`
3370
-
3371
- </dd>
3372
- </dl>
3373
-
3374
- <dl>
3375
- <dd>
3376
-
3377
- **request_options:** `Pinnacle::Forms::RequestOptions`
3378
-
3379
- </dd>
3380
- </dl>
3381
- </dd>
3382
- </dl>
3383
-
3384
-
3385
2965
  </dd>
3386
2966
  </dl>
3387
2967
  </details>
@@ -3418,9 +2998,9 @@ Remove contacts from an existing audience. This operation is idempotent.
3418
2998
 
3419
2999
  ```ruby
3420
3000
  client.audiences.contacts.remove(
3421
- id: "aud_abc123",
3422
- contacts: %w[+12125551234 co_def456]
3423
- )
3001
+ id: 'aud_abc123',
3002
+ contacts: ['+12125551234', 'co_def456']
3003
+ );
3424
3004
  ```
3425
3005
  </dd>
3426
3006
  </dl>
@@ -3498,9 +3078,9 @@ Add contacts to an existing audience. This operation is additive and idempotent.
3498
3078
 
3499
3079
  ```ruby
3500
3080
  client.audiences.contacts.add(
3501
- id: "aud_abc123",
3502
- contacts: %w[+12125551234 co_def456 +13105551234]
3503
- )
3081
+ id: 'aud_abc123',
3082
+ contacts: ['+12125551234', 'co_def456', '+13105551234']
3083
+ );
3504
3084
  ```
3505
3085
  </dd>
3506
3086
  </dl>
@@ -3575,9 +3155,9 @@ Generate campaign details based off existing campaign and the brand it's connect
3575
3155
 
3576
3156
  ```ruby
3577
3157
  client.campaigns.dlc.autofill(
3578
- additional_info: "Please autofill missing campaign fields using my brand profile",
3579
- campaign_id: "dlc_1234567890"
3580
- )
3158
+ additional_info: 'Please autofill missing campaign fields using my brand profile',
3159
+ campaign_id: 'dlc_1234567890'
3160
+ );
3581
3161
  ```
3582
3162
  </dd>
3583
3163
  </dl>
@@ -3639,7 +3219,7 @@ Retrieve 10DLC campaign.
3639
3219
  <dd>
3640
3220
 
3641
3221
  ```ruby
3642
- client.campaigns.dlc.get(campaign_id: "dlc_1234567890")
3222
+ client.campaigns.dlc.get(campaign_id: 'dlc_1234567890');
3643
3223
  ```
3644
3224
  </dd>
3645
3225
  </dl>
@@ -3701,7 +3281,7 @@ Submit your 10DLC campaign for approval and activation with carriers.
3701
3281
  <dd>
3702
3282
 
3703
3283
  ```ruby
3704
- client.campaigns.dlc.submit(campaign_id: "dlc_1234567890")
3284
+ client.campaigns.dlc.submit(campaign_id: 'dlc_1234567890');
3705
3285
  ```
3706
3286
  </dd>
3707
3287
  </dl>
@@ -3778,25 +3358,25 @@ All fields are **required** unless specified otherwise, and will be validated wh
3778
3358
  ```ruby
3779
3359
  client.campaigns.dlc.upsert(
3780
3360
  auto_renew: true,
3781
- brand: "b_1234567890",
3782
- description: "This campaign sends transactional SMS messages to customers who have opted in, including account notifications, security alerts, and customer care responses. Messages are sent when triggered by account activity such as login attempts, password changes, order updates, or support inquiries. All messages include required STOP/HELP disclosures and comply with TCPA guidelines.",
3361
+ brand: 'b_1234567890',
3362
+ description: 'This campaign sends transactional SMS messages to customers who have opted in, including account notifications, security alerts, and customer care responses. Messages are sent when triggered by account activity such as login attempts, password changes, order updates, or support inquiries. All messages include required STOP/HELP disclosures and comply with TCPA guidelines.',
3783
3363
  keywords: {
3784
3364
  help: {
3785
- message: "Pinnacle Software Development Inc.: For assistance, visit https://pinnacle.sh/support or email founders@trypinnacle.app. Msg&data rates may apply. Reply STOP to cancel.",
3786
- values: %w[HELP SUPPORT INFO]
3365
+ message: 'Pinnacle Software Development Inc.: For assistance, visit https://pinnacle.sh/support or email founders@trypinnacle.app. Msg&data rates may apply. Reply STOP to cancel.',
3366
+ values: ['HELP', 'SUPPORT', 'INFO']
3787
3367
  },
3788
3368
  opt_in: {
3789
3369
  message: "Pinnacle Software Development Inc.: You're enrolled in account & security alerts. Msg&data rates may apply. Message frequency varies. Reply HELP for help, STOP to cancel. Terms: https://pinnacle.sh/terms Privacy: https://pinnacle.sh/privacy",
3790
- values: %w[START YES SUBSCRIBE]
3370
+ values: ['START', 'YES', 'SUBSCRIBE']
3791
3371
  },
3792
3372
  opt_out: {
3793
3373
  message: "Pinnacle Software Development Inc.: You're unsubscribed and will receive no further texts. For assistance, visit https://pinnacle.sh or call 877-389-0460. Reply START to resubscribe.",
3794
- values: %w[STOP CANCEL UNSUBSCRIBE]
3374
+ values: ['STOP', 'CANCEL', 'UNSUBSCRIBE']
3795
3375
  }
3796
3376
  },
3797
3377
  links: {
3798
- privacy_policy: "https://www.pinnacle.sh/privacy",
3799
- terms_of_service: "https://www.pinnacle.sh/terms"
3378
+ privacy_policy: 'https://www.pinnacle.sh/privacy',
3379
+ terms_of_service: 'https://www.pinnacle.sh/terms'
3800
3380
  },
3801
3381
  message_flow: 'The user fills out a paper form during onboarding at [Address] which they learn about at our website (https://pinnacle.sh) in which they provide their phone number and sign their consent. The form includes a disclaimer: "By signing this form and providing your phone number, you agree to receive SMS Mixed - Account Notification, Customer Care, Security Alert, Delivery Notification from Pinnacle Software Development Inc. Message frequency may vary. Standard Message and Data Rates may apply. Reply STOP to opt out. Reply HELP for help. Consent is not a condition of purchase. Your mobile information will not be sold or shared with third parties for promotional or marketing purposes." Once the information is entered into the system, the user receives a confirmation SMS: "Thank you for signing up for SMS updates from Pinnacle Software Development Inc. Msg freq may vary. Std msg & data rates apply. Reply STOP to opt out, HELP for help." Link to paper form: https://www.pinnacle.sh/opt-in',
3802
3382
  name: "Pinnacle's Account Notifications",
@@ -3804,16 +3384,16 @@ client.campaigns.dlc.upsert(
3804
3384
  affiliate_marketing: false,
3805
3385
  age_gated: false,
3806
3386
  direct_lending: false,
3807
- embedded_link: "https://www.pinnacle.sh/example",
3387
+ embedded_link: 'https://www.pinnacle.sh/example',
3808
3388
  embedded_phone: false,
3809
3389
  number_pooling: false
3810
3390
  },
3811
- sample_messages: ["Pinnacle Software Development Inc.: We're here to help. Visit https://pinnacle.sh or call 877-389-0460. Msg&data rates may apply. Reply STOP to cancel.", "Pinnacle Software Development Inc.: You're enrolled in account & security alerts. Msg&data rates may apply. Message frequency varies. Reply HELP for help, STOP to cancel. Terms: https://pinnacle.sh/terms/ Privacy: https://pinnacle.sh/privacy/", "Pinnacle Software Development Inc.: An update has been made to your account. Read it in the portal.", "Pinnacle Software Development Inc.: We received your message. A team member will reply shortly. For immediate help call 877-389-0460. Msg&data rates may apply. Reply STOP to cancel."],
3391
+ sample_messages: ["Pinnacle Software Development Inc.: We're here to help. Visit https://pinnacle.sh or call 877-389-0460. Msg&data rates may apply. Reply STOP to cancel.", "Pinnacle Software Development Inc.: You're enrolled in account & security alerts. Msg&data rates may apply. Message frequency varies. Reply HELP for help, STOP to cancel. Terms: https://pinnacle.sh/terms/ Privacy: https://pinnacle.sh/privacy/", 'Pinnacle Software Development Inc.: An update has been made to your account. Read it in the portal.', 'Pinnacle Software Development Inc.: We received your message. A team member will reply shortly. For immediate help call 877-389-0460. Msg&data rates may apply. Reply STOP to cancel.'],
3812
3392
  use_case: {
3813
- sub: %w[ACCOUNT_NOTIFICATION CUSTOMER_CARE SECURITY_ALERT],
3814
- value: "MIXED"
3393
+ sub: ['ACCOUNT_NOTIFICATION', 'CUSTOMER_CARE', 'SECURITY_ALERT'],
3394
+ value: 'MIXED'
3815
3395
  }
3816
- )
3396
+ );
3817
3397
  ```
3818
3398
  </dd>
3819
3399
  </dl>
@@ -3960,9 +3540,9 @@ Validate your 10DLC campaign configuration against carrier requirements and comp
3960
3540
 
3961
3541
  ```ruby
3962
3542
  client.campaigns.dlc.validate(
3963
- additional_info: "Please validate this DLC campaign for 10DLC compliance",
3964
- campaign_id: "dlc_1234567890"
3965
- )
3543
+ additional_info: 'Please validate this DLC campaign for 10DLC compliance',
3544
+ campaign_id: 'dlc_1234567890'
3545
+ );
3966
3546
  ```
3967
3547
  </dd>
3968
3548
  </dl>
@@ -4024,7 +3604,7 @@ List all 10DLC campaigns with optional filtering and pagination. Results are sor
4024
3604
  <dd>
4025
3605
 
4026
3606
  ```ruby
4027
- client.campaigns.dlc.list
3607
+ client.campaigns.dlc.list();
4028
3608
  ```
4029
3609
  </dd>
4030
3610
  </dl>
@@ -4120,9 +3700,9 @@ Generate campaign details based off existing campaign and the brand it's connect
4120
3700
 
4121
3701
  ```ruby
4122
3702
  client.campaigns.toll_free.autofill(
4123
- additional_info: "Please autofill missing campaign fields using my brand profile",
4124
- campaign_id: "dlc_1234567890"
4125
- )
3703
+ additional_info: 'Please autofill missing campaign fields using my brand profile',
3704
+ campaign_id: 'dlc_1234567890'
3705
+ );
4126
3706
  ```
4127
3707
  </dd>
4128
3708
  </dl>
@@ -4184,7 +3764,7 @@ Retrieve Toll-Free campaign.
4184
3764
  <dd>
4185
3765
 
4186
3766
  ```ruby
4187
- client.campaigns.toll_free.get(campaign_id: "tf_1234567890")
3767
+ client.campaigns.toll_free.get(campaign_id: 'tf_1234567890');
4188
3768
  ```
4189
3769
  </dd>
4190
3770
  </dl>
@@ -4246,7 +3826,7 @@ Submit your toll-free campaign for approval and activation with carriers.
4246
3826
  <dd>
4247
3827
 
4248
3828
  ```ruby
4249
- client.campaigns.toll_free.submit(campaign_id: "tf_1234567890")
3829
+ client.campaigns.toll_free.submit(campaign_id: 'tf_1234567890');
4250
3830
  ```
4251
3831
  </dd>
4252
3832
  </dl>
@@ -4319,26 +3899,26 @@ All fields are **required** unless specified otherwise, and will be validated wh
4319
3899
 
4320
3900
  ```ruby
4321
3901
  client.campaigns.toll_free.upsert(
4322
- brand: "b_1234567890",
4323
- campaign_id: "tf_1234567890",
3902
+ brand: 'b_1234567890',
3903
+ campaign_id: 'tf_1234567890',
4324
3904
  keywords: {
4325
3905
  help: {
4326
- message: "Pinnacle Software Development Inc.: For assistance, visit https://pinnacle.sh/support or email founders@trypinnacle.app. Msg&data rates may apply. Reply STOP to cancel."
3906
+ message: 'Pinnacle Software Development Inc.: For assistance, visit https://pinnacle.sh/support or email founders@trypinnacle.app. Msg&data rates may apply. Reply STOP to cancel.'
4327
3907
  },
4328
3908
  opt_in: {
4329
3909
  message: "Pinnacle Software Development Inc.: You're enrolled in account & security alerts. Msg&data rates may apply. Message frequency varies. Reply HELP for help, STOP to cancel. Terms: https://pinnacle.sh/terms/ Privacy: https://pinnacle.sh/privacy/",
4330
- keywords: %w[START SUBSCRIBE]
3910
+ keywords: ['START', 'SUBSCRIBE']
4331
3911
  }
4332
3912
  },
4333
3913
  links: {
4334
- privacy_policy: "https://www.pinnacle.sh/privacy",
4335
- terms_of_service: "https://www.pinnacle.sh/terms"
3914
+ privacy_policy: 'https://www.pinnacle.sh/privacy',
3915
+ terms_of_service: 'https://www.pinnacle.sh/terms'
4336
3916
  },
4337
- monthly_volume: "10,000",
4338
- name: "Pinnacle",
3917
+ monthly_volume: '10,000',
3918
+ name: 'Pinnacle',
4339
3919
  opt_in: {
4340
- method_: "PAPER",
4341
- url: "https://www.pinnacle.sh/opt-in",
3920
+ method_: 'PAPER',
3921
+ url: 'https://www.pinnacle.sh/opt-in',
4342
3922
  workflow_description: "End users opt-in when filling out the in-person intake forms where they will write their phone numbers and check a box indicating that they've opted in to messages. Link to paper form: https://www.pinnacle.sh/opt-in"
4343
3923
  },
4344
3924
  options: {
@@ -4346,10 +3926,10 @@ client.campaigns.toll_free.upsert(
4346
3926
  },
4347
3927
  production_message_content: "Hi [First Name], your order #[Order ID] has shipped and will arrive [Date]. Track here: [URL]. Reply HELP for help or STOP to unsubscribe.",
4348
3928
  use_case: {
4349
- summary: "Customers who have opted into text messages can interact with our automated SMS chatbot to receive transaction-driven notifications (order status, shipping updates, account alerts), ask support questions, share photos with friends, and manage their account details via simple, conversational text flows. All messages are transactional or interactive flows customers opt into. Users can send images (e.g., receipts) and get guided replies.",
4350
- value: "CHATBOT"
3929
+ summary: 'Customers who have opted into text messages can interact with our automated SMS chatbot to receive transaction-driven notifications (order status, shipping updates, account alerts), ask support questions, share photos with friends, and manage their account details via simple, conversational text flows. All messages are transactional or interactive flows customers opt into. Users can send images (e.g., receipts) and get guided replies.',
3930
+ value: 'CHATBOT'
4351
3931
  }
4352
- )
3932
+ );
4353
3933
  ```
4354
3934
  </dd>
4355
3935
  </dl>
@@ -4484,9 +4064,9 @@ Validate your toll-free campaign configuration against carrier requirements and
4484
4064
 
4485
4065
  ```ruby
4486
4066
  client.campaigns.toll_free.validate(
4487
- additional_info: "Please validate this DLC campaign for 10DLC compliance",
4488
- campaign_id: "dlc_1234567890"
4489
- )
4067
+ additional_info: 'Please validate this DLC campaign for 10DLC compliance',
4068
+ campaign_id: 'dlc_1234567890'
4069
+ );
4490
4070
  ```
4491
4071
  </dd>
4492
4072
  </dl>
@@ -4548,7 +4128,7 @@ List all toll-free campaigns with optional filtering and pagination. Results are
4548
4128
  <dd>
4549
4129
 
4550
4130
  ```ruby
4551
- client.campaigns.toll_free.list
4131
+ client.campaigns.toll_free.list();
4552
4132
  ```
4553
4133
  </dd>
4554
4134
  </dl>
@@ -4644,9 +4224,9 @@ Generate campaign details based off existing campaign and the brand it's connect
4644
4224
 
4645
4225
  ```ruby
4646
4226
  client.campaigns.rcs.autofill(
4647
- additional_info: "Please autofill missing campaign fields using my brand profile",
4648
- campaign_id: "dlc_1234567890"
4649
- )
4227
+ additional_info: 'Please autofill missing campaign fields using my brand profile',
4228
+ campaign_id: 'dlc_1234567890'
4229
+ );
4650
4230
  ```
4651
4231
  </dd>
4652
4232
  </dl>
@@ -4708,7 +4288,7 @@ Retrieve RCS campaign.
4708
4288
  <dd>
4709
4289
 
4710
4290
  ```ruby
4711
- client.campaigns.rcs.get(campaign_id: "rcs_1234567890")
4291
+ client.campaigns.rcs.get(campaign_id: 'rcs_1234567890');
4712
4292
  ```
4713
4293
  </dd>
4714
4294
  </dl>
@@ -4770,7 +4350,7 @@ Submit your RCS campaign for approval and activation with carriers.
4770
4350
  <dd>
4771
4351
 
4772
4352
  ```ruby
4773
- client.campaigns.rcs.submit(campaign_id: "rcs_1234567890")
4353
+ client.campaigns.rcs.submit(campaign_id: 'rcs_1234567890');
4774
4354
  ```
4775
4355
  </dd>
4776
4356
  </dl>
@@ -4843,42 +4423,42 @@ All fields are **required** unless specified otherwise, and will be validated wh
4843
4423
  client.campaigns.rcs.upsert(
4844
4424
  agent: {
4845
4425
  color: "#000000",
4846
- description: "Experience the power of RCS messaging with interactive demos. Test rich features like carousels, suggested replies, and media sharing. Get started with our developer-friendly APIs.",
4426
+ description: 'Experience the power of RCS messaging with interactive demos. Test rich features like carousels, suggested replies, and media sharing. Get started with our developer-friendly APIs.',
4847
4427
  emails: [{
4848
- email: "founders@trypinnacle.app",
4849
- label: "Email Us"
4428
+ email: 'founders@trypinnacle.app',
4429
+ label: 'Email Us'
4850
4430
  }],
4851
- hero_url: "https://pncl.to/D6pDSqGxqgfbCfQmw4gXdnlHu4uSB4",
4852
- icon_url: "https://pncl.to/mq_tdIDenRb5eYpJiM8-3THCaUBrZP",
4853
- name: "Pinnacle - RCS Demo",
4431
+ hero_url: 'https://pncl.to/D6pDSqGxqgfbCfQmw4gXdnlHu4uSB4',
4432
+ icon_url: 'https://pncl.to/mq_tdIDenRb5eYpJiM8-3THCaUBrZP',
4433
+ name: 'Pinnacle - RCS Demo',
4854
4434
  phones: [{
4855
- label: "Contact us directly",
4856
- phone: "+14154467821"
4435
+ label: 'Contact us directly',
4436
+ phone: '+14154467821'
4857
4437
  }],
4858
4438
  websites: [{
4859
- label: "Get started with Pinnacle",
4860
- url: "https://www.trypinnacle.app/"
4439
+ label: 'Get started with Pinnacle',
4440
+ url: 'https://www.trypinnacle.app/'
4861
4441
  }]
4862
4442
  },
4863
- brand: "b_1234567890",
4864
- campaign_id: "rcs_1234567890",
4865
- expected_agent_responses: ["Here are the things I can help you with.", "I can assist you with booking an appointment, or you may choose to book manually.", "Here are the available times to connect with a representative tomorrow.", "Your appointment has been scheduled."],
4443
+ brand: 'b_1234567890',
4444
+ campaign_id: 'rcs_1234567890',
4445
+ expected_agent_responses: ['Here are the things I can help you with.', 'I can assist you with booking an appointment, or you may choose to book manually.', 'Here are the available times to connect with a representative tomorrow.', 'Your appointment has been scheduled.'],
4866
4446
  links: {
4867
- privacy_policy: "“https://www.trypinnacle.app/privacy”",
4868
- terms_of_service: "“https://www.trypinnacle.app/terms”"
4447
+ privacy_policy: '“https://www.trypinnacle.app/privacy”',
4448
+ terms_of_service: '“https://www.trypinnacle.app/terms”'
4869
4449
  },
4870
- use_case_description: "Pinnacle is a developer-focused RCS assistant that helps teams design, test, and optimize rich messaging experiences across SMS, MMS, and RCS. The agent acts as both an “onboarding guide” for new customers and a “best-practices coach” for existing teams exploring higher-value RCS workflows like rich cards, carousels, and suggested actions.<br>
4450
+ use_case_description: 'Pinnacle is a developer-focused RCS assistant that helps teams design, test, and optimize rich messaging experiences across SMS, MMS, and RCS. The agent acts as both an “onboarding guide” for new customers and a “best-practices coach” for existing teams exploring higher-value RCS workflows like rich cards, carousels, and suggested actions.<br>
4871
4451
  The agent delivers a mix of operational updates and educational content (2–6 messages/month). Content includes important platform notices (e.g., deliverability or throughput changes), implementation tips with sample RCS templates, and personalized recommendations on how to upgrade existing SMS campaigns into richer, higher-converting RCS conversations.
4872
- ",
4873
- messaging_type: "OTP",
4874
- cta_media: "“https://www.pinnacle.sh/send”",
4875
- opt_in_method: "We ensure consent through an explicit opt-in process that follows 10DLC best practices.Users must agree to receive messages from Pinnacle before the agent sends them any messages.<br>
4452
+ ',
4453
+ messaging_type: 'OTP',
4454
+ cta_media: '“https://www.pinnacle.sh/send”',
4455
+ opt_in_method: 'We ensure consent through an explicit opt-in process that follows 10DLC best practices.Users must agree to receive messages from Pinnacle before the agent sends them any messages.<br>
4876
4456
  Users agree to these messages by signing an opt-in paper form that they can be found online at https://www.pinnacle.sh/opt-in. We only send messages once users have filled out the form and submitted it to us via email or through the dashboard.
4877
- ",
4457
+ ',
4878
4458
  keywords: {
4879
4459
  help: {
4880
- message: "Email founders@trypinnacle.app for support.",
4881
- keywords: %w[HELP SUPPORT]
4460
+ message: 'Email founders@trypinnacle.app for support.',
4461
+ keywords: ['HELP', 'SUPPORT']
4882
4462
  },
4883
4463
  opt_in: {
4884
4464
  message: "Welcome back to Pinnacle!<br>
@@ -4886,20 +4466,20 @@ client.campaigns.rcs.upsert(
4886
4466
 
4887
4467
  Reply STOP to opt out and HELP for support. Message & rates may apply.
4888
4468
  ",
4889
- keywords: %w[START SUBSCRIBE]
4469
+ keywords: ['START', 'SUBSCRIBE']
4890
4470
  },
4891
4471
  opt_out: {
4892
4472
  message: "You've been unsubscribed from Pinnacle - RCS Demo and will no longer receive notifications. If you ever change your mind, reply START or SUBSCRIBE to rejoin anytime.",
4893
- keywords: %w[STOP UNSUBSCRIBE END]
4473
+ keywords: ['STOP', 'UNSUBSCRIBE', 'END']
4894
4474
  }
4895
4475
  },
4896
4476
  traffic: {
4897
4477
  monthly_website: 10000,
4898
4478
  monthly_rcs_estimate: 10000
4899
4479
  },
4900
- cta_language: "By checking this box and submitting this form, you consent to receive transactional text messages for support, appointment, and reminder messages from Pinnacle Software Development Inc. Reply STOP to opt out. Reply HELP for help. Standard message and data rates may apply. Message frequency may vary. View our Terms and Conditions at https://www.pinnacle.sh/terms. View our Privacy Policy at https://www.pinnacle.sh/privacy.",
4480
+ cta_language: 'By checking this box and submitting this form, you consent to receive transactional text messages for support, appointment, and reminder messages from Pinnacle Software Development Inc. Reply STOP to opt out. Reply HELP for help. Standard message and data rates may apply. Message frequency may vary. View our Terms and Conditions at https://www.pinnacle.sh/terms. View our Privacy Policy at https://www.pinnacle.sh/privacy.',
4901
4481
  demo_trigger: 'Text "START" to trigger the flow.'
4902
- )
4482
+ );
4903
4483
  ```
4904
4484
  </dd>
4905
4485
  </dl>
@@ -5061,9 +4641,9 @@ Validate your RCS campaign configuration against carrier requirements and compli
5061
4641
 
5062
4642
  ```ruby
5063
4643
  client.campaigns.rcs.validate(
5064
- additional_info: "Please validate this DLC campaign for 10DLC compliance",
5065
- campaign_id: "dlc_1234567890"
5066
- )
4644
+ additional_info: 'Please validate this DLC campaign for 10DLC compliance',
4645
+ campaign_id: 'dlc_1234567890'
4646
+ );
5067
4647
  ```
5068
4648
  </dd>
5069
4649
  </dl>
@@ -5125,7 +4705,7 @@ List all RCS campaigns with optional filtering and pagination. Results are sorte
5125
4705
  <dd>
5126
4706
 
5127
4707
  ```ruby
5128
- client.campaigns.rcs.list
4708
+ client.campaigns.rcs.list();
5129
4709
  ```
5130
4710
  </dd>
5131
4711
  </dl>
@@ -5188,92 +4768,6 @@ client.campaigns.rcs.list
5188
4768
  </dl>
5189
4769
 
5190
4770
 
5191
- </dd>
5192
- </dl>
5193
- </details>
5194
-
5195
- ## Forms Submissions
5196
- <details><summary><code>client.forms.submissions.<a href="/lib/pinnacle/forms/submissions/client.rb">list</a>(id, request) -> Pinnacle::Types::ListFormSubmissionsResponse</code></summary>
5197
- <dl>
5198
- <dd>
5199
-
5200
- #### 📝 Description
5201
-
5202
- <dl>
5203
- <dd>
5204
-
5205
- <dl>
5206
- <dd>
5207
-
5208
- Paginated list of completed submissions for a form, newest first. Each row includes the submitted `data` keyed by field `key`, the sender/recipient, IP, user-agent, and timestamps.
5209
- </dd>
5210
- </dl>
5211
- </dd>
5212
- </dl>
5213
-
5214
- #### 🔌 Usage
5215
-
5216
- <dl>
5217
- <dd>
5218
-
5219
- <dl>
5220
- <dd>
5221
-
5222
- ```ruby
5223
- client.forms.submissions.list(
5224
- id: "form_Oy2n7iUoi9CJwUU6",
5225
- page_index: 0,
5226
- page_size: 20
5227
- )
5228
- ```
5229
- </dd>
5230
- </dl>
5231
- </dd>
5232
- </dl>
5233
-
5234
- #### ⚙️ Parameters
5235
-
5236
- <dl>
5237
- <dd>
5238
-
5239
- <dl>
5240
- <dd>
5241
-
5242
- **id:** `String`
5243
-
5244
- The unique identifier of the form whose submissions you want to list.
5245
- <br><br> This identifier is a string that always begins with the prefix `form_`, for example: `form_Oy2n7iUoi9CJwUU6`.
5246
-
5247
- </dd>
5248
- </dl>
5249
-
5250
- <dl>
5251
- <dd>
5252
-
5253
- **page_index:** `Integer` — Zero-based page index.
5254
-
5255
- </dd>
5256
- </dl>
5257
-
5258
- <dl>
5259
- <dd>
5260
-
5261
- **page_size:** `Integer` — Number of submissions to return in a single page. Max 100.
5262
-
5263
- </dd>
5264
- </dl>
5265
-
5266
- <dl>
5267
- <dd>
5268
-
5269
- **request_options:** `Pinnacle::Forms::Submissions::RequestOptions`
5270
-
5271
- </dd>
5272
- </dl>
5273
- </dd>
5274
- </dl>
5275
-
5276
-
5277
4771
  </dd>
5278
4772
  </dl>
5279
4773
  </details>
@@ -5307,10 +4801,10 @@ Send a SMS message immediately or schedule it for future delivery.
5307
4801
 
5308
4802
  ```ruby
5309
4803
  client.messages.sms.send_(
5310
- from: "+14155164736",
5311
- text: "Hey!",
5312
- to: "+14154746461"
5313
- )
4804
+ from: '+14155164736',
4805
+ text: 'Hey!',
4806
+ to: '+14154746461'
4807
+ );
5314
4808
  ```
5315
4809
  </dd>
5316
4810
  </dl>
@@ -5396,7 +4890,7 @@ Validate SMS message content without sending it.
5396
4890
  <dd>
5397
4891
 
5398
4892
  ```ruby
5399
- client.messages.sms.validate(text: "Hello from Pinnacle")
4893
+ client.messages.sms.validate(text: 'Hello from Pinnacle');
5400
4894
  ```
5401
4895
  </dd>
5402
4896
  </dl>
@@ -5460,15 +4954,15 @@ Send a MMS immediately or schedule it for future delivery.
5460
4954
 
5461
4955
  ```ruby
5462
4956
  client.messages.mms.send_(
5463
- from: "+14155164736",
5464
- media_urls: ["https://fastly.picsum.photos/id/941/300/300.jpg?hmac=mDxM9PWSqRDjecwSCEpzU4bj35gqnG7yA25OL29uNv0"],
4957
+ from: '+14155164736',
4958
+ media_urls: ['https://fastly.picsum.photos/id/941/300/300.jpg?hmac=mDxM9PWSqRDjecwSCEpzU4bj35gqnG7yA25OL29uNv0'],
5465
4959
  options: {
5466
4960
  multiple_messages: true,
5467
4961
  validate: true
5468
4962
  },
5469
- text: "Check out this image!",
5470
- to: "+14154746461"
5471
- )
4963
+ text: 'Check out this image!',
4964
+ to: '+14154746461'
4965
+ );
5472
4966
  ```
5473
4967
  </dd>
5474
4968
  </dl>
@@ -5567,9 +5061,9 @@ Validate MMS message content without sending it.
5567
5061
 
5568
5062
  ```ruby
5569
5063
  client.messages.mms.validate(
5570
- media_urls: %w[https://upload.wikimedia.org/wikipedia/commons/b/b9/Pizigani_1367_Chart_1MB.jpg https://fastly.picsum.photos/id/528/1000/1000.jpg?hmac=aTG0xNif9KbNryFN0ZNZ_nFK6aEpZxqUGCZF1KjOT8w https://file-examples.com/storage/fefdd7ab126835e7993bb1a/2017/10/file_example_JPG_500kB.jpg],
5571
- text: "Check out these images!"
5572
- )
5064
+ media_urls: ['https://upload.wikimedia.org/wikipedia/commons/b/b9/Pizigani_1367_Chart_1MB.jpg', 'https://fastly.picsum.photos/id/528/1000/1000.jpg?hmac=aTG0xNif9KbNryFN0ZNZ_nFK6aEpZxqUGCZF1KjOT8w', 'https://file-examples.com/storage/fefdd7ab126835e7993bb1a/2017/10/file_example_JPG_500kB.jpg'],
5065
+ text: 'Check out these images!'
5066
+ );
5573
5067
  ```
5574
5068
  </dd>
5575
5069
  </dl>
@@ -5635,10 +5129,10 @@ Requires an active RCS agent and recipient devices that support RCS Business Mes
5635
5129
 
5636
5130
  ```ruby
5637
5131
  client.messages.rcs.send_(
5638
- from: "from",
5639
- to: "to",
5640
- text: "text"
5641
- )
5132
+ from: 'from',
5133
+ to: 'to',
5134
+ text: 'text'
5135
+ );
5642
5136
  ```
5643
5137
  </dd>
5644
5138
  </dl>
@@ -5711,9 +5205,9 @@ This endpoint allows RCS agents to display a typing indicator to recipients. The
5711
5205
 
5712
5206
  ```ruby
5713
5207
  client.messages.rcs.send_typing(
5714
- agent_id: "agent_pinnacle",
5715
- to: "+14154746461"
5716
- )
5208
+ agent_id: 'agent_pinnacle',
5209
+ to: '+14154746461'
5210
+ );
5717
5211
  ```
5718
5212
  </dd>
5719
5213
  </dl>
@@ -5791,7 +5285,7 @@ Validate RCS message content without sending it.
5791
5285
  <dd>
5792
5286
 
5793
5287
  ```ruby
5794
- client.messages.rcs.validate(text: "text")
5288
+ client.messages.rcs.validate(text: 'text');
5795
5289
  ```
5796
5290
  </dd>
5797
5291
  </dl>
@@ -5859,12 +5353,12 @@ Use the optional `schedule` parameter in `options` to schedule the blast for fut
5859
5353
 
5860
5354
  ```ruby
5861
5355
  client.messages.blast.sms(
5862
- audience_id: "aud_abc123",
5863
- senders: %w[+14155164736 +14155164737],
5356
+ audience_id: 'aud_abc123',
5357
+ senders: ['+14155164736', '+14155164737'],
5864
5358
  message: {
5865
- text: "Hello from Pinnacle!"
5359
+ text: 'Hello from Pinnacle!'
5866
5360
  }
5867
- )
5361
+ );
5868
5362
  ```
5869
5363
  </dd>
5870
5364
  </dl>
@@ -5967,16 +5461,16 @@ Use the optional `schedule` parameter in `options` to schedule the blast for fut
5967
5461
 
5968
5462
  ```ruby
5969
5463
  client.messages.blast.mms(
5970
- audience_id: "aud_abc123",
5971
- senders: %w[+14155164736 +14155164737],
5464
+ audience_id: 'aud_abc123',
5465
+ senders: ['+14155164736', '+14155164737'],
5972
5466
  message: {
5973
- media_urls: ["https://fastly.picsum.photos/id/941/300/300.jpg"],
5974
- text: "Check out this image!"
5467
+ media_urls: ['https://fastly.picsum.photos/id/941/300/300.jpg'],
5468
+ text: 'Check out this image!'
5975
5469
  },
5976
5470
  options: {
5977
5471
  validate: true
5978
5472
  }
5979
- )
5473
+ );
5980
5474
  ```
5981
5475
  </dd>
5982
5476
  </dl>
@@ -6079,21 +5573,21 @@ Use the optional `schedule` parameter in `options` to schedule the blast for fut
6079
5573
 
6080
5574
  ```ruby
6081
5575
  client.messages.blast.rcs(
6082
- audience_id: "aud_abc123",
6083
- senders: %w[agent_pinnacle agent_pinnacle2],
5576
+ audience_id: 'aud_abc123',
5577
+ senders: ['agent_pinnacle', 'agent_pinnacle2'],
6084
5578
  message: {
6085
5579
  quick_replies: [],
6086
- text: "Hello from Pinnacle RCS!"
5580
+ text: 'Hello from Pinnacle RCS!'
6087
5581
  },
6088
5582
  fallback: {
6089
- from: "+14155164736",
6090
- text: "Hello from Pinnacle! Reply LEARN to learn more."
5583
+ from: '+14155164736',
5584
+ text: 'Hello from Pinnacle! Reply LEARN to learn more.'
6091
5585
  },
6092
5586
  options: {
6093
5587
  transcode: true,
6094
5588
  validate: true
6095
5589
  }
6096
- )
5590
+ );
6097
5591
  ```
6098
5592
  </dd>
6099
5593
  </dl>
@@ -6200,7 +5694,7 @@ Works for both individual scheduled messages and scheduled blasts. Use the `sche
6200
5694
  <dd>
6201
5695
 
6202
5696
  ```ruby
6203
- client.messages.schedule.cancel(id: "id")
5697
+ client.messages.schedule.cancel(id: 'id');
6204
5698
  ```
6205
5699
  </dd>
6206
5700
  </dl>
@@ -6263,7 +5757,7 @@ List all scheduled messages with optional filtering and pagination. Results are
6263
5757
  <dd>
6264
5758
 
6265
5759
  ```ruby
6266
- client.messages.schedules.list
5760
+ client.messages.schedules.list();
6267
5761
  ```
6268
5762
  </dd>
6269
5763
  </dl>
@@ -6358,7 +5852,7 @@ List all blasts with optional filtering and pagination. Results are sorted by cr
6358
5852
  <dd>
6359
5853
 
6360
5854
  ```ruby
6361
- client.messages.blasts.list
5855
+ client.messages.blasts.list();
6362
5856
  ```
6363
5857
  </dd>
6364
5858
  </dl>
@@ -6421,6 +5915,75 @@ client.messages.blasts.list
6421
5915
  </dl>
6422
5916
 
6423
5917
 
5918
+ </dd>
5919
+ </dl>
5920
+ </details>
5921
+
5922
+ ## Messages Simulate
5923
+ <details><summary><code>client.messages.simulate.<a href="/lib/pinnacle/messages/simulate/client.rb">user</a>(request) -> Pinnacle::Types::SimulateUserResponse</code></summary>
5924
+ <dl>
5925
+ <dd>
5926
+
5927
+ #### 📝 Description
5928
+
5929
+ <dl>
5930
+ <dd>
5931
+
5932
+ <dl>
5933
+ <dd>
5934
+
5935
+ Simulate inbound messages and button presses from a user.
5936
+ </dd>
5937
+ </dl>
5938
+ </dd>
5939
+ </dl>
5940
+
5941
+ #### 🔌 Usage
5942
+
5943
+ <dl>
5944
+ <dd>
5945
+
5946
+ <dl>
5947
+ <dd>
5948
+
5949
+ ```ruby
5950
+ client.messages.simulate.user(
5951
+ from: '+14155551234',
5952
+ to: '+14155555678',
5953
+ message: {
5954
+ text: 'Hello from the test user!'
5955
+ }
5956
+ );
5957
+ ```
5958
+ </dd>
5959
+ </dl>
5960
+ </dd>
5961
+ </dl>
5962
+
5963
+ #### ⚙️ Parameters
5964
+
5965
+ <dl>
5966
+ <dd>
5967
+
5968
+ <dl>
5969
+ <dd>
5970
+
5971
+ **request:** `Pinnacle::Types::SimulateUserParams`
5972
+
5973
+ </dd>
5974
+ </dl>
5975
+
5976
+ <dl>
5977
+ <dd>
5978
+
5979
+ **request_options:** `Pinnacle::Messages::Simulate::RequestOptions`
5980
+
5981
+ </dd>
5982
+ </dl>
5983
+ </dd>
5984
+ </dl>
5985
+
5986
+
6424
5987
  </dd>
6425
5988
  </dl>
6426
5989
  </details>
@@ -6454,10 +6017,10 @@ Link a phone number to a specific campaign. Phone numbers must be linked to a ca
6454
6017
 
6455
6018
  ```ruby
6456
6019
  client.phone_numbers.campaign.attach(
6457
- phones: %w[+14155550123 +14155559876 +14155550111],
6458
- campaign_type: "TOLL_FREE",
6459
- campaign_id: "tf_1234567890"
6460
- )
6020
+ phones: ['+14155550123', '+14155559876', '+14155550111'],
6021
+ campaign_type: 'TOLL_FREE',
6022
+ campaign_id: 'tf_1234567890'
6023
+ );
6461
6024
  ```
6462
6025
  </dd>
6463
6026
  </dl>
@@ -6547,7 +6110,7 @@ Remove the association between a phone number and its attached campaign.
6547
6110
  <dd>
6548
6111
 
6549
6112
  ```ruby
6550
- client.phone_numbers.campaign.detach(phones: %w[+14155559876 14155550111])
6113
+ client.phone_numbers.campaign.detach(phones: ['+14155559876', '14155550111']);
6551
6114
  ```
6552
6115
  </dd>
6553
6116
  </dl>
@@ -6613,7 +6176,7 @@ List all RCS agents with pagination. Results are sorted by creation date, newest
6613
6176
  <dd>
6614
6177
 
6615
6178
  ```ruby
6616
- client.rcs.agents.list
6179
+ client.rcs.agents.list();
6617
6180
  ```
6618
6181
  </dd>
6619
6182
  </dl>
@@ -6700,7 +6263,7 @@ List all whitelisted test numbers with optional filtering and pagination. Result
6700
6263
  <dd>
6701
6264
 
6702
6265
  ```ruby
6703
- client.rcs.whitelisted_numbers.list
6266
+ client.rcs.whitelisted_numbers.list();
6704
6267
  ```
6705
6268
  </dd>
6706
6269
  </dl>
@@ -6826,28 +6389,28 @@ Once your test agent is created, you'll need to:
6826
6389
 
6827
6390
  ```ruby
6828
6391
  client.rcs.test.create_agent(
6829
- display_name: "Acme Support",
6830
- description: "Get help with your Acme orders and account",
6831
- logo_url: "https://example.com/logo.png",
6832
- hero_url: "https://example.com/hero.png",
6392
+ display_name: 'Acme Support',
6393
+ description: 'Get help with your Acme orders and account',
6394
+ logo_url: 'https://example.com/logo.png',
6395
+ hero_url: 'https://example.com/hero.png',
6833
6396
  phone_numbers: [{
6834
- number: "+14155550123",
6835
- label: "Support"
6397
+ number: '+14155550123',
6398
+ label: 'Support'
6836
6399
  }],
6837
6400
  emails: [{
6838
- address: "support@example.com",
6839
- label: "Support"
6401
+ address: 'support@example.com',
6402
+ label: 'Support'
6840
6403
  }],
6841
6404
  websites: [{
6842
- url: "https://example.com",
6843
- label: "Website"
6405
+ url: 'https://example.com',
6406
+ label: 'Website'
6844
6407
  }],
6845
- privacy_url: "https://example.com/privacy",
6846
- terms_url: "https://example.com/terms",
6408
+ privacy_url: 'https://example.com/privacy',
6409
+ terms_url: 'https://example.com/terms',
6847
6410
  color: "#FF6B00",
6848
6411
  is_conversational: true,
6849
- agent_use_case: "MULTI_USE"
6850
- )
6412
+ agent_use_case: 'MULTI_USE'
6413
+ );
6851
6414
  ```
6852
6415
  </dd>
6853
6416
  </dl>
@@ -7049,9 +6612,9 @@ If updating images, the same requirements apply as when creating an agent:
7049
6612
 
7050
6613
  ```ruby
7051
6614
  client.rcs.test.update_agent(
7052
- agent_id: "agent_abc123def456",
7053
- display_name: "Acme Premium Support"
7054
- )
6615
+ agent_id: 'agent_abc123def456',
6616
+ display_name: 'Acme Premium Support'
6617
+ );
7055
6618
  ```
7056
6619
  </dd>
7057
6620
  </dl>
@@ -7259,9 +6822,9 @@ Attempting to whitelist during the cooldown returns a `500` error with the remai
7259
6822
 
7260
6823
  ```ruby
7261
6824
  client.rcs.test.whitelist_number(
7262
- agent_id: "agent_abc123def456",
7263
- phone_number: "+12345678901"
7264
- )
6825
+ agent_id: 'agent_abc123def456',
6826
+ phone_number: '+12345678901'
6827
+ );
7265
6828
  ```
7266
6829
  </dd>
7267
6830
  </dl>
@@ -7352,9 +6915,9 @@ whether the recipient has accepted or rejected the tester invite.
7352
6915
 
7353
6916
  ```ruby
7354
6917
  client.rcs.test.get_whitelist_status(
7355
- agent_id: "agent_abc123def456",
7356
- phone_number: "+12345678901"
7357
- )
6918
+ agent_id: 'agent_abc123def456',
6919
+ phone_number: '+12345678901'
6920
+ );
7358
6921
  ```
7359
6922
  </dd>
7360
6923
  </dl>
@@ -7425,7 +6988,7 @@ Retrieve a brand's status.
7425
6988
  <dd>
7426
6989
 
7427
6990
  ```ruby
7428
- client.status.get.brand(brand_id: "b_1234567890")
6991
+ client.status.get.brand(brand_id: 'b_1234567890');
7429
6992
  ```
7430
6993
  </dd>
7431
6994
  </dl>
@@ -7487,7 +7050,7 @@ Retrieve a toll-free campaign's status.
7487
7050
  <dd>
7488
7051
 
7489
7052
  ```ruby
7490
- client.status.get.toll_free(campaign_id: "tf_1234567890")
7053
+ client.status.get.toll_free(campaign_id: 'tf_1234567890');
7491
7054
  ```
7492
7055
  </dd>
7493
7056
  </dl>
@@ -7549,7 +7112,7 @@ Retrieve a 10DLC campaign's status.
7549
7112
  <dd>
7550
7113
 
7551
7114
  ```ruby
7552
- client.status.get.dlc(campaign_id: "dlc_1234567890")
7115
+ client.status.get.dlc(campaign_id: 'dlc_1234567890');
7553
7116
  ```
7554
7117
  </dd>
7555
7118
  </dl>
@@ -7611,7 +7174,7 @@ Retrieve a RCS campaign's status.
7611
7174
  <dd>
7612
7175
 
7613
7176
  ```ruby
7614
- client.status.get.rcs(campaign_id: "rcs_1234567890")
7177
+ client.status.get.rcs(campaign_id: 'rcs_1234567890');
7615
7178
  ```
7616
7179
  </dd>
7617
7180
  </dl>
@@ -7675,7 +7238,7 @@ Check if a number is active and ready to send messages.
7675
7238
  <dd>
7676
7239
 
7677
7240
  ```ruby
7678
- client.status.get.phone_number(phone_number: "+14151234567")
7241
+ client.status.get.phone_number(phone_number: '+14151234567');
7679
7242
  ```
7680
7243
  </dd>
7681
7244
  </dl>
@@ -7739,11 +7302,11 @@ Create a shortened URL that redirects visitors to the provided destination URL.
7739
7302
 
7740
7303
  ```ruby
7741
7304
  client.tools.url.create(
7742
- url: "https://www.pinnacle.sh/",
7305
+ url: 'https://www.pinnacle.sh/',
7743
7306
  options: {
7744
- expires_at: "2025-06-23T16:18:25.000Z"
7307
+ expires_at: '2025-06-23T16:18:25.000Z'
7745
7308
  }
7746
- )
7309
+ );
7747
7310
  ```
7748
7311
  </dd>
7749
7312
  </dl>
@@ -7813,7 +7376,7 @@ Retrieve configuration and details for your shortened URL using its unique ident
7813
7376
  <dd>
7814
7377
 
7815
7378
  ```ruby
7816
- client.tools.url.get(link_id: "ePzVxILF")
7379
+ client.tools.url.get(link_id: 'ePzVxILF');
7817
7380
  ```
7818
7381
  </dd>
7819
7382
  </dl>
@@ -7880,9 +7443,9 @@ Update the destination or expiration date of an existing shortened URL. Expiring
7880
7443
 
7881
7444
  ```ruby
7882
7445
  client.tools.url.update(
7883
- link_id: "ePzVxILF",
7884
- url: "https://www.pinnacle.sh/"
7885
- )
7446
+ link_id: 'ePzVxILF',
7447
+ url: 'https://www.pinnacle.sh/'
7448
+ );
7886
7449
  ```
7887
7450
  </dd>
7888
7451
  </dl>
@@ -7964,7 +7527,7 @@ List all shortened URLs with pagination. Results are sorted by creation date, ne
7964
7527
  <dd>
7965
7528
 
7966
7529
  ```ruby
7967
- client.tools.url.list
7530
+ client.tools.url.list();
7968
7531
  ```
7969
7532
  </dd>
7970
7533
  </dl>
@@ -8044,16 +7607,16 @@ Generate presigned URLs that let you upload files directly to our storage and al
8044
7607
 
8045
7608
  ```ruby
8046
7609
  client.tools.file.upload(
8047
- content_type: "image/jpeg",
7610
+ content_type: 'image/jpeg',
8048
7611
  size: 1024,
8049
- name: "test.jpg",
7612
+ name: 'test.jpg',
8050
7613
  options: {
8051
- delete_at: "2025-12-31T23:59:59Z",
7614
+ delete_at: '2025-12-31T23:59:59Z',
8052
7615
  download: {
8053
- expires_at: "2025-06-30T12:00:00.000Z"
7616
+ expires_at: '2025-06-30T12:00:00.000Z'
8054
7617
  }
8055
7618
  }
8056
- )
7619
+ );
8057
7620
  ```
8058
7621
  </dd>
8059
7622
  </dl>
@@ -8151,7 +7714,7 @@ Refresh expiring presigned URLs for Pinnacle-hosted files to extend their access
8151
7714
  <dd>
8152
7715
 
8153
7716
  ```ruby
8154
- client.tools.file.refresh(urls: %w[https://server.trypinnacle.app/storage/v1/object/sign/vault/3/test.jpg?token=oldtoken https://server.trypinnacle.app/storage/v1/object/sign/vault/3/document.pdf?token=oldtoken2 invalid/url https://google.com])
7717
+ client.tools.file.refresh(urls: ['https://server.trypinnacle.app/storage/v1/object/sign/vault/3/test.jpg?token=oldtoken', 'https://server.trypinnacle.app/storage/v1/object/sign/vault/3/document.pdf?token=oldtoken2', 'invalid/url', 'https://google.com']);
8155
7718
  ```
8156
7719
  </dd>
8157
7720
  </dl>
@@ -8214,7 +7777,7 @@ Retrieve contact information as a vCard and get a presigned URL to download the
8214
7777
  <dd>
8215
7778
 
8216
7779
  ```ruby
8217
- client.tools.contact_card.get(id: "cc_1234567890")
7780
+ client.tools.contact_card.get(id: 'cc_1234567890');
8218
7781
  ```
8219
7782
  </dd>
8220
7783
  </dl>
@@ -8285,51 +7848,51 @@ Create a new contact card or updates an existing one with full vCard data. Conta
8285
7848
 
8286
7849
  ```ruby
8287
7850
  client.tools.contact_card.upsert(
8288
- id: "cc_1234567890",
8289
- formatted_name: "Jane Smith",
7851
+ id: 'cc_1234567890',
7852
+ formatted_name: 'Jane Smith',
8290
7853
  name: {
8291
- family_name: "Smith",
8292
- given_name: "Jane",
8293
- additional_names: ["A."],
8294
- honorific_prefixes: ["Dr."],
8295
- honorific_suffixes: ["PhD"]
7854
+ family_name: 'Smith',
7855
+ given_name: 'Jane',
7856
+ additional_names: ['A.'],
7857
+ honorific_prefixes: ['Dr.'],
7858
+ honorific_suffixes: ['PhD']
8296
7859
  },
8297
- nickname: ["Janie"],
8298
- birthday: "1990-02-15",
7860
+ nickname: ['Janie'],
7861
+ birthday: '1990-02-15',
8299
7862
  addresses: [{
8300
- country_name: "USA",
8301
- extended_address: "Apt. 4B",
8302
- locality: "Anytown",
8303
- postal_code: "90210",
8304
- post_office_box: "PO Box 123",
8305
- region: "CA",
8306
- street_address: "123 Main St",
8307
- type: %w[HOME PREF]
7863
+ country_name: 'USA',
7864
+ extended_address: 'Apt. 4B',
7865
+ locality: 'Anytown',
7866
+ postal_code: '90210',
7867
+ post_office_box: 'PO Box 123',
7868
+ region: 'CA',
7869
+ street_address: '123 Main St',
7870
+ type: ['HOME', 'PREF']
8308
7871
  }],
8309
- url: "https://app.pinnacle.sh",
7872
+ url: 'https://app.pinnacle.sh',
8310
7873
  phones: [{
8311
- type: ["CELL"],
8312
- value: "+15551234567"
7874
+ type: ['CELL'],
7875
+ value: '+15551234567'
8313
7876
  }],
8314
7877
  emails: [{
8315
- type: ["INTERNET"],
8316
- value: "jane.smith@example.com"
7878
+ type: ['INTERNET'],
7879
+ value: 'jane.smith@example.com'
8317
7880
  }],
8318
- timezone: "America/Los_Angeles",
7881
+ timezone: 'America/Los_Angeles',
8319
7882
  geo: {
8320
7883
  latitude: 34.0522,
8321
7884
  longitude: -118.2437
8322
7885
  },
8323
- title: "Engineer",
8324
- role: "Developer",
7886
+ title: 'Engineer',
7887
+ role: 'Developer',
8325
7888
  organization: {
8326
- name: "Acme Co",
8327
- units: %w[Engineering R&D]
7889
+ name: 'Acme Co',
7890
+ units: ['Engineering', 'R&D']
8328
7891
  },
8329
- categories: %w[Friend Colleague],
8330
- note: "Test contact entry",
8331
- photo: "https://fastly.picsum.photos/id/853/200/200.jpg?hmac=f4LF-tVBBnJb9PQAVEO8GCTGWgLUnxQLw44rUofE6mQ"
8332
- )
7892
+ categories: ['Friend', 'Colleague'],
7893
+ note: 'Test contact entry',
7894
+ photo: 'https://fastly.picsum.photos/id/853/200/200.jpg?hmac=f4LF-tVBBnJb9PQAVEO8GCTGWgLUnxQLw44rUofE6mQ'
7895
+ );
8333
7896
  ```
8334
7897
  </dd>
8335
7898
  </dl>
@@ -8363,4 +7926,3 @@ client.tools.contact_card.upsert(
8363
7926
  </dd>
8364
7927
  </dl>
8365
7928
  </details>
8366
-