sentdm 0.45.0 → 0.47.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 +22 -0
- data/README.md +11 -11
- data/lib/sentdm/client.rb +66 -0
- data/lib/sentdm/internal/sender_profiles_page.rb +140 -0
- data/lib/sentdm/internal/type/enum.rb +11 -11
- data/lib/sentdm/models/account.rb +173 -0
- data/lib/sentdm/models/account_channels.rb +39 -0
- data/lib/sentdm/models/account_profile.rb +86 -0
- data/lib/sentdm/models/account_rcs_channel.rb +26 -0
- data/lib/sentdm/models/account_sms_channel.rb +26 -0
- data/lib/sentdm/models/account_whatsapp_channel.rb +35 -0
- data/lib/sentdm/models/api_response_of_account.rb +48 -0
- data/lib/sentdm/models/api_response_of_cancelled_message.rb +43 -0
- data/lib/sentdm/models/api_response_of_channels_state.rb +48 -0
- data/lib/sentdm/models/api_response_of_compliance_requirements.rb +47 -0
- data/lib/sentdm/models/api_response_of_contacts_list.rb +42 -0
- data/lib/sentdm/models/api_response_of_message.rb +51 -0
- data/lib/sentdm/models/api_response_of_message_activities.rb +43 -0
- data/lib/sentdm/models/api_response_of_number_lookup_result.rb +43 -0
- data/lib/sentdm/models/api_response_of_profile_completion_accepted.rb +47 -0
- data/lib/sentdm/models/api_response_of_profile_completion_result.rb +47 -0
- data/lib/sentdm/models/api_response_of_profiles_list.rb +43 -0
- data/lib/sentdm/models/api_response_of_sender_profile.rb +54 -0
- data/lib/sentdm/models/api_response_of_sender_profiles_list.rb +42 -0
- data/lib/sentdm/models/api_response_of_templates_list.rb +42 -0
- data/lib/sentdm/models/api_response_of_users_list.rb +43 -0
- data/lib/sentdm/models/api_response_of_webhook_event_types_list.rb +43 -0
- data/lib/sentdm/models/api_response_of_webhook_events_list.rb +42 -0
- data/lib/sentdm/models/{webhook_rotate_secret_response.rb → api_response_of_webhook_secret.rb} +4 -17
- data/lib/sentdm/models/{webhook_test_response.rb → api_response_of_webhook_test.rb} +4 -23
- data/lib/sentdm/models/api_response_of_webhooks_list.rb +42 -0
- data/lib/sentdm/models/billing_contact.rb +35 -0
- data/lib/sentdm/models/brand_business.rb +96 -0
- data/lib/sentdm/models/brand_business_info.rb +3 -20
- data/lib/sentdm/models/brand_compliance.rb +75 -0
- data/lib/sentdm/models/brand_contact.rb +56 -0
- data/lib/sentdm/models/brand_with_kyc.rb +129 -0
- data/lib/sentdm/models/cancelled_message.rb +28 -0
- data/lib/sentdm/models/channel_event_payload.rb +3 -114
- data/lib/sentdm/models/channel_list_params.rb +20 -0
- data/lib/sentdm/models/channel_score.rb +35 -0
- data/lib/sentdm/models/channels/api_response_of_list_of_sms_market.rb +45 -0
- data/lib/sentdm/models/channels/api_response_of_rcs_agent.rb +60 -0
- data/lib/sentdm/models/channels/api_response_of_sms_market.rb +54 -0
- data/lib/sentdm/models/channels/api_response_of_whatsapp_channel.rb +47 -0
- data/lib/sentdm/models/channels/market_compliance.rb +409 -0
- data/lib/sentdm/models/channels/rc_create_params.rb +260 -0
- data/lib/sentdm/models/channels/rcs_address.rb +43 -0
- data/lib/sentdm/models/channels/rcs_agent.rb +278 -0
- data/lib/sentdm/models/channels/sms_create_params.rb +173 -0
- data/lib/sentdm/models/channels/sms_list_params.rb +22 -0
- data/lib/sentdm/models/channels/sms_market.rb +148 -0
- data/lib/sentdm/models/channels/sms_number.rb +52 -0
- data/lib/sentdm/models/channels/sms_number_request.rb +33 -0
- data/lib/sentdm/models/channels/sms_retrieve_params.rb +34 -0
- data/lib/sentdm/models/channels/sms_update_params.rb +64 -0
- data/lib/sentdm/models/channels/supplied_campaign.rb +10 -0
- data/lib/sentdm/models/channels/supplied_compliance.rb +115 -0
- data/lib/sentdm/models/channels/supplied_document.rb +35 -0
- data/lib/sentdm/models/channels/whatsapp_channel.rb +109 -0
- data/lib/sentdm/models/channels/whatsapp_create_params.rb +65 -0
- data/lib/sentdm/models/channels_state.rb +89 -0
- data/lib/sentdm/models/compliance_attachment_template.rb +36 -0
- data/lib/sentdm/models/compliance_requirement.rb +112 -0
- data/lib/sentdm/models/compliance_requirements.rb +98 -0
- data/lib/sentdm/models/compliance_retrieve_requirements_params.rb +52 -0
- data/lib/sentdm/models/compliance_setup_step.rb +78 -0
- data/lib/sentdm/models/contact_message_summary.rb +3 -34
- data/lib/sentdm/models/contacts_list.rb +26 -0
- data/lib/sentdm/models/conversation_messages_list.rb +3 -430
- data/lib/sentdm/models/entity_type.rb +18 -0
- data/lib/sentdm/models/inbound_media.rb +53 -0
- data/lib/sentdm/models/inbound_message_event_payload.rb +3 -53
- data/lib/sentdm/models/link_event.rb +79 -0
- data/lib/sentdm/models/link_event_payload.rb +211 -0
- data/lib/sentdm/models/message.rb +168 -0
- data/lib/sentdm/models/message_activities.rb +34 -0
- data/lib/sentdm/models/message_activity.rb +105 -0
- data/lib/sentdm/models/message_body.rb +79 -0
- data/lib/sentdm/models/message_button.rb +33 -0
- data/lib/sentdm/models/message_cancel_params.rb +32 -0
- data/lib/sentdm/models/message_channel_options.rb +43 -0
- data/lib/sentdm/models/message_header_media.rb +31 -0
- data/lib/sentdm/models/message_media.rb +74 -0
- data/lib/sentdm/models/message_recipient.rb +46 -0
- data/lib/sentdm/models/message_send_params.rb +6 -90
- data/lib/sentdm/models/message_send_response.rb +3 -95
- data/lib/sentdm/models/message_send_result.rb +55 -0
- data/lib/sentdm/models/message_status_event.rb +54 -0
- data/lib/sentdm/models/mms_market.rb +48 -0
- data/lib/sentdm/models/number_lookup_result.rb +63 -0
- data/lib/sentdm/models/pagination_cursors.rb +27 -0
- data/lib/sentdm/models/pagination_meta.rb +3 -27
- data/lib/sentdm/models/profile_completion_accepted.rb +20 -0
- data/lib/sentdm/models/profile_completion_result.rb +31 -0
- data/lib/sentdm/models/profile_detail.rb +6 -408
- data/lib/sentdm/models/profiles/brand_campaign.rb +14 -16
- data/lib/sentdm/models/profiles_list.rb +26 -0
- data/lib/sentdm/models/sender_profile.rb +138 -0
- data/lib/sentdm/models/sender_profile_billing.rb +21 -0
- data/lib/sentdm/models/sender_profile_billing_request.rb +33 -0
- data/lib/sentdm/models/sender_profile_channels.rb +90 -0
- data/lib/sentdm/models/sender_profile_create_params.rb +116 -0
- data/lib/sentdm/models/sender_profile_delete_params.rb +20 -0
- data/lib/sentdm/models/sender_profile_list_params.rb +30 -0
- data/lib/sentdm/models/sender_profile_rcs.rb +209 -0
- data/lib/sentdm/models/sender_profile_retrieve_params.rb +20 -0
- data/lib/sentdm/models/sender_profile_sms.rb +106 -0
- data/lib/sentdm/models/sender_profile_update_params.rb +71 -0
- data/lib/sentdm/models/sender_profile_whatsapp.rb +61 -0
- data/lib/sentdm/models/sender_profiles_list.rb +26 -0
- data/lib/sentdm/models/tcr_brand_identity_status.rb +17 -0
- data/lib/sentdm/models/tcr_brand_status.rb +16 -0
- data/lib/sentdm/models/tcr_campaign_status.rb +16 -0
- data/lib/sentdm/models/template_body.rb +3 -70
- data/lib/sentdm/models/template_header.rb +3 -37
- data/lib/sentdm/models/template_header_location.rb +38 -0
- data/lib/sentdm/models/template_media_item.rb +34 -0
- data/lib/sentdm/models/template_mms_body_content.rb +49 -0
- data/lib/sentdm/models/template_ref.rb +51 -0
- data/lib/sentdm/models/template_variable.rb +3 -64
- data/lib/sentdm/models/template_variable_props.rb +65 -0
- data/lib/sentdm/models/templates_list.rb +26 -0
- data/lib/sentdm/models/users_list.rb +26 -0
- data/lib/sentdm/models/voice/call.rb +7 -57
- data/lib/sentdm/models/voice/call_leg.rb +58 -0
- data/lib/sentdm/models/webhook_create_params.rb +3 -25
- data/lib/sentdm/models/webhook_delivery.rb +160 -0
- data/lib/sentdm/models/webhook_event_types_list.rb +26 -0
- data/lib/sentdm/models/webhook_events_list.rb +26 -0
- data/lib/sentdm/models/webhook_response.rb +3 -28
- data/lib/sentdm/models/webhook_secret.rb +15 -0
- data/lib/sentdm/models/webhook_sender_profile.rb +29 -0
- data/lib/sentdm/models/webhook_sender_profile_config.rb +27 -0
- data/lib/sentdm/models/webhook_test.rb +21 -0
- data/lib/sentdm/models/webhook_update_params.rb +3 -25
- data/lib/sentdm/models/webhooks_list.rb +26 -0
- data/lib/sentdm/models.rb +188 -0
- data/lib/sentdm/resources/channels/rcs.rb +177 -0
- data/lib/sentdm/resources/channels/sms.rb +420 -0
- data/lib/sentdm/resources/channels/whatsapp.rb +106 -0
- data/lib/sentdm/resources/channels.rb +162 -0
- data/lib/sentdm/resources/compliance.rb +127 -0
- data/lib/sentdm/resources/conversations.rb +4 -4
- data/lib/sentdm/resources/me.rb +2 -2
- data/lib/sentdm/resources/messages.rb +71 -6
- data/lib/sentdm/resources/numbers.rb +2 -2
- data/lib/sentdm/resources/profiles/campaigns.rb +4 -1
- data/lib/sentdm/resources/profiles.rb +4 -4
- data/lib/sentdm/resources/sender_profiles.rb +465 -0
- data/lib/sentdm/resources/users.rb +2 -2
- data/lib/sentdm/resources/voice/calls/participants.rb +5 -5
- data/lib/sentdm/resources/webhooks.rb +10 -10
- data/lib/sentdm/version.rb +1 -1
- data/lib/sentdm.rb +121 -11
- data/rbi/sentdm/client.rbi +64 -0
- data/rbi/sentdm/internal/sender_profiles_page.rbi +122 -0
- data/rbi/sentdm/models/account.rbi +242 -0
- data/rbi/sentdm/models/account_channels.rbi +66 -0
- data/rbi/sentdm/models/account_profile.rbi +116 -0
- data/rbi/sentdm/models/account_rcs_channel.rbi +45 -0
- data/rbi/sentdm/models/account_sms_channel.rbi +45 -0
- data/rbi/sentdm/models/account_whatsapp_channel.rbi +58 -0
- data/rbi/sentdm/models/api_response_of_account.rbi +78 -0
- data/rbi/sentdm/models/{webhook_rotate_secret_response.rbi → api_response_of_cancelled_message.rbi} +6 -41
- data/rbi/sentdm/models/api_response_of_channels_state.rbi +78 -0
- data/rbi/sentdm/models/api_response_of_compliance_requirements.rbi +81 -0
- data/rbi/sentdm/models/api_response_of_contacts_list.rbi +74 -0
- data/rbi/sentdm/models/api_response_of_message.rbi +84 -0
- data/rbi/sentdm/models/api_response_of_message_activities.rbi +77 -0
- data/rbi/sentdm/models/{webhook_test_response.rbi → api_response_of_number_lookup_result.rbi} +9 -43
- data/rbi/sentdm/models/api_response_of_profile_completion_accepted.rbi +83 -0
- data/rbi/sentdm/models/{profile_complete_response.rbi → api_response_of_profile_completion_result.rbi} +6 -52
- data/rbi/sentdm/models/api_response_of_profiles_list.rbi +74 -0
- data/rbi/sentdm/models/api_response_of_sender_profile.rbi +90 -0
- data/rbi/sentdm/models/api_response_of_sender_profiles_list.rbi +77 -0
- data/rbi/sentdm/models/api_response_of_templates_list.rbi +74 -0
- data/rbi/sentdm/models/api_response_of_users_list.rbi +74 -0
- data/rbi/sentdm/models/api_response_of_webhook_event_types_list.rbi +79 -0
- data/rbi/sentdm/models/api_response_of_webhook_events_list.rbi +77 -0
- data/rbi/sentdm/models/api_response_of_webhook_secret.rbi +74 -0
- data/rbi/sentdm/models/api_response_of_webhook_test.rbi +74 -0
- data/rbi/sentdm/models/api_response_of_webhooks_list.rbi +74 -0
- data/rbi/sentdm/models/billing_contact.rbi +49 -0
- data/rbi/sentdm/models/brand_business.rbi +115 -0
- data/rbi/sentdm/models/brand_business_info.rbi +3 -49
- data/rbi/sentdm/models/brand_compliance.rbi +108 -0
- data/rbi/sentdm/models/brand_contact.rbi +78 -0
- data/rbi/sentdm/models/brand_with_kyc.rbi +167 -0
- data/rbi/sentdm/models/cancelled_message.rbi +37 -0
- data/rbi/sentdm/models/channel_event_payload.rbi +4 -204
- data/rbi/sentdm/models/channel_list_params.rbi +38 -0
- data/rbi/sentdm/models/channel_score.rbi +56 -0
- data/rbi/sentdm/models/channels/api_response_of_list_of_sms_market.rbi +76 -0
- data/rbi/sentdm/models/channels/api_response_of_rcs_agent.rbi +103 -0
- data/rbi/sentdm/models/channels/api_response_of_sms_market.rbi +93 -0
- data/rbi/sentdm/models/channels/api_response_of_whatsapp_channel.rbi +85 -0
- data/rbi/sentdm/models/channels/market_compliance.rbi +770 -0
- data/rbi/sentdm/models/channels/rc_create_params.rbi +397 -0
- data/rbi/sentdm/models/channels/rcs_address.rbi +62 -0
- data/rbi/sentdm/models/channels/rcs_agent.rbi +320 -0
- data/rbi/sentdm/models/channels/sms_create_params.rbi +291 -0
- data/rbi/sentdm/models/channels/sms_list_params.rbi +40 -0
- data/rbi/sentdm/models/channels/sms_market.rbi +235 -0
- data/rbi/sentdm/models/channels/sms_number.rbi +74 -0
- data/rbi/sentdm/models/channels/sms_number_request.rbi +48 -0
- data/rbi/sentdm/models/channels/sms_retrieve_params.rbi +56 -0
- data/rbi/sentdm/models/channels/sms_update_params.rbi +93 -0
- data/rbi/sentdm/models/channels/supplied_campaign.rbi +13 -0
- data/rbi/sentdm/models/channels/supplied_compliance.rbi +180 -0
- data/rbi/sentdm/models/channels/supplied_document.rbi +57 -0
- data/rbi/sentdm/models/channels/whatsapp_channel.rbi +172 -0
- data/rbi/sentdm/models/channels/whatsapp_create_params.rbi +104 -0
- data/rbi/sentdm/models/channels_state.rbi +151 -0
- data/rbi/sentdm/models/compliance_attachment_template.rbi +56 -0
- data/rbi/sentdm/models/compliance_requirement.rbi +149 -0
- data/rbi/sentdm/models/compliance_requirements.rbi +165 -0
- data/rbi/sentdm/models/compliance_retrieve_requirements_params.rbi +79 -0
- data/rbi/sentdm/models/compliance_setup_step.rbi +115 -0
- data/rbi/sentdm/models/contact_message_summary.rbi +4 -69
- data/rbi/sentdm/models/contacts_list.rbi +50 -0
- data/rbi/sentdm/models/conversation_messages_list.rbi +4 -669
- data/rbi/sentdm/models/entity_type.rbi +23 -0
- data/rbi/sentdm/models/inbound_media.rbi +76 -0
- data/rbi/sentdm/models/inbound_message_event_payload.rbi +3 -85
- data/rbi/sentdm/models/link_event.rbi +128 -0
- data/rbi/sentdm/models/link_event_payload.rbi +279 -0
- data/rbi/sentdm/models/message.rbi +214 -0
- data/rbi/sentdm/models/message_activities.rbi +63 -0
- data/rbi/sentdm/models/message_activity.rbi +145 -0
- data/rbi/sentdm/models/message_body.rbi +104 -0
- data/rbi/sentdm/models/message_button.rbi +52 -0
- data/rbi/sentdm/models/message_cancel_params.rbi +59 -0
- data/rbi/sentdm/models/message_channel_options.rbi +65 -0
- data/rbi/sentdm/models/message_header_media.rbi +44 -0
- data/rbi/sentdm/models/message_media.rbi +95 -0
- data/rbi/sentdm/models/message_recipient.rbi +70 -0
- data/rbi/sentdm/models/message_send_params.rbi +7 -155
- data/rbi/sentdm/models/message_send_response.rbi +4 -163
- data/rbi/sentdm/models/message_send_result.rbi +85 -0
- data/rbi/sentdm/models/message_status_event.rbi +70 -0
- data/rbi/sentdm/models/mms_market.rbi +66 -0
- data/rbi/sentdm/models/number_lookup_result.rbi +89 -0
- data/rbi/sentdm/models/pagination_cursors.rbi +42 -0
- data/rbi/sentdm/models/pagination_meta.rbi +4 -43
- data/rbi/sentdm/models/profile_completion_accepted.rbi +33 -0
- data/rbi/sentdm/models/profile_completion_result.rbi +43 -0
- data/rbi/sentdm/models/profile_detail.rbi +8 -621
- data/rbi/sentdm/models/profiles/brand_campaign.rbi +18 -45
- data/rbi/sentdm/models/profiles_list.rbi +50 -0
- data/rbi/sentdm/models/sender_profile.rbi +204 -0
- data/rbi/sentdm/models/sender_profile_billing.rbi +34 -0
- data/rbi/sentdm/models/sender_profile_billing_request.rbi +46 -0
- data/rbi/sentdm/models/sender_profile_channels.rbi +163 -0
- data/rbi/sentdm/models/sender_profile_create_params.rbi +190 -0
- data/rbi/sentdm/models/sender_profile_delete_params.rbi +35 -0
- data/rbi/sentdm/models/sender_profile_list_params.rbi +57 -0
- data/rbi/sentdm/models/sender_profile_rcs.rbi +211 -0
- data/rbi/sentdm/models/sender_profile_retrieve_params.rbi +35 -0
- data/rbi/sentdm/models/sender_profile_sms.rbi +156 -0
- data/rbi/sentdm/models/sender_profile_update_params.rbi +96 -0
- data/rbi/sentdm/models/sender_profile_whatsapp.rbi +83 -0
- data/rbi/sentdm/models/sender_profiles_list.rbi +54 -0
- data/rbi/sentdm/models/tcr_brand_identity_status.rbi +27 -0
- data/rbi/sentdm/models/tcr_brand_status.rbi +20 -0
- data/rbi/sentdm/models/tcr_campaign_status.rbi +23 -0
- data/rbi/sentdm/models/template_body.rbi +6 -114
- data/rbi/sentdm/models/template_header.rbi +4 -53
- data/rbi/sentdm/models/template_header_location.rbi +47 -0
- data/rbi/sentdm/models/template_media_item.rbi +51 -0
- data/rbi/sentdm/models/template_mms_body_content.rbi +73 -0
- data/rbi/sentdm/models/template_ref.rbi +79 -0
- data/rbi/sentdm/models/template_variable.rbi +4 -80
- data/rbi/sentdm/models/template_variable_props.rbi +81 -0
- data/rbi/sentdm/models/templates_list.rbi +50 -0
- data/rbi/sentdm/models/users_list.rbi +50 -0
- data/rbi/sentdm/models/voice/call.rbi +11 -92
- data/rbi/sentdm/models/voice/call_leg.rbi +90 -0
- data/rbi/sentdm/models/webhook_create_params.rbi +4 -49
- data/rbi/sentdm/models/webhook_delivery.rbi +211 -0
- data/rbi/sentdm/models/webhook_event_types_list.rbi +54 -0
- data/rbi/sentdm/models/webhook_events_list.rbi +52 -0
- data/rbi/sentdm/models/webhook_response.rbi +4 -50
- data/rbi/sentdm/models/webhook_secret.rbi +24 -0
- data/rbi/sentdm/models/webhook_sender_profile.rbi +46 -0
- data/rbi/sentdm/models/webhook_sender_profile_config.rbi +44 -0
- data/rbi/sentdm/models/webhook_test.rbi +32 -0
- data/rbi/sentdm/models/webhook_update_params.rbi +4 -49
- data/rbi/sentdm/models/webhooks_list.rbi +50 -0
- data/rbi/sentdm/models.rbi +197 -0
- data/rbi/sentdm/resources/channels/rcs.rbi +208 -0
- data/rbi/sentdm/resources/channels/sms.rbi +440 -0
- data/rbi/sentdm/resources/channels/whatsapp.rbi +108 -0
- data/rbi/sentdm/resources/channels.rbi +149 -0
- data/rbi/sentdm/resources/compliance.rbi +121 -0
- data/rbi/sentdm/resources/conversations.rbi +2 -10
- data/rbi/sentdm/resources/me.rbi +1 -1
- data/rbi/sentdm/resources/messages.rbi +64 -7
- data/rbi/sentdm/resources/numbers.rbi +1 -1
- data/rbi/sentdm/resources/profiles/campaigns.rbi +4 -1
- data/rbi/sentdm/resources/profiles.rbi +2 -2
- data/rbi/sentdm/resources/sender_profiles.rbi +463 -0
- data/rbi/sentdm/resources/users.rbi +1 -1
- data/rbi/sentdm/resources/voice/calls/participants.rbi +5 -5
- data/rbi/sentdm/resources/webhooks.rbi +6 -12
- data/sig/sentdm/client.rbs +4 -0
- data/sig/sentdm/internal/sender_profiles_page.rbs +80 -0
- data/sig/sentdm/models/account.rbs +111 -0
- data/sig/sentdm/models/account_channels.rbs +38 -0
- data/sig/sentdm/models/account_profile.rbs +68 -0
- data/sig/sentdm/models/account_rcs_channel.rbs +17 -0
- data/sig/sentdm/models/account_sms_channel.rbs +17 -0
- data/sig/sentdm/models/account_whatsapp_channel.rbs +28 -0
- data/sig/sentdm/models/api_response_of_account.rbs +39 -0
- data/sig/sentdm/models/api_response_of_cancelled_message.rbs +39 -0
- data/sig/sentdm/models/api_response_of_channels_state.rbs +39 -0
- data/sig/sentdm/models/api_response_of_compliance_requirements.rbs +39 -0
- data/sig/sentdm/models/api_response_of_contacts_list.rbs +39 -0
- data/sig/sentdm/models/api_response_of_message.rbs +39 -0
- data/sig/sentdm/models/api_response_of_message_activities.rbs +39 -0
- data/sig/sentdm/models/api_response_of_number_lookup_result.rbs +39 -0
- data/sig/sentdm/models/api_response_of_profile_completion_accepted.rbs +39 -0
- data/sig/sentdm/models/api_response_of_profile_completion_result.rbs +39 -0
- data/sig/sentdm/models/api_response_of_profiles_list.rbs +39 -0
- data/sig/sentdm/models/api_response_of_sender_profile.rbs +39 -0
- data/sig/sentdm/models/api_response_of_sender_profiles_list.rbs +39 -0
- data/sig/sentdm/models/api_response_of_templates_list.rbs +39 -0
- data/sig/sentdm/models/api_response_of_users_list.rbs +39 -0
- data/sig/sentdm/models/api_response_of_webhook_event_types_list.rbs +39 -0
- data/sig/sentdm/models/api_response_of_webhook_events_list.rbs +39 -0
- data/sig/sentdm/models/api_response_of_webhook_secret.rbs +39 -0
- data/sig/sentdm/models/api_response_of_webhook_test.rbs +39 -0
- data/sig/sentdm/models/api_response_of_webhooks_list.rbs +39 -0
- data/sig/sentdm/models/billing_contact.rbs +30 -0
- data/sig/sentdm/models/brand_business.rbs +70 -0
- data/sig/sentdm/models/brand_business_info.rbs +4 -23
- data/sig/sentdm/models/brand_compliance.rbs +56 -0
- data/sig/sentdm/models/brand_contact.rbs +47 -0
- data/sig/sentdm/models/brand_with_kyc.rbs +93 -0
- data/sig/sentdm/models/cancelled_message.rbs +15 -0
- data/sig/sentdm/models/channel_event_payload.rbs +4 -56
- data/sig/sentdm/models/channel_list_params.rbs +25 -0
- data/sig/sentdm/models/channel_score.rbs +32 -0
- data/sig/sentdm/models/channels/api_response_of_list_of_sms_market.rbs +41 -0
- data/sig/sentdm/models/channels/api_response_of_rcs_agent.rbs +41 -0
- data/sig/sentdm/models/channels/api_response_of_sms_market.rbs +41 -0
- data/sig/sentdm/models/channels/api_response_of_whatsapp_channel.rbs +43 -0
- data/sig/sentdm/models/channels/market_compliance.rbs +338 -0
- data/sig/sentdm/models/channels/rc_create_params.rbs +242 -0
- data/sig/sentdm/models/channels/rcs_address.rbs +42 -0
- data/sig/sentdm/models/channels/rcs_agent.rbs +181 -0
- data/sig/sentdm/models/channels/sms_create_params.rbs +116 -0
- data/sig/sentdm/models/channels/sms_list_params.rbs +27 -0
- data/sig/sentdm/models/channels/sms_market.rbs +80 -0
- data/sig/sentdm/models/channels/sms_number.rbs +37 -0
- data/sig/sentdm/models/channels/sms_number_request.rbs +17 -0
- data/sig/sentdm/models/channels/sms_retrieve_params.rbs +36 -0
- data/sig/sentdm/models/channels/sms_update_params.rbs +63 -0
- data/sig/sentdm/models/channels/supplied_campaign.rbs +9 -0
- data/sig/sentdm/models/channels/supplied_compliance.rbs +37 -0
- data/sig/sentdm/models/channels/supplied_document.rbs +30 -0
- data/sig/sentdm/models/channels/whatsapp_channel.rbs +78 -0
- data/sig/sentdm/models/channels/whatsapp_create_params.rbs +56 -0
- data/sig/sentdm/models/channels_state.rbs +55 -0
- data/sig/sentdm/models/compliance_attachment_template.rbs +26 -0
- data/sig/sentdm/models/compliance_requirement.rbs +76 -0
- data/sig/sentdm/models/compliance_requirements.rbs +66 -0
- data/sig/sentdm/models/compliance_retrieve_requirements_params.rbs +43 -0
- data/sig/sentdm/models/compliance_setup_step.rbs +62 -0
- data/sig/sentdm/models/contact_message_summary.rbs +6 -35
- data/sig/sentdm/models/contacts_list.rbs +31 -0
- data/sig/sentdm/models/conversation_messages_list.rbs +5 -312
- data/sig/sentdm/models/entity_type.rbs +22 -0
- data/sig/sentdm/models/inbound_media.rbs +35 -0
- data/sig/sentdm/models/inbound_message_event_payload.rbs +4 -36
- data/sig/sentdm/models/link_event.rbs +44 -0
- data/sig/sentdm/models/link_event_payload.rbs +106 -0
- data/sig/sentdm/models/message.rbs +130 -0
- data/sig/sentdm/models/message_activities.rbs +38 -0
- data/sig/sentdm/models/message_activity.rbs +66 -0
- data/sig/sentdm/models/message_body.rbs +52 -0
- data/sig/sentdm/models/message_button.rbs +34 -0
- data/sig/sentdm/models/message_cancel_params.rbs +38 -0
- data/sig/sentdm/models/message_channel_options.rbs +26 -0
- data/sig/sentdm/models/message_header_media.rbs +19 -0
- data/sig/sentdm/models/message_media.rbs +40 -0
- data/sig/sentdm/models/message_recipient.rbs +34 -0
- data/sig/sentdm/models/message_send_params.rbs +8 -54
- data/sig/sentdm/models/message_send_response.rbs +4 -77
- data/sig/sentdm/models/message_send_result.rbs +45 -0
- data/sig/sentdm/models/message_status_event.rbs +40 -0
- data/sig/sentdm/models/mms_market.rbs +35 -0
- data/sig/sentdm/models/number_lookup_result.rbs +64 -0
- data/sig/sentdm/models/pagination_cursors.rbs +15 -0
- data/sig/sentdm/models/pagination_meta.rbs +4 -16
- data/sig/sentdm/models/profile_completion_accepted.rbs +15 -0
- data/sig/sentdm/models/profile_completion_result.rbs +19 -0
- data/sig/sentdm/models/profile_detail.rbs +8 -315
- data/sig/sentdm/models/profiles/brand_campaign.rbs +11 -16
- data/sig/sentdm/models/profiles_list.rbs +31 -0
- data/sig/sentdm/models/sender_profile.rbs +76 -0
- data/sig/sentdm/models/sender_profile_billing.rbs +15 -0
- data/sig/sentdm/models/sender_profile_billing_request.rbs +15 -0
- data/sig/sentdm/models/sender_profile_channels.rbs +30 -0
- data/sig/sentdm/models/sender_profile_create_params.rbs +78 -0
- data/sig/sentdm/models/sender_profile_delete_params.rbs +20 -0
- data/sig/sentdm/models/sender_profile_list_params.rbs +32 -0
- data/sig/sentdm/models/sender_profile_rcs.rbs +150 -0
- data/sig/sentdm/models/sender_profile_retrieve_params.rbs +20 -0
- data/sig/sentdm/models/sender_profile_sms.rbs +40 -0
- data/sig/sentdm/models/sender_profile_update_params.rbs +62 -0
- data/sig/sentdm/models/sender_profile_whatsapp.rbs +16 -0
- data/sig/sentdm/models/sender_profiles_list.rbs +31 -0
- data/sig/sentdm/models/tcr_brand_identity_status.rbs +17 -0
- data/sig/sentdm/models/tcr_brand_status.rbs +15 -0
- data/sig/sentdm/models/tcr_campaign_status.rbs +15 -0
- data/sig/sentdm/models/template_body.rbs +4 -43
- data/sig/sentdm/models/template_header.rbs +4 -31
- data/sig/sentdm/models/template_header_location.rbs +30 -0
- data/sig/sentdm/models/template_media_item.rbs +17 -0
- data/sig/sentdm/models/template_mms_body_content.rbs +28 -0
- data/sig/sentdm/models/template_ref.rbs +26 -0
- data/sig/sentdm/models/template_variable.rbs +4 -51
- data/sig/sentdm/models/template_variable_props.rbs +50 -0
- data/sig/sentdm/models/templates_list.rbs +29 -0
- data/sig/sentdm/models/users_list.rbs +31 -0
- data/sig/sentdm/models/voice/call.rbs +4 -49
- data/sig/sentdm/models/voice/call_leg.rbs +50 -0
- data/sig/sentdm/models/webhook_create_params.rbs +4 -28
- data/sig/sentdm/models/webhook_delivery.rbs +99 -0
- data/sig/sentdm/models/webhook_event_types_list.rbs +31 -0
- data/sig/sentdm/models/webhook_events_list.rbs +31 -0
- data/sig/sentdm/models/webhook_response.rbs +4 -28
- data/sig/sentdm/models/webhook_secret.rbs +15 -0
- data/sig/sentdm/models/webhook_sender_profile.rbs +27 -0
- data/sig/sentdm/models/webhook_sender_profile_config.rbs +27 -0
- data/sig/sentdm/models/webhook_test.rbs +19 -0
- data/sig/sentdm/models/webhook_update_params.rbs +4 -28
- data/sig/sentdm/models/webhooks_list.rbs +31 -0
- data/sig/sentdm/models.rbs +188 -0
- data/sig/sentdm/resources/channels/rcs.rbs +41 -0
- data/sig/sentdm/resources/channels/sms.rbs +44 -0
- data/sig/sentdm/resources/channels/whatsapp.rbs +18 -0
- data/sig/sentdm/resources/channels.rbs +11 -0
- data/sig/sentdm/resources/compliance.rbs +15 -0
- data/sig/sentdm/resources/conversations.rbs +2 -2
- data/sig/sentdm/resources/me.rbs +1 -1
- data/sig/sentdm/resources/messages.rbs +12 -4
- data/sig/sentdm/resources/numbers.rbs +1 -1
- data/sig/sentdm/resources/profiles.rbs +2 -2
- data/sig/sentdm/resources/sender_profiles.rbs +44 -0
- data/sig/sentdm/resources/users.rbs +1 -1
- data/sig/sentdm/resources/webhooks.rbs +6 -6
- metadata +365 -35
- data/lib/sentdm/models/me_retrieve_response.rb +0 -409
- data/lib/sentdm/models/message_retrieve_activities_response.rb +0 -175
- data/lib/sentdm/models/message_retrieve_status_response.rb +0 -477
- data/lib/sentdm/models/number_lookup_response.rb +0 -104
- data/lib/sentdm/models/profile_complete_response.rb +0 -74
- data/lib/sentdm/models/profile_list_response.rb +0 -65
- data/lib/sentdm/models/user_list_response.rb +0 -65
- data/lib/sentdm/models/webhook_list_event_types_response.rb +0 -65
- data/lib/sentdm/models/webhook_list_events_response.rb +0 -445
- data/rbi/sentdm/models/me_retrieve_response.rbi +0 -705
- data/rbi/sentdm/models/message_retrieve_activities_response.rbi +0 -319
- data/rbi/sentdm/models/message_retrieve_status_response.rbi +0 -765
- data/rbi/sentdm/models/number_lookup_response.rbi +0 -166
- data/rbi/sentdm/models/profile_list_response.rbi +0 -128
- data/rbi/sentdm/models/user_list_response.rbi +0 -128
- data/rbi/sentdm/models/webhook_list_event_types_response.rbi +0 -142
- data/rbi/sentdm/models/webhook_list_events_response.rbi +0 -647
- data/sig/sentdm/models/me_retrieve_response.rbs +0 -306
- data/sig/sentdm/models/message_retrieve_activities_response.rbs +0 -137
- data/sig/sentdm/models/message_retrieve_status_response.rbs +0 -341
- data/sig/sentdm/models/number_lookup_response.rbs +0 -100
- data/sig/sentdm/models/profile_complete_response.rbs +0 -55
- data/sig/sentdm/models/profile_list_response.rbs +0 -67
- data/sig/sentdm/models/user_list_response.rbs +0 -67
- data/sig/sentdm/models/webhook_list_event_types_response.rbs +0 -67
- data/sig/sentdm/models/webhook_list_events_response.rbs +0 -243
- data/sig/sentdm/models/webhook_rotate_secret_response.rbs +0 -51
- data/sig/sentdm/models/webhook_test_response.rbs +0 -55
|
@@ -0,0 +1,463 @@
|
|
|
1
|
+
# typed: strong
|
|
2
|
+
|
|
3
|
+
module Sentdm
|
|
4
|
+
module Resources
|
|
5
|
+
# Your customers, each sending as itself.
|
|
6
|
+
#
|
|
7
|
+
# A sender profile is a tenant of yours: it has its own API key, its own balance,
|
|
8
|
+
# and can have its own identity and senders — so your customers send under their
|
|
9
|
+
# own brand and never see Sent. Depth is one; a profile cannot create profiles.
|
|
10
|
+
#
|
|
11
|
+
# **Everything is inherited unless the profile owns it.** `{ "name": "…" }` alone
|
|
12
|
+
# gives you a usable profile immediately, running on your identity, your inbox and
|
|
13
|
+
# your billing. Supply a capability's fields and the profile owns that one
|
|
14
|
+
# instead.
|
|
15
|
+
#
|
|
16
|
+
# **A sender is the exception.** A brand and a campaign can be inherited; a number
|
|
17
|
+
# cannot. A profile either has a sender of its own or reaches only the countries
|
|
18
|
+
# Sent runs a shared route for, and the US is not one of them.
|
|
19
|
+
#
|
|
20
|
+
# To act for a profile on any other resource, send `x-profile-id` with your
|
|
21
|
+
# organization key rather than looking for a parallel set of endpoints.
|
|
22
|
+
class SenderProfiles
|
|
23
|
+
# Creates a sender profile under your organization. A profile is a customer of
|
|
24
|
+
# yours: it sends under its own or your identity, and your customers never see
|
|
25
|
+
# Sent.
|
|
26
|
+
#
|
|
27
|
+
# ## The minimum
|
|
28
|
+
#
|
|
29
|
+
# `{ "name": "Example Retail", "short_name": "Example" }`. `short_name` is the SMS
|
|
30
|
+
# sender id and is required. Inbox and opt-out list come from your organization.
|
|
31
|
+
# Its brand and campaign are your organization's only where `compliance` says
|
|
32
|
+
# `{ "inherit": true }` — omitted, the profile has neither. Billing defaults to
|
|
33
|
+
# the profile's own balance, with your organization covering what it cannot.
|
|
34
|
+
#
|
|
35
|
+
# **A sender is not one of them.** The brand and the campaign can be inherited; a
|
|
36
|
+
# number cannot. A profile either has a sender of its own — `channels.sms` — or it
|
|
37
|
+
# has none and reaches only the countries Sent runs a shared route for. The US has
|
|
38
|
+
# none: without a `TEN_DLC` number of its own, a profile's SMS to US numbers ends
|
|
39
|
+
# as `FAILED` with `DELIVERY_003`.
|
|
40
|
+
#
|
|
41
|
+
# ## Saying what a profile owns
|
|
42
|
+
#
|
|
43
|
+
# Every capability is one of three things, and there is no flag per state:
|
|
44
|
+
#
|
|
45
|
+
# - **Its own** — supply the capability's fields. Data is what owning looks like.
|
|
46
|
+
# - **The organization's** — `{ "inherit": true }`, with nothing else.
|
|
47
|
+
# - **None** — omit the block.
|
|
48
|
+
#
|
|
49
|
+
# There is no `"inherit": false` that also carries no data. A second way to say
|
|
50
|
+
# the same thing would let a request contradict itself.
|
|
51
|
+
#
|
|
52
|
+
# Inheriting needs no id. A customer has exactly one brand, so `brand` resolves
|
|
53
|
+
# without one.
|
|
54
|
+
#
|
|
55
|
+
# **The campaign has no block of its own.** It is only ever a registration, and
|
|
56
|
+
# every field of one is something a specific market demands — so it lives in
|
|
57
|
+
# `compliance`, alongside the rest of what that market asks for, and it says whose
|
|
58
|
+
# it is there too: `"compliance": { "campaign": { "inherit": true } }` runs the
|
|
59
|
+
# profile on your organization's campaign and brand, and stops this call asking
|
|
60
|
+
# for any campaign field. `"brand": { "inherit": true }` alone inherits the brand
|
|
61
|
+
# only: the campaign is then the profile's own. Inheriting takes _all_ of your
|
|
62
|
+
# organization's, because inheritance resolves an owner rather than a single row.
|
|
63
|
+
#
|
|
64
|
+
# A profile with a `brand` of its own **cannot** inherit the campaign, and asking
|
|
65
|
+
# is refused with `400`: a campaign is filed against a brand registration, and
|
|
66
|
+
# your organization's campaign is filed against your organization's brand rather
|
|
67
|
+
# than this profile's. Inherit both, own both, or inherit the brand and own the
|
|
68
|
+
# campaign.
|
|
69
|
+
#
|
|
70
|
+
# `channels.sms` is the market the profile starts in — one `country` and
|
|
71
|
+
# `number_type`. It decides what else this call asks for: the compliance catalog
|
|
72
|
+
# is keyed on that pair, and it determines which fields `brand` accepts and what
|
|
73
|
+
# `compliance` answers for.
|
|
74
|
+
#
|
|
75
|
+
# **Several numbers in that market**: `channels.sms.numbers` lists them, one entry
|
|
76
|
+
# per area code, e.g. `[{"area_code": "212", "quantity": 2}, {"quantity": 1}]` for
|
|
77
|
+
# two in 212 and one in any area code. `quantity` defaults to 1, an entry without
|
|
78
|
+
# `area_code` means any area code, and the total is at most 49. The market is
|
|
79
|
+
# created with **one campaign**, the one in `compliance.campaign`, and a US
|
|
80
|
+
# `TEN_DLC` market's numbers are stored on it and assigned when it is approved. A
|
|
81
|
+
# profile inheriting your organization's campaign keeps one number. Every number
|
|
82
|
+
# is listed in `channels.sms[].numbers` with its area code and status.
|
|
83
|
+
#
|
|
84
|
+
# A profile is a tenant, not a market, so it can go on to send in several — but
|
|
85
|
+
# through `POST /v3/channels/sms` with the `x-profile-id` header, one market and
|
|
86
|
+
# its compliance at a time. Reads return every market as `channels.sms[]`, so the
|
|
87
|
+
# read shape is a list even where this one is not.
|
|
88
|
+
#
|
|
89
|
+
# `brand` is required when `number_type` is `TEN_DLC` — inherited or its own. A
|
|
90
|
+
# 10DLC registration has nothing to attach to without one, and no later call can
|
|
91
|
+
# supply it, so omitting it is refused with `400` rather than reported as
|
|
92
|
+
# outstanding.
|
|
93
|
+
#
|
|
94
|
+
# ## Use cases and volume
|
|
95
|
+
#
|
|
96
|
+
# A TCR campaign declares one to five `use_cases`, each with its own
|
|
97
|
+
# `sample_messages` — TCR attributes samples to the use case they illustrate, so
|
|
98
|
+
# they travel together.
|
|
99
|
+
#
|
|
100
|
+
# How that set registers is derived from `volume` and never declared. Below the
|
|
101
|
+
# low-volume threshold the campaign registers as `LOW_VOLUME` with every entry as
|
|
102
|
+
# a sub-use-case; above it, one entry registers as that use case outright and
|
|
103
|
+
# several register as `MIXED` with sub-use-cases. `MIXED` and `LOW_VOLUME` are
|
|
104
|
+
# therefore refused as `use_case` values: they describe the shape of a set, which
|
|
105
|
+
# is ours to work out.
|
|
106
|
+
#
|
|
107
|
+
# **Leaving `volume` out is accepted and costs more.** An absent value registers
|
|
108
|
+
# the campaign at the standard tier, which carries the higher fee — so say so when
|
|
109
|
+
# a campaign is low volume. Sole proprietor brands are the exception: their fee is
|
|
110
|
+
# fixed by entity type, and volume only decides the use case.
|
|
111
|
+
#
|
|
112
|
+
# ## Compliance
|
|
113
|
+
#
|
|
114
|
+
# `brand` is captured identically in every country. Everything a specific market
|
|
115
|
+
# demands on top of it — including every field of the campaign — goes in
|
|
116
|
+
# `compliance`, as key/value entries whose keys depend on the sender's country and
|
|
117
|
+
# type. US `TEN_DLC` registers with The Campaign Registry and asks for a
|
|
118
|
+
# substantial set; an alphanumeric sender may pre-register with documents, or need
|
|
119
|
+
# nothing at all.
|
|
120
|
+
#
|
|
121
|
+
# You do not have to know any of it. Omit `compliance` and the response lists
|
|
122
|
+
# exactly what is outstanding, with types and accepted values — or call
|
|
123
|
+
# `GET /v3/compliance/requirements` first. Anything Sent supplies on your behalf
|
|
124
|
+
# is never asked for, and is rejected if sent.
|
|
125
|
+
#
|
|
126
|
+
# Requirements can be conditional, and the condition is published as
|
|
127
|
+
# `required_when` so you can render a form from it rather than discover the rule
|
|
128
|
+
# by being rejected. Every US `TEN_DLC` campaign field carries
|
|
129
|
+
# `compliance.inherit != true` — send `"inherit": true` and none of them is asked
|
|
130
|
+
# for or accepted, because the profile is running on your organization's campaign.
|
|
131
|
+
#
|
|
132
|
+
# ## Uploading documents
|
|
133
|
+
#
|
|
134
|
+
# Send `application/json` for everything except a market that pre-registers a
|
|
135
|
+
# sender with supporting documents. For those, send `multipart/form-data` instead:
|
|
136
|
+
# put this entire document — unchanged — in a single field named `profile`, and
|
|
137
|
+
# attach each file under a field named after the compliance key it satisfies.
|
|
138
|
+
# Individual form fields per property are not read; the payload is always the one
|
|
139
|
+
# `profile` field.
|
|
140
|
+
#
|
|
141
|
+
# A pre-registration market has no `brand` and no `campaign` — those are asked for
|
|
142
|
+
# only where a regime registers one — so its `compliance` carries nothing at all,
|
|
143
|
+
# and the documents are the request:
|
|
144
|
+
#
|
|
145
|
+
# ```bash
|
|
146
|
+
# curl -X POST https://api.sent.dm/v3/sender-profiles \
|
|
147
|
+
# -H 'x-api-key: YOUR_SECRET_TOKEN' \
|
|
148
|
+
# -F 'profile={
|
|
149
|
+
# "name": "Example Retail",
|
|
150
|
+
# "short_name": "EXAMPLE",
|
|
151
|
+
# "channels": {
|
|
152
|
+
# "sms": {
|
|
153
|
+
# "country": "XK",
|
|
154
|
+
# "number_type": "ALPHANUMERIC",
|
|
155
|
+
# "sender_value": "EXAMPLE"
|
|
156
|
+
# }
|
|
157
|
+
# }
|
|
158
|
+
# }' \
|
|
159
|
+
# -F 'business_registration=@registration.pdf' \
|
|
160
|
+
# -F 'letter_of_authorization=@loa.pdf'
|
|
161
|
+
# ```
|
|
162
|
+
#
|
|
163
|
+
# `business_registration` and `letter_of_authorization` are illustrative. The real
|
|
164
|
+
# field names are whatever that market configures, so read them from
|
|
165
|
+
# `GET /v3/compliance/requirements`, which lists documents separately from the
|
|
166
|
+
# values — under `attachments`, each with the `field_name` to put the file under.
|
|
167
|
+
#
|
|
168
|
+
# A document has no JSON form, so naming one in `compliance` is refused with `400`
|
|
169
|
+
# rather than ignored: accepting it would report the requirement as satisfied
|
|
170
|
+
# while no file was ever stored.
|
|
171
|
+
#
|
|
172
|
+
# ## WhatsApp and RCS
|
|
173
|
+
#
|
|
174
|
+
# Neither can be inherited, so neither takes an `inherit`: the profile's WhatsApp
|
|
175
|
+
# account and RCS agent are its own or it has none. Sharing your organization's
|
|
176
|
+
# would share its inbox and its throughput, which makes the two indistinguishable
|
|
177
|
+
# to a recipient.
|
|
178
|
+
#
|
|
179
|
+
# `channels.whatsapp` names one of the accounts shared into your organization, and
|
|
180
|
+
# takes the two identifiers nothing else can supply: `waba_id`, because your
|
|
181
|
+
# organization holds one account per client, and `phone_number_id`, because naming
|
|
182
|
+
# the account's number is what assigns it to the profile as the number it sends
|
|
183
|
+
# from.
|
|
184
|
+
#
|
|
185
|
+
# Everything else is resolved from your organization — the Multi-Partner Solution
|
|
186
|
+
# the account arrived through, the client business portfolio that owns it, the
|
|
187
|
+
# access token and that token's expiry. None of them is accepted here: the first
|
|
188
|
+
# two are Meta's answer about provenance, so a value you sent could assert a
|
|
189
|
+
# partnership Meta disagrees with, and the token is minted per client business and
|
|
190
|
+
# rotates roughly every sixty days.
|
|
191
|
+
#
|
|
192
|
+
# `phone_number_id` is optional. Omit it to connect the account now and settle the
|
|
193
|
+
# number later — the channel reads as `ACTION_NEEDED` with `reason_code`
|
|
194
|
+
# `CHANNEL_007`, and the profile's WhatsApp messages fail until a number is named.
|
|
195
|
+
# They do not fall back to your organization's account.
|
|
196
|
+
# `POST /v3/channels/whatsapp` connects an account to an existing profile and
|
|
197
|
+
# resolves the same fields the same way.
|
|
198
|
+
#
|
|
199
|
+
# An account of its own needs a sender of its own, so `channels.whatsapp` requires
|
|
200
|
+
# `channels.sms`. A profile sending SMS on your organization's sender shares that
|
|
201
|
+
# inbox and opt-out list, and is not a separate tenant to give an account to —
|
|
202
|
+
# asking is refused with `400`, before your organization is asked to resolve
|
|
203
|
+
# anything.
|
|
204
|
+
#
|
|
205
|
+
# `channels.rcs` records the RCS agent. RCS (Rich Communication Services) is the
|
|
206
|
+
# next-generation SMS standard built into Android — it lets you send branded
|
|
207
|
+
# messages with images, buttons and read receipts over the carrier network, with
|
|
208
|
+
# no app install required. Learn more in the
|
|
209
|
+
# [Google RCS documentation](https://developers.google.com/business-communications/rcs-business-messaging).
|
|
210
|
+
#
|
|
211
|
+
# All fields on the agent form are required except `opt_in_screenshot_url`. The
|
|
212
|
+
# full form must be submitted in one go so the carrier review has everything it
|
|
213
|
+
# needs. A carrier approval no API call can trigger is arranged offline, so the
|
|
214
|
+
# status reports `PROVISIONING` until it is.
|
|
215
|
+
#
|
|
216
|
+
# ## Responses
|
|
217
|
+
#
|
|
218
|
+
# `201` when the profile is complete on return — the fully-inherited case, where
|
|
219
|
+
# nothing needs registering. `202` when something is still provisioning, with
|
|
220
|
+
# per-capability status and outstanding requirements. `409` when the WhatsApp
|
|
221
|
+
# account supplied is already recorded. `400` covers a wrong value as well as a
|
|
222
|
+
# missing one: a missing brand under `TEN_DLC`, a brand or campaign inherited
|
|
223
|
+
# under `TEN_DLC` that your organization does not have yet, an unknown compliance
|
|
224
|
+
# key, a bad type, a sender id the market does not allow, a `waba_id` that is not
|
|
225
|
+
# one of the accounts shared into your organization, or a WhatsApp account Meta
|
|
226
|
+
# rejects. `502` when Meta could not be reached to verify the WhatsApp account;
|
|
227
|
+
# nothing was created, so retry.
|
|
228
|
+
sig do
|
|
229
|
+
params(
|
|
230
|
+
billing: T.nilable(Sentdm::SenderProfileBillingRequest::OrHash),
|
|
231
|
+
channels: T.nilable(Sentdm::SenderProfileChannels::OrHash),
|
|
232
|
+
compliance: Sentdm::Channels::MarketCompliance::OrHash,
|
|
233
|
+
description: T.nilable(String),
|
|
234
|
+
name: String,
|
|
235
|
+
notifications: T.nilable(String),
|
|
236
|
+
sandbox: T::Boolean,
|
|
237
|
+
short_name: String,
|
|
238
|
+
idempotency_key: String,
|
|
239
|
+
request_options: Sentdm::RequestOptions::OrHash
|
|
240
|
+
).returns(Sentdm::APIResponseOfSenderProfile)
|
|
241
|
+
end
|
|
242
|
+
def create(
|
|
243
|
+
# Body param: Who pays for what a sender profile sends.
|
|
244
|
+
#
|
|
245
|
+
# Ownership reads the same way as BrandRequest and CampaignRequest: inherit: true
|
|
246
|
+
# is the organization paying; inherit: false (or an empty block) is the profile
|
|
247
|
+
# paying for itself.
|
|
248
|
+
#
|
|
249
|
+
# An absent block is the one place billing differs from brand and campaign: a
|
|
250
|
+
# profile still has to be paid for, so omitting billing stores
|
|
251
|
+
# ProfileAndOrganizationBilling — the profile pays first and its organization
|
|
252
|
+
# covers what the profile's balance cannot (see ResolveStored). { "name": "..." }
|
|
253
|
+
# stays a complete request.
|
|
254
|
+
#
|
|
255
|
+
# Billing carries no fields of its own yet, so a profile paying for itself is {
|
|
256
|
+
# "inherit": false } — or an empty block, which means the same. That is thinner
|
|
257
|
+
# than brand and campaign, where supplying data is the act of owning; it becomes
|
|
258
|
+
# ordinary the moment billing gains a contact or a payment method to carry.
|
|
259
|
+
billing: nil,
|
|
260
|
+
# Body param: The channels the profile sends on. Each is independently the
|
|
261
|
+
# profile's own or absent — none can be inherited, so none carries a mode and
|
|
262
|
+
# presence is the whole of the request.
|
|
263
|
+
#
|
|
264
|
+
# A profile can send SMS in several markets, but create takes one — the market it
|
|
265
|
+
# starts in. Further markets are added through POST /v3/channels/sms with
|
|
266
|
+
# x-profile-id, and a read returns them all as a list. Create stays singular
|
|
267
|
+
# permanently rather than being a list that accepts one entry: the constraint is
|
|
268
|
+
# in the type, and there is no later widening to break the contract.
|
|
269
|
+
channels: nil,
|
|
270
|
+
# Body param: The compliance values a market registers with. `brand` and
|
|
271
|
+
# `campaign` apply to US `TEN_DLC`; other markets fill this map with the document
|
|
272
|
+
# keys their own requirements name.
|
|
273
|
+
compliance: nil,
|
|
274
|
+
# Body param
|
|
275
|
+
description: nil,
|
|
276
|
+
# Body param: Display name for the profile. Required.
|
|
277
|
+
name: nil,
|
|
278
|
+
# Body param: Who is notified about this profile's events: ORGANIZATION,
|
|
279
|
+
# SENDER_PROFILE, or ORGANIZATION_AND_SENDER_PROFILE. Omitting it leaves the
|
|
280
|
+
# profile on the Organization default.
|
|
281
|
+
notifications: nil,
|
|
282
|
+
# Body param: Sandbox flag - when true, the operation is simulated without side
|
|
283
|
+
# effects Useful for testing integrations without actual execution
|
|
284
|
+
sandbox: nil,
|
|
285
|
+
# Body param: Short name, which is also the SMS sender id — required. 3–11
|
|
286
|
+
# characters of letters, numbers and spaces, with at least one letter.
|
|
287
|
+
short_name: nil,
|
|
288
|
+
# Header param: Unique key to ensure idempotent request processing. Must be 1-255
|
|
289
|
+
# alphanumeric characters, hyphens, or underscores. Responses are cached for 24
|
|
290
|
+
# hours per key per customer.
|
|
291
|
+
idempotency_key: nil,
|
|
292
|
+
request_options: {}
|
|
293
|
+
)
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
# Reads one of your sender profiles.
|
|
297
|
+
#
|
|
298
|
+
# The document mirrors `POST /v3/sender-profiles`, with three differences that
|
|
299
|
+
# follow from this being a read rather than a request.
|
|
300
|
+
#
|
|
301
|
+
# `channels.sms` is a **list**. Create takes the one market a profile starts in; a
|
|
302
|
+
# profile can go on to send in several, and this reports all of them, each with
|
|
303
|
+
# its own `status`.
|
|
304
|
+
#
|
|
305
|
+
# `compliance.brand` comes back **in full, with `inherit` saying whose it is**. On
|
|
306
|
+
# a request `{ "inherit": true }` carries no data because there is nothing to
|
|
307
|
+
# send; here it carries the data, because the point of a read is to say what the
|
|
308
|
+
# profile actually sends under.
|
|
309
|
+
#
|
|
310
|
+
# **There is no `campaigns` array.** Brand, campaign, and compliance documents are
|
|
311
|
+
# reported at the profile root in `compliance`. A profile running on your
|
|
312
|
+
# organization's campaign is asked for none of the campaign fields, so
|
|
313
|
+
# `compliance.campaign` carries `{ "inherit": true }` with no campaign data.
|
|
314
|
+
#
|
|
315
|
+
# `api_key` is **never** returned here. It is shown once, by create.
|
|
316
|
+
#
|
|
317
|
+
# A profile belonging to another organization reads as `404`, not `403`: saying
|
|
318
|
+
# which of the two it is would confirm the id exists.
|
|
319
|
+
sig do
|
|
320
|
+
params(
|
|
321
|
+
id: String,
|
|
322
|
+
request_options: Sentdm::RequestOptions::OrHash
|
|
323
|
+
).returns(Sentdm::APIResponseOfSenderProfile)
|
|
324
|
+
end
|
|
325
|
+
def retrieve(
|
|
326
|
+
# Identifier of the profile, as returned by POST /v3/sender-profiles.
|
|
327
|
+
id,
|
|
328
|
+
request_options: {}
|
|
329
|
+
)
|
|
330
|
+
end
|
|
331
|
+
|
|
332
|
+
# Changes a profile's own attributes: `name`, `short_name`, `description` and
|
|
333
|
+
# `notifications` (who is emailed about the profile's events — `ORGANIZATION`,
|
|
334
|
+
# `SENDER_PROFILE`, or `ORGANIZATION_AND_SENDER_PROFILE`).
|
|
335
|
+
#
|
|
336
|
+
# **Only those.** A profile's identity, its markets and its compliance each have a
|
|
337
|
+
# sub-resource of their own, because each has its own validation and its own
|
|
338
|
+
# external consequences — a brand change may need re-registering, a market change
|
|
339
|
+
# provisions a sender. Folding them in here would give those fields two writers
|
|
340
|
+
# and no way to say which one wins.
|
|
341
|
+
#
|
|
342
|
+
# Omitting a field leaves it alone; sending `null` clears it. Those are different
|
|
343
|
+
# requests, so `{}` changes nothing and is refused rather than silently accepted —
|
|
344
|
+
# a caller who misspelt every field would otherwise get a `200` and an unchanged
|
|
345
|
+
# profile.
|
|
346
|
+
#
|
|
347
|
+
# `name` and `short_name` cannot be cleared: `short_name` is the SMS sender id, so
|
|
348
|
+
# a supplied value must be 3–11 characters of letters, numbers and spaces with at
|
|
349
|
+
# least one letter.
|
|
350
|
+
#
|
|
351
|
+
# Returns the profile as `GET /v3/sender-profiles/{id}` would, so the result of
|
|
352
|
+
# the change needs no second call to see.
|
|
353
|
+
sig do
|
|
354
|
+
params(
|
|
355
|
+
id: String,
|
|
356
|
+
description: T.nilable(String),
|
|
357
|
+
name: String,
|
|
358
|
+
notifications: T.nilable(String),
|
|
359
|
+
sandbox: T::Boolean,
|
|
360
|
+
short_name: T.nilable(String),
|
|
361
|
+
idempotency_key: String,
|
|
362
|
+
request_options: Sentdm::RequestOptions::OrHash
|
|
363
|
+
).returns(Sentdm::APIResponseOfSenderProfile)
|
|
364
|
+
end
|
|
365
|
+
def update(
|
|
366
|
+
# Path param
|
|
367
|
+
id,
|
|
368
|
+
# Body param
|
|
369
|
+
description: nil,
|
|
370
|
+
# Body param
|
|
371
|
+
name: nil,
|
|
372
|
+
# Body param: Who is notified about this profile's events: ORGANIZATION,
|
|
373
|
+
# SENDER_PROFILE, or ORGANIZATION_AND_SENDER_PROFILE. Cannot be cleared — a
|
|
374
|
+
# supplied value must be one of those.
|
|
375
|
+
notifications: nil,
|
|
376
|
+
# Body param: Sandbox flag - when true, the operation is simulated without side
|
|
377
|
+
# effects Useful for testing integrations without actual execution
|
|
378
|
+
sandbox: nil,
|
|
379
|
+
# Body param
|
|
380
|
+
short_name: nil,
|
|
381
|
+
# Header param: Unique key to ensure idempotent request processing. Must be 1-255
|
|
382
|
+
# alphanumeric characters, hyphens, or underscores. Responses are cached for 24
|
|
383
|
+
# hours per key per customer.
|
|
384
|
+
idempotency_key: nil,
|
|
385
|
+
request_options: {}
|
|
386
|
+
)
|
|
387
|
+
end
|
|
388
|
+
|
|
389
|
+
# Lists the sender profiles under your organization, newest first, paginated with
|
|
390
|
+
# `page` and `page_size`.
|
|
391
|
+
#
|
|
392
|
+
# Each entry is the same document `GET /v3/sender-profiles/{id}` returns, with one
|
|
393
|
+
# difference: **`compliance.documents` at the profile root is absent**. Working
|
|
394
|
+
# out which documents a market holds means a catalog lookup and a document read
|
|
395
|
+
# per market, and doing that for every profile on a page would turn one request
|
|
396
|
+
# into dozens to answer a question you did not ask. Read a single profile for
|
|
397
|
+
# that. Brand and campaign are still included when they exist.
|
|
398
|
+
#
|
|
399
|
+
# `compliance.documents` being **absent** is not the same as it being an **empty
|
|
400
|
+
# list**. Absent means the documents were not fetched here; an empty list means
|
|
401
|
+
# the profile holds none.
|
|
402
|
+
#
|
|
403
|
+
# `api_key` is never returned. It is shown once, by create.
|
|
404
|
+
sig do
|
|
405
|
+
params(
|
|
406
|
+
page: Integer,
|
|
407
|
+
page_size: Integer,
|
|
408
|
+
request_options: Sentdm::RequestOptions::OrHash
|
|
409
|
+
).returns(Sentdm::Internal::SenderProfilesPage[Sentdm::SenderProfile])
|
|
410
|
+
end
|
|
411
|
+
def list(
|
|
412
|
+
# Page number, 1-indexed.
|
|
413
|
+
page: nil,
|
|
414
|
+
# Profiles per page. Between 1 and 100.
|
|
415
|
+
page_size: nil,
|
|
416
|
+
request_options: {}
|
|
417
|
+
)
|
|
418
|
+
end
|
|
419
|
+
|
|
420
|
+
# Deletes one of your sender profiles and returns `204`.
|
|
421
|
+
#
|
|
422
|
+
# The delete is **soft**: the profile stops being usable and stops appearing in
|
|
423
|
+
# reads, and its message history is kept, because deleting a profile must not
|
|
424
|
+
# delete the record of what it sent.
|
|
425
|
+
#
|
|
426
|
+
# ## What it releases
|
|
427
|
+
#
|
|
428
|
+
# Anything the profile still held goes with it. A **phone number** returns to our
|
|
429
|
+
# inventory and can be given to whoever asks next — it does not stay reserved for
|
|
430
|
+
# you, and getting the same number back afterwards is not something we can
|
|
431
|
+
# promise. A **WhatsApp account of its own** is deregistered from Meta. Its
|
|
432
|
+
# routing rules stop being used, so nothing sends through the profile after this
|
|
433
|
+
# call.
|
|
434
|
+
#
|
|
435
|
+
# A profile that only inherits from its organization holds nothing of its own and
|
|
436
|
+
# releases nothing.
|
|
437
|
+
#
|
|
438
|
+
# ## When it is refused
|
|
439
|
+
#
|
|
440
|
+
# A number the profile holds that your **WhatsApp Business Account still carries**
|
|
441
|
+
# refuses the delete with a `409 CONFLICT_012`, and nothing is deleted: it would
|
|
442
|
+
# return to our shared inventory while Meta still routes WhatsApp to it, and the
|
|
443
|
+
# next customer given it could not register it at all. Only you can take it off
|
|
444
|
+
# the account — deregister **and** delete it in WhatsApp Manager, then try again.
|
|
445
|
+
# A `409 CONFLICT_013` means we could not read the account, so we cannot tell
|
|
446
|
+
# either way.
|
|
447
|
+
sig do
|
|
448
|
+
params(id: String, request_options: Sentdm::RequestOptions::OrHash).void
|
|
449
|
+
end
|
|
450
|
+
def delete(
|
|
451
|
+
# Identifier of the profile.
|
|
452
|
+
id,
|
|
453
|
+
request_options: {}
|
|
454
|
+
)
|
|
455
|
+
end
|
|
456
|
+
|
|
457
|
+
# @api private
|
|
458
|
+
sig { params(client: Sentdm::Client).returns(T.attached_class) }
|
|
459
|
+
def self.new(client:)
|
|
460
|
+
end
|
|
461
|
+
end
|
|
462
|
+
end
|
|
463
|
+
end
|
|
@@ -35,7 +35,7 @@ module Sentdm
|
|
|
35
35
|
params(
|
|
36
36
|
x_profile_id: String,
|
|
37
37
|
request_options: Sentdm::RequestOptions::OrHash
|
|
38
|
-
).returns(Sentdm::
|
|
38
|
+
).returns(Sentdm::APIResponseOfUsersList)
|
|
39
39
|
end
|
|
40
40
|
def list(
|
|
41
41
|
# Profile UUID to scope the request to a child profile. Only organization API keys
|
|
@@ -102,11 +102,11 @@ module Sentdm
|
|
|
102
102
|
# conference room, and answers with the participant's own call record. The
|
|
103
103
|
# participant is a call of their own: it has its own id, can be looked up and hung
|
|
104
104
|
# up, and is billed and reported through call.completed and call.failed like any
|
|
105
|
-
# other call. Every participant needs a
|
|
106
|
-
# called from caller_id, which must be one of your
|
|
107
|
-
# owning number when omitted, and needs a destination
|
|
108
|
-
# your answer connected to a conference can take
|
|
109
|
-
# a user or a number answers 409.
|
|
105
|
+
# other call. Every participant needs a payment method on file and a positive
|
|
106
|
+
# balance. A phone participant is called from caller_id, which must be one of your
|
|
107
|
+
# numbers, or from the call's owning number when omitted, and needs a destination
|
|
108
|
+
# you may call. Only a call your answer connected to a conference can take
|
|
109
|
+
# participants: a call connected to a user or a number answers 409.
|
|
110
110
|
sig do
|
|
111
111
|
params(
|
|
112
112
|
id: String,
|
|
@@ -32,8 +32,7 @@ module Sentdm
|
|
|
32
32
|
is_inheritable: T::Boolean,
|
|
33
33
|
retry_count: Integer,
|
|
34
34
|
sandbox: T::Boolean,
|
|
35
|
-
sender_profile:
|
|
36
|
-
T.nilable(Sentdm::WebhookCreateParams::SenderProfile::OrHash),
|
|
35
|
+
sender_profile: T.nilable(Sentdm::WebhookSenderProfileConfig::OrHash),
|
|
37
36
|
timeout_seconds: Integer,
|
|
38
37
|
webhook_version: T.nilable(Integer),
|
|
39
38
|
idempotency_key: String,
|
|
@@ -117,8 +116,7 @@ module Sentdm
|
|
|
117
116
|
is_inheritable: T.nilable(T::Boolean),
|
|
118
117
|
retry_count: Integer,
|
|
119
118
|
sandbox: T::Boolean,
|
|
120
|
-
sender_profile:
|
|
121
|
-
T.nilable(Sentdm::WebhookUpdateParams::SenderProfile::OrHash),
|
|
119
|
+
sender_profile: T.nilable(Sentdm::WebhookSenderProfileConfig::OrHash),
|
|
122
120
|
timeout_seconds: Integer,
|
|
123
121
|
idempotency_key: String,
|
|
124
122
|
x_profile_id: String,
|
|
@@ -214,7 +212,7 @@ module Sentdm
|
|
|
214
212
|
params(
|
|
215
213
|
x_profile_id: String,
|
|
216
214
|
request_options: Sentdm::RequestOptions::OrHash
|
|
217
|
-
).returns(Sentdm::
|
|
215
|
+
).returns(Sentdm::APIResponseOfWebhookEventTypesList)
|
|
218
216
|
end
|
|
219
217
|
def list_event_types(
|
|
220
218
|
# Profile UUID to scope the request to a child profile. Only organization API keys
|
|
@@ -237,11 +235,7 @@ module Sentdm
|
|
|
237
235
|
search: T.nilable(String),
|
|
238
236
|
x_profile_id: String,
|
|
239
237
|
request_options: Sentdm::RequestOptions::OrHash
|
|
240
|
-
).returns(
|
|
241
|
-
Sentdm::Internal::WebhookEventsPage[
|
|
242
|
-
Sentdm::Models::WebhookListEventsResponse
|
|
243
|
-
]
|
|
244
|
-
)
|
|
238
|
+
).returns(Sentdm::Internal::WebhookEventsPage[Sentdm::WebhookDelivery])
|
|
245
239
|
end
|
|
246
240
|
def list_events(
|
|
247
241
|
# Path param
|
|
@@ -272,7 +266,7 @@ module Sentdm
|
|
|
272
266
|
idempotency_key: String,
|
|
273
267
|
x_profile_id: String,
|
|
274
268
|
request_options: Sentdm::RequestOptions::OrHash
|
|
275
|
-
).returns(Sentdm::
|
|
269
|
+
).returns(Sentdm::APIResponseOfWebhookSecret)
|
|
276
270
|
end
|
|
277
271
|
def rotate_secret(
|
|
278
272
|
# Path param
|
|
@@ -304,7 +298,7 @@ module Sentdm
|
|
|
304
298
|
idempotency_key: String,
|
|
305
299
|
x_profile_id: String,
|
|
306
300
|
request_options: Sentdm::RequestOptions::OrHash
|
|
307
|
-
).returns(Sentdm::
|
|
301
|
+
).returns(Sentdm::APIResponseOfWebhookTest)
|
|
308
302
|
end
|
|
309
303
|
def test_(
|
|
310
304
|
# Path param
|
data/sig/sentdm/client.rbs
CHANGED
|
@@ -18,6 +18,8 @@ module Sentdm
|
|
|
18
18
|
|
|
19
19
|
attr_reader profiles: Sentdm::Resources::Profiles
|
|
20
20
|
|
|
21
|
+
attr_reader sender_profiles: Sentdm::Resources::SenderProfiles
|
|
22
|
+
|
|
21
23
|
attr_reader numbers: Sentdm::Resources::Numbers
|
|
22
24
|
|
|
23
25
|
attr_reader messages: Sentdm::Resources::Messages
|
|
@@ -30,6 +32,8 @@ module Sentdm
|
|
|
30
32
|
|
|
31
33
|
attr_reader channels: Sentdm::Resources::Channels
|
|
32
34
|
|
|
35
|
+
attr_reader compliance: Sentdm::Resources::Compliance
|
|
36
|
+
|
|
33
37
|
attr_reader me: Sentdm::Resources::Me
|
|
34
38
|
|
|
35
39
|
private def auth_headers: -> ::Hash[String, String]
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
module Sentdm
|
|
2
|
+
module Internal
|
|
3
|
+
class SenderProfilesPage[Elem]
|
|
4
|
+
include Sentdm::Internal::Type::BasePage[Elem]
|
|
5
|
+
|
|
6
|
+
attr_accessor data: Data
|
|
7
|
+
|
|
8
|
+
def inspect: -> String
|
|
9
|
+
|
|
10
|
+
type data =
|
|
11
|
+
{ pagination: Data::Pagination, sender_profiles: ::Array[top] }
|
|
12
|
+
class Data < Sentdm::Internal::Type::BaseModel
|
|
13
|
+
attr_reader pagination: Data::Pagination?
|
|
14
|
+
|
|
15
|
+
def pagination=: (Data::Pagination) -> Data::Pagination
|
|
16
|
+
|
|
17
|
+
attr_reader sender_profiles: ::Array[top]?
|
|
18
|
+
|
|
19
|
+
def sender_profiles=: (::Array[top]) -> ::Array[top]
|
|
20
|
+
|
|
21
|
+
def initialize: (
|
|
22
|
+
?pagination: Data::Pagination,
|
|
23
|
+
?sender_profiles: ::Array[top]
|
|
24
|
+
) -> void
|
|
25
|
+
|
|
26
|
+
def to_hash: -> {
|
|
27
|
+
pagination: Data::Pagination,
|
|
28
|
+
sender_profiles: ::Array[top]
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
type pagination =
|
|
32
|
+
{
|
|
33
|
+
has_more: bool,
|
|
34
|
+
page: Integer,
|
|
35
|
+
page_size: Integer,
|
|
36
|
+
total_count: Integer,
|
|
37
|
+
total_pages: Integer
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
class Pagination < Sentdm::Internal::Type::BaseModel
|
|
41
|
+
attr_reader has_more: bool?
|
|
42
|
+
|
|
43
|
+
def has_more=: (bool) -> bool
|
|
44
|
+
|
|
45
|
+
attr_reader page: Integer?
|
|
46
|
+
|
|
47
|
+
def page=: (Integer) -> Integer
|
|
48
|
+
|
|
49
|
+
attr_reader page_size: Integer?
|
|
50
|
+
|
|
51
|
+
def page_size=: (Integer) -> Integer
|
|
52
|
+
|
|
53
|
+
attr_reader total_count: Integer?
|
|
54
|
+
|
|
55
|
+
def total_count=: (Integer) -> Integer
|
|
56
|
+
|
|
57
|
+
attr_reader total_pages: Integer?
|
|
58
|
+
|
|
59
|
+
def total_pages=: (Integer) -> Integer
|
|
60
|
+
|
|
61
|
+
def initialize: (
|
|
62
|
+
?has_more: bool,
|
|
63
|
+
?page: Integer,
|
|
64
|
+
?page_size: Integer,
|
|
65
|
+
?total_count: Integer,
|
|
66
|
+
?total_pages: Integer
|
|
67
|
+
) -> void
|
|
68
|
+
|
|
69
|
+
def to_hash: -> {
|
|
70
|
+
has_more: bool,
|
|
71
|
+
page: Integer,
|
|
72
|
+
page_size: Integer,
|
|
73
|
+
total_count: Integer,
|
|
74
|
+
total_pages: Integer
|
|
75
|
+
}
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|