twilio-api-sdk 1.0.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 +7 -0
- data/LICENSE +28 -0
- data/README.md +213 -0
- data/bin/console +15 -0
- data/lib/twilio_ap_is/api_helper.rb +10 -0
- data/lib/twilio_ap_is/apis/accounts_v1_auth_token_promotion_api.rb +27 -0
- data/lib/twilio_ap_is/apis/accounts_v1_aws_api.rb +137 -0
- data/lib/twilio_ap_is/apis/accounts_v1_bulk_consents_api.rb +41 -0
- data/lib/twilio_ap_is/apis/accounts_v1_bulk_contacts_api.rb +36 -0
- data/lib/twilio_ap_is/apis/accounts_v1_messaging_geopermissions_api.rb +54 -0
- data/lib/twilio_ap_is/apis/accounts_v1_public_key_api.rb +136 -0
- data/lib/twilio_ap_is/apis/accounts_v1_safelist_api.rb +69 -0
- data/lib/twilio_ap_is/apis/accounts_v1_secondary_auth_token_api.rb +39 -0
- data/lib/twilio_ap_is/apis/base_api.rb +67 -0
- data/lib/twilio_ap_is/apis/chat_v3_channel_api.rb +51 -0
- data/lib/twilio_ap_is/apis/conversations_v1_address_configuration_api.rb +218 -0
- data/lib/twilio_ap_is/apis/conversations_v1_binding_api.rb +116 -0
- data/lib/twilio_ap_is/apis/conversations_v1_configuration_api.rb +133 -0
- data/lib/twilio_ap_is/apis/conversations_v1_conversation_api.rb +550 -0
- data/lib/twilio_ap_is/apis/conversations_v1_conversation_with_participants_api.rb +182 -0
- data/lib/twilio_ap_is/apis/conversations_v1_credential_api.rb +189 -0
- data/lib/twilio_ap_is/apis/conversations_v1_delivery_receipt_api.rb +183 -0
- data/lib/twilio_ap_is/apis/conversations_v1_message_api.rb +497 -0
- data/lib/twilio_ap_is/apis/conversations_v1_notification_api.rb +124 -0
- data/lib/twilio_ap_is/apis/conversations_v1_participant_api.rb +546 -0
- data/lib/twilio_ap_is/apis/conversations_v1_participant_conversation_api.rb +99 -0
- data/lib/twilio_ap_is/apis/conversations_v1_role_api.rb +325 -0
- data/lib/twilio_ap_is/apis/conversations_v1_service_api.rb +98 -0
- data/lib/twilio_ap_is/apis/conversations_v1_user_api.rb +364 -0
- data/lib/twilio_ap_is/apis/conversations_v1_user_conversation_api.rb +335 -0
- data/lib/twilio_ap_is/apis/conversations_v1_webhook_api.rb +561 -0
- data/lib/twilio_ap_is/apis/notify_v1_binding_api.rb +186 -0
- data/lib/twilio_ap_is/apis/notify_v1_credential_api.rb +183 -0
- data/lib/twilio_ap_is/apis/notify_v1_notification_api.rb +174 -0
- data/lib/twilio_ap_is/apis/notify_v1_service_api.rb +262 -0
- data/lib/twilio_ap_is/apis/taskrouter_v1_activity_api.rb +177 -0
- data/lib/twilio_ap_is/apis/taskrouter_v1_event_api.rb +125 -0
- data/lib/twilio_ap_is/apis/taskrouter_v1_task_api.rb +310 -0
- data/lib/twilio_ap_is/apis/taskrouter_v1_task_channel_api.rb +173 -0
- data/lib/twilio_ap_is/apis/taskrouter_v1_task_queue_api.rb +232 -0
- data/lib/twilio_ap_is/apis/taskrouter_v1_task_queue_bulk_real_time_statistics_api.rb +36 -0
- data/lib/twilio_ap_is/apis/taskrouter_v1_task_queue_cumulative_statistics_api.rb +63 -0
- data/lib/twilio_ap_is/apis/taskrouter_v1_task_queue_real_time_statistics_api.rb +41 -0
- data/lib/twilio_ap_is/apis/taskrouter_v1_task_queue_statistics_api.rb +63 -0
- data/lib/twilio_ap_is/apis/taskrouter_v1_task_queues_statistics_api.rb +72 -0
- data/lib/twilio_ap_is/apis/taskrouter_v1_task_reservation_api.rb +396 -0
- data/lib/twilio_ap_is/apis/taskrouter_v1_worker_api.rb +232 -0
- data/lib/twilio_ap_is/apis/taskrouter_v1_worker_channel_api.rb +126 -0
- data/lib/twilio_ap_is/apis/taskrouter_v1_worker_reservation_api.rb +385 -0
- data/lib/twilio_ap_is/apis/taskrouter_v1_worker_statistics_api.rb +57 -0
- data/lib/twilio_ap_is/apis/taskrouter_v1_workers_cumulative_statistics_api.rb +51 -0
- data/lib/twilio_ap_is/apis/taskrouter_v1_workers_real_time_statistics_api.rb +35 -0
- data/lib/twilio_ap_is/apis/taskrouter_v1_workers_statistics_api.rb +63 -0
- data/lib/twilio_ap_is/apis/taskrouter_v1_workflow_api.rb +213 -0
- data/lib/twilio_ap_is/apis/taskrouter_v1_workflow_cumulative_statistics_api.rb +68 -0
- data/lib/twilio_ap_is/apis/taskrouter_v1_workflow_real_time_statistics_api.rb +41 -0
- data/lib/twilio_ap_is/apis/taskrouter_v1_workflow_statistics_api.rb +67 -0
- data/lib/twilio_ap_is/apis/taskrouter_v1_workspace_api.rb +225 -0
- data/lib/twilio_ap_is/apis/taskrouter_v1_workspace_cumulative_statistics_api.rb +62 -0
- data/lib/twilio_ap_is/apis/taskrouter_v1_workspace_real_time_statistics_api.rb +35 -0
- data/lib/twilio_ap_is/apis/taskrouter_v1_workspace_statistics_api.rb +61 -0
- data/lib/twilio_ap_is/apis/verify_v2_service_api.rb +178 -0
- data/lib/twilio_ap_is/apis/verify_v2_verification_api.rb +143 -0
- data/lib/twilio_ap_is/apis/verify_v2_verification_check_api.rb +61 -0
- data/lib/twilio_ap_is/client.rb +417 -0
- data/lib/twilio_ap_is/configuration.rb +187 -0
- data/lib/twilio_ap_is/exceptions/api_exception.rb +21 -0
- data/lib/twilio_ap_is/exceptions/v2_services_verifications429_error_exception.rb +63 -0
- data/lib/twilio_ap_is/http/api_response.rb +19 -0
- data/lib/twilio_ap_is/http/auth/basic_auth.rb +62 -0
- data/lib/twilio_ap_is/http/http_call_back.rb +10 -0
- data/lib/twilio_ap_is/http/http_method_enum.rb +10 -0
- data/lib/twilio_ap_is/http/http_request.rb +10 -0
- data/lib/twilio_ap_is/http/http_response.rb +10 -0
- data/lib/twilio_ap_is/http/proxy_settings.rb +22 -0
- data/lib/twilio_ap_is/logging/configuration/api_logging_configuration.rb +186 -0
- data/lib/twilio_ap_is/logging/sdk_logger.rb +17 -0
- data/lib/twilio_ap_is/models/access_token.rb +188 -0
- data/lib/twilio_ap_is/models/access_token_enum_factor_types.rb +26 -0
- data/lib/twilio_ap_is/models/activity.rb +189 -0
- data/lib/twilio_ap_is/models/auth_token_promotion.rb +142 -0
- data/lib/twilio_ap_is/models/base_model.rb +110 -0
- data/lib/twilio_ap_is/models/binding.rb +269 -0
- data/lib/twilio_ap_is/models/binding_binding_type.rb +53 -0
- data/lib/twilio_ap_is/models/bucket.rb +186 -0
- data/lib/twilio_ap_is/models/bulk_consents.rb +83 -0
- data/lib/twilio_ap_is/models/bulk_contacts.rb +83 -0
- data/lib/twilio_ap_is/models/challenge.rb +317 -0
- data/lib/twilio_ap_is/models/challenge_enum_challenge_reasons.rb +41 -0
- data/lib/twilio_ap_is/models/challenge_enum_challenge_statuses.rb +45 -0
- data/lib/twilio_ap_is/models/challenge_enum_factor_types.rb +41 -0
- data/lib/twilio_ap_is/models/channel.rb +249 -0
- data/lib/twilio_ap_is/models/channel_channel_type.rb +36 -0
- data/lib/twilio_ap_is/models/channel_webhook_enabled_type.rb +36 -0
- data/lib/twilio_ap_is/models/configuration.rb +164 -0
- data/lib/twilio_ap_is/models/configuration_address.rb +199 -0
- data/lib/twilio_ap_is/models/configuration_address_auto_creation_type.rb +40 -0
- data/lib/twilio_ap_is/models/configuration_address_method.rb +36 -0
- data/lib/twilio_ap_is/models/configuration_address_type.rb +60 -0
- data/lib/twilio_ap_is/models/configuration_webhook.rb +154 -0
- data/lib/twilio_ap_is/models/configuration_webhook_method.rb +46 -0
- data/lib/twilio_ap_is/models/configuration_webhook_target.rb +37 -0
- data/lib/twilio_ap_is/models/conversation.rb +264 -0
- data/lib/twilio_ap_is/models/conversation_message.rb +268 -0
- data/lib/twilio_ap_is/models/conversation_message_order_type.rb +36 -0
- data/lib/twilio_ap_is/models/conversation_message_receipt.rb +219 -0
- data/lib/twilio_ap_is/models/conversation_message_receipt_delivery_status.rb +49 -0
- data/lib/twilio_ap_is/models/conversation_participant.rb +240 -0
- data/lib/twilio_ap_is/models/conversation_scoped_webhook.rb +178 -0
- data/lib/twilio_ap_is/models/conversation_scoped_webhook_method.rb +36 -0
- data/lib/twilio_ap_is/models/conversation_scoped_webhook_target.rb +40 -0
- data/lib/twilio_ap_is/models/conversation_state.rb +45 -0
- data/lib/twilio_ap_is/models/conversation_webhook_method.rb +36 -0
- data/lib/twilio_ap_is/models/conversation_webhook_target.rb +37 -0
- data/lib/twilio_ap_is/models/conversation_with_participants.rb +264 -0
- data/lib/twilio_ap_is/models/conversation_with_participants_state.rb +45 -0
- data/lib/twilio_ap_is/models/credential.rb +175 -0
- data/lib/twilio_ap_is/models/credential1.rb +174 -0
- data/lib/twilio_ap_is/models/credential_aws.rb +153 -0
- data/lib/twilio_ap_is/models/credential_public_key.rb +153 -0
- data/lib/twilio_ap_is/models/credential_push_type.rb +41 -0
- data/lib/twilio_ap_is/models/entity.rb +177 -0
- data/lib/twilio_ap_is/models/event.rb +270 -0
- data/lib/twilio_ap_is/models/factor.rb +235 -0
- data/lib/twilio_ap_is/models/factor_enum_factor_statuses.rb +36 -0
- data/lib/twilio_ap_is/models/factor_enum_factor_type.rb +40 -0
- data/lib/twilio_ap_is/models/factor_enum_notification_platforms.rb +40 -0
- data/lib/twilio_ap_is/models/factor_enum_totp_algorithms.rb +40 -0
- data/lib/twilio_ap_is/models/form_enum_form_types.rb +26 -0
- data/lib/twilio_ap_is/models/list_activity_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_binding_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_configuration_address_response.rb +95 -0
- data/lib/twilio_ap_is/models/list_conversation_message_receipt_response.rb +95 -0
- data/lib/twilio_ap_is/models/list_conversation_message_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_conversation_participant_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_conversation_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_conversation_scoped_webhook_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_credential_aws_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_credential_public_key_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_credential_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_event_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_participant_conversation_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_role_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_service_binding_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_service_conversation_message_receipt_response.rb +95 -0
- data/lib/twilio_ap_is/models/list_service_conversation_message_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_service_conversation_participant_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_service_conversation_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_service_conversation_scoped_webhook_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_service_participant_conversation_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_service_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_service_role_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_service_user_conversation_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_service_user_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_task_channel_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_task_queue_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_task_queues_statistics_response.rb +95 -0
- data/lib/twilio_ap_is/models/list_task_reservation_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_task_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_user_conversation_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_user_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_worker_channel_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_worker_reservation_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_worker_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_workflow_response.rb +94 -0
- data/lib/twilio_ap_is/models/list_workspace_response.rb +94 -0
- data/lib/twilio_ap_is/models/messaging_configuration.rb +170 -0
- data/lib/twilio_ap_is/models/meta.rb +140 -0
- data/lib/twilio_ap_is/models/msg_geopermissions.rb +86 -0
- data/lib/twilio_ap_is/models/new_factor.rb +277 -0
- data/lib/twilio_ap_is/models/new_factor_enum_factor_statuses.rb +36 -0
- data/lib/twilio_ap_is/models/new_factor_enum_factor_types.rb +40 -0
- data/lib/twilio_ap_is/models/new_factor_enum_notification_platforms.rb +40 -0
- data/lib/twilio_ap_is/models/new_factor_enum_totp_algorithms.rb +40 -0
- data/lib/twilio_ap_is/models/notif_priority.rb +43 -0
- data/lib/twilio_ap_is/models/notification.rb +363 -0
- data/lib/twilio_ap_is/models/notification1.rb +181 -0
- data/lib/twilio_ap_is/models/participant_conversation.rb +325 -0
- data/lib/twilio_ap_is/models/participant_conversation_state.rb +41 -0
- data/lib/twilio_ap_is/models/rate_limit.rb +189 -0
- data/lib/twilio_ap_is/models/role.rb +192 -0
- data/lib/twilio_ap_is/models/role_role_type.rb +40 -0
- data/lib/twilio_ap_is/models/safelist.rb +88 -0
- data/lib/twilio_ap_is/models/safelist1.rb +99 -0
- data/lib/twilio_ap_is/models/secondary_auth_token.rb +145 -0
- data/lib/twilio_ap_is/models/service.rb +164 -0
- data/lib/twilio_ap_is/models/service1.rb +380 -0
- data/lib/twilio_ap_is/models/service2.rb +350 -0
- data/lib/twilio_ap_is/models/service_binding.rb +226 -0
- data/lib/twilio_ap_is/models/service_binding_binding_type.rb +47 -0
- data/lib/twilio_ap_is/models/service_configuration.rb +180 -0
- data/lib/twilio_ap_is/models/service_conversation.rb +264 -0
- data/lib/twilio_ap_is/models/service_conversation_message.rb +282 -0
- data/lib/twilio_ap_is/models/service_conversation_message_order_type.rb +36 -0
- data/lib/twilio_ap_is/models/service_conversation_message_receipt.rb +233 -0
- data/lib/twilio_ap_is/models/service_conversation_message_receipt_delivery_status.rb +49 -0
- data/lib/twilio_ap_is/models/service_conversation_participant.rb +256 -0
- data/lib/twilio_ap_is/models/service_conversation_scoped_webhook.rb +191 -0
- data/lib/twilio_ap_is/models/service_conversation_scoped_webhook_method.rb +36 -0
- data/lib/twilio_ap_is/models/service_conversation_scoped_webhook_target.rb +40 -0
- data/lib/twilio_ap_is/models/service_conversation_state.rb +45 -0
- data/lib/twilio_ap_is/models/service_conversation_with_participants.rb +264 -0
- data/lib/twilio_ap_is/models/service_conversation_with_participants_state.rb +45 -0
- data/lib/twilio_ap_is/models/service_notification.rb +155 -0
- data/lib/twilio_ap_is/models/service_participant_conversation.rb +325 -0
- data/lib/twilio_ap_is/models/service_participant_conversation_state.rb +41 -0
- data/lib/twilio_ap_is/models/service_role.rb +192 -0
- data/lib/twilio_ap_is/models/service_role_role_type.rb +40 -0
- data/lib/twilio_ap_is/models/service_stats_conversations_rate_limiting_errors_source.rb +36 -0
- data/lib/twilio_ap_is/models/service_user.rb +250 -0
- data/lib/twilio_ap_is/models/service_user_conversation.rb +317 -0
- data/lib/twilio_ap_is/models/service_user_conversation_notification_level.rb +37 -0
- data/lib/twilio_ap_is/models/service_user_conversation_state.rb +41 -0
- data/lib/twilio_ap_is/models/service_webhook_configuration.rb +160 -0
- data/lib/twilio_ap_is/models/service_webhook_configuration_method.rb +37 -0
- data/lib/twilio_ap_is/models/stats_twilsock_rate_limiting_errors_source.rb +26 -0
- data/lib/twilio_ap_is/models/task_channel.rb +204 -0
- data/lib/twilio_ap_is/models/task_queue.rb +278 -0
- data/lib/twilio_ap_is/models/task_queue_bulk_real_time_statistics.rb +141 -0
- data/lib/twilio_ap_is/models/task_queue_cumulative.rb +356 -0
- data/lib/twilio_ap_is/models/task_queue_real_time_statistics.rb +250 -0
- data/lib/twilio_ap_is/models/task_queue_statistics.rb +135 -0
- data/lib/twilio_ap_is/models/task_queue_task_order.rb +40 -0
- data/lib/twilio_ap_is/models/task_queues_stats.rb +124 -0
- data/lib/twilio_ap_is/models/task_reservation.rb +210 -0
- data/lib/twilio_ap_is/models/task_reservation_call_status.rb +44 -0
- data/lib/twilio_ap_is/models/task_reservation_conference_event.rb +56 -0
- data/lib/twilio_ap_is/models/task_reservation_status.rb +61 -0
- data/lib/twilio_ap_is/models/task_reservation_supervisor_mode.rb +40 -0
- data/lib/twilio_ap_is/models/task_router_task.rb +394 -0
- data/lib/twilio_ap_is/models/task_status.rb +53 -0
- data/lib/twilio_ap_is/models/user.rb +250 -0
- data/lib/twilio_ap_is/models/user_binding_binding_type.rb +52 -0
- data/lib/twilio_ap_is/models/user_conversation.rb +317 -0
- data/lib/twilio_ap_is/models/user_conversation_notification_level.rb +37 -0
- data/lib/twilio_ap_is/models/user_conversation_state.rb +41 -0
- data/lib/twilio_ap_is/models/v2_form.rb +112 -0
- data/lib/twilio_ap_is/models/verification.rb +262 -0
- data/lib/twilio_ap_is/models/verification_attempt.rb +219 -0
- data/lib/twilio_ap_is/models/verification_attempt_enum_attempt_status.rb +40 -0
- data/lib/twilio_ap_is/models/verification_attempt_enum_call_status.rb +60 -0
- data/lib/twilio_ap_is/models/verification_attempt_enum_channels.rb +49 -0
- data/lib/twilio_ap_is/models/verification_attempt_enum_conversion_status.rb +38 -0
- data/lib/twilio_ap_is/models/verification_attempt_enum_message_status.rb +80 -0
- data/lib/twilio_ap_is/models/verification_attempts.rb +129 -0
- data/lib/twilio_ap_is/models/verification_attempts_summary_enum_channels.rb +48 -0
- data/lib/twilio_ap_is/models/verification_check.rb +231 -0
- data/lib/twilio_ap_is/models/verification_check_enum_channel.rb +50 -0
- data/lib/twilio_ap_is/models/verification_enum_channel.rb +50 -0
- data/lib/twilio_ap_is/models/verification_enum_risk_check.rb +39 -0
- data/lib/twilio_ap_is/models/verification_enum_status.rb +37 -0
- data/lib/twilio_ap_is/models/verification_template.rb +126 -0
- data/lib/twilio_ap_is/models/webhook.rb +222 -0
- data/lib/twilio_ap_is/models/webhook_enum_status.rb +37 -0
- data/lib/twilio_ap_is/models/webhook_enum_version.rb +37 -0
- data/lib/twilio_ap_is/models/worker.rb +247 -0
- data/lib/twilio_ap_is/models/worker_channel.rb +244 -0
- data/lib/twilio_ap_is/models/worker_instance_statistics.rb +122 -0
- data/lib/twilio_ap_is/models/worker_reservation.rb +210 -0
- data/lib/twilio_ap_is/models/worker_reservation_call_status.rb +44 -0
- data/lib/twilio_ap_is/models/worker_reservation_conference_event.rb +56 -0
- data/lib/twilio_ap_is/models/worker_reservation_status.rb +61 -0
- data/lib/twilio_ap_is/models/worker_statistics.rb +122 -0
- data/lib/twilio_ap_is/models/workers_cumulative_statistics.rb +221 -0
- data/lib/twilio_ap_is/models/workers_real_time_statistics.rb +124 -0
- data/lib/twilio_ap_is/models/workflow.rb +247 -0
- data/lib/twilio_ap_is/models/workflow_cumulative_statistics.rb +347 -0
- data/lib/twilio_ap_is/models/workflow_real_time_statistics.rb +173 -0
- data/lib/twilio_ap_is/models/workflow_statistics.rb +135 -0
- data/lib/twilio_ap_is/models/workspace.rb +285 -0
- data/lib/twilio_ap_is/models/workspace_cumulative_statistics.rb +334 -0
- data/lib/twilio_ap_is/models/workspace_queue_order.rb +40 -0
- data/lib/twilio_ap_is/models/workspace_real_time_statistics.rb +185 -0
- data/lib/twilio_ap_is/models/workspace_statistics.rb +122 -0
- data/lib/twilio_ap_is/utilities/date_time_helper.rb +11 -0
- data/lib/twilio_ap_is/utilities/file_wrapper.rb +28 -0
- data/lib/twilio_ap_is.rb +326 -0
- metadata +361 -0
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
# twilio_ap_is
|
|
2
|
+
#
|
|
3
|
+
# This file was automatically generated by APIMATIC v3.0 (
|
|
4
|
+
# https://www.apimatic.io ).
|
|
5
|
+
|
|
6
|
+
require 'date'
|
|
7
|
+
module TwilioApIs
|
|
8
|
+
# NewFactor Model.
|
|
9
|
+
class NewFactor < BaseModel
|
|
10
|
+
SKIP = Object.new
|
|
11
|
+
private_constant :SKIP
|
|
12
|
+
|
|
13
|
+
# A 34 character string that uniquely identifies this Factor.
|
|
14
|
+
# @return [String]
|
|
15
|
+
attr_accessor :sid
|
|
16
|
+
|
|
17
|
+
# The unique SID identifier of the Account.
|
|
18
|
+
# @return [String]
|
|
19
|
+
attr_accessor :account_sid
|
|
20
|
+
|
|
21
|
+
# The unique SID identifier of the Service.
|
|
22
|
+
# @return [String]
|
|
23
|
+
attr_accessor :service_sid
|
|
24
|
+
|
|
25
|
+
# The unique SID identifier of the Entity.
|
|
26
|
+
# @return [String]
|
|
27
|
+
attr_accessor :entity_sid
|
|
28
|
+
|
|
29
|
+
# Customer unique identity for the Entity owner of the Factor. This
|
|
30
|
+
# identifier should be immutable, not PII, length between 8 and 64
|
|
31
|
+
# characters, and generated by your external system, such as your user's
|
|
32
|
+
# UUID, GUID, or SID. It can only contain dash (-) separated alphanumeric
|
|
33
|
+
# characters.
|
|
34
|
+
# @return [String]
|
|
35
|
+
attr_accessor :identity
|
|
36
|
+
|
|
37
|
+
# Contains the `factor_type` specific secret and metadata.
|
|
38
|
+
# For push, this is `binding.public_key` and `binding.alg`.
|
|
39
|
+
# For totp, this is `binding.secret` and `binding.uri`. The `binding.uri`
|
|
40
|
+
# property is generated following the [google authenticator key URI
|
|
41
|
+
# format](https://github.com/google/google-authenticator/wiki/Key-Uri-Format
|
|
42
|
+
# ), and `Factor.friendly_name` is used for the “accountname” value and
|
|
43
|
+
# `Service.friendly_name` or `Service.totp.issuer` is used for the `issuer`
|
|
44
|
+
# value.
|
|
45
|
+
# The Binding property is ONLY returned upon Factor creation.
|
|
46
|
+
# @return [Object]
|
|
47
|
+
attr_accessor :binding
|
|
48
|
+
|
|
49
|
+
# Contains the `factor_type` specific secret and metadata.
|
|
50
|
+
# For push, this is `binding.public_key` and `binding.alg`.
|
|
51
|
+
# For totp, this is `binding.secret` and `binding.uri`. The `binding.uri`
|
|
52
|
+
# property is generated following the [google authenticator key URI
|
|
53
|
+
# format](https://github.com/google/google-authenticator/wiki/Key-Uri-Format
|
|
54
|
+
# ), and `Factor.friendly_name` is used for the “accountname” value and
|
|
55
|
+
# `Service.friendly_name` or `Service.totp.issuer` is used for the `issuer`
|
|
56
|
+
# value.
|
|
57
|
+
# The Binding property is ONLY returned upon Factor creation.
|
|
58
|
+
# @return [Object]
|
|
59
|
+
attr_accessor :options
|
|
60
|
+
|
|
61
|
+
# The date that this Factor was created, given in [ISO
|
|
62
|
+
# 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
|
|
63
|
+
# @return [DateTime]
|
|
64
|
+
attr_accessor :date_created
|
|
65
|
+
|
|
66
|
+
# The date that this Factor was updated, given in [ISO
|
|
67
|
+
# 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
|
|
68
|
+
# @return [DateTime]
|
|
69
|
+
attr_accessor :date_updated
|
|
70
|
+
|
|
71
|
+
# The friendly name of this Factor. This can be any string up to 64
|
|
72
|
+
# characters, meant for humans to distinguish between Factors.
|
|
73
|
+
# For `factor_type` `push`, this could be a device name.
|
|
74
|
+
# For `factor_type` `totp`, this value is used as the “account name” in
|
|
75
|
+
# constructing the `binding.uri` property.
|
|
76
|
+
# At the same time, we recommend avoiding providing PII.
|
|
77
|
+
# @return [String]
|
|
78
|
+
attr_accessor :friendly_name
|
|
79
|
+
|
|
80
|
+
# The Status of this Factor. One of `unverified` or `verified`.
|
|
81
|
+
# @return [NewFactorEnumFactorStatuses]
|
|
82
|
+
attr_accessor :status
|
|
83
|
+
|
|
84
|
+
# The Type of this Factor. Currently `push` and `totp` are supported.
|
|
85
|
+
# @return [NewFactorEnumFactorTypes]
|
|
86
|
+
attr_accessor :factor_type
|
|
87
|
+
|
|
88
|
+
# An object that contains configurations specific to a `factor_type`.
|
|
89
|
+
# @return [Object]
|
|
90
|
+
attr_accessor :config
|
|
91
|
+
|
|
92
|
+
# Custom metadata associated with the factor. This is added by the
|
|
93
|
+
# Device/SDK directly to allow for the inclusion of device information. It
|
|
94
|
+
# must be a stringified JSON with only strings values eg. `{"os":
|
|
95
|
+
# "Android"}`. Can be up to 1024 characters in length.
|
|
96
|
+
# @return [Object]
|
|
97
|
+
attr_accessor :metadata
|
|
98
|
+
|
|
99
|
+
# The URL of this resource.
|
|
100
|
+
# @return [String]
|
|
101
|
+
attr_accessor :url
|
|
102
|
+
|
|
103
|
+
# A mapping from model property names to API property names.
|
|
104
|
+
def self.names
|
|
105
|
+
@_hash = {} if @_hash.nil?
|
|
106
|
+
@_hash['sid'] = 'sid'
|
|
107
|
+
@_hash['account_sid'] = 'account_sid'
|
|
108
|
+
@_hash['service_sid'] = 'service_sid'
|
|
109
|
+
@_hash['entity_sid'] = 'entity_sid'
|
|
110
|
+
@_hash['identity'] = 'identity'
|
|
111
|
+
@_hash['binding'] = 'binding'
|
|
112
|
+
@_hash['options'] = 'options'
|
|
113
|
+
@_hash['date_created'] = 'date_created'
|
|
114
|
+
@_hash['date_updated'] = 'date_updated'
|
|
115
|
+
@_hash['friendly_name'] = 'friendly_name'
|
|
116
|
+
@_hash['status'] = 'status'
|
|
117
|
+
@_hash['factor_type'] = 'factor_type'
|
|
118
|
+
@_hash['config'] = 'config'
|
|
119
|
+
@_hash['metadata'] = 'metadata'
|
|
120
|
+
@_hash['url'] = 'url'
|
|
121
|
+
@_hash
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
# An array for optional fields
|
|
125
|
+
def self.optionals
|
|
126
|
+
%w[
|
|
127
|
+
sid
|
|
128
|
+
account_sid
|
|
129
|
+
service_sid
|
|
130
|
+
entity_sid
|
|
131
|
+
identity
|
|
132
|
+
binding
|
|
133
|
+
options
|
|
134
|
+
date_created
|
|
135
|
+
date_updated
|
|
136
|
+
friendly_name
|
|
137
|
+
status
|
|
138
|
+
factor_type
|
|
139
|
+
config
|
|
140
|
+
metadata
|
|
141
|
+
url
|
|
142
|
+
]
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
# An array for nullable fields
|
|
146
|
+
def self.nullables
|
|
147
|
+
%w[
|
|
148
|
+
sid
|
|
149
|
+
account_sid
|
|
150
|
+
service_sid
|
|
151
|
+
entity_sid
|
|
152
|
+
identity
|
|
153
|
+
binding
|
|
154
|
+
options
|
|
155
|
+
date_created
|
|
156
|
+
date_updated
|
|
157
|
+
friendly_name
|
|
158
|
+
config
|
|
159
|
+
metadata
|
|
160
|
+
url
|
|
161
|
+
]
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
def initialize(sid: SKIP, account_sid: SKIP, service_sid: SKIP,
|
|
165
|
+
entity_sid: SKIP, identity: SKIP, binding: SKIP,
|
|
166
|
+
options: SKIP, date_created: SKIP, date_updated: SKIP,
|
|
167
|
+
friendly_name: SKIP, status: SKIP, factor_type: SKIP,
|
|
168
|
+
config: SKIP, metadata: SKIP, url: SKIP,
|
|
169
|
+
additional_properties: nil)
|
|
170
|
+
# Add additional model properties to the instance
|
|
171
|
+
additional_properties = {} if additional_properties.nil?
|
|
172
|
+
|
|
173
|
+
@sid = sid unless sid == SKIP
|
|
174
|
+
@account_sid = account_sid unless account_sid == SKIP
|
|
175
|
+
@service_sid = service_sid unless service_sid == SKIP
|
|
176
|
+
@entity_sid = entity_sid unless entity_sid == SKIP
|
|
177
|
+
@identity = identity unless identity == SKIP
|
|
178
|
+
@binding = binding unless binding == SKIP
|
|
179
|
+
@options = options unless options == SKIP
|
|
180
|
+
@date_created = date_created unless date_created == SKIP
|
|
181
|
+
@date_updated = date_updated unless date_updated == SKIP
|
|
182
|
+
@friendly_name = friendly_name unless friendly_name == SKIP
|
|
183
|
+
@status = status unless status == SKIP
|
|
184
|
+
@factor_type = factor_type unless factor_type == SKIP
|
|
185
|
+
@config = config unless config == SKIP
|
|
186
|
+
@metadata = metadata unless metadata == SKIP
|
|
187
|
+
@url = url unless url == SKIP
|
|
188
|
+
@additional_properties = additional_properties
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
# Creates an instance of the object from a hash.
|
|
192
|
+
def self.from_hash(hash)
|
|
193
|
+
return nil unless hash
|
|
194
|
+
|
|
195
|
+
# Extract variables from the hash.
|
|
196
|
+
sid = hash.key?('sid') ? hash['sid'] : SKIP
|
|
197
|
+
account_sid = hash.key?('account_sid') ? hash['account_sid'] : SKIP
|
|
198
|
+
service_sid = hash.key?('service_sid') ? hash['service_sid'] : SKIP
|
|
199
|
+
entity_sid = hash.key?('entity_sid') ? hash['entity_sid'] : SKIP
|
|
200
|
+
identity = hash.key?('identity') ? hash['identity'] : SKIP
|
|
201
|
+
binding = hash.key?('binding') ? hash['binding'] : SKIP
|
|
202
|
+
options = hash.key?('options') ? hash['options'] : SKIP
|
|
203
|
+
date_created = if hash.key?('date_created')
|
|
204
|
+
(DateTimeHelper.from_rfc3339(hash['date_created']) if hash['date_created'])
|
|
205
|
+
else
|
|
206
|
+
SKIP
|
|
207
|
+
end
|
|
208
|
+
date_updated = if hash.key?('date_updated')
|
|
209
|
+
(DateTimeHelper.from_rfc3339(hash['date_updated']) if hash['date_updated'])
|
|
210
|
+
else
|
|
211
|
+
SKIP
|
|
212
|
+
end
|
|
213
|
+
friendly_name = hash.key?('friendly_name') ? hash['friendly_name'] : SKIP
|
|
214
|
+
status = hash.key?('status') ? hash['status'] : SKIP
|
|
215
|
+
factor_type = hash.key?('factor_type') ? hash['factor_type'] : SKIP
|
|
216
|
+
config = hash.key?('config') ? hash['config'] : SKIP
|
|
217
|
+
metadata = hash.key?('metadata') ? hash['metadata'] : SKIP
|
|
218
|
+
url = hash.key?('url') ? hash['url'] : SKIP
|
|
219
|
+
|
|
220
|
+
# Create a new hash for additional properties, removing known properties.
|
|
221
|
+
new_hash = hash.reject { |k, _| names.value?(k) }
|
|
222
|
+
|
|
223
|
+
additional_properties = APIHelper.get_additional_properties(
|
|
224
|
+
new_hash, proc { |value| value }
|
|
225
|
+
)
|
|
226
|
+
|
|
227
|
+
# Create object from extracted values.
|
|
228
|
+
NewFactor.new(sid: sid,
|
|
229
|
+
account_sid: account_sid,
|
|
230
|
+
service_sid: service_sid,
|
|
231
|
+
entity_sid: entity_sid,
|
|
232
|
+
identity: identity,
|
|
233
|
+
binding: binding,
|
|
234
|
+
options: options,
|
|
235
|
+
date_created: date_created,
|
|
236
|
+
date_updated: date_updated,
|
|
237
|
+
friendly_name: friendly_name,
|
|
238
|
+
status: status,
|
|
239
|
+
factor_type: factor_type,
|
|
240
|
+
config: config,
|
|
241
|
+
metadata: metadata,
|
|
242
|
+
url: url,
|
|
243
|
+
additional_properties: additional_properties)
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
def to_custom_date_created
|
|
247
|
+
DateTimeHelper.to_rfc3339(date_created)
|
|
248
|
+
end
|
|
249
|
+
|
|
250
|
+
def to_custom_date_updated
|
|
251
|
+
DateTimeHelper.to_rfc3339(date_updated)
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
# Provides a human-readable string representation of the object.
|
|
255
|
+
def to_s
|
|
256
|
+
class_name = self.class.name.split('::').last
|
|
257
|
+
"<#{class_name} sid: #{@sid}, account_sid: #{@account_sid}, service_sid: #{@service_sid},"\
|
|
258
|
+
" entity_sid: #{@entity_sid}, identity: #{@identity}, binding: #{@binding}, options:"\
|
|
259
|
+
" #{@options}, date_created: #{@date_created}, date_updated: #{@date_updated},"\
|
|
260
|
+
" friendly_name: #{@friendly_name}, status: #{@status}, factor_type: #{@factor_type},"\
|
|
261
|
+
" config: #{@config}, metadata: #{@metadata}, url: #{@url}, additional_properties:"\
|
|
262
|
+
" #{@additional_properties}>"
|
|
263
|
+
end
|
|
264
|
+
|
|
265
|
+
# Provides a debugging-friendly string with detailed object information.
|
|
266
|
+
def inspect
|
|
267
|
+
class_name = self.class.name.split('::').last
|
|
268
|
+
"<#{class_name} sid: #{@sid.inspect}, account_sid: #{@account_sid.inspect}, service_sid:"\
|
|
269
|
+
" #{@service_sid.inspect}, entity_sid: #{@entity_sid.inspect}, identity:"\
|
|
270
|
+
" #{@identity.inspect}, binding: #{@binding.inspect}, options: #{@options.inspect},"\
|
|
271
|
+
" date_created: #{@date_created.inspect}, date_updated: #{@date_updated.inspect},"\
|
|
272
|
+
" friendly_name: #{@friendly_name.inspect}, status: #{@status.inspect}, factor_type:"\
|
|
273
|
+
" #{@factor_type.inspect}, config: #{@config.inspect}, metadata: #{@metadata.inspect}, url:"\
|
|
274
|
+
" #{@url.inspect}, additional_properties: #{@additional_properties}>"
|
|
275
|
+
end
|
|
276
|
+
end
|
|
277
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# twilio_ap_is
|
|
2
|
+
#
|
|
3
|
+
# This file was automatically generated by APIMATIC v3.0 (
|
|
4
|
+
# https://www.apimatic.io ).
|
|
5
|
+
|
|
6
|
+
module TwilioApIs
|
|
7
|
+
# The Status of this Factor. One of `unverified` or `verified`.
|
|
8
|
+
class NewFactorEnumFactorStatuses
|
|
9
|
+
NEW_FACTOR_ENUM_FACTOR_STATUSES = [
|
|
10
|
+
# TODO: Write general description for UNVERIFIED
|
|
11
|
+
UNVERIFIED = 'unverified'.freeze,
|
|
12
|
+
|
|
13
|
+
# TODO: Write general description for VERIFIED
|
|
14
|
+
VERIFIED = 'verified'.freeze
|
|
15
|
+
].freeze
|
|
16
|
+
|
|
17
|
+
def self.validate(value)
|
|
18
|
+
return false if value.nil?
|
|
19
|
+
|
|
20
|
+
NEW_FACTOR_ENUM_FACTOR_STATUSES.include?(value)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def self.from_value(value, default_value = UNVERIFIED)
|
|
24
|
+
return default_value if value.nil?
|
|
25
|
+
|
|
26
|
+
str = value.to_s.strip
|
|
27
|
+
|
|
28
|
+
case str.downcase
|
|
29
|
+
when 'unverified' then UNVERIFIED
|
|
30
|
+
when 'verified' then VERIFIED
|
|
31
|
+
else
|
|
32
|
+
default_value
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# twilio_ap_is
|
|
2
|
+
#
|
|
3
|
+
# This file was automatically generated by APIMATIC v3.0 (
|
|
4
|
+
# https://www.apimatic.io ).
|
|
5
|
+
|
|
6
|
+
module TwilioApIs
|
|
7
|
+
# The Type of this Factor. Currently `push` and `totp` are supported.
|
|
8
|
+
class NewFactorEnumFactorTypes
|
|
9
|
+
NEW_FACTOR_ENUM_FACTOR_TYPES = [
|
|
10
|
+
# TODO: Write general description for PUSH
|
|
11
|
+
PUSH = 'push'.freeze,
|
|
12
|
+
|
|
13
|
+
# TODO: Write general description for TOTP
|
|
14
|
+
TOTP = 'totp'.freeze,
|
|
15
|
+
|
|
16
|
+
# TODO: Write general description for PASSKEYS
|
|
17
|
+
PASSKEYS = 'passkeys'.freeze
|
|
18
|
+
].freeze
|
|
19
|
+
|
|
20
|
+
def self.validate(value)
|
|
21
|
+
return false if value.nil?
|
|
22
|
+
|
|
23
|
+
NEW_FACTOR_ENUM_FACTOR_TYPES.include?(value)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def self.from_value(value, default_value = PUSH)
|
|
27
|
+
return default_value if value.nil?
|
|
28
|
+
|
|
29
|
+
str = value.to_s.strip
|
|
30
|
+
|
|
31
|
+
case str.downcase
|
|
32
|
+
when 'push' then PUSH
|
|
33
|
+
when 'totp' then TOTP
|
|
34
|
+
when 'passkeys' then PASSKEYS
|
|
35
|
+
else
|
|
36
|
+
default_value
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# twilio_ap_is
|
|
2
|
+
#
|
|
3
|
+
# This file was automatically generated by APIMATIC v3.0 (
|
|
4
|
+
# https://www.apimatic.io ).
|
|
5
|
+
|
|
6
|
+
module TwilioApIs
|
|
7
|
+
# NewFactorEnumNotificationPlatforms.
|
|
8
|
+
class NewFactorEnumNotificationPlatforms
|
|
9
|
+
NEW_FACTOR_ENUM_NOTIFICATION_PLATFORMS = [
|
|
10
|
+
# TODO: Write general description for APN
|
|
11
|
+
APN = 'apn'.freeze,
|
|
12
|
+
|
|
13
|
+
# TODO: Write general description for FCM
|
|
14
|
+
FCM = 'fcm'.freeze,
|
|
15
|
+
|
|
16
|
+
# TODO: Write general description for NONE
|
|
17
|
+
NONE = 'none'.freeze
|
|
18
|
+
].freeze
|
|
19
|
+
|
|
20
|
+
def self.validate(value)
|
|
21
|
+
return false if value.nil?
|
|
22
|
+
|
|
23
|
+
NEW_FACTOR_ENUM_NOTIFICATION_PLATFORMS.include?(value)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def self.from_value(value, default_value = APN)
|
|
27
|
+
return default_value if value.nil?
|
|
28
|
+
|
|
29
|
+
str = value.to_s.strip
|
|
30
|
+
|
|
31
|
+
case str.downcase
|
|
32
|
+
when 'apn' then APN
|
|
33
|
+
when 'fcm' then FCM
|
|
34
|
+
when 'none' then NONE
|
|
35
|
+
else
|
|
36
|
+
default_value
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# twilio_ap_is
|
|
2
|
+
#
|
|
3
|
+
# This file was automatically generated by APIMATIC v3.0 (
|
|
4
|
+
# https://www.apimatic.io ).
|
|
5
|
+
|
|
6
|
+
module TwilioApIs
|
|
7
|
+
# NewFactorEnumTotpAlgorithms.
|
|
8
|
+
class NewFactorEnumTotpAlgorithms
|
|
9
|
+
NEW_FACTOR_ENUM_TOTP_ALGORITHMS = [
|
|
10
|
+
# TODO: Write general description for SHA1
|
|
11
|
+
SHA1 = 'sha1'.freeze,
|
|
12
|
+
|
|
13
|
+
# TODO: Write general description for SHA256
|
|
14
|
+
SHA256 = 'sha256'.freeze,
|
|
15
|
+
|
|
16
|
+
# TODO: Write general description for SHA512
|
|
17
|
+
SHA512 = 'sha512'.freeze
|
|
18
|
+
].freeze
|
|
19
|
+
|
|
20
|
+
def self.validate(value)
|
|
21
|
+
return false if value.nil?
|
|
22
|
+
|
|
23
|
+
NEW_FACTOR_ENUM_TOTP_ALGORITHMS.include?(value)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def self.from_value(value, default_value = SHA1)
|
|
27
|
+
return default_value if value.nil?
|
|
28
|
+
|
|
29
|
+
str = value.to_s.strip
|
|
30
|
+
|
|
31
|
+
case str.downcase
|
|
32
|
+
when 'sha1' then SHA1
|
|
33
|
+
when 'sha256' then SHA256
|
|
34
|
+
when 'sha512' then SHA512
|
|
35
|
+
else
|
|
36
|
+
default_value
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# twilio_ap_is
|
|
2
|
+
#
|
|
3
|
+
# This file was automatically generated by APIMATIC v3.0 (
|
|
4
|
+
# https://www.apimatic.io ).
|
|
5
|
+
|
|
6
|
+
module TwilioApIs
|
|
7
|
+
# The priority of the notification. Can be: `low` or `high` and the default is
|
|
8
|
+
# `high`. A value of `low` optimizes the client app's battery consumption;
|
|
9
|
+
# however, notifications may be delivered with unspecified delay. For FCM and
|
|
10
|
+
# GCM, `low` priority is the same as `Normal` priority. For APNS `low`
|
|
11
|
+
# priority is the same as `5`. A value of `high` sends the notification
|
|
12
|
+
# immediately, and can wake up a sleeping device. For FCM and GCM, `high` is
|
|
13
|
+
# the same as `High` priority. For APNS, `high` is a priority `10`. SMS does
|
|
14
|
+
# not support this property.
|
|
15
|
+
class NotifPriority
|
|
16
|
+
NOTIF_PRIORITY = [
|
|
17
|
+
# TODO: Write general description for HIGH
|
|
18
|
+
HIGH = 'high'.freeze,
|
|
19
|
+
|
|
20
|
+
# TODO: Write general description for LOW
|
|
21
|
+
LOW = 'low'.freeze
|
|
22
|
+
].freeze
|
|
23
|
+
|
|
24
|
+
def self.validate(value)
|
|
25
|
+
return false if value.nil?
|
|
26
|
+
|
|
27
|
+
NOTIF_PRIORITY.include?(value)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def self.from_value(value, default_value = HIGH)
|
|
31
|
+
return default_value if value.nil?
|
|
32
|
+
|
|
33
|
+
str = value.to_s.strip
|
|
34
|
+
|
|
35
|
+
case str.downcase
|
|
36
|
+
when 'high' then HIGH
|
|
37
|
+
when 'low' then LOW
|
|
38
|
+
else
|
|
39
|
+
default_value
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|