sentdm 0.29.0 → 0.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +24 -0
- data/README.md +55 -1
- data/lib/sentdm/internal/contacts_page.rb +115 -0
- data/lib/sentdm/internal/conversations_page.rb +115 -0
- data/lib/sentdm/internal/templates_page.rb +115 -0
- data/lib/sentdm/internal/type/base_model.rb +5 -5
- data/lib/sentdm/internal/webhook_events_page.rb +115 -0
- data/lib/sentdm/internal/webhooks_page.rb +115 -0
- data/lib/sentdm/models/api_meta.rb +34 -0
- data/lib/sentdm/models/api_response_of_contact.rb +46 -0
- data/lib/sentdm/models/api_response_of_contact_message_summary.rb +43 -0
- data/lib/sentdm/models/api_response_of_conversation_messages_list.rb +42 -0
- data/lib/sentdm/models/api_response_of_profile_detail.rb +43 -0
- data/lib/sentdm/models/api_response_of_user.rb +43 -0
- data/lib/sentdm/models/api_response_template.rb +43 -0
- data/lib/sentdm/models/api_response_webhook.rb +43 -0
- data/lib/sentdm/models/billing_contact_info.rb +47 -0
- data/lib/sentdm/models/brand_business_info.rb +114 -0
- data/lib/sentdm/models/brand_compliance_info.rb +59 -0
- data/lib/sentdm/models/brand_contact_info.rb +58 -0
- data/lib/sentdm/models/brands_brand_data.rb +34 -0
- data/lib/sentdm/models/contact_delete_params.rb +2 -16
- data/lib/sentdm/models/contact_list_params.rb +13 -13
- data/lib/sentdm/models/contact_message_summary.rb +76 -0
- data/lib/sentdm/models/contact_response.rb +140 -0
- data/lib/sentdm/models/conversation_list_messages_params.rb +5 -5
- data/lib/sentdm/models/conversation_list_params.rb +5 -5
- data/lib/sentdm/models/conversation_messages_list.rb +245 -0
- data/lib/sentdm/models/error_detail.rb +42 -0
- data/lib/sentdm/models/me_retrieve_response.rb +12 -242
- data/lib/sentdm/models/message_retrieve_activities_response.rb +9 -159
- data/lib/sentdm/models/message_retrieve_status_response.rb +6 -74
- data/lib/sentdm/models/message_send_response.rb +6 -74
- data/lib/sentdm/models/mutation_request.rb +20 -0
- data/lib/sentdm/models/number_lookup_response.rb +6 -74
- data/lib/sentdm/models/pagination_meta.rb +84 -0
- data/lib/sentdm/models/payment_details.rb +40 -0
- data/lib/sentdm/models/profile_complete_response.rb +6 -74
- data/lib/sentdm/models/profile_create_params.rb +9 -345
- data/lib/sentdm/models/profile_delete_params.rb +2 -16
- data/lib/sentdm/models/profile_detail.rb +650 -0
- data/lib/sentdm/models/profile_list_response.rb +12 -815
- data/lib/sentdm/models/profile_settings.rb +85 -0
- data/lib/sentdm/models/profile_update_params.rb +9 -345
- data/lib/sentdm/models/profiles/api_response_of_brand_campaign.rb +45 -0
- data/lib/sentdm/models/profiles/api_response_of_list_of_brand_campaign.rb +45 -0
- data/lib/sentdm/models/profiles/brand_campaign.rb +247 -0
- data/lib/sentdm/models/profiles/campaign_create_params.rb +3 -156
- data/lib/sentdm/models/profiles/campaign_data.rb +136 -0
- data/lib/sentdm/models/profiles/campaign_delete_params.rb +2 -17
- data/lib/sentdm/models/profiles/campaign_update_params.rb +3 -156
- data/lib/sentdm/models/profiles/campaign_use_case.rb +71 -0
- data/lib/sentdm/models/profiles/campaign_use_case_data.rb +29 -0
- data/lib/sentdm/models/template.rb +103 -0
- data/lib/sentdm/models/template_list_params.rb +17 -17
- data/lib/sentdm/models/user_list_response.rb +12 -249
- data/lib/sentdm/models/user_remove_params.rb +2 -16
- data/lib/sentdm/models/user_response.rb +94 -0
- data/lib/sentdm/models/webhook_event_type.rb +45 -0
- data/lib/sentdm/models/webhook_list_event_types_response.rb +12 -203
- data/lib/sentdm/models/webhook_list_events_params.rb +5 -5
- data/lib/sentdm/models/webhook_list_events_response.rb +87 -295
- data/lib/sentdm/models/webhook_list_params.rb +11 -11
- data/lib/sentdm/models/webhook_response.rb +121 -0
- data/lib/sentdm/models/webhook_rotate_secret_params.rb +2 -17
- data/lib/sentdm/models/webhook_rotate_secret_response.rb +6 -74
- data/lib/sentdm/models/webhook_test_response.rb +6 -74
- data/lib/sentdm/models.rb +52 -0
- data/lib/sentdm/resources/contacts.rb +16 -15
- data/lib/sentdm/resources/conversations.rb +10 -8
- data/lib/sentdm/resources/profiles/campaigns.rb +8 -8
- data/lib/sentdm/resources/profiles.rb +12 -12
- data/lib/sentdm/resources/templates.rb +16 -15
- data/lib/sentdm/resources/users.rb +6 -6
- data/lib/sentdm/resources/webhooks.rb +20 -18
- data/lib/sentdm/version.rb +1 -1
- data/lib/sentdm.rb +37 -25
- data/rbi/sentdm/internal/contacts_page.rbi +71 -0
- data/rbi/sentdm/internal/conversations_page.rbi +71 -0
- data/rbi/sentdm/internal/templates_page.rbi +71 -0
- data/rbi/sentdm/internal/webhook_events_page.rbi +71 -0
- data/rbi/sentdm/internal/webhooks_page.rbi +71 -0
- data/rbi/sentdm/models/api_meta.rbi +55 -0
- data/rbi/sentdm/models/api_response_of_contact.rbi +74 -0
- data/rbi/sentdm/models/api_response_of_contact_message_summary.rbi +79 -0
- data/rbi/sentdm/models/api_response_of_conversation_messages_list.rbi +79 -0
- data/rbi/sentdm/models/api_response_of_profile_detail.rbi +74 -0
- data/rbi/sentdm/models/api_response_of_user.rbi +74 -0
- data/rbi/sentdm/models/api_response_template.rbi +74 -0
- data/rbi/sentdm/models/api_response_webhook.rbi +74 -0
- data/rbi/sentdm/models/billing_contact_info.rbi +65 -0
- data/rbi/sentdm/models/brand_business_info.rbi +162 -0
- data/rbi/sentdm/models/brand_compliance_info.rbi +76 -0
- data/rbi/sentdm/models/brand_contact_info.rbi +78 -0
- data/rbi/sentdm/models/brands_brand_data.rbi +65 -0
- data/rbi/sentdm/models/contact_delete_params.rbi +2 -19
- data/rbi/sentdm/models/contact_list_params.rbi +19 -13
- data/rbi/sentdm/models/contact_message_summary.rbi +144 -0
- data/rbi/sentdm/models/contact_response.rbi +200 -0
- data/rbi/sentdm/models/conversation_list_messages_params.rbi +12 -6
- data/rbi/sentdm/models/conversation_list_params.rbi +16 -5
- data/rbi/sentdm/models/conversation_messages_list.rbi +419 -0
- data/rbi/sentdm/models/error_detail.rbi +66 -0
- data/rbi/sentdm/models/me_retrieve_response.rbi +16 -367
- data/rbi/sentdm/models/message_retrieve_activities_response.rbi +12 -325
- data/rbi/sentdm/models/message_retrieve_status_response.rbi +8 -148
- data/rbi/sentdm/models/message_send_response.rbi +8 -135
- data/rbi/sentdm/models/mutation_request.rbi +32 -0
- data/rbi/sentdm/models/number_lookup_response.rbi +8 -135
- data/rbi/sentdm/models/pagination_meta.rbi +135 -0
- data/rbi/sentdm/models/payment_details.rbi +56 -0
- data/rbi/sentdm/models/profile_complete_response.rbi +8 -137
- data/rbi/sentdm/models/profile_create_params.rbi +12 -546
- data/rbi/sentdm/models/profile_delete_params.rbi +2 -19
- data/rbi/sentdm/models/profile_detail.rbi +918 -0
- data/rbi/sentdm/models/profile_list_response.rbi +16 -1347
- data/rbi/sentdm/models/profile_settings.rbi +102 -0
- data/rbi/sentdm/models/profile_update_params.rbi +12 -546
- data/rbi/sentdm/models/profiles/api_response_of_brand_campaign.rbi +81 -0
- data/rbi/sentdm/models/profiles/api_response_of_list_of_brand_campaign.rbi +76 -0
- data/rbi/sentdm/models/profiles/brand_campaign.rbi +299 -0
- data/rbi/sentdm/models/profiles/campaign_create_params.rbi +4 -218
- data/rbi/sentdm/models/profiles/campaign_data.rbi +158 -0
- data/rbi/sentdm/models/profiles/campaign_delete_params.rbi +1 -14
- data/rbi/sentdm/models/profiles/campaign_update_params.rbi +4 -218
- data/rbi/sentdm/models/profiles/campaign_use_case.rbi +110 -0
- data/rbi/sentdm/models/profiles/campaign_use_case_data.rbi +51 -0
- data/rbi/sentdm/models/template.rbi +139 -0
- data/rbi/sentdm/models/template_list_params.rbi +22 -16
- data/rbi/sentdm/models/user_list_response.rbi +16 -444
- data/rbi/sentdm/models/user_remove_params.rbi +2 -19
- data/rbi/sentdm/models/user_response.rbi +131 -0
- data/rbi/sentdm/models/webhook_event_type.rbi +74 -0
- data/rbi/sentdm/models/webhook_list_event_types_response.rbi +16 -414
- data/rbi/sentdm/models/webhook_list_events_params.rbi +12 -6
- data/rbi/sentdm/models/webhook_list_events_response.rbi +113 -564
- data/rbi/sentdm/models/webhook_list_params.rbi +16 -10
- data/rbi/sentdm/models/webhook_response.rbi +153 -0
- data/rbi/sentdm/models/webhook_rotate_secret_params.rbi +1 -14
- data/rbi/sentdm/models/webhook_rotate_secret_response.rbi +8 -148
- data/rbi/sentdm/models/webhook_test_response.rbi +8 -135
- data/rbi/sentdm/models.rbi +54 -0
- data/rbi/sentdm/resources/contacts.rbi +10 -10
- data/rbi/sentdm/resources/conversations.rbi +14 -6
- data/rbi/sentdm/resources/profiles/campaigns.rbi +5 -5
- data/rbi/sentdm/resources/profiles.rbi +9 -13
- data/rbi/sentdm/resources/templates.rbi +10 -10
- data/rbi/sentdm/resources/users.rbi +3 -3
- data/rbi/sentdm/resources/webhooks.rbi +16 -12
- data/sig/sentdm/internal/contacts_page.rbs +41 -0
- data/sig/sentdm/internal/conversations_page.rbs +41 -0
- data/sig/sentdm/internal/templates_page.rbs +44 -0
- data/sig/sentdm/internal/webhook_events_page.rbs +41 -0
- data/sig/sentdm/internal/webhooks_page.rbs +41 -0
- data/sig/sentdm/models/api_meta.rbs +27 -0
- data/sig/sentdm/models/api_response_of_contact.rbs +39 -0
- data/sig/sentdm/models/api_response_of_contact_message_summary.rbs +39 -0
- data/sig/sentdm/models/api_response_of_conversation_messages_list.rbs +39 -0
- data/sig/sentdm/models/api_response_of_profile_detail.rbs +39 -0
- data/sig/sentdm/models/api_response_of_user.rbs +39 -0
- data/sig/sentdm/models/api_response_template.rbs +39 -0
- data/sig/sentdm/models/api_response_webhook.rbs +39 -0
- data/sig/sentdm/models/billing_contact_info.rbs +30 -0
- data/sig/sentdm/models/brand_business_info.rbs +89 -0
- data/sig/sentdm/models/brand_compliance_info.rbs +45 -0
- data/sig/sentdm/models/brand_contact_info.rbs +45 -0
- data/sig/sentdm/models/brands_brand_data.rbs +30 -0
- data/sig/sentdm/models/contact_delete_params.rbs +6 -10
- data/sig/sentdm/models/contact_list_params.rbs +11 -7
- data/sig/sentdm/models/contact_message_summary.rbs +84 -0
- data/sig/sentdm/models/contact_response.rbs +118 -0
- data/sig/sentdm/models/conversation_list_messages_params.rbs +8 -4
- data/sig/sentdm/models/conversation_list_params.rbs +8 -4
- data/sig/sentdm/models/conversation_messages_list.rbs +240 -0
- data/sig/sentdm/models/error_detail.rbs +39 -0
- data/sig/sentdm/models/me_retrieve_response.rbs +18 -176
- data/sig/sentdm/models/message_retrieve_activities_response.rbs +14 -142
- data/sig/sentdm/models/message_retrieve_status_response.rbs +9 -71
- data/sig/sentdm/models/message_send_response.rbs +9 -71
- data/sig/sentdm/models/mutation_request.rbs +15 -0
- data/sig/sentdm/models/number_lookup_response.rbs +9 -71
- data/sig/sentdm/models/pagination_meta.rbs +67 -0
- data/sig/sentdm/models/payment_details.rbs +30 -0
- data/sig/sentdm/models/profile_complete_response.rbs +9 -71
- data/sig/sentdm/models/profile_create_params.rbs +12 -263
- data/sig/sentdm/models/profile_delete_params.rbs +6 -10
- data/sig/sentdm/models/profile_detail.rbs +461 -0
- data/sig/sentdm/models/profile_list_response.rbs +20 -606
- data/sig/sentdm/models/profile_settings.rbs +50 -0
- data/sig/sentdm/models/profile_update_params.rbs +12 -263
- data/sig/sentdm/models/profiles/api_response_of_brand_campaign.rbs +41 -0
- data/sig/sentdm/models/profiles/api_response_of_list_of_brand_campaign.rbs +41 -0
- data/sig/sentdm/models/profiles/brand_campaign.rbs +194 -0
- data/sig/sentdm/models/profiles/campaign_create_params.rbs +4 -108
- data/sig/sentdm/models/profiles/campaign_data.rbs +87 -0
- data/sig/sentdm/models/profiles/campaign_delete_params.rbs +8 -15
- data/sig/sentdm/models/profiles/campaign_update_params.rbs +4 -108
- data/sig/sentdm/models/profiles/campaign_use_case.rbs +66 -0
- data/sig/sentdm/models/profiles/campaign_use_case_data.rbs +27 -0
- data/sig/sentdm/models/template.rbs +84 -0
- data/sig/sentdm/models/template_list_params.rbs +14 -10
- data/sig/sentdm/models/user_list_response.rbs +20 -224
- data/sig/sentdm/models/user_remove_params.rbs +6 -10
- data/sig/sentdm/models/user_response.rbs +79 -0
- data/sig/sentdm/models/webhook_event_type.rbs +51 -0
- data/sig/sentdm/models/webhook_list_event_types_response.rbs +20 -196
- data/sig/sentdm/models/webhook_list_events_params.rbs +8 -4
- data/sig/sentdm/models/webhook_list_events_response.rbs +63 -255
- data/sig/sentdm/models/webhook_list_params.rbs +11 -7
- data/sig/sentdm/models/webhook_response.rbs +110 -0
- data/sig/sentdm/models/webhook_rotate_secret_params.rbs +8 -17
- data/sig/sentdm/models/webhook_rotate_secret_response.rbs +9 -71
- data/sig/sentdm/models/webhook_test_response.rbs +9 -71
- data/sig/sentdm/models.rbs +52 -0
- data/sig/sentdm/resources/contacts.rbs +7 -7
- data/sig/sentdm/resources/conversations.rbs +6 -6
- data/sig/sentdm/resources/profiles/campaigns.rbs +5 -5
- data/sig/sentdm/resources/profiles.rbs +9 -9
- data/sig/sentdm/resources/templates.rbs +6 -6
- data/sig/sentdm/resources/users.rbs +3 -3
- data/sig/sentdm/resources/webhooks.rbs +10 -10
- metadata +113 -77
- data/lib/sentdm/models/contact_create_response.rb +0 -249
- data/lib/sentdm/models/contact_list_response.rb +0 -348
- data/lib/sentdm/models/contact_retrieve_message_summary_response.rb +0 -186
- data/lib/sentdm/models/contact_retrieve_response.rb +0 -249
- data/lib/sentdm/models/contact_update_response.rb +0 -249
- data/lib/sentdm/models/conversation_list_messages_response.rb +0 -436
- data/lib/sentdm/models/conversation_list_response.rb +0 -433
- data/lib/sentdm/models/profile_create_response.rb +0 -760
- data/lib/sentdm/models/profile_retrieve_response.rb +0 -762
- data/lib/sentdm/models/profile_update_response.rb +0 -760
- data/lib/sentdm/models/profiles/campaign_create_response.rb +0 -420
- data/lib/sentdm/models/profiles/campaign_list_response.rb +0 -421
- data/lib/sentdm/models/profiles/campaign_update_response.rb +0 -420
- data/lib/sentdm/models/template_create_response.rb +0 -209
- data/lib/sentdm/models/template_list_response.rb +0 -311
- data/lib/sentdm/models/template_retrieve_response.rb +0 -209
- data/lib/sentdm/models/template_update_response.rb +0 -209
- data/lib/sentdm/models/user_invite_response.rb +0 -201
- data/lib/sentdm/models/user_retrieve_response.rb +0 -201
- data/lib/sentdm/models/user_update_role_response.rb +0 -201
- data/lib/sentdm/models/webhook_create_response.rb +0 -229
- data/lib/sentdm/models/webhook_list_response.rb +0 -329
- data/lib/sentdm/models/webhook_retrieve_response.rb +0 -229
- data/lib/sentdm/models/webhook_toggle_status_response.rb +0 -229
- data/lib/sentdm/models/webhook_update_response.rb +0 -229
- data/rbi/sentdm/models/contact_create_response.rbi +0 -407
- data/rbi/sentdm/models/contact_list_response.rbi +0 -634
- data/rbi/sentdm/models/contact_retrieve_message_summary_response.rbi +0 -397
- data/rbi/sentdm/models/contact_retrieve_response.rbi +0 -409
- data/rbi/sentdm/models/contact_update_response.rbi +0 -407
- data/rbi/sentdm/models/conversation_list_messages_response.rbi +0 -843
- data/rbi/sentdm/models/conversation_list_response.rbi +0 -819
- data/rbi/sentdm/models/profile_create_response.rbi +0 -1226
- data/rbi/sentdm/models/profile_retrieve_response.rbi +0 -1230
- data/rbi/sentdm/models/profile_update_response.rbi +0 -1226
- data/rbi/sentdm/models/profiles/campaign_create_response.rbi +0 -674
- data/rbi/sentdm/models/profiles/campaign_list_response.rbi +0 -667
- data/rbi/sentdm/models/profiles/campaign_update_response.rbi +0 -674
- data/rbi/sentdm/models/template_create_response.rbi +0 -349
- data/rbi/sentdm/models/template_list_response.rbi +0 -576
- data/rbi/sentdm/models/template_retrieve_response.rbi +0 -355
- data/rbi/sentdm/models/template_update_response.rbi +0 -349
- data/rbi/sentdm/models/user_invite_response.rbi +0 -336
- data/rbi/sentdm/models/user_retrieve_response.rbi +0 -336
- data/rbi/sentdm/models/user_update_role_response.rbi +0 -341
- data/rbi/sentdm/models/webhook_create_response.rbi +0 -361
- data/rbi/sentdm/models/webhook_list_response.rbi +0 -587
- data/rbi/sentdm/models/webhook_retrieve_response.rbi +0 -363
- data/rbi/sentdm/models/webhook_toggle_status_response.rbi +0 -379
- data/rbi/sentdm/models/webhook_update_response.rbi +0 -361
- data/sig/sentdm/models/contact_create_response.rbs +0 -216
- data/sig/sentdm/models/contact_list_response.rbs +0 -310
- data/sig/sentdm/models/contact_retrieve_message_summary_response.rbs +0 -182
- data/sig/sentdm/models/contact_retrieve_response.rbs +0 -216
- data/sig/sentdm/models/contact_update_response.rbs +0 -216
- data/sig/sentdm/models/conversation_list_messages_response.rbs +0 -404
- data/sig/sentdm/models/conversation_list_response.rbs +0 -404
- data/sig/sentdm/models/profile_create_response.rbs +0 -559
- data/sig/sentdm/models/profile_retrieve_response.rbs +0 -559
- data/sig/sentdm/models/profile_update_response.rbs +0 -559
- data/sig/sentdm/models/profiles/campaign_create_response.rbs +0 -357
- data/sig/sentdm/models/profiles/campaign_list_response.rbs +0 -357
- data/sig/sentdm/models/profiles/campaign_update_response.rbs +0 -357
- data/sig/sentdm/models/template_create_response.rbs +0 -182
- data/sig/sentdm/models/template_list_response.rbs +0 -276
- data/sig/sentdm/models/template_retrieve_response.rbs +0 -182
- data/sig/sentdm/models/template_update_response.rbs +0 -182
- data/sig/sentdm/models/user_invite_response.rbs +0 -177
- data/sig/sentdm/models/user_retrieve_response.rbs +0 -177
- data/sig/sentdm/models/user_update_role_response.rbs +0 -177
- data/sig/sentdm/models/webhook_create_response.rbs +0 -208
- data/sig/sentdm/models/webhook_list_response.rbs +0 -302
- data/sig/sentdm/models/webhook_retrieve_response.rbs +0 -208
- data/sig/sentdm/models/webhook_toggle_status_response.rbs +0 -208
- data/sig/sentdm/models/webhook_update_response.rbs +0 -208
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: bc53282fa9d44937f4eca7cd2519066c9230dd80c07e757976aaf19ed84bc4cd
|
|
4
|
+
data.tar.gz: ae37ec96f9bbd5415b93931e5f5b45f86bf2cfd9aa5496c3e48a4e4cf55c601c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ad4d72570b0f014b5c0ae8ed154c6eda9cbf18fe6b765bd2159ac2468474c85dfba17e0d662f38c987ea0330eceb7e77d33137ebbb7df2591c65bae1f5415342
|
|
7
|
+
data.tar.gz: 6c941c5ce504b94a154865c6d1fa3ddcfcf90f58889e0514c0f74c89c324eb0c3312b55cd8ad4f5a32274b8ac28e8d65805496be73ad757621fd1a5a19e30c2e
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,29 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.31.0](https://github.com/sentdm/sent-dm-ruby/compare/v0.30.0...v0.31.0) (2026-09-10)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Highlights
|
|
7
|
+
|
|
8
|
+
The contacts, templates, webhooks, webhook events, conversations, and conversation messages list methods now return a page you can iterate instead of a single response body. Iterate the result and the SDK fetches each page as it goes. This changes those methods' return type, so code that read the response body directly needs to iterate the page, or read its items, instead.
|
|
9
|
+
|
|
10
|
+
`page` and `page_size` are now optional on those calls. You don't have to pass them to list anything.
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
* **api:** configure page_number pagination for the v3 list endpoints ([d23828b](https://github.com/sentdm/sent-dm-ruby/commit/d23828b500a4b683f9036f63d40e79c466699b2f))
|
|
15
|
+
|
|
16
|
+
## [0.30.0](https://github.com/sentdm/sent-dm-ruby/compare/v0.29.0...v0.30.0) (2026-09-09)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Highlights
|
|
20
|
+
|
|
21
|
+
This release is breaking for the webhook endpoints. Webhook responses now use one shared model instead of a separate type per operation: the create, retrieve, update and toggle-status response types are gone, and all four now return the shared webhook API response model (`ApiResponseWebhook`, in this language's casing). If your code references one of the removed types, or its nested data, error or meta members, point it at the shared model. The list, list-event-types, list-events, rotate-secret and test responses are unchanged, because each returns a different envelope.
|
|
22
|
+
|
|
23
|
+
### Features
|
|
24
|
+
|
|
25
|
+
* **api:** repoint dangling model refs at current v3 schema names ([631adad](https://github.com/sentdm/sent-dm-ruby/commit/631adadfe49cd6eb7ae9df2d3ad3c8261ac54984))
|
|
26
|
+
|
|
3
27
|
## [0.29.0](https://github.com/sentdm/sent-dm-ruby/compare/v0.28.0...v0.29.0) (2026-09-06)
|
|
4
28
|
|
|
5
29
|
|
data/README.md
CHANGED
|
@@ -17,7 +17,7 @@ To use this gem, install via Bundler by adding the following to your application
|
|
|
17
17
|
<!-- x-release-please-start-version -->
|
|
18
18
|
|
|
19
19
|
```ruby
|
|
20
|
-
gem "sentdm", "~> 0.
|
|
20
|
+
gem "sentdm", "~> 0.31.0"
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
<!-- x-release-please-end -->
|
|
@@ -45,6 +45,34 @@ response = sent.messages.send_(
|
|
|
45
45
|
puts(response.data)
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
+
### Pagination
|
|
49
|
+
|
|
50
|
+
List methods in the Sent API are paginated.
|
|
51
|
+
|
|
52
|
+
This library provides auto-paginating iterators with each list response, so you do not have to request successive pages manually:
|
|
53
|
+
|
|
54
|
+
```ruby
|
|
55
|
+
page = sent.webhooks.list
|
|
56
|
+
|
|
57
|
+
# Fetch single item from page.
|
|
58
|
+
webhook = page.data&.webhooks[0]
|
|
59
|
+
puts(webhook.id)
|
|
60
|
+
|
|
61
|
+
# Automatically fetches more pages as needed.
|
|
62
|
+
page.auto_paging_each do |webhook|
|
|
63
|
+
puts(webhook.id)
|
|
64
|
+
end
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Alternatively, you can use the `#next_page?` and `#next_page` methods for more granular control working with pages.
|
|
68
|
+
|
|
69
|
+
```ruby
|
|
70
|
+
if page.next_page?
|
|
71
|
+
new_page = page.next_page
|
|
72
|
+
puts(new_page.data&.webhooks[0].id)
|
|
73
|
+
end
|
|
74
|
+
```
|
|
75
|
+
|
|
48
76
|
### Handling errors
|
|
49
77
|
|
|
50
78
|
When the library is unable to connect to the API, or if the API returns a non-success status code (i.e., 4xx or 5xx response), a subclass of `Sentdm::Errors::APIError` will be thrown:
|
|
@@ -256,6 +284,32 @@ params = Sentdm::MessageSendParams.new(
|
|
|
256
284
|
sent.messages.send_(**params)
|
|
257
285
|
```
|
|
258
286
|
|
|
287
|
+
### Enums
|
|
288
|
+
|
|
289
|
+
Since this library does not depend on `sorbet-runtime`, it cannot provide [`T::Enum`](https://sorbet.org/docs/tenum) instances. Instead, we provide "tagged symbols" instead, which is always a primitive at runtime:
|
|
290
|
+
|
|
291
|
+
```ruby
|
|
292
|
+
# :PRIVATE_PROFIT
|
|
293
|
+
puts(Sentdm::BrandBusinessInfo::EntityType::PRIVATE_PROFIT)
|
|
294
|
+
|
|
295
|
+
# Revealed type: `T.all(Sentdm::BrandBusinessInfo::EntityType, Symbol)`
|
|
296
|
+
T.reveal_type(Sentdm::BrandBusinessInfo::EntityType::PRIVATE_PROFIT)
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
Enum parameters have a "relaxed" type, so you can either pass in enum constants or their literal value:
|
|
300
|
+
|
|
301
|
+
```ruby
|
|
302
|
+
Sentdm::BrandBusinessInfo.new(
|
|
303
|
+
entity_type: Sentdm::BrandBusinessInfo::EntityType::PRIVATE_PROFIT,
|
|
304
|
+
# …
|
|
305
|
+
)
|
|
306
|
+
|
|
307
|
+
Sentdm::BrandBusinessInfo.new(
|
|
308
|
+
entity_type: :PRIVATE_PROFIT,
|
|
309
|
+
# …
|
|
310
|
+
)
|
|
311
|
+
```
|
|
312
|
+
|
|
259
313
|
## Versioning
|
|
260
314
|
|
|
261
315
|
This package follows [SemVer](https://semver.org/spec/v2.0.0.html) conventions. As the library is in initial development and has a major version of `0`, APIs may change at any time.
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Sentdm
|
|
4
|
+
module Internal
|
|
5
|
+
# @generic Elem
|
|
6
|
+
#
|
|
7
|
+
# @example
|
|
8
|
+
# if contacts_page.has_next?
|
|
9
|
+
# contacts_page = contacts_page.next_page
|
|
10
|
+
# end
|
|
11
|
+
#
|
|
12
|
+
# @example
|
|
13
|
+
# contacts_page.auto_paging_each do |contact|
|
|
14
|
+
# puts(contact)
|
|
15
|
+
# end
|
|
16
|
+
class ContactsPage
|
|
17
|
+
include Sentdm::Internal::Type::BasePage
|
|
18
|
+
|
|
19
|
+
# @return [Data]
|
|
20
|
+
attr_accessor :data
|
|
21
|
+
|
|
22
|
+
# @return [Boolean]
|
|
23
|
+
def next_page?
|
|
24
|
+
data&.pagination&.has_more
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# @raise [Sentdm::HTTP::Error]
|
|
28
|
+
# @return [self]
|
|
29
|
+
def next_page
|
|
30
|
+
unless next_page?
|
|
31
|
+
message = "No more pages available. Please check #next_page? before calling ##{__method__}"
|
|
32
|
+
raise RuntimeError.new(message)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
req = Sentdm::Internal::Util.deep_merge(
|
|
36
|
+
@req,
|
|
37
|
+
{query: {page: @req.fetch(:query).fetch(:page, 1).to_i.succ}}
|
|
38
|
+
)
|
|
39
|
+
@client.request(req)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# @param blk [Proc]
|
|
43
|
+
#
|
|
44
|
+
# @yieldparam [generic<Elem>]
|
|
45
|
+
def auto_paging_each(&blk)
|
|
46
|
+
unless block_given?
|
|
47
|
+
raise ArgumentError.new("A block must be given to ##{__method__}")
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
page = self
|
|
51
|
+
loop do
|
|
52
|
+
page.data&.contacts&.each(&blk)
|
|
53
|
+
|
|
54
|
+
break unless page.next_page?
|
|
55
|
+
page = page.next_page
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# @api private
|
|
60
|
+
#
|
|
61
|
+
# @param client [Sentdm::Internal::Transport::BaseClient]
|
|
62
|
+
# @param req [Hash{Symbol=>Object}]
|
|
63
|
+
# @param headers [Hash{String=>String}]
|
|
64
|
+
# @param page_data [Hash{Symbol=>Object}]
|
|
65
|
+
def initialize(client:, req:, headers:, page_data:)
|
|
66
|
+
super
|
|
67
|
+
|
|
68
|
+
case page_data
|
|
69
|
+
in {data: Hash | nil => data}
|
|
70
|
+
if (contacts = data[:contacts]).is_a?(Array)
|
|
71
|
+
data = {**data, contacts: contacts.map { Sentdm::Internal::Type::Converter.coerce(@model, _1) }}
|
|
72
|
+
end
|
|
73
|
+
@data = Sentdm::Internal::Type::Converter.coerce(Sentdm::Internal::ContactsPage::Data, data)
|
|
74
|
+
else
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# @api private
|
|
79
|
+
#
|
|
80
|
+
# @return [String]
|
|
81
|
+
def inspect
|
|
82
|
+
model = Sentdm::Internal::Type::Converter.inspect(@model, depth: 1)
|
|
83
|
+
|
|
84
|
+
"#<#{self.class}[#{model}]:0x#{object_id.to_s(16)}>"
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
class Data < Sentdm::Internal::Type::BaseModel
|
|
88
|
+
# @!attribute contacts
|
|
89
|
+
#
|
|
90
|
+
# @return [Array<Object>, nil]
|
|
91
|
+
optional :contacts, Sentdm::Internal::Type::ArrayOf[Sentdm::Internal::Type::Unknown]
|
|
92
|
+
|
|
93
|
+
# @!attribute pagination
|
|
94
|
+
#
|
|
95
|
+
# @return [Data::Pagination, nil]
|
|
96
|
+
optional :pagination, -> { Data::Pagination }
|
|
97
|
+
|
|
98
|
+
# @!method initialize(contacts: nil, pagination: nil)
|
|
99
|
+
# @param contacts [Array<Object>]
|
|
100
|
+
# @param pagination [Data::Pagination]
|
|
101
|
+
|
|
102
|
+
# @see Data#pagination
|
|
103
|
+
class Pagination < Sentdm::Internal::Type::BaseModel
|
|
104
|
+
# @!attribute has_more
|
|
105
|
+
#
|
|
106
|
+
# @return [Boolean, nil]
|
|
107
|
+
optional :has_more, Sentdm::Internal::Type::Boolean
|
|
108
|
+
|
|
109
|
+
# @!method initialize(has_more: nil)
|
|
110
|
+
# @param has_more [Boolean]
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
end
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Sentdm
|
|
4
|
+
module Internal
|
|
5
|
+
# @generic Elem
|
|
6
|
+
#
|
|
7
|
+
# @example
|
|
8
|
+
# if conversations_page.has_next?
|
|
9
|
+
# conversations_page = conversations_page.next_page
|
|
10
|
+
# end
|
|
11
|
+
#
|
|
12
|
+
# @example
|
|
13
|
+
# conversations_page.auto_paging_each do |conversation|
|
|
14
|
+
# puts(conversation)
|
|
15
|
+
# end
|
|
16
|
+
class ConversationsPage
|
|
17
|
+
include Sentdm::Internal::Type::BasePage
|
|
18
|
+
|
|
19
|
+
# @return [Data]
|
|
20
|
+
attr_accessor :data
|
|
21
|
+
|
|
22
|
+
# @return [Boolean]
|
|
23
|
+
def next_page?
|
|
24
|
+
data&.pagination&.has_more
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# @raise [Sentdm::HTTP::Error]
|
|
28
|
+
# @return [self]
|
|
29
|
+
def next_page
|
|
30
|
+
unless next_page?
|
|
31
|
+
message = "No more pages available. Please check #next_page? before calling ##{__method__}"
|
|
32
|
+
raise RuntimeError.new(message)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
req = Sentdm::Internal::Util.deep_merge(
|
|
36
|
+
@req,
|
|
37
|
+
{query: {page: @req.fetch(:query).fetch(:page, 1).to_i.succ}}
|
|
38
|
+
)
|
|
39
|
+
@client.request(req)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# @param blk [Proc]
|
|
43
|
+
#
|
|
44
|
+
# @yieldparam [generic<Elem>]
|
|
45
|
+
def auto_paging_each(&blk)
|
|
46
|
+
unless block_given?
|
|
47
|
+
raise ArgumentError.new("A block must be given to ##{__method__}")
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
page = self
|
|
51
|
+
loop do
|
|
52
|
+
page.data&.messages&.each(&blk)
|
|
53
|
+
|
|
54
|
+
break unless page.next_page?
|
|
55
|
+
page = page.next_page
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# @api private
|
|
60
|
+
#
|
|
61
|
+
# @param client [Sentdm::Internal::Transport::BaseClient]
|
|
62
|
+
# @param req [Hash{Symbol=>Object}]
|
|
63
|
+
# @param headers [Hash{String=>String}]
|
|
64
|
+
# @param page_data [Hash{Symbol=>Object}]
|
|
65
|
+
def initialize(client:, req:, headers:, page_data:)
|
|
66
|
+
super
|
|
67
|
+
|
|
68
|
+
case page_data
|
|
69
|
+
in {data: Hash | nil => data}
|
|
70
|
+
if (messages = data[:messages]).is_a?(Array)
|
|
71
|
+
data = {**data, messages: messages.map { Sentdm::Internal::Type::Converter.coerce(@model, _1) }}
|
|
72
|
+
end
|
|
73
|
+
@data = Sentdm::Internal::Type::Converter.coerce(Sentdm::Internal::ConversationsPage::Data, data)
|
|
74
|
+
else
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# @api private
|
|
79
|
+
#
|
|
80
|
+
# @return [String]
|
|
81
|
+
def inspect
|
|
82
|
+
model = Sentdm::Internal::Type::Converter.inspect(@model, depth: 1)
|
|
83
|
+
|
|
84
|
+
"#<#{self.class}[#{model}]:0x#{object_id.to_s(16)}>"
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
class Data < Sentdm::Internal::Type::BaseModel
|
|
88
|
+
# @!attribute messages
|
|
89
|
+
#
|
|
90
|
+
# @return [Array<Object>, nil]
|
|
91
|
+
optional :messages, Sentdm::Internal::Type::ArrayOf[Sentdm::Internal::Type::Unknown]
|
|
92
|
+
|
|
93
|
+
# @!attribute pagination
|
|
94
|
+
#
|
|
95
|
+
# @return [Data::Pagination, nil]
|
|
96
|
+
optional :pagination, -> { Data::Pagination }
|
|
97
|
+
|
|
98
|
+
# @!method initialize(messages: nil, pagination: nil)
|
|
99
|
+
# @param messages [Array<Object>]
|
|
100
|
+
# @param pagination [Data::Pagination]
|
|
101
|
+
|
|
102
|
+
# @see Data#pagination
|
|
103
|
+
class Pagination < Sentdm::Internal::Type::BaseModel
|
|
104
|
+
# @!attribute has_more
|
|
105
|
+
#
|
|
106
|
+
# @return [Boolean, nil]
|
|
107
|
+
optional :has_more, Sentdm::Internal::Type::Boolean
|
|
108
|
+
|
|
109
|
+
# @!method initialize(has_more: nil)
|
|
110
|
+
# @param has_more [Boolean]
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
end
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Sentdm
|
|
4
|
+
module Internal
|
|
5
|
+
# @generic Elem
|
|
6
|
+
#
|
|
7
|
+
# @example
|
|
8
|
+
# if templates_page.has_next?
|
|
9
|
+
# templates_page = templates_page.next_page
|
|
10
|
+
# end
|
|
11
|
+
#
|
|
12
|
+
# @example
|
|
13
|
+
# templates_page.auto_paging_each do |template|
|
|
14
|
+
# puts(template)
|
|
15
|
+
# end
|
|
16
|
+
class TemplatesPage
|
|
17
|
+
include Sentdm::Internal::Type::BasePage
|
|
18
|
+
|
|
19
|
+
# @return [Data]
|
|
20
|
+
attr_accessor :data
|
|
21
|
+
|
|
22
|
+
# @return [Boolean]
|
|
23
|
+
def next_page?
|
|
24
|
+
data&.pagination&.has_more
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# @raise [Sentdm::HTTP::Error]
|
|
28
|
+
# @return [self]
|
|
29
|
+
def next_page
|
|
30
|
+
unless next_page?
|
|
31
|
+
message = "No more pages available. Please check #next_page? before calling ##{__method__}"
|
|
32
|
+
raise RuntimeError.new(message)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
req = Sentdm::Internal::Util.deep_merge(
|
|
36
|
+
@req,
|
|
37
|
+
{query: {page: @req.fetch(:query).fetch(:page, 1).to_i.succ}}
|
|
38
|
+
)
|
|
39
|
+
@client.request(req)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# @param blk [Proc]
|
|
43
|
+
#
|
|
44
|
+
# @yieldparam [generic<Elem>]
|
|
45
|
+
def auto_paging_each(&blk)
|
|
46
|
+
unless block_given?
|
|
47
|
+
raise ArgumentError.new("A block must be given to ##{__method__}")
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
page = self
|
|
51
|
+
loop do
|
|
52
|
+
page.data&.templates&.each(&blk)
|
|
53
|
+
|
|
54
|
+
break unless page.next_page?
|
|
55
|
+
page = page.next_page
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# @api private
|
|
60
|
+
#
|
|
61
|
+
# @param client [Sentdm::Internal::Transport::BaseClient]
|
|
62
|
+
# @param req [Hash{Symbol=>Object}]
|
|
63
|
+
# @param headers [Hash{String=>String}]
|
|
64
|
+
# @param page_data [Hash{Symbol=>Object}]
|
|
65
|
+
def initialize(client:, req:, headers:, page_data:)
|
|
66
|
+
super
|
|
67
|
+
|
|
68
|
+
case page_data
|
|
69
|
+
in {data: Hash | nil => data}
|
|
70
|
+
if (templates = data[:templates]).is_a?(Array)
|
|
71
|
+
data = {**data, templates: templates.map { Sentdm::Internal::Type::Converter.coerce(@model, _1) }}
|
|
72
|
+
end
|
|
73
|
+
@data = Sentdm::Internal::Type::Converter.coerce(Sentdm::Internal::TemplatesPage::Data, data)
|
|
74
|
+
else
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# @api private
|
|
79
|
+
#
|
|
80
|
+
# @return [String]
|
|
81
|
+
def inspect
|
|
82
|
+
model = Sentdm::Internal::Type::Converter.inspect(@model, depth: 1)
|
|
83
|
+
|
|
84
|
+
"#<#{self.class}[#{model}]:0x#{object_id.to_s(16)}>"
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
class Data < Sentdm::Internal::Type::BaseModel
|
|
88
|
+
# @!attribute pagination
|
|
89
|
+
#
|
|
90
|
+
# @return [Data::Pagination, nil]
|
|
91
|
+
optional :pagination, -> { Data::Pagination }
|
|
92
|
+
|
|
93
|
+
# @!attribute templates
|
|
94
|
+
#
|
|
95
|
+
# @return [Array<Object>, nil]
|
|
96
|
+
optional :templates, Sentdm::Internal::Type::ArrayOf[Sentdm::Internal::Type::Unknown]
|
|
97
|
+
|
|
98
|
+
# @!method initialize(pagination: nil, templates: nil)
|
|
99
|
+
# @param pagination [Data::Pagination]
|
|
100
|
+
# @param templates [Array<Object>]
|
|
101
|
+
|
|
102
|
+
# @see Data#pagination
|
|
103
|
+
class Pagination < Sentdm::Internal::Type::BaseModel
|
|
104
|
+
# @!attribute has_more
|
|
105
|
+
#
|
|
106
|
+
# @return [Boolean, nil]
|
|
107
|
+
optional :has_more, Sentdm::Internal::Type::Boolean
|
|
108
|
+
|
|
109
|
+
# @!method initialize(has_more: nil)
|
|
110
|
+
# @param has_more [Boolean]
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
end
|
|
@@ -438,11 +438,11 @@ module Sentdm
|
|
|
438
438
|
# @return [Hash{Symbol=>Object}]
|
|
439
439
|
#
|
|
440
440
|
# @example
|
|
441
|
-
# # `
|
|
442
|
-
#
|
|
443
|
-
#
|
|
444
|
-
#
|
|
445
|
-
#
|
|
441
|
+
# # `api_meta` is a `Sentdm::APIMeta`
|
|
442
|
+
# api_meta => {
|
|
443
|
+
# request_id: request_id,
|
|
444
|
+
# timestamp: timestamp,
|
|
445
|
+
# version: version
|
|
446
446
|
# }
|
|
447
447
|
def deconstruct_keys(keys)
|
|
448
448
|
(keys || self.class.known_fields.keys)
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Sentdm
|
|
4
|
+
module Internal
|
|
5
|
+
# @generic Elem
|
|
6
|
+
#
|
|
7
|
+
# @example
|
|
8
|
+
# if webhook_events_page.has_next?
|
|
9
|
+
# webhook_events_page = webhook_events_page.next_page
|
|
10
|
+
# end
|
|
11
|
+
#
|
|
12
|
+
# @example
|
|
13
|
+
# webhook_events_page.auto_paging_each do |webhook|
|
|
14
|
+
# puts(webhook)
|
|
15
|
+
# end
|
|
16
|
+
class WebhookEventsPage
|
|
17
|
+
include Sentdm::Internal::Type::BasePage
|
|
18
|
+
|
|
19
|
+
# @return [Data]
|
|
20
|
+
attr_accessor :data
|
|
21
|
+
|
|
22
|
+
# @return [Boolean]
|
|
23
|
+
def next_page?
|
|
24
|
+
data&.pagination&.has_more
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# @raise [Sentdm::HTTP::Error]
|
|
28
|
+
# @return [self]
|
|
29
|
+
def next_page
|
|
30
|
+
unless next_page?
|
|
31
|
+
message = "No more pages available. Please check #next_page? before calling ##{__method__}"
|
|
32
|
+
raise RuntimeError.new(message)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
req = Sentdm::Internal::Util.deep_merge(
|
|
36
|
+
@req,
|
|
37
|
+
{query: {page: @req.fetch(:query).fetch(:page, 1).to_i.succ}}
|
|
38
|
+
)
|
|
39
|
+
@client.request(req)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# @param blk [Proc]
|
|
43
|
+
#
|
|
44
|
+
# @yieldparam [generic<Elem>]
|
|
45
|
+
def auto_paging_each(&blk)
|
|
46
|
+
unless block_given?
|
|
47
|
+
raise ArgumentError.new("A block must be given to ##{__method__}")
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
page = self
|
|
51
|
+
loop do
|
|
52
|
+
page.data&.events&.each(&blk)
|
|
53
|
+
|
|
54
|
+
break unless page.next_page?
|
|
55
|
+
page = page.next_page
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# @api private
|
|
60
|
+
#
|
|
61
|
+
# @param client [Sentdm::Internal::Transport::BaseClient]
|
|
62
|
+
# @param req [Hash{Symbol=>Object}]
|
|
63
|
+
# @param headers [Hash{String=>String}]
|
|
64
|
+
# @param page_data [Hash{Symbol=>Object}]
|
|
65
|
+
def initialize(client:, req:, headers:, page_data:)
|
|
66
|
+
super
|
|
67
|
+
|
|
68
|
+
case page_data
|
|
69
|
+
in {data: Hash | nil => data}
|
|
70
|
+
if (events = data[:events]).is_a?(Array)
|
|
71
|
+
data = {**data, events: events.map { Sentdm::Internal::Type::Converter.coerce(@model, _1) }}
|
|
72
|
+
end
|
|
73
|
+
@data = Sentdm::Internal::Type::Converter.coerce(Sentdm::Internal::WebhookEventsPage::Data, data)
|
|
74
|
+
else
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# @api private
|
|
79
|
+
#
|
|
80
|
+
# @return [String]
|
|
81
|
+
def inspect
|
|
82
|
+
model = Sentdm::Internal::Type::Converter.inspect(@model, depth: 1)
|
|
83
|
+
|
|
84
|
+
"#<#{self.class}[#{model}]:0x#{object_id.to_s(16)}>"
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
class Data < Sentdm::Internal::Type::BaseModel
|
|
88
|
+
# @!attribute events
|
|
89
|
+
#
|
|
90
|
+
# @return [Array<Object>, nil]
|
|
91
|
+
optional :events, Sentdm::Internal::Type::ArrayOf[Sentdm::Internal::Type::Unknown]
|
|
92
|
+
|
|
93
|
+
# @!attribute pagination
|
|
94
|
+
#
|
|
95
|
+
# @return [Data::Pagination, nil]
|
|
96
|
+
optional :pagination, -> { Data::Pagination }
|
|
97
|
+
|
|
98
|
+
# @!method initialize(events: nil, pagination: nil)
|
|
99
|
+
# @param events [Array<Object>]
|
|
100
|
+
# @param pagination [Data::Pagination]
|
|
101
|
+
|
|
102
|
+
# @see Data#pagination
|
|
103
|
+
class Pagination < Sentdm::Internal::Type::BaseModel
|
|
104
|
+
# @!attribute has_more
|
|
105
|
+
#
|
|
106
|
+
# @return [Boolean, nil]
|
|
107
|
+
optional :has_more, Sentdm::Internal::Type::Boolean
|
|
108
|
+
|
|
109
|
+
# @!method initialize(has_more: nil)
|
|
110
|
+
# @param has_more [Boolean]
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
end
|