twilio-ruby 3.11.5 → 5.71.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/.dockerignore +1 -0
- data/.github/workflows/pr-lint.yml +15 -0
- data/.github/workflows/test-and-deploy.yml +129 -0
- data/.gitignore +12 -2
- data/.rubocop.yml +59 -0
- data/.rubocop_todo.yml +261 -0
- data/AUTHORS.md +21 -0
- data/CHANGES.md +3045 -0
- data/CODE_OF_CONDUCT.md +73 -0
- data/CONTRIBUTING.md +161 -0
- data/Dockerfile +9 -0
- data/Gemfile +2 -2
- data/ISSUE_TEMPLATE.md +30 -0
- data/LICENSE +13 -11
- data/Makefile +26 -5
- data/PULL_REQUEST_TEMPLATE.md +31 -0
- data/README.md +171 -90
- data/Rakefile +8 -10
- data/UPGRADE.md +30 -0
- data/VERSIONS.md +35 -0
- data/examples/examples.rb +62 -49
- data/examples/{print-call-log.rb → print_call_log.rb} +7 -7
- data/githooks/pre-commit +1 -0
- data/lib/rack/twilio_webhook_authentication.rb +72 -0
- data/lib/twilio-ruby/framework/request.rb +41 -0
- data/lib/twilio-ruby/framework/response.rb +18 -0
- data/lib/twilio-ruby/framework/rest/domain.rb +36 -0
- data/lib/twilio-ruby/framework/rest/error.rb +51 -0
- data/lib/twilio-ruby/framework/rest/helper.rb +11 -0
- data/lib/twilio-ruby/framework/rest/obsolete_client.rb +12 -0
- data/lib/twilio-ruby/framework/rest/page.rb +103 -0
- data/lib/twilio-ruby/framework/rest/resource.rb +23 -0
- data/lib/twilio-ruby/framework/rest/version.rb +153 -0
- data/lib/twilio-ruby/framework/serialize.rb +81 -0
- data/lib/twilio-ruby/framework/twilio_response.rb +19 -0
- data/lib/twilio-ruby/framework/values.rb +9 -0
- data/lib/twilio-ruby/http/http_client.rb +79 -0
- data/lib/twilio-ruby/http.rb +5 -0
- data/lib/twilio-ruby/jwt/access_token.rb +285 -0
- data/lib/twilio-ruby/jwt/client_capability.rb +102 -0
- data/lib/twilio-ruby/jwt/jwt.rb +59 -0
- data/lib/twilio-ruby/jwt/task_router.rb +172 -0
- data/lib/twilio-ruby/rest/accounts/v1/auth_token_promotion.rb +186 -0
- data/lib/twilio-ruby/rest/accounts/v1/credential/aws.rb +339 -0
- data/lib/twilio-ruby/rest/accounts/v1/credential/public_key.rb +339 -0
- data/lib/twilio-ruby/rest/accounts/v1/credential.rb +122 -0
- data/lib/twilio-ruby/rest/accounts/v1/secondary_auth_token.rb +200 -0
- data/lib/twilio-ruby/rest/accounts/v1.rb +49 -0
- data/lib/twilio-ruby/rest/accounts.rb +50 -9
- data/lib/twilio-ruby/rest/api/v2010/account/address/dependent_phone_number.rb +372 -0
- data/lib/twilio-ruby/rest/api/v2010/account/address.rb +521 -0
- data/lib/twilio-ruby/rest/api/v2010/account/application.rb +593 -0
- data/lib/twilio-ruby/rest/api/v2010/account/authorized_connect_app.rb +327 -0
- data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/local.rb +500 -0
- data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/machine_to_machine.rb +500 -0
- data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/mobile.rb +500 -0
- data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/national.rb +500 -0
- data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/shared_cost.rb +500 -0
- data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/toll_free.rb +500 -0
- data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/voip.rb +500 -0
- data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number.rb +464 -0
- data/lib/twilio-ruby/rest/api/v2010/account/balance.rb +125 -0
- data/lib/twilio-ruby/rest/api/v2010/account/call/event.rb +201 -0
- data/lib/twilio-ruby/rest/api/v2010/account/call/feedback.rb +301 -0
- data/lib/twilio-ruby/rest/api/v2010/account/call/feedback_summary.rb +314 -0
- data/lib/twilio-ruby/rest/api/v2010/account/call/notification.rb +428 -0
- data/lib/twilio-ruby/rest/api/v2010/account/call/payment.rb +375 -0
- data/lib/twilio-ruby/rest/api/v2010/account/call/recording.rb +522 -0
- data/lib/twilio-ruby/rest/api/v2010/account/call/siprec.rb +674 -0
- data/lib/twilio-ruby/rest/api/v2010/account/call/stream.rb +674 -0
- data/lib/twilio-ruby/rest/api/v2010/account/call.rb +998 -0
- data/lib/twilio-ruby/rest/api/v2010/account/conference/participant.rb +728 -0
- data/lib/twilio-ruby/rest/api/v2010/account/conference/recording.rb +469 -0
- data/lib/twilio-ruby/rest/api/v2010/account/conference.rb +500 -0
- data/lib/twilio-ruby/rest/api/v2010/account/connect_app.rb +414 -0
- data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/assigned_add_on/assigned_add_on_extension.rb +367 -0
- data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/assigned_add_on.rb +431 -0
- data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/local.rb +561 -0
- data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/mobile.rb +560 -0
- data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/toll_free.rb +560 -0
- data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number.rb +910 -0
- data/lib/twilio-ruby/rest/api/v2010/account/key.rb +309 -0
- data/lib/twilio-ruby/rest/api/v2010/account/message/feedback.rb +173 -0
- data/lib/twilio-ruby/rest/api/v2010/account/message/media.rb +361 -0
- data/lib/twilio-ruby/rest/api/v2010/account/message.rb +632 -0
- data/lib/twilio-ruby/rest/api/v2010/account/new_key.rb +145 -0
- data/lib/twilio-ruby/rest/api/v2010/account/new_signing_key.rb +145 -0
- data/lib/twilio-ruby/rest/api/v2010/account/notification.rb +406 -0
- data/lib/twilio-ruby/rest/api/v2010/account/outgoing_caller_id.rb +365 -0
- data/lib/twilio-ruby/rest/api/v2010/account/queue/member.rb +349 -0
- data/lib/twilio-ruby/rest/api/v2010/account/queue.rb +397 -0
- data/lib/twilio-ruby/rest/api/v2010/account/recording/add_on_result/payload.rb +387 -0
- data/lib/twilio-ruby/rest/api/v2010/account/recording/add_on_result.rb +398 -0
- data/lib/twilio-ruby/rest/api/v2010/account/recording/transcription.rb +383 -0
- data/lib/twilio-ruby/rest/api/v2010/account/recording.rb +520 -0
- data/lib/twilio-ruby/rest/api/v2010/account/short_code.rb +415 -0
- data/lib/twilio-ruby/rest/api/v2010/account/signing_key.rb +313 -0
- data/lib/twilio-ruby/rest/api/v2010/account/sip/credential_list/credential.rb +387 -0
- data/lib/twilio-ruby/rest/api/v2010/account/sip/credential_list.rb +386 -0
- data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/auth_types/auth_calls_mapping/auth_calls_credential_list_mapping.rb +348 -0
- data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/auth_types/auth_calls_mapping/auth_calls_ip_access_control_list_mapping.rb +348 -0
- data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/auth_types/auth_calls_mapping.rb +163 -0
- data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/auth_types/auth_registrations_mapping/auth_registrations_credential_list_mapping.rb +348 -0
- data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/auth_types/auth_registrations_mapping.rb +137 -0
- data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/auth_types.rb +135 -0
- data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/credential_list_mapping.rb +356 -0
- data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/ip_access_control_list_mapping.rb +355 -0
- data/lib/twilio-ruby/rest/api/v2010/account/sip/domain.rb +660 -0
- data/lib/twilio-ruby/rest/api/v2010/account/sip/ip_access_control_list/ip_address.rb +432 -0
- data/lib/twilio-ruby/rest/api/v2010/account/sip/ip_access_control_list.rb +387 -0
- data/lib/twilio-ruby/rest/api/v2010/account/sip.rb +157 -0
- data/lib/twilio-ruby/rest/api/v2010/account/token.rb +161 -0
- data/lib/twilio-ruby/rest/api/v2010/account/transcription.rb +357 -0
- data/lib/twilio-ruby/rest/api/v2010/account/usage/record/all_time.rb +351 -0
- data/lib/twilio-ruby/rest/api/v2010/account/usage/record/daily.rb +351 -0
- data/lib/twilio-ruby/rest/api/v2010/account/usage/record/last_month.rb +351 -0
- data/lib/twilio-ruby/rest/api/v2010/account/usage/record/monthly.rb +351 -0
- data/lib/twilio-ruby/rest/api/v2010/account/usage/record/this_month.rb +351 -0
- data/lib/twilio-ruby/rest/api/v2010/account/usage/record/today.rb +351 -0
- data/lib/twilio-ruby/rest/api/v2010/account/usage/record/yearly.rb +351 -0
- data/lib/twilio-ruby/rest/api/v2010/account/usage/record/yesterday.rb +351 -0
- data/lib/twilio-ruby/rest/api/v2010/account/usage/record.rb +423 -0
- data/lib/twilio-ruby/rest/api/v2010/account/usage/trigger.rb +495 -0
- data/lib/twilio-ruby/rest/api/v2010/account/usage.rb +120 -0
- data/lib/twilio-ruby/rest/api/v2010/account/validation_request.rb +168 -0
- data/lib/twilio-ruby/rest/api/v2010/account.rb +953 -0
- data/lib/twilio-ruby/rest/api/v2010.rb +154 -0
- data/lib/twilio-ruby/rest/api.rb +247 -0
- data/lib/twilio-ruby/rest/autopilot/v1/assistant/defaults.rb +220 -0
- data/lib/twilio-ruby/rest/autopilot/v1/assistant/dialogue.rb +214 -0
- data/lib/twilio-ruby/rest/autopilot/v1/assistant/field_type/field_value.rb +399 -0
- data/lib/twilio-ruby/rest/autopilot/v1/assistant/field_type.rb +418 -0
- data/lib/twilio-ruby/rest/autopilot/v1/assistant/model_build.rb +392 -0
- data/lib/twilio-ruby/rest/autopilot/v1/assistant/query.rb +469 -0
- data/lib/twilio-ruby/rest/autopilot/v1/assistant/style_sheet.rb +218 -0
- data/lib/twilio-ruby/rest/autopilot/v1/assistant/task/field.rb +386 -0
- data/lib/twilio-ruby/rest/autopilot/v1/assistant/task/sample.rb +456 -0
- data/lib/twilio-ruby/rest/autopilot/v1/assistant/task/task_actions.rb +255 -0
- data/lib/twilio-ruby/rest/autopilot/v1/assistant/task/task_statistics.rb +237 -0
- data/lib/twilio-ruby/rest/autopilot/v1/assistant/task.rb +507 -0
- data/lib/twilio-ruby/rest/autopilot/v1/assistant/webhook.rb +420 -0
- data/lib/twilio-ruby/rest/autopilot/v1/assistant.rb +650 -0
- data/lib/twilio-ruby/rest/autopilot/v1/restore_assistant.rb +194 -0
- data/lib/twilio-ruby/rest/autopilot/v1.rb +52 -0
- data/lib/twilio-ruby/rest/autopilot.rb +53 -0
- data/lib/twilio-ruby/rest/bulkexports/v1/export/day.rb +286 -0
- data/lib/twilio-ruby/rest/bulkexports/v1/export/export_custom_job.rb +286 -0
- data/lib/twilio-ruby/rest/bulkexports/v1/export/job.rb +255 -0
- data/lib/twilio-ruby/rest/bulkexports/v1/export.rb +243 -0
- data/lib/twilio-ruby/rest/bulkexports/v1/export_configuration.rb +226 -0
- data/lib/twilio-ruby/rest/bulkexports/v1.rb +62 -0
- data/lib/twilio-ruby/rest/bulkexports.rb +56 -0
- data/lib/twilio-ruby/rest/chat/v1/credential.rb +413 -0
- data/lib/twilio-ruby/rest/chat/v1/service/channel/invite.rb +402 -0
- data/lib/twilio-ruby/rest/chat/v1/service/channel/member.rb +451 -0
- data/lib/twilio-ruby/rest/chat/v1/service/channel/message.rb +448 -0
- data/lib/twilio-ruby/rest/chat/v1/service/channel.rb +522 -0
- data/lib/twilio-ruby/rest/chat/v1/service/role.rb +374 -0
- data/lib/twilio-ruby/rest/chat/v1/service/user/user_channel.rb +246 -0
- data/lib/twilio-ruby/rest/chat/v1/service/user.rb +447 -0
- data/lib/twilio-ruby/rest/chat/v1/service.rb +904 -0
- data/lib/twilio-ruby/rest/chat/v1.rb +62 -0
- data/lib/twilio-ruby/rest/chat/v2/credential.rb +411 -0
- data/lib/twilio-ruby/rest/chat/v2/service/binding.rb +377 -0
- data/lib/twilio-ruby/rest/chat/v2/service/channel/invite.rb +397 -0
- data/lib/twilio-ruby/rest/chat/v2/service/channel/member.rb +538 -0
- data/lib/twilio-ruby/rest/chat/v2/service/channel/message.rb +544 -0
- data/lib/twilio-ruby/rest/chat/v2/service/channel/webhook.rb +478 -0
- data/lib/twilio-ruby/rest/chat/v2/service/channel.rb +612 -0
- data/lib/twilio-ruby/rest/chat/v2/service/role.rb +376 -0
- data/lib/twilio-ruby/rest/chat/v2/service/user/user_binding.rb +392 -0
- data/lib/twilio-ruby/rest/chat/v2/service/user/user_channel.rb +430 -0
- data/lib/twilio-ruby/rest/chat/v2/service/user.rb +498 -0
- data/lib/twilio-ruby/rest/chat/v2/service.rb +788 -0
- data/lib/twilio-ruby/rest/chat/v2.rb +60 -0
- data/lib/twilio-ruby/rest/chat/v3/channel.rb +275 -0
- data/lib/twilio-ruby/rest/chat/v3.rb +48 -0
- data/lib/twilio-ruby/rest/chat.rb +79 -0
- data/lib/twilio-ruby/rest/client.rb +572 -214
- data/lib/twilio-ruby/rest/conversations/v1/address_configuration.rb +454 -0
- data/lib/twilio-ruby/rest/conversations/v1/configuration/webhook.rb +254 -0
- data/lib/twilio-ruby/rest/conversations/v1/configuration.rb +260 -0
- data/lib/twilio-ruby/rest/conversations/v1/conversation/message/delivery_receipt.rb +355 -0
- data/lib/twilio-ruby/rest/conversations/v1/conversation/message.rb +502 -0
- data/lib/twilio-ruby/rest/conversations/v1/conversation/participant.rb +502 -0
- data/lib/twilio-ruby/rest/conversations/v1/conversation/webhook.rb +410 -0
- data/lib/twilio-ruby/rest/conversations/v1/conversation.rb +562 -0
- data/lib/twilio-ruby/rest/conversations/v1/credential.rb +419 -0
- data/lib/twilio-ruby/rest/conversations/v1/participant_conversation.rb +312 -0
- data/lib/twilio-ruby/rest/conversations/v1/role.rb +366 -0
- data/lib/twilio-ruby/rest/conversations/v1/service/binding.rb +380 -0
- data/lib/twilio-ruby/rest/conversations/v1/service/configuration/notification.rb +323 -0
- data/lib/twilio-ruby/rest/conversations/v1/service/configuration/webhook.rb +269 -0
- data/lib/twilio-ruby/rest/conversations/v1/service/configuration.rb +286 -0
- data/lib/twilio-ruby/rest/conversations/v1/service/conversation/message/delivery_receipt.rb +386 -0
- data/lib/twilio-ruby/rest/conversations/v1/service/conversation/message.rb +548 -0
- data/lib/twilio-ruby/rest/conversations/v1/service/conversation/participant.rb +541 -0
- data/lib/twilio-ruby/rest/conversations/v1/service/conversation/webhook.rb +449 -0
- data/lib/twilio-ruby/rest/conversations/v1/service/conversation.rb +595 -0
- data/lib/twilio-ruby/rest/conversations/v1/service/participant_conversation.rb +324 -0
- data/lib/twilio-ruby/rest/conversations/v1/service/role.rb +387 -0
- data/lib/twilio-ruby/rest/conversations/v1/service/user/user_conversation.rb +466 -0
- data/lib/twilio-ruby/rest/conversations/v1/service/user.rb +481 -0
- data/lib/twilio-ruby/rest/conversations/v1/service.rb +457 -0
- data/lib/twilio-ruby/rest/conversations/v1/user/user_conversation.rb +442 -0
- data/lib/twilio-ruby/rest/conversations/v1/user.rb +451 -0
- data/lib/twilio-ruby/rest/conversations/v1.rb +143 -0
- data/lib/twilio-ruby/rest/conversations.rb +104 -0
- data/lib/twilio-ruby/rest/events/v1/event_type.rb +298 -0
- data/lib/twilio-ruby/rest/events/v1/schema/version.rb +290 -0
- data/lib/twilio-ruby/rest/events/v1/schema.rb +226 -0
- data/lib/twilio-ruby/rest/events/v1/sink/sink_test.rb +115 -0
- data/lib/twilio-ruby/rest/events/v1/sink/sink_validate.rb +119 -0
- data/lib/twilio-ruby/rest/events/v1/sink.rb +418 -0
- data/lib/twilio-ruby/rest/events/v1/subscription/subscribed_event.rb +346 -0
- data/lib/twilio-ruby/rest/events/v1/subscription.rb +397 -0
- data/lib/twilio-ruby/rest/events/v1.rb +94 -0
- data/lib/twilio-ruby/rest/events.rb +72 -0
- data/lib/twilio-ruby/rest/flex_api/v1/channel.rb +340 -0
- data/lib/twilio-ruby/rest/flex_api/v1/configuration.rb +490 -0
- data/lib/twilio-ruby/rest/flex_api/v1/flex_flow.rb +580 -0
- data/lib/twilio-ruby/rest/flex_api/v1/interaction/interaction_channel/interaction_channel_invite.rb +236 -0
- data/lib/twilio-ruby/rest/flex_api/v1/interaction/interaction_channel/interaction_channel_participant.rb +330 -0
- data/lib/twilio-ruby/rest/flex_api/v1/interaction/interaction_channel.rb +405 -0
- data/lib/twilio-ruby/rest/flex_api/v1/interaction.rb +233 -0
- data/lib/twilio-ruby/rest/flex_api/v1/web_channel.rb +341 -0
- data/lib/twilio-ruby/rest/flex_api/v1.rb +99 -0
- data/lib/twilio-ruby/rest/flex_api.rb +80 -0
- data/lib/twilio-ruby/rest/frontline_api/v1/user.rb +258 -0
- data/lib/twilio-ruby/rest/frontline_api/v1.rb +45 -0
- data/lib/twilio-ruby/rest/frontline_api.rb +47 -0
- data/lib/twilio-ruby/rest/insights/v1/call/annotation.rb +322 -0
- data/lib/twilio-ruby/rest/insights/v1/call/event.rb +262 -0
- data/lib/twilio-ruby/rest/insights/v1/call/metric.rb +252 -0
- data/lib/twilio-ruby/rest/insights/v1/call/summary.rb +314 -0
- data/lib/twilio-ruby/rest/insights/v1/call.rb +244 -0
- data/lib/twilio-ruby/rest/insights/v1/call_summaries.rb +434 -0
- data/lib/twilio-ruby/rest/insights/v1/conference/conference_participant.rb +474 -0
- data/lib/twilio-ruby/rest/insights/v1/conference.rb +512 -0
- data/lib/twilio-ruby/rest/insights/v1/room/participant.rb +378 -0
- data/lib/twilio-ruby/rest/insights/v1/room.rb +499 -0
- data/lib/twilio-ruby/rest/insights/v1/setting.rb +215 -0
- data/lib/twilio-ruby/rest/insights/v1.rb +90 -0
- data/lib/twilio-ruby/rest/insights.rb +74 -0
- data/lib/twilio-ruby/rest/ip_messaging/v1/credential.rb +374 -0
- data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel/invite.rb +370 -0
- data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel/member.rb +408 -0
- data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel/message.rb +420 -0
- data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel.rb +495 -0
- data/lib/twilio-ruby/rest/ip_messaging/v1/service/role.rb +354 -0
- data/lib/twilio-ruby/rest/ip_messaging/v1/service/user/user_channel.rb +240 -0
- data/lib/twilio-ruby/rest/ip_messaging/v1/service/user.rb +425 -0
- data/lib/twilio-ruby/rest/ip_messaging/v1/service.rb +789 -0
- data/lib/twilio-ruby/rest/ip_messaging/v1.rb +60 -0
- data/lib/twilio-ruby/rest/ip_messaging/v2/credential.rb +374 -0
- data/lib/twilio-ruby/rest/ip_messaging/v2/service/binding.rb +350 -0
- data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel/invite.rb +370 -0
- data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel/member.rb +462 -0
- data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel/message.rb +490 -0
- data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel/webhook.rb +422 -0
- data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel.rb +562 -0
- data/lib/twilio-ruby/rest/ip_messaging/v2/service/role.rb +354 -0
- data/lib/twilio-ruby/rest/ip_messaging/v2/service/user/user_binding.rb +362 -0
- data/lib/twilio-ruby/rest/ip_messaging/v2/service/user/user_channel.rb +395 -0
- data/lib/twilio-ruby/rest/ip_messaging/v2/service/user.rb +474 -0
- data/lib/twilio-ruby/rest/ip_messaging/v2/service.rb +699 -0
- data/lib/twilio-ruby/rest/ip_messaging/v2.rb +60 -0
- data/lib/twilio-ruby/rest/ip_messaging.rb +61 -0
- data/lib/twilio-ruby/rest/lookups/v1/phone_number.rb +247 -0
- data/lib/twilio-ruby/rest/lookups/v1.rb +46 -0
- data/lib/twilio-ruby/rest/lookups/v2/phone_number.rb +261 -0
- data/lib/twilio-ruby/rest/lookups/v2.rb +45 -0
- data/lib/twilio-ruby/rest/lookups.rb +55 -0
- data/lib/twilio-ruby/rest/media/v1/media_processor.rb +397 -0
- data/lib/twilio-ruby/rest/media/v1/media_recording.rb +399 -0
- data/lib/twilio-ruby/rest/media/v1/player_streamer/playback_grant.rb +221 -0
- data/lib/twilio-ruby/rest/media/v1/player_streamer.rb +403 -0
- data/lib/twilio-ruby/rest/media/v1.rb +76 -0
- data/lib/twilio-ruby/rest/media.rb +58 -7
- data/lib/twilio-ruby/rest/messaging/v1/brand_registration/brand_vetting.rb +353 -0
- data/lib/twilio-ruby/rest/messaging/v1/brand_registration.rb +453 -0
- data/lib/twilio-ruby/rest/messaging/v1/deactivation.rb +164 -0
- data/lib/twilio-ruby/rest/messaging/v1/external_campaign.rb +150 -0
- data/lib/twilio-ruby/rest/messaging/v1/service/alpha_sender.rb +342 -0
- data/lib/twilio-ruby/rest/messaging/v1/service/phone_number.rb +348 -0
- data/lib/twilio-ruby/rest/messaging/v1/service/short_code.rb +343 -0
- data/lib/twilio-ruby/rest/messaging/v1/service/us_app_to_person.rb +433 -0
- data/lib/twilio-ruby/rest/messaging/v1/service/us_app_to_person_usecase.rb +129 -0
- data/lib/twilio-ruby/rest/messaging/v1/service.rb +773 -0
- data/lib/twilio-ruby/rest/messaging/v1/usecase.rb +111 -0
- data/lib/twilio-ruby/rest/messaging/v1.rb +81 -0
- data/lib/twilio-ruby/rest/messaging.rb +73 -0
- data/lib/twilio-ruby/rest/microvisor/v1/app.rb +305 -0
- data/lib/twilio-ruby/rest/microvisor/v1/device.rb +332 -0
- data/lib/twilio-ruby/rest/microvisor/v1.rb +60 -0
- data/lib/twilio-ruby/rest/microvisor.rb +54 -0
- data/lib/twilio-ruby/rest/monitor/v1/alert.rb +405 -0
- data/lib/twilio-ruby/rest/monitor/v1/event.rb +400 -0
- data/lib/twilio-ruby/rest/monitor/v1.rb +60 -0
- data/lib/twilio-ruby/rest/monitor.rb +56 -0
- data/lib/twilio-ruby/rest/notify/v1/credential.rb +418 -0
- data/lib/twilio-ruby/rest/notify/v1/service/binding.rb +459 -0
- data/lib/twilio-ruby/rest/notify/v1/service/notification.rb +369 -0
- data/lib/twilio-ruby/rest/notify/v1/service.rb +632 -0
- data/lib/twilio-ruby/rest/notify/v1.rb +62 -0
- data/lib/twilio-ruby/rest/notify.rb +56 -0
- data/lib/twilio-ruby/rest/numbers/v2/regulatory_compliance/bundle/bundle_copy.rb +268 -0
- data/lib/twilio-ruby/rest/numbers/v2/regulatory_compliance/bundle/evaluation.rb +309 -0
- data/lib/twilio-ruby/rest/numbers/v2/regulatory_compliance/bundle/item_assignment.rb +320 -0
- data/lib/twilio-ruby/rest/numbers/v2/regulatory_compliance/bundle/replace_items.rb +188 -0
- data/lib/twilio-ruby/rest/numbers/v2/regulatory_compliance/bundle.rb +614 -0
- data/lib/twilio-ruby/rest/numbers/v2/regulatory_compliance/end_user.rb +358 -0
- data/lib/twilio-ruby/rest/numbers/v2/regulatory_compliance/end_user_type.rb +273 -0
- data/lib/twilio-ruby/rest/numbers/v2/regulatory_compliance/regulation.rb +314 -0
- data/lib/twilio-ruby/rest/numbers/v2/regulatory_compliance/supporting_document.rb +378 -0
- data/lib/twilio-ruby/rest/numbers/v2/regulatory_compliance/supporting_document_type.rb +273 -0
- data/lib/twilio-ruby/rest/numbers/v2/regulatory_compliance.rb +189 -0
- data/lib/twilio-ruby/rest/numbers/v2.rb +35 -0
- data/lib/twilio-ruby/rest/numbers.rb +44 -0
- data/lib/twilio-ruby/rest/preview/deployed_devices/fleet/certificate.rb +382 -0
- data/lib/twilio-ruby/rest/preview/deployed_devices/fleet/deployment.rb +365 -0
- data/lib/twilio-ruby/rest/preview/deployed_devices/fleet/device.rb +425 -0
- data/lib/twilio-ruby/rest/preview/deployed_devices/fleet/key.rb +376 -0
- data/lib/twilio-ruby/rest/preview/deployed_devices/fleet.rb +469 -0
- data/lib/twilio-ruby/rest/preview/deployed_devices.rb +45 -0
- data/lib/twilio-ruby/rest/preview/hosted_numbers/authorization_document/dependent_hosted_number_order.rb +403 -0
- data/lib/twilio-ruby/rest/preview/hosted_numbers/authorization_document.rb +456 -0
- data/lib/twilio-ruby/rest/preview/hosted_numbers/hosted_number_order.rb +635 -0
- data/lib/twilio-ruby/rest/preview/hosted_numbers.rb +62 -0
- data/lib/twilio-ruby/rest/preview/marketplace/available_add_on/available_add_on_extension.rb +305 -0
- data/lib/twilio-ruby/rest/preview/marketplace/available_add_on.rb +319 -0
- data/lib/twilio-ruby/rest/preview/marketplace/installed_add_on/installed_add_on_extension.rb +337 -0
- data/lib/twilio-ruby/rest/preview/marketplace/installed_add_on.rb +408 -0
- data/lib/twilio-ruby/rest/preview/marketplace.rb +60 -0
- data/lib/twilio-ruby/rest/preview/sync/service/document/document_permission.rb +385 -0
- data/lib/twilio-ruby/rest/preview/sync/service/document.rb +406 -0
- data/lib/twilio-ruby/rest/preview/sync/service/sync_list/sync_list_item.rb +418 -0
- data/lib/twilio-ruby/rest/preview/sync/service/sync_list/sync_list_permission.rb +385 -0
- data/lib/twilio-ruby/rest/preview/sync/service/sync_list.rb +405 -0
- data/lib/twilio-ruby/rest/preview/sync/service/sync_map/sync_map_item.rb +415 -0
- data/lib/twilio-ruby/rest/preview/sync/service/sync_map/sync_map_permission.rb +385 -0
- data/lib/twilio-ruby/rest/preview/sync/service/sync_map.rb +405 -0
- data/lib/twilio-ruby/rest/preview/sync/service.rb +462 -0
- data/lib/twilio-ruby/rest/preview/sync.rb +44 -0
- data/lib/twilio-ruby/rest/preview/trusted_comms/branded_channel/channel.rb +165 -0
- data/lib/twilio-ruby/rest/preview/trusted_comms/branded_channel.rb +225 -0
- data/lib/twilio-ruby/rest/preview/trusted_comms/brands_information.rb +195 -0
- data/lib/twilio-ruby/rest/preview/trusted_comms/cps.rb +186 -0
- data/lib/twilio-ruby/rest/preview/trusted_comms/current_call.rb +277 -0
- data/lib/twilio-ruby/rest/preview/trusted_comms.rb +65 -0
- data/lib/twilio-ruby/rest/preview/understand/assistant/assistant_fallback_actions.rb +212 -0
- data/lib/twilio-ruby/rest/preview/understand/assistant/assistant_initiation_actions.rb +212 -0
- data/lib/twilio-ruby/rest/preview/understand/assistant/dialogue.rb +206 -0
- data/lib/twilio-ruby/rest/preview/understand/assistant/field_type/field_value.rb +386 -0
- data/lib/twilio-ruby/rest/preview/understand/assistant/field_type.rb +407 -0
- data/lib/twilio-ruby/rest/preview/understand/assistant/model_build.rb +380 -0
- data/lib/twilio-ruby/rest/preview/understand/assistant/query.rb +437 -0
- data/lib/twilio-ruby/rest/preview/understand/assistant/style_sheet.rb +212 -0
- data/lib/twilio-ruby/rest/preview/understand/assistant/task/field.rb +373 -0
- data/lib/twilio-ruby/rest/preview/understand/assistant/task/sample.rb +428 -0
- data/lib/twilio-ruby/rest/preview/understand/assistant/task/task_actions.rb +241 -0
- data/lib/twilio-ruby/rest/preview/understand/assistant/task/task_statistics.rb +225 -0
- data/lib/twilio-ruby/rest/preview/understand/assistant/task.rb +495 -0
- data/lib/twilio-ruby/rest/preview/understand/assistant.rb +629 -0
- data/lib/twilio-ruby/rest/preview/understand.rb +45 -0
- data/lib/twilio-ruby/rest/preview/wireless/command.rb +374 -0
- data/lib/twilio-ruby/rest/preview/wireless/rate_plan.rb +408 -0
- data/lib/twilio-ruby/rest/preview/wireless/sim/usage.rb +233 -0
- data/lib/twilio-ruby/rest/preview/wireless/sim.rb +533 -0
- data/lib/twilio-ruby/rest/preview/wireless.rb +76 -0
- data/lib/twilio-ruby/rest/preview.rb +193 -0
- data/lib/twilio-ruby/rest/pricing/v1/messaging/country.rb +282 -0
- data/lib/twilio-ruby/rest/pricing/v1/messaging.rb +127 -0
- data/lib/twilio-ruby/rest/pricing/v1/phone_number/country.rb +275 -0
- data/lib/twilio-ruby/rest/pricing/v1/phone_number.rb +127 -0
- data/lib/twilio-ruby/rest/pricing/v1/voice/country.rb +282 -0
- data/lib/twilio-ruby/rest/pricing/v1/voice/number.rb +204 -0
- data/lib/twilio-ruby/rest/pricing/v1/voice.rb +143 -0
- data/lib/twilio-ruby/rest/pricing/v1.rb +49 -0
- data/lib/twilio-ruby/rest/pricing/v2/country.rb +280 -0
- data/lib/twilio-ruby/rest/pricing/v2/number.rb +225 -0
- data/lib/twilio-ruby/rest/pricing/v2/voice/country.rb +282 -0
- data/lib/twilio-ruby/rest/pricing/v2/voice/number.rb +227 -0
- data/lib/twilio-ruby/rest/pricing/v2/voice.rb +146 -0
- data/lib/twilio-ruby/rest/pricing/v2.rb +72 -0
- data/lib/twilio-ruby/rest/pricing.rb +82 -0
- data/lib/twilio-ruby/rest/proxy/v1/service/phone_number.rb +410 -0
- data/lib/twilio-ruby/rest/proxy/v1/service/session/interaction.rb +429 -0
- data/lib/twilio-ruby/rest/proxy/v1/service/session/participant/message_interaction.rb +458 -0
- data/lib/twilio-ruby/rest/proxy/v1/service/session/participant.rb +468 -0
- data/lib/twilio-ruby/rest/proxy/v1/service/session.rb +554 -0
- data/lib/twilio-ruby/rest/proxy/v1/service/short_code.rb +377 -0
- data/lib/twilio-ruby/rest/proxy/v1/service.rb +606 -0
- data/lib/twilio-ruby/rest/proxy/v1.rb +45 -0
- data/lib/twilio-ruby/rest/proxy.rb +47 -0
- data/lib/twilio-ruby/rest/routes/v2/phone_number.rb +235 -0
- data/lib/twilio-ruby/rest/routes/v2/sip_domain.rb +231 -0
- data/lib/twilio-ruby/rest/routes/v2/trunk.rb +235 -0
- data/lib/twilio-ruby/rest/routes/v2.rb +76 -0
- data/lib/twilio-ruby/rest/routes.rb +62 -0
- data/lib/twilio-ruby/rest/serverless/v1/service/asset/asset_version.rb +334 -0
- data/lib/twilio-ruby/rest/serverless/v1/service/asset.rb +387 -0
- data/lib/twilio-ruby/rest/serverless/v1/service/build/build_status.rb +219 -0
- data/lib/twilio-ruby/rest/serverless/v1/service/build.rb +391 -0
- data/lib/twilio-ruby/rest/serverless/v1/service/environment/deployment.rb +349 -0
- data/lib/twilio-ruby/rest/serverless/v1/service/environment/log.rb +394 -0
- data/lib/twilio-ruby/rest/serverless/v1/service/environment/variable.rb +407 -0
- data/lib/twilio-ruby/rest/serverless/v1/service/environment.rb +454 -0
- data/lib/twilio-ruby/rest/serverless/v1/service/function/function_version/function_version_content.rb +241 -0
- data/lib/twilio-ruby/rest/serverless/v1/service/function/function_version.rb +364 -0
- data/lib/twilio-ruby/rest/serverless/v1/service/function.rb +387 -0
- data/lib/twilio-ruby/rest/serverless/v1/service.rb +503 -0
- data/lib/twilio-ruby/rest/serverless/v1.rb +44 -0
- data/lib/twilio-ruby/rest/serverless.rb +47 -0
- data/lib/twilio-ruby/rest/studio/v1/flow/engagement/engagement_context.rb +210 -0
- data/lib/twilio-ruby/rest/studio/v1/flow/engagement/step/step_context.rb +225 -0
- data/lib/twilio-ruby/rest/studio/v1/flow/engagement/step.rb +366 -0
- data/lib/twilio-ruby/rest/studio/v1/flow/engagement.rb +401 -0
- data/lib/twilio-ruby/rest/studio/v1/flow/execution/execution_context.rb +211 -0
- data/lib/twilio-ruby/rest/studio/v1/flow/execution/execution_step/execution_step_context.rb +228 -0
- data/lib/twilio-ruby/rest/studio/v1/flow/execution/execution_step.rb +372 -0
- data/lib/twilio-ruby/rest/studio/v1/flow/execution.rb +456 -0
- data/lib/twilio-ruby/rest/studio/v1/flow.rb +365 -0
- data/lib/twilio-ruby/rest/studio/v1.rb +44 -0
- data/lib/twilio-ruby/rest/studio/v2/flow/execution/execution_context.rb +211 -0
- data/lib/twilio-ruby/rest/studio/v2/flow/execution/execution_step/execution_step_context.rb +228 -0
- data/lib/twilio-ruby/rest/studio/v2/flow/execution/execution_step.rb +372 -0
- data/lib/twilio-ruby/rest/studio/v2/flow/execution.rb +449 -0
- data/lib/twilio-ruby/rest/studio/v2/flow/flow_revision.rb +327 -0
- data/lib/twilio-ruby/rest/studio/v2/flow/test_user.rb +199 -0
- data/lib/twilio-ruby/rest/studio/v2/flow.rb +482 -0
- data/lib/twilio-ruby/rest/studio/v2/flow_validate.rb +117 -0
- data/lib/twilio-ruby/rest/studio/v2.rb +51 -0
- data/lib/twilio-ruby/rest/studio.rb +60 -0
- data/lib/twilio-ruby/rest/supersim/v1/esim_profile.rb +372 -0
- data/lib/twilio-ruby/rest/supersim/v1/fleet.rb +493 -0
- data/lib/twilio-ruby/rest/supersim/v1/ip_command.rb +416 -0
- data/lib/twilio-ruby/rest/supersim/v1/network.rb +307 -0
- data/lib/twilio-ruby/rest/supersim/v1/network_access_profile/network_access_profile_network.rb +339 -0
- data/lib/twilio-ruby/rest/supersim/v1/network_access_profile.rb +361 -0
- data/lib/twilio-ruby/rest/supersim/v1/sim/billing_period.rb +231 -0
- data/lib/twilio-ruby/rest/supersim/v1/sim/sim_ip_address.rb +195 -0
- data/lib/twilio-ruby/rest/supersim/v1/sim.rb +463 -0
- data/lib/twilio-ruby/rest/supersim/v1/sms_command.rb +371 -0
- data/lib/twilio-ruby/rest/supersim/v1/usage_record.rb +352 -0
- data/lib/twilio-ruby/rest/supersim/v1.rb +147 -0
- data/lib/twilio-ruby/rest/supersim.rb +106 -0
- data/lib/twilio-ruby/rest/sync/v1/service/document/document_permission.rb +382 -0
- data/lib/twilio-ruby/rest/sync/v1/service/document.rb +430 -0
- data/lib/twilio-ruby/rest/sync/v1/service/sync_list/sync_list_item.rb +501 -0
- data/lib/twilio-ruby/rest/sync/v1/service/sync_list/sync_list_permission.rb +381 -0
- data/lib/twilio-ruby/rest/sync/v1/service/sync_list.rb +452 -0
- data/lib/twilio-ruby/rest/sync/v1/service/sync_map/sync_map_item.rb +506 -0
- data/lib/twilio-ruby/rest/sync/v1/service/sync_map/sync_map_permission.rb +379 -0
- data/lib/twilio-ruby/rest/sync/v1/service/sync_map.rb +451 -0
- data/lib/twilio-ruby/rest/sync/v1/service/sync_stream/stream_message.rb +139 -0
- data/lib/twilio-ruby/rest/sync/v1/service/sync_stream.rb +407 -0
- data/lib/twilio-ruby/rest/sync/v1/service.rb +577 -0
- data/lib/twilio-ruby/rest/sync/v1.rb +44 -0
- data/lib/twilio-ruby/rest/sync.rb +47 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/activity.rb +402 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/event.rb +471 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task/reservation.rb +747 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task.rb +668 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_channel.rb +389 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue/task_queue_cumulative_statistics.rb +381 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue/task_queue_real_time_statistics.rb +287 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue/task_queue_statistics.rb +265 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue/task_queues_statistics.rb +285 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue.rb +573 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/reservation.rb +743 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/worker_channel.rb +399 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/worker_statistics.rb +250 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/workers_cumulative_statistics.rb +277 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/workers_real_time_statistics.rb +204 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/workers_statistics.rb +245 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker.rb +638 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workflow/workflow_cumulative_statistics.rb +387 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workflow/workflow_real_time_statistics.rb +252 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workflow/workflow_statistics.rb +273 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workflow.rb +517 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workspace_cumulative_statistics.rb +363 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workspace_real_time_statistics.rb +234 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workspace_statistics.rb +241 -0
- data/lib/twilio-ruby/rest/taskrouter/v1/workspace.rb +740 -0
- data/lib/twilio-ruby/rest/taskrouter/v1.rb +44 -0
- data/lib/twilio-ruby/rest/taskrouter.rb +47 -0
- data/lib/twilio-ruby/rest/trunking/v1/trunk/credential_list.rb +327 -0
- data/lib/twilio-ruby/rest/trunking/v1/trunk/ip_access_control_list.rb +324 -0
- data/lib/twilio-ruby/rest/trunking/v1/trunk/origination_url.rb +426 -0
- data/lib/twilio-ruby/rest/trunking/v1/trunk/phone_number.rb +458 -0
- data/lib/twilio-ruby/rest/trunking/v1/trunk/recording.rb +198 -0
- data/lib/twilio-ruby/rest/trunking/v1/trunk.rb +640 -0
- data/lib/twilio-ruby/rest/trunking/v1.rb +45 -0
- data/lib/twilio-ruby/rest/trunking.rb +47 -0
- data/lib/twilio-ruby/rest/trusthub/v1/customer_profiles/customer_profiles_channel_endpoint_assignment.rb +359 -0
- data/lib/twilio-ruby/rest/trusthub/v1/customer_profiles/customer_profiles_entity_assignments.rb +330 -0
- data/lib/twilio-ruby/rest/trusthub/v1/customer_profiles/customer_profiles_evaluations.rb +328 -0
- data/lib/twilio-ruby/rest/trusthub/v1/customer_profiles.rb +523 -0
- data/lib/twilio-ruby/rest/trusthub/v1/end_user.rb +356 -0
- data/lib/twilio-ruby/rest/trusthub/v1/end_user_type.rb +271 -0
- data/lib/twilio-ruby/rest/trusthub/v1/policies.rb +262 -0
- data/lib/twilio-ruby/rest/trusthub/v1/supporting_document.rb +369 -0
- data/lib/twilio-ruby/rest/trusthub/v1/supporting_document_type.rb +271 -0
- data/lib/twilio-ruby/rest/trusthub/v1/trust_products/trust_products_channel_endpoint_assignment.rb +359 -0
- data/lib/twilio-ruby/rest/trusthub/v1/trust_products/trust_products_entity_assignments.rb +330 -0
- data/lib/twilio-ruby/rest/trusthub/v1/trust_products/trust_products_evaluations.rb +328 -0
- data/lib/twilio-ruby/rest/trusthub/v1/trust_products.rb +523 -0
- data/lib/twilio-ruby/rest/trusthub/v1.rb +146 -0
- data/lib/twilio-ruby/rest/trusthub.rb +100 -0
- data/lib/twilio-ruby/rest/verify/v2/form.rb +191 -0
- data/lib/twilio-ruby/rest/verify/v2/service/access_token.rb +269 -0
- data/lib/twilio-ruby/rest/verify/v2/service/entity/challenge/notification.rb +205 -0
- data/lib/twilio-ruby/rest/verify/v2/service/entity/challenge.rb +551 -0
- data/lib/twilio-ruby/rest/verify/v2/service/entity/factor.rb +472 -0
- data/lib/twilio-ruby/rest/verify/v2/service/entity/new_factor.rb +309 -0
- data/lib/twilio-ruby/rest/verify/v2/service/entity.rb +429 -0
- data/lib/twilio-ruby/rest/verify/v2/service/messaging_configuration.rb +370 -0
- data/lib/twilio-ruby/rest/verify/v2/service/rate_limit/bucket.rb +399 -0
- data/lib/twilio-ruby/rest/verify/v2/service/rate_limit.rb +391 -0
- data/lib/twilio-ruby/rest/verify/v2/service/verification.rb +373 -0
- data/lib/twilio-ruby/rest/verify/v2/service/verification_check.rb +212 -0
- data/lib/twilio-ruby/rest/verify/v2/service/webhook.rb +427 -0
- data/lib/twilio-ruby/rest/verify/v2/service.rb +790 -0
- data/lib/twilio-ruby/rest/verify/v2/template.rb +206 -0
- data/lib/twilio-ruby/rest/verify/v2/verification_attempt.rb +397 -0
- data/lib/twilio-ruby/rest/verify/v2/verification_attempts_summary.rb +234 -0
- data/lib/twilio-ruby/rest/verify/v2.rb +92 -0
- data/lib/twilio-ruby/rest/verify.rb +77 -0
- data/lib/twilio-ruby/rest/video/v1/composition.rb +517 -0
- data/lib/twilio-ruby/rest/video/v1/composition_hook.rb +657 -0
- data/lib/twilio-ruby/rest/video/v1/composition_settings.rb +269 -0
- data/lib/twilio-ruby/rest/video/v1/recording.rb +436 -0
- data/lib/twilio-ruby/rest/video/v1/recording_settings.rb +269 -0
- data/lib/twilio-ruby/rest/video/v1/room/recording.rb +413 -0
- data/lib/twilio-ruby/rest/video/v1/room/room_participant/room_participant_published_track.rb +335 -0
- data/lib/twilio-ruby/rest/video/v1/room/room_participant/room_participant_subscribe_rule.rb +175 -0
- data/lib/twilio-ruby/rest/video/v1/room/room_participant/room_participant_subscribed_track.rb +340 -0
- data/lib/twilio-ruby/rest/video/v1/room/room_participant.rb +483 -0
- data/lib/twilio-ruby/rest/video/v1/room/room_recording_rule.rb +144 -0
- data/lib/twilio-ruby/rest/video/v1/room.rb +612 -0
- data/lib/twilio-ruby/rest/video/v1.rb +106 -0
- data/lib/twilio-ruby/rest/video.rb +86 -0
- data/lib/twilio-ruby/rest/voice/v1/archived_call.rb +184 -0
- data/lib/twilio-ruby/rest/voice/v1/byoc_trunk.rb +496 -0
- data/lib/twilio-ruby/rest/voice/v1/connection_policy/connection_policy_target.rb +441 -0
- data/lib/twilio-ruby/rest/voice/v1/connection_policy.rb +362 -0
- data/lib/twilio-ruby/rest/voice/v1/dialing_permissions/bulk_country_update.rb +128 -0
- data/lib/twilio-ruby/rest/voice/v1/dialing_permissions/country/highrisk_special_prefix.rb +190 -0
- data/lib/twilio-ruby/rest/voice/v1/dialing_permissions/country.rb +404 -0
- data/lib/twilio-ruby/rest/voice/v1/dialing_permissions/settings.rb +197 -0
- data/lib/twilio-ruby/rest/voice/v1/dialing_permissions.rb +129 -0
- data/lib/twilio-ruby/rest/voice/v1/ip_record.rb +349 -0
- data/lib/twilio-ruby/rest/voice/v1/source_ip_mapping.rb +329 -0
- data/lib/twilio-ruby/rest/voice/v1.rb +124 -0
- data/lib/twilio-ruby/rest/voice.rb +88 -0
- data/lib/twilio-ruby/rest/wireless/v1/command.rb +416 -0
- data/lib/twilio-ruby/rest/wireless/v1/rate_plan.rb +446 -0
- data/lib/twilio-ruby/rest/wireless/v1/sim/data_session.rb +291 -0
- data/lib/twilio-ruby/rest/wireless/v1/sim/usage_record.rb +250 -0
- data/lib/twilio-ruby/rest/wireless/v1/sim.rb +657 -0
- data/lib/twilio-ruby/rest/wireless/v1/usage_record.rb +229 -0
- data/lib/twilio-ruby/rest/wireless/v1.rb +83 -0
- data/lib/twilio-ruby/rest/wireless.rb +71 -0
- data/lib/twilio-ruby/rest.rb +13 -0
- data/lib/twilio-ruby/security/request_validator.rb +150 -0
- data/lib/twilio-ruby/twiml/fax_response.rb +45 -0
- data/lib/twilio-ruby/twiml/messaging_response.rb +107 -0
- data/lib/twilio-ruby/twiml/twiml.rb +126 -0
- data/lib/twilio-ruby/twiml/voice_response.rb +1849 -0
- data/lib/twilio-ruby/util/configuration.rb +33 -0
- data/lib/twilio-ruby/util.rb +5 -1
- data/lib/twilio-ruby/version.rb +1 -1
- data/lib/twilio-ruby.rb +39 -50
- data/sonar-project.properties +13 -0
- data/twilio-ruby.gemspec +34 -26
- metadata +674 -141
- data/.travis.yml +0 -13
- data/CHANGES +0 -47
- data/docs/Makefile +0 -130
- data/docs/_themes/LICENSE +0 -45
- data/docs/_themes/README.rst +0 -25
- data/docs/_themes/flask_theme_support.py +0 -86
- data/docs/_themes/kr/layout.html +0 -32
- data/docs/_themes/kr/relations.html +0 -19
- data/docs/_themes/kr/static/flasky.css_t +0 -469
- data/docs/_themes/kr/static/small_flask.css +0 -70
- data/docs/_themes/kr/theme.conf +0 -7
- data/docs/_themes/kr_small/layout.html +0 -22
- data/docs/_themes/kr_small/static/flasky.css_t +0 -287
- data/docs/_themes/kr_small/theme.conf +0 -10
- data/docs/changelog.rst +0 -1
- data/docs/conf.py +0 -266
- data/docs/faq.rst +0 -42
- data/docs/getting-started.rst +0 -91
- data/docs/index.rst +0 -109
- data/docs/make.bat +0 -170
- data/docs/src/pip-delete-this-directory.txt +0 -5
- data/docs/usage/accounts.rst +0 -89
- data/docs/usage/applications.rst +0 -108
- data/docs/usage/basics.rst +0 -102
- data/docs/usage/caller-ids.rst +0 -45
- data/docs/usage/conferences.rst +0 -108
- data/docs/usage/errors.rst +0 -29
- data/docs/usage/messages.rst +0 -109
- data/docs/usage/notifications.rst +0 -70
- data/docs/usage/phone-calls.rst +0 -166
- data/docs/usage/phone-numbers.rst +0 -174
- data/docs/usage/queues.rst +0 -112
- data/docs/usage/recordings.rst +0 -96
- data/docs/usage/sip.rst +0 -103
- data/docs/usage/token-generation.rst +0 -81
- data/docs/usage/transcriptions.rst +0 -31
- data/docs/usage/twiml.rst +0 -69
- data/docs/usage/validation.rst +0 -71
- data/lib/twilio-ruby/rest/applications.rb +0 -6
- data/lib/twilio-ruby/rest/authorized_connect_apps.rb +0 -6
- data/lib/twilio-ruby/rest/available_phone_numbers/country.rb +0 -10
- data/lib/twilio-ruby/rest/available_phone_numbers/local.rb +0 -11
- data/lib/twilio-ruby/rest/available_phone_numbers/mobile.rb +0 -11
- data/lib/twilio-ruby/rest/available_phone_numbers/toll_free.rb +0 -11
- data/lib/twilio-ruby/rest/available_phone_numbers.rb +0 -13
- data/lib/twilio-ruby/rest/calls.rb +0 -28
- data/lib/twilio-ruby/rest/conferences/participants.rb +0 -23
- data/lib/twilio-ruby/rest/conferences.rb +0 -12
- data/lib/twilio-ruby/rest/connect_apps.rb +0 -6
- data/lib/twilio-ruby/rest/errors.rb +0 -14
- data/lib/twilio-ruby/rest/incoming_phone_numbers/local.rb +0 -13
- data/lib/twilio-ruby/rest/incoming_phone_numbers/mobile.rb +0 -13
- data/lib/twilio-ruby/rest/incoming_phone_numbers/toll_free.rb +0 -13
- data/lib/twilio-ruby/rest/incoming_phone_numbers.rb +0 -17
- data/lib/twilio-ruby/rest/instance_resource.rb +0 -101
- data/lib/twilio-ruby/rest/list_resource.rb +0 -110
- data/lib/twilio-ruby/rest/messages.rb +0 -17
- data/lib/twilio-ruby/rest/notifications.rb +0 -6
- data/lib/twilio-ruby/rest/outgoing_caller_ids.rb +0 -25
- data/lib/twilio-ruby/rest/queues/members.rb +0 -29
- data/lib/twilio-ruby/rest/queues.rb +0 -12
- data/lib/twilio-ruby/rest/recordings.rb +0 -35
- data/lib/twilio-ruby/rest/sandbox.rb +0 -5
- data/lib/twilio-ruby/rest/sip/credential_lists/credentials.rb +0 -6
- data/lib/twilio-ruby/rest/sip/credential_lists.rb +0 -11
- data/lib/twilio-ruby/rest/sip/domains/credential_list_mappings.rb +0 -6
- data/lib/twilio-ruby/rest/sip/domains/ip_access_control_list_mappings.rb +0 -6
- data/lib/twilio-ruby/rest/sip/domains.rb +0 -12
- data/lib/twilio-ruby/rest/sip/ip_access_control_lists/ip_addresses.rb +0 -6
- data/lib/twilio-ruby/rest/sip/ip_access_control_lists.rb +0 -11
- data/lib/twilio-ruby/rest/sip.rb +0 -12
- data/lib/twilio-ruby/rest/sms/messages.rb +0 -15
- data/lib/twilio-ruby/rest/sms/short_codes.rb +0 -8
- data/lib/twilio-ruby/rest/sms.rb +0 -11
- data/lib/twilio-ruby/rest/transcriptions.rb +0 -6
- data/lib/twilio-ruby/rest/usage/records.rb +0 -21
- data/lib/twilio-ruby/rest/usage/triggers.rb +0 -12
- data/lib/twilio-ruby/rest/usage.rb +0 -10
- data/lib/twilio-ruby/rest/utils.rb +0 -25
- data/lib/twilio-ruby/twiml/response.rb +0 -15
- data/lib/twilio-ruby/util/capability.rb +0 -61
- data/lib/twilio-ruby/util/request_validator.rb +0 -22
- data/spec/rest/account_spec.rb +0 -58
- data/spec/rest/call_spec.rb +0 -18
- data/spec/rest/client_spec.rb +0 -100
- data/spec/rest/conference_spec.rb +0 -9
- data/spec/rest/instance_resource_spec.rb +0 -15
- data/spec/rest/message_spec.rb +0 -12
- data/spec/rest/numbers_spec.rb +0 -46
- data/spec/rest/queue_spec.rb +0 -9
- data/spec/rest/recording_spec.rb +0 -9
- data/spec/spec_helper.rb +0 -6
- data/spec/util/capability_spec.rb +0 -137
- data/spec/util/request_validator_spec.rb +0 -65
- data/spec/util/url_encode_spec.rb +0 -12
@@ -0,0 +1,229 @@
|
|
1
|
+
##
|
2
|
+
# This code was generated by
|
3
|
+
# \ / _ _ _| _ _
|
4
|
+
# | (_)\/(_)(_|\/| |(/_ v1.0.0
|
5
|
+
# / /
|
6
|
+
#
|
7
|
+
# frozen_string_literal: true
|
8
|
+
|
9
|
+
module Twilio
|
10
|
+
module REST
|
11
|
+
class Wireless < Domain
|
12
|
+
class V1 < Version
|
13
|
+
class UsageRecordList < ListResource
|
14
|
+
##
|
15
|
+
# Initialize the UsageRecordList
|
16
|
+
# @param [Version] version Version that contains the resource
|
17
|
+
# @return [UsageRecordList] UsageRecordList
|
18
|
+
def initialize(version)
|
19
|
+
super(version)
|
20
|
+
|
21
|
+
# Path Solution
|
22
|
+
@solution = {}
|
23
|
+
@uri = "/UsageRecords"
|
24
|
+
end
|
25
|
+
|
26
|
+
##
|
27
|
+
# Lists UsageRecordInstance records from the API as a list.
|
28
|
+
# Unlike stream(), this operation is eager and will load `limit` records into
|
29
|
+
# memory before returning.
|
30
|
+
# @param [Time] end_ Only include usage that has occurred on or before this date.
|
31
|
+
# Format is {ISO 8601}[https://www.iso.org/iso-8601-date-and-time-format.html].
|
32
|
+
# @param [Time] start Only include usage that has occurred on or after this date.
|
33
|
+
# Format is {ISO 8601}[https://www.iso.org/iso-8601-date-and-time-format.html].
|
34
|
+
# @param [usage_record.Granularity] granularity How to summarize the usage by
|
35
|
+
# time. Can be: `daily`, `hourly`, or `all`. A value of `all` returns one Usage
|
36
|
+
# Record that describes the usage for the entire period.
|
37
|
+
# @param [Integer] limit Upper limit for the number of records to return. stream()
|
38
|
+
# guarantees to never return more than limit. Default is no limit
|
39
|
+
# @param [Integer] page_size Number of records to fetch per request, when
|
40
|
+
# not set will use the default value of 50 records. If no page_size is defined
|
41
|
+
# but a limit is defined, stream() will attempt to read the limit with the most
|
42
|
+
# efficient page size, i.e. min(limit, 1000)
|
43
|
+
# @return [Array] Array of up to limit results
|
44
|
+
def list(end_: :unset, start: :unset, granularity: :unset, limit: nil, page_size: nil)
|
45
|
+
self.stream(
|
46
|
+
end_: end_,
|
47
|
+
start: start,
|
48
|
+
granularity: granularity,
|
49
|
+
limit: limit,
|
50
|
+
page_size: page_size
|
51
|
+
).entries
|
52
|
+
end
|
53
|
+
|
54
|
+
##
|
55
|
+
# Streams UsageRecordInstance records from the API as an Enumerable.
|
56
|
+
# This operation lazily loads records as efficiently as possible until the limit
|
57
|
+
# is reached.
|
58
|
+
# @param [Time] end_ Only include usage that has occurred on or before this date.
|
59
|
+
# Format is {ISO 8601}[https://www.iso.org/iso-8601-date-and-time-format.html].
|
60
|
+
# @param [Time] start Only include usage that has occurred on or after this date.
|
61
|
+
# Format is {ISO 8601}[https://www.iso.org/iso-8601-date-and-time-format.html].
|
62
|
+
# @param [usage_record.Granularity] granularity How to summarize the usage by
|
63
|
+
# time. Can be: `daily`, `hourly`, or `all`. A value of `all` returns one Usage
|
64
|
+
# Record that describes the usage for the entire period.
|
65
|
+
# @param [Integer] limit Upper limit for the number of records to return. stream()
|
66
|
+
# guarantees to never return more than limit. Default is no limit.
|
67
|
+
# @param [Integer] page_size Number of records to fetch per request, when
|
68
|
+
# not set will use the default value of 50 records. If no page_size is defined
|
69
|
+
# but a limit is defined, stream() will attempt to read the limit with the most
|
70
|
+
# efficient page size, i.e. min(limit, 1000)
|
71
|
+
# @return [Enumerable] Enumerable that will yield up to limit results
|
72
|
+
def stream(end_: :unset, start: :unset, granularity: :unset, limit: nil, page_size: nil)
|
73
|
+
limits = @version.read_limits(limit, page_size)
|
74
|
+
|
75
|
+
page = self.page(end_: end_, start: start, granularity: granularity, page_size: limits[:page_size], )
|
76
|
+
|
77
|
+
@version.stream(page, limit: limits[:limit], page_limit: limits[:page_limit])
|
78
|
+
end
|
79
|
+
|
80
|
+
##
|
81
|
+
# When passed a block, yields UsageRecordInstance records from the API.
|
82
|
+
# This operation lazily loads records as efficiently as possible until the limit
|
83
|
+
# is reached.
|
84
|
+
def each
|
85
|
+
limits = @version.read_limits
|
86
|
+
|
87
|
+
page = self.page(page_size: limits[:page_size], )
|
88
|
+
|
89
|
+
@version.stream(page,
|
90
|
+
limit: limits[:limit],
|
91
|
+
page_limit: limits[:page_limit]).each {|x| yield x}
|
92
|
+
end
|
93
|
+
|
94
|
+
##
|
95
|
+
# Retrieve a single page of UsageRecordInstance records from the API.
|
96
|
+
# Request is executed immediately.
|
97
|
+
# @param [Time] end_ Only include usage that has occurred on or before this date.
|
98
|
+
# Format is {ISO 8601}[https://www.iso.org/iso-8601-date-and-time-format.html].
|
99
|
+
# @param [Time] start Only include usage that has occurred on or after this date.
|
100
|
+
# Format is {ISO 8601}[https://www.iso.org/iso-8601-date-and-time-format.html].
|
101
|
+
# @param [usage_record.Granularity] granularity How to summarize the usage by
|
102
|
+
# time. Can be: `daily`, `hourly`, or `all`. A value of `all` returns one Usage
|
103
|
+
# Record that describes the usage for the entire period.
|
104
|
+
# @param [String] page_token PageToken provided by the API
|
105
|
+
# @param [Integer] page_number Page Number, this value is simply for client state
|
106
|
+
# @param [Integer] page_size Number of records to return, defaults to 50
|
107
|
+
# @return [Page] Page of UsageRecordInstance
|
108
|
+
def page(end_: :unset, start: :unset, granularity: :unset, page_token: :unset, page_number: :unset, page_size: :unset)
|
109
|
+
params = Twilio::Values.of({
|
110
|
+
'End' => Twilio.serialize_iso8601_datetime(end_),
|
111
|
+
'Start' => Twilio.serialize_iso8601_datetime(start),
|
112
|
+
'Granularity' => granularity,
|
113
|
+
'PageToken' => page_token,
|
114
|
+
'Page' => page_number,
|
115
|
+
'PageSize' => page_size,
|
116
|
+
})
|
117
|
+
|
118
|
+
response = @version.page('GET', @uri, params: params)
|
119
|
+
|
120
|
+
UsageRecordPage.new(@version, response, @solution)
|
121
|
+
end
|
122
|
+
|
123
|
+
##
|
124
|
+
# Retrieve a single page of UsageRecordInstance records from the API.
|
125
|
+
# Request is executed immediately.
|
126
|
+
# @param [String] target_url API-generated URL for the requested results page
|
127
|
+
# @return [Page] Page of UsageRecordInstance
|
128
|
+
def get_page(target_url)
|
129
|
+
response = @version.domain.request(
|
130
|
+
'GET',
|
131
|
+
target_url
|
132
|
+
)
|
133
|
+
UsageRecordPage.new(@version, response, @solution)
|
134
|
+
end
|
135
|
+
|
136
|
+
##
|
137
|
+
# Provide a user friendly representation
|
138
|
+
def to_s
|
139
|
+
'#<Twilio.Wireless.V1.UsageRecordList>'
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
class UsageRecordPage < Page
|
144
|
+
##
|
145
|
+
# Initialize the UsageRecordPage
|
146
|
+
# @param [Version] version Version that contains the resource
|
147
|
+
# @param [Response] response Response from the API
|
148
|
+
# @param [Hash] solution Path solution for the resource
|
149
|
+
# @return [UsageRecordPage] UsageRecordPage
|
150
|
+
def initialize(version, response, solution)
|
151
|
+
super(version, response)
|
152
|
+
|
153
|
+
# Path Solution
|
154
|
+
@solution = solution
|
155
|
+
end
|
156
|
+
|
157
|
+
##
|
158
|
+
# Build an instance of UsageRecordInstance
|
159
|
+
# @param [Hash] payload Payload response from the API
|
160
|
+
# @return [UsageRecordInstance] UsageRecordInstance
|
161
|
+
def get_instance(payload)
|
162
|
+
UsageRecordInstance.new(@version, payload, )
|
163
|
+
end
|
164
|
+
|
165
|
+
##
|
166
|
+
# Provide a user friendly representation
|
167
|
+
def to_s
|
168
|
+
'<Twilio.Wireless.V1.UsageRecordPage>'
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
class UsageRecordInstance < InstanceResource
|
173
|
+
##
|
174
|
+
# Initialize the UsageRecordInstance
|
175
|
+
# @param [Version] version Version that contains the resource
|
176
|
+
# @param [Hash] payload payload that contains response from Twilio
|
177
|
+
# @return [UsageRecordInstance] UsageRecordInstance
|
178
|
+
def initialize(version, payload)
|
179
|
+
super(version)
|
180
|
+
|
181
|
+
# Marshaled Properties
|
182
|
+
@properties = {
|
183
|
+
'account_sid' => payload['account_sid'],
|
184
|
+
'period' => payload['period'],
|
185
|
+
'commands' => payload['commands'],
|
186
|
+
'data' => payload['data'],
|
187
|
+
}
|
188
|
+
end
|
189
|
+
|
190
|
+
##
|
191
|
+
# @return [String] The SID of the Account that created the resource
|
192
|
+
def account_sid
|
193
|
+
@properties['account_sid']
|
194
|
+
end
|
195
|
+
|
196
|
+
##
|
197
|
+
# @return [Hash] The time period for which usage is reported
|
198
|
+
def period
|
199
|
+
@properties['period']
|
200
|
+
end
|
201
|
+
|
202
|
+
##
|
203
|
+
# @return [Hash] An object that describes the aggregated Commands usage for all SIMs during the specified period
|
204
|
+
def commands
|
205
|
+
@properties['commands']
|
206
|
+
end
|
207
|
+
|
208
|
+
##
|
209
|
+
# @return [Hash] An object that describes the aggregated Data usage for all SIMs over the period
|
210
|
+
def data
|
211
|
+
@properties['data']
|
212
|
+
end
|
213
|
+
|
214
|
+
##
|
215
|
+
# Provide a user friendly representation
|
216
|
+
def to_s
|
217
|
+
"<Twilio.Wireless.V1.UsageRecordInstance>"
|
218
|
+
end
|
219
|
+
|
220
|
+
##
|
221
|
+
# Provide a detailed, user friendly representation
|
222
|
+
def inspect
|
223
|
+
"<Twilio.Wireless.V1.UsageRecordInstance>"
|
224
|
+
end
|
225
|
+
end
|
226
|
+
end
|
227
|
+
end
|
228
|
+
end
|
229
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
##
|
2
|
+
# This code was generated by
|
3
|
+
# \ / _ _ _| _ _
|
4
|
+
# | (_)\/(_)(_|\/| |(/_ v1.0.0
|
5
|
+
# / /
|
6
|
+
#
|
7
|
+
# frozen_string_literal: true
|
8
|
+
|
9
|
+
module Twilio
|
10
|
+
module REST
|
11
|
+
class Wireless
|
12
|
+
class V1 < Version
|
13
|
+
##
|
14
|
+
# Initialize the V1 version of Wireless
|
15
|
+
def initialize(domain)
|
16
|
+
super
|
17
|
+
@version = 'v1'
|
18
|
+
@usage_records = nil
|
19
|
+
@commands = nil
|
20
|
+
@rate_plans = nil
|
21
|
+
@sims = nil
|
22
|
+
end
|
23
|
+
|
24
|
+
##
|
25
|
+
# @return [Twilio::REST::Wireless::V1::UsageRecordContext]
|
26
|
+
def usage_records
|
27
|
+
@usage_records ||= UsageRecordList.new self
|
28
|
+
end
|
29
|
+
|
30
|
+
##
|
31
|
+
# @param [String] sid The SID of the Command resource to fetch.
|
32
|
+
# @return [Twilio::REST::Wireless::V1::CommandContext] if sid was passed.
|
33
|
+
# @return [Twilio::REST::Wireless::V1::CommandList]
|
34
|
+
def commands(sid=:unset)
|
35
|
+
if sid.nil?
|
36
|
+
raise ArgumentError, 'sid cannot be nil'
|
37
|
+
end
|
38
|
+
if sid == :unset
|
39
|
+
@commands ||= CommandList.new self
|
40
|
+
else
|
41
|
+
CommandContext.new(self, sid)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
##
|
46
|
+
# @param [String] sid The SID of the RatePlan resource to fetch.
|
47
|
+
# @return [Twilio::REST::Wireless::V1::RatePlanContext] if sid was passed.
|
48
|
+
# @return [Twilio::REST::Wireless::V1::RatePlanList]
|
49
|
+
def rate_plans(sid=:unset)
|
50
|
+
if sid.nil?
|
51
|
+
raise ArgumentError, 'sid cannot be nil'
|
52
|
+
end
|
53
|
+
if sid == :unset
|
54
|
+
@rate_plans ||= RatePlanList.new self
|
55
|
+
else
|
56
|
+
RatePlanContext.new(self, sid)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
##
|
61
|
+
# @param [String] sid The SID or the `unique_name` of the Sim resource to fetch.
|
62
|
+
# @return [Twilio::REST::Wireless::V1::SimContext] if sid was passed.
|
63
|
+
# @return [Twilio::REST::Wireless::V1::SimList]
|
64
|
+
def sims(sid=:unset)
|
65
|
+
if sid.nil?
|
66
|
+
raise ArgumentError, 'sid cannot be nil'
|
67
|
+
end
|
68
|
+
if sid == :unset
|
69
|
+
@sims ||= SimList.new self
|
70
|
+
else
|
71
|
+
SimContext.new(self, sid)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
##
|
76
|
+
# Provide a user friendly representation
|
77
|
+
def to_s
|
78
|
+
'<Twilio::REST::Wireless::V1>'
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
##
|
2
|
+
# This code was generated by
|
3
|
+
# \ / _ _ _| _ _
|
4
|
+
# | (_)\/(_)(_|\/| |(/_ v1.0.0
|
5
|
+
# / /
|
6
|
+
#
|
7
|
+
# frozen_string_literal: true
|
8
|
+
|
9
|
+
module Twilio
|
10
|
+
module REST
|
11
|
+
class Wireless < Domain
|
12
|
+
##
|
13
|
+
# Initialize the Wireless Domain
|
14
|
+
def initialize(twilio)
|
15
|
+
super
|
16
|
+
|
17
|
+
@base_url = 'https://wireless.twilio.com'
|
18
|
+
@host = 'wireless.twilio.com'
|
19
|
+
@port = 443
|
20
|
+
|
21
|
+
# Versions
|
22
|
+
@v1 = nil
|
23
|
+
end
|
24
|
+
|
25
|
+
##
|
26
|
+
# Version v1 of wireless
|
27
|
+
def v1
|
28
|
+
@v1 ||= V1.new self
|
29
|
+
end
|
30
|
+
|
31
|
+
##
|
32
|
+
# @return [Twilio::REST::Wireless::V1::UsageRecordInstance]
|
33
|
+
def usage_records
|
34
|
+
self.v1.usage_records()
|
35
|
+
end
|
36
|
+
|
37
|
+
##
|
38
|
+
# @param [String] sid The unique string that we created to identify the Command
|
39
|
+
# resource.
|
40
|
+
# @return [Twilio::REST::Wireless::V1::CommandInstance] if sid was passed.
|
41
|
+
# @return [Twilio::REST::Wireless::V1::CommandList]
|
42
|
+
def commands(sid=:unset)
|
43
|
+
self.v1.commands(sid)
|
44
|
+
end
|
45
|
+
|
46
|
+
##
|
47
|
+
# @param [String] sid The unique string that we created to identify the RatePlan
|
48
|
+
# resource.
|
49
|
+
# @return [Twilio::REST::Wireless::V1::RatePlanInstance] if sid was passed.
|
50
|
+
# @return [Twilio::REST::Wireless::V1::RatePlanList]
|
51
|
+
def rate_plans(sid=:unset)
|
52
|
+
self.v1.rate_plans(sid)
|
53
|
+
end
|
54
|
+
|
55
|
+
##
|
56
|
+
# @param [String] sid The unique string that we created to identify the Sim
|
57
|
+
# resource.
|
58
|
+
# @return [Twilio::REST::Wireless::V1::SimInstance] if sid was passed.
|
59
|
+
# @return [Twilio::REST::Wireless::V1::SimList]
|
60
|
+
def sims(sid=:unset)
|
61
|
+
self.v1.sims(sid)
|
62
|
+
end
|
63
|
+
|
64
|
+
##
|
65
|
+
# Provide a user friendly representation
|
66
|
+
def to_s
|
67
|
+
'#<Twilio::REST::Wireless>'
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
Dir[File.join(__dir__, 'framework/rest/*.rb')].sort.each do |file|
|
4
|
+
require file
|
5
|
+
end
|
6
|
+
|
7
|
+
Dir[File.join(__dir__, 'rest/*.rb')].sort.each do |file|
|
8
|
+
require file
|
9
|
+
end
|
10
|
+
|
11
|
+
Dir[File.join(__dir__, 'rest/**/*.rb')].sort.each do |file|
|
12
|
+
require file
|
13
|
+
end
|
@@ -0,0 +1,150 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Twilio
|
4
|
+
module Security
|
5
|
+
class RequestValidator
|
6
|
+
##
|
7
|
+
# Initialize a Request Validator. auth_token will either be grabbed from the global Twilio object or you can
|
8
|
+
# pass it in here.
|
9
|
+
#
|
10
|
+
# @param [String] auth_token Your account auth token, used to sign requests
|
11
|
+
def initialize(auth_token = nil)
|
12
|
+
@auth_token = auth_token || Twilio.auth_token
|
13
|
+
raise ArgumentError, 'Auth token is required' if @auth_token.nil?
|
14
|
+
end
|
15
|
+
|
16
|
+
##
|
17
|
+
# Validates that after hashing a request with Twilio's request-signing algorithm
|
18
|
+
# (https://www.twilio.com/docs/usage/security#validating-requests), the hash matches the signature parameter
|
19
|
+
#
|
20
|
+
# @param [String] url The url sent to your server, including any query parameters
|
21
|
+
# @param [String, Hash, #to_unsafe_h] params In most cases, this is the POST parameters as a hash. If you received
|
22
|
+
# a bodySHA256 parameter in the query string, this parameter can instead be the POST body as a string to
|
23
|
+
# validate JSON or other text-based payloads that aren't x-www-form-urlencoded.
|
24
|
+
# @param [String] signature The expected signature, from the X-Twilio-Signature header of the request
|
25
|
+
#
|
26
|
+
# @return [Boolean] whether or not the computed signature matches the signature parameter
|
27
|
+
def validate(url, params, signature)
|
28
|
+
parsed_url = URI(url)
|
29
|
+
url_with_port = add_port(parsed_url)
|
30
|
+
url_without_port = remove_port(parsed_url)
|
31
|
+
|
32
|
+
valid_body = true # default succeed, since body not always provided
|
33
|
+
params_hash = body_or_hash(params)
|
34
|
+
unless params_hash.is_a? Enumerable
|
35
|
+
body_hash = URI.decode_www_form(parsed_url.query || '').to_h['bodySHA256']
|
36
|
+
params_hash = build_hash_for(params)
|
37
|
+
valid_body = !(params_hash.nil? || body_hash.nil?) && secure_compare(params_hash, body_hash)
|
38
|
+
params_hash = {}
|
39
|
+
end
|
40
|
+
|
41
|
+
# Check signature of the url with and without port numbers
|
42
|
+
# since signature generation on the back end is inconsistent
|
43
|
+
valid_signature_with_port = secure_compare(build_signature_for(url_with_port, params_hash), signature)
|
44
|
+
valid_signature_without_port = secure_compare(build_signature_for(url_without_port, params_hash), signature)
|
45
|
+
|
46
|
+
valid_body && (valid_signature_with_port || valid_signature_without_port)
|
47
|
+
end
|
48
|
+
|
49
|
+
##
|
50
|
+
# Build a SHA256 hash for a body string
|
51
|
+
#
|
52
|
+
# @param [String] body String to hash
|
53
|
+
#
|
54
|
+
# @return [String] A hex-encoded SHA256 of the body string
|
55
|
+
def build_hash_for(body)
|
56
|
+
hasher = OpenSSL::Digest.new('sha256')
|
57
|
+
hasher.hexdigest(body)
|
58
|
+
end
|
59
|
+
|
60
|
+
##
|
61
|
+
# Build a SHA1-HMAC signature for a url and parameter hash
|
62
|
+
#
|
63
|
+
# @param [String] url The request url, including any query parameters
|
64
|
+
# @param [#join] params The POST parameters
|
65
|
+
#
|
66
|
+
# @return [String] A base64 encoded SHA1-HMAC
|
67
|
+
def build_signature_for(url, params)
|
68
|
+
data = url + params.sort.join
|
69
|
+
digest = OpenSSL::Digest.new('sha1')
|
70
|
+
Base64.strict_encode64(OpenSSL::HMAC.digest(digest, @auth_token, data))
|
71
|
+
end
|
72
|
+
|
73
|
+
private
|
74
|
+
|
75
|
+
# Compares two strings in constant time to avoid timing attacks.
|
76
|
+
# Borrowed from ActiveSupport::MessageVerifier.
|
77
|
+
# https://github.com/rails/rails/blob/master/activesupport/lib/active_support/message_verifier.rb
|
78
|
+
def secure_compare(a, b)
|
79
|
+
return false unless a.bytesize == b.bytesize
|
80
|
+
|
81
|
+
l = a.unpack("C#{a.bytesize}")
|
82
|
+
|
83
|
+
res = 0
|
84
|
+
b.each_byte { |byte| res |= byte ^ l.shift }
|
85
|
+
res.zero?
|
86
|
+
end
|
87
|
+
|
88
|
+
# `ActionController::Parameters` no longer, as of Rails 5, inherits
|
89
|
+
# from `Hash` so the `sort` method, used above in `build_signature_for`
|
90
|
+
# is deprecated.
|
91
|
+
#
|
92
|
+
# `to_unsafe_h` was introduced in Rails 4.2.1, before then it is still
|
93
|
+
# possible to sort on an ActionController::Parameters object.
|
94
|
+
#
|
95
|
+
# We use `to_unsafe_h` as `to_h` returns a hash of the permitted
|
96
|
+
# parameters only and we need all the parameters to create the signature.
|
97
|
+
def body_or_hash(params_or_body)
|
98
|
+
if params_or_body.respond_to?(:to_unsafe_h)
|
99
|
+
params_or_body.to_unsafe_h
|
100
|
+
else
|
101
|
+
params_or_body
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
##
|
106
|
+
# Adds the standard port to the url if it doesn't already have one
|
107
|
+
#
|
108
|
+
# @param [URI] parsed_url The parsed request url
|
109
|
+
#
|
110
|
+
# @return [String] The URL with a port number
|
111
|
+
def add_port(parsed_url)
|
112
|
+
if parsed_url.port.nil? || parsed_url.port == parsed_url.default_port
|
113
|
+
build_url_with_port_for(parsed_url)
|
114
|
+
else
|
115
|
+
parsed_url.to_s
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
##
|
120
|
+
# Removes the port from the url
|
121
|
+
#
|
122
|
+
# @param [URI] parsed_url The parsed request url
|
123
|
+
#
|
124
|
+
# @return [String] The URL without a port number
|
125
|
+
def remove_port(parsed_url)
|
126
|
+
parsed_url.port = nil
|
127
|
+
parsed_url.to_s
|
128
|
+
end
|
129
|
+
|
130
|
+
##
|
131
|
+
# Builds the url from its component pieces, with the standard port
|
132
|
+
#
|
133
|
+
# @param [URI] parsed_url The parsed request url
|
134
|
+
#
|
135
|
+
# @return [String] The URL with the standard port number
|
136
|
+
def build_url_with_port_for(parsed_url)
|
137
|
+
url = ''
|
138
|
+
|
139
|
+
url += parsed_url.scheme ? "#{parsed_url.scheme}://" : ''
|
140
|
+
url += parsed_url.userinfo ? "#{parsed_url.userinfo}@" : ''
|
141
|
+
url += parsed_url.host ? "#{parsed_url.host}:#{parsed_url.port}" : ''
|
142
|
+
url += parsed_url.path
|
143
|
+
url += parsed_url.query ? "?#{parsed_url.query}" : ''
|
144
|
+
url += parsed_url.fragment ? "##{parsed_url.fragment}" : ''
|
145
|
+
|
146
|
+
url
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
##
|
2
|
+
# This code was generated by
|
3
|
+
# \ / _ _ _| _ _
|
4
|
+
# | (_)\/(_)(_|\/| |(/_ v1.0.0
|
5
|
+
# / /
|
6
|
+
#
|
7
|
+
# frozen_string_literal: true
|
8
|
+
|
9
|
+
module Twilio
|
10
|
+
module TwiML
|
11
|
+
##
|
12
|
+
# <Response> TwiML for Faxes
|
13
|
+
class FaxResponse < TwiML
|
14
|
+
def initialize(**keyword_args)
|
15
|
+
super(**keyword_args)
|
16
|
+
@name = 'Response'
|
17
|
+
|
18
|
+
yield(self) if block_given?
|
19
|
+
end
|
20
|
+
|
21
|
+
##
|
22
|
+
# Create a new <Receive> element
|
23
|
+
# action:: Receive action URL
|
24
|
+
# method:: Receive action URL method
|
25
|
+
# media_type:: The media type used to store media in the fax media store
|
26
|
+
# page_size:: What size to interpret received pages as
|
27
|
+
# store_media:: Whether or not to store received media in the fax media store
|
28
|
+
# keyword_args:: additional attributes
|
29
|
+
def receive(action: nil, method: nil, media_type: nil, page_size: nil, store_media: nil, **keyword_args)
|
30
|
+
append(Receive.new(action: action, method: method, media_type: media_type, page_size: page_size, store_media: store_media, **keyword_args))
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
##
|
35
|
+
# <Receive> TwiML Verb
|
36
|
+
class Receive < TwiML
|
37
|
+
def initialize(**keyword_args)
|
38
|
+
super(**keyword_args)
|
39
|
+
@name = 'Receive'
|
40
|
+
|
41
|
+
yield(self) if block_given?
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,107 @@
|
|
1
|
+
##
|
2
|
+
# This code was generated by
|
3
|
+
# \ / _ _ _| _ _
|
4
|
+
# | (_)\/(_)(_|\/| |(/_ v1.0.0
|
5
|
+
# / /
|
6
|
+
#
|
7
|
+
# frozen_string_literal: true
|
8
|
+
|
9
|
+
module Twilio
|
10
|
+
module TwiML
|
11
|
+
##
|
12
|
+
# <Response> TwiML for Messages
|
13
|
+
class MessagingResponse < TwiML
|
14
|
+
def initialize(**keyword_args)
|
15
|
+
super(**keyword_args)
|
16
|
+
@name = 'Response'
|
17
|
+
|
18
|
+
yield(self) if block_given?
|
19
|
+
end
|
20
|
+
|
21
|
+
##
|
22
|
+
# Create a new <Message> element
|
23
|
+
# body:: Message Body
|
24
|
+
# to:: Phone Number to send Message to
|
25
|
+
# from:: Phone Number to send Message from
|
26
|
+
# action:: Action URL
|
27
|
+
# method:: Action URL Method
|
28
|
+
# status_callback:: Status callback URL. Deprecated in favor of action.
|
29
|
+
# keyword_args:: additional attributes
|
30
|
+
def message(body: nil, to: nil, from: nil, action: nil, method: nil, status_callback: nil, **keyword_args)
|
31
|
+
message = Message.new(body: body, to: to, from: from, action: action, method: method, status_callback: status_callback, **keyword_args)
|
32
|
+
|
33
|
+
yield(message) if block_given?
|
34
|
+
append(message)
|
35
|
+
end
|
36
|
+
|
37
|
+
##
|
38
|
+
# Create a new <Redirect> element
|
39
|
+
# url:: Redirect URL
|
40
|
+
# method:: Redirect URL method
|
41
|
+
# keyword_args:: additional attributes
|
42
|
+
def redirect(url, method: nil, **keyword_args)
|
43
|
+
append(Redirect.new(url, method: method, **keyword_args))
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
##
|
48
|
+
# <Redirect> TwiML Verb
|
49
|
+
class Redirect < TwiML
|
50
|
+
def initialize(url, **keyword_args)
|
51
|
+
super(**keyword_args)
|
52
|
+
@name = 'Redirect'
|
53
|
+
@value = url
|
54
|
+
yield(self) if block_given?
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
##
|
59
|
+
# <Message> TwiML Verb
|
60
|
+
class Message < TwiML
|
61
|
+
def initialize(body: nil, **keyword_args)
|
62
|
+
super(**keyword_args)
|
63
|
+
@name = 'Message'
|
64
|
+
@value = body unless body.nil?
|
65
|
+
yield(self) if block_given?
|
66
|
+
end
|
67
|
+
|
68
|
+
##
|
69
|
+
# Create a new <Body> element
|
70
|
+
# message:: Message Body
|
71
|
+
# keyword_args:: additional attributes
|
72
|
+
def body(message, **keyword_args)
|
73
|
+
append(Body.new(message, **keyword_args))
|
74
|
+
end
|
75
|
+
|
76
|
+
##
|
77
|
+
# Create a new <Media> element
|
78
|
+
# url:: Media URL
|
79
|
+
# keyword_args:: additional attributes
|
80
|
+
def media(url, **keyword_args)
|
81
|
+
append(Media.new(url, **keyword_args))
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
##
|
86
|
+
# <Media> TwiML Noun
|
87
|
+
class Media < TwiML
|
88
|
+
def initialize(url, **keyword_args)
|
89
|
+
super(**keyword_args)
|
90
|
+
@name = 'Media'
|
91
|
+
@value = url
|
92
|
+
yield(self) if block_given?
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
##
|
97
|
+
# <Body> TwiML Noun
|
98
|
+
class Body < TwiML
|
99
|
+
def initialize(message, **keyword_args)
|
100
|
+
super(**keyword_args)
|
101
|
+
@name = 'Body'
|
102
|
+
@value = message
|
103
|
+
yield(self) if block_given?
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|