@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api Twilio - Verify
@base https://verify.twilio.com
@version 1.0.0
@auth Bearer basic
@endpoints 57
@hint download_for_search
@toc Services(49), Forms(1), SafeList(3), Attempts(3), Templates(1)

@group Services
@endpoint POST /v2/Services/{ServiceSid}/AccessTokens
@desc Create a new enrollment Access Token for the Entity
@required {ServiceSid: str # The unique SID identifier of the Service.}
@returns(200) {sid: str?, account_sid: str?, service_sid: str?, entity_identity: str?, factor_type: str, factor_friendly_name: str?, token: str?, url: str(uri)?, ttl: int, date_created: str(date-time)?} # OK
@returns(201) {sid: str?, account_sid: str?, service_sid: str?, entity_identity: str?, factor_type: str, factor_friendly_name: str?, token: str?, url: str(uri)?, ttl: int, date_created: str(date-time)?} # Created

@endpoint GET /v2/Services/{ServiceSid}/AccessTokens/{Sid}
@desc Fetch an Access Token for the Entity
@required {ServiceSid: str # The unique SID identifier of the Service., Sid: str # A 34 character string that uniquely identifies this Access Token.}
@returns(200) {sid: str?, account_sid: str?, service_sid: str?, entity_identity: str?, factor_type: str, factor_friendly_name: str?, token: str?, url: str(uri)?, ttl: int, date_created: str(date-time)?} # OK

@endpoint POST /v2/Services/{ServiceSid}/RateLimits/{RateLimitSid}/Buckets
@desc Create a new Bucket for a Rate Limit
@required {ServiceSid: str # The SID of the [Service](https://www.twilio.com/docs/verify/api/service) the resource is associated with., RateLimitSid: str # The Twilio-provided string that uniquely identifies the Rate Limit resource.}
@returns(201) {sid: str?, rate_limit_sid: str?, service_sid: str?, account_sid: str?, max: int, interval: int, date_created: str(date-time)?, date_updated: str(date-time)?, url: str(uri)?} # Created

@endpoint GET /v2/Services/{ServiceSid}/RateLimits/{RateLimitSid}/Buckets
@desc Retrieve a list of all Buckets for a Rate Limit.
@required {ServiceSid: str # The SID of the [Service](https://www.twilio.com/docs/verify/api/service) the resource is associated with., RateLimitSid: str # The Twilio-provided string that uniquely identifies the Rate Limit resource.}
@optional {PageSize: int(int64) # How many resources to return in each list page. The default is 50, and the maximum is 1000., Page: int # The page index. This value is simply for client state., PageToken: str # The page token. This is provided by the API.}
@returns(200) {buckets: [map], meta: map{first_page_url: str(uri), key: str, next_page_url: str(uri)?, page: int, page_size: int, previous_page_url: str(uri)?, url: str(uri)}} # OK

@endpoint POST /v2/Services/{ServiceSid}/RateLimits/{RateLimitSid}/Buckets/{Sid}
@desc Update a specific Bucket.
@required {ServiceSid: str # The SID of the [Service](https://www.twilio.com/docs/verify/api/service) the resource is associated with., RateLimitSid: str # The Twilio-provided string that uniquely identifies the Rate Limit resource., Sid: str # A 34 character string that uniquely identifies this Bucket.}
@returns(200) {sid: str?, rate_limit_sid: str?, service_sid: str?, account_sid: str?, max: int, interval: int, date_created: str(date-time)?, date_updated: str(date-time)?, url: str(uri)?} # OK

@endpoint GET /v2/Services/{ServiceSid}/RateLimits/{RateLimitSid}/Buckets/{Sid}
@desc Fetch a specific Bucket.
@required {ServiceSid: str # The SID of the [Service](https://www.twilio.com/docs/verify/api/service) the resource is associated with., RateLimitSid: str # The Twilio-provided string that uniquely identifies the Rate Limit resource., Sid: str # A 34 character string that uniquely identifies this Bucket.}
@returns(200) {sid: str?, rate_limit_sid: str?, service_sid: str?, account_sid: str?, max: int, interval: int, date_created: str(date-time)?, date_updated: str(date-time)?, url: str(uri)?} # OK

@endpoint DELETE /v2/Services/{ServiceSid}/RateLimits/{RateLimitSid}/Buckets/{Sid}
@desc Delete a specific Bucket.
@required {ServiceSid: str # The SID of the [Service](https://www.twilio.com/docs/verify/api/service) the resource is associated with., RateLimitSid: str # The Twilio-provided string that uniquely identifies the Rate Limit resource., Sid: str # A 34 character string that uniquely identifies this Bucket.}
@returns(204) The resource was deleted successfully.

@endpoint POST /v2/Services/{ServiceSid}/Entities/{Identity}/Challenges
@desc Create a new Challenge for the Factor
@required {ServiceSid: str # The unique SID identifier of the Service., Identity: str # Customer unique identity for the Entity owner of the Challenge. This identifier should be immutable, not PII, length between 8 and 64 characters, and generated by your external system, such as your user's UUID, GUID, or SID. It can only contain dash (-) separated alphanumeric characters.}
@returns(201) {sid: str?, account_sid: str?, service_sid: str?, entity_sid: str?, identity: str?, factor_sid: str?, date_created: str(date-time)?, date_updated: str(date-time)?, date_responded: str(date-time)?, expiration_date: str(date-time)?, status: str, responded_reason: str, details: any?, hidden_details: any?, metadata: any?, factor_type: str, url: str(uri)?, links: map?} # Created

@endpoint GET /v2/Services/{ServiceSid}/Entities/{Identity}/Challenges
@desc Retrieve a list of all Challenges for a Factor.
@required {ServiceSid: str # The unique SID identifier of the Service., Identity: str # Customer unique identity for the Entity owner of the Challenge. This identifier should be immutable, not PII, length between 8 and 64 characters, and generated by your external system, such as your user's UUID, GUID, or SID. It can only contain dash (-) separated alphanumeric characters.}
@optional {FactorSid: str # The unique SID identifier of the Factor., Status: str # The Status of the Challenges to fetch. One of `pending`, `expired`, `approved` or `denied`., Order: str # The desired sort order of the Challenges list. One of `asc` or `desc` for ascending and descending respectively. Defaults to `asc`., PageSize: int(int64) # How many resources to return in each list page. The default is 50, and the maximum is 1000., Page: int # The page index. This value is simply for client state., PageToken: str # The page token. This is provided by the API.}
@returns(200) {challenges: [map], meta: map{first_page_url: str(uri), key: str, next_page_url: str(uri)?, page: int, page_size: int, previous_page_url: str(uri)?, url: str(uri)}} # OK

@endpoint GET /v2/Services/{ServiceSid}/Entities/{Identity}/Challenges/{Sid}
@desc Fetch a specific Challenge.
@required {ServiceSid: str # The unique SID identifier of the Service., Identity: str # Customer unique identity for the Entity owner of the Challenges. This identifier should be immutable, not PII, length between 8 and 64 characters, and generated by your external system, such as your user's UUID, GUID, or SID. It can only contain dash (-) separated alphanumeric characters., Sid: str # A 34 character string that uniquely identifies this Challenge.}
@returns(200) {sid: str?, account_sid: str?, service_sid: str?, entity_sid: str?, identity: str?, factor_sid: str?, date_created: str(date-time)?, date_updated: str(date-time)?, date_responded: str(date-time)?, expiration_date: str(date-time)?, status: str, responded_reason: str, details: any?, hidden_details: any?, metadata: any?, factor_type: str, url: str(uri)?, links: map?} # OK

@endpoint POST /v2/Services/{ServiceSid}/Entities/{Identity}/Challenges/{Sid}
@desc Verify a specific Challenge.
@required {ServiceSid: str # The unique SID identifier of the Service., Identity: str # Customer unique identity for the Entity owner of the Challenge. This identifier should be immutable, not PII, length between 8 and 64 characters, and generated by your external system, such as your user's UUID, GUID, or SID. It can only contain dash (-) separated alphanumeric characters., Sid: str # A 34 character string that uniquely identifies this Challenge.}
@returns(200) {sid: str?, account_sid: str?, service_sid: str?, entity_sid: str?, identity: str?, factor_sid: str?, date_created: str(date-time)?, date_updated: str(date-time)?, date_responded: str(date-time)?, expiration_date: str(date-time)?, status: str, responded_reason: str, details: any?, hidden_details: any?, metadata: any?, factor_type: str, url: str(uri)?, links: map?} # OK

@endpoint POST /v2/Services/{ServiceSid}/Entities
@desc Create a new Entity for the Service
@required {ServiceSid: str # The unique SID identifier of the Service.}
@returns(201) {sid: str?, identity: str?, account_sid: str?, service_sid: str?, date_created: str(date-time)?, date_updated: str(date-time)?, url: str(uri)?, links: map?} # Created

@endpoint GET /v2/Services/{ServiceSid}/Entities
@desc Retrieve a list of all Entities for a Service.
@required {ServiceSid: str # The unique SID identifier of the Service.}
@optional {PageSize: int(int64) # How many resources to return in each list page. The default is 50, and the maximum is 1000., Page: int # The page index. This value is simply for client state., PageToken: str # The page token. This is provided by the API.}
@returns(200) {entities: [map], meta: map{first_page_url: str(uri), key: str, next_page_url: str(uri)?, page: int, page_size: int, previous_page_url: str(uri)?, url: str(uri)}} # OK

@endpoint DELETE /v2/Services/{ServiceSid}/Entities/{Identity}
@desc Delete a specific Entity.
@required {ServiceSid: str # The unique SID identifier of the Service., Identity: str # The unique external identifier for the Entity of the Service. This identifier should be immutable, not PII, length between 8 and 64 characters, and generated by your external system, such as your user's UUID, GUID, or SID. It can only contain dash (-) separated alphanumeric characters.}
@returns(204) The resource was deleted successfully.

@endpoint GET /v2/Services/{ServiceSid}/Entities/{Identity}
@desc Fetch a specific Entity.
@required {ServiceSid: str # The unique SID identifier of the Service., Identity: str # The unique external identifier for the Entity of the Service. This identifier should be immutable, not PII, length between 8 and 64 characters, and generated by your external system, such as your user's UUID, GUID, or SID. It can only contain dash (-) separated alphanumeric characters.}
@returns(200) {sid: str?, identity: str?, account_sid: str?, service_sid: str?, date_created: str(date-time)?, date_updated: str(date-time)?, url: str(uri)?, links: map?} # OK

@endpoint DELETE /v2/Services/{ServiceSid}/Entities/{Identity}/Factors/{Sid}
@desc Delete a specific Factor.
@required {ServiceSid: str # The unique SID identifier of the Service., Identity: str # Customer unique identity for the Entity owner of the Factor. This identifier should be immutable, not PII, length between 8 and 64 characters, and generated by your external system, such as your user's UUID, GUID, or SID. It can only contain dash (-) separated alphanumeric characters., Sid: str # A 34 character string that uniquely identifies this Factor.}
@returns(204) The resource was deleted successfully.

@endpoint GET /v2/Services/{ServiceSid}/Entities/{Identity}/Factors/{Sid}
@desc Fetch a specific Factor.
@required {ServiceSid: str # The unique SID identifier of the Service., Identity: str # Customer unique identity for the Entity owner of the Factor. This identifier should be immutable, not PII, length between 8 and 64 characters, and generated by your external system, such as your user's UUID, GUID, or SID. It can only contain dash (-) separated alphanumeric characters., Sid: str # A 34 character string that uniquely identifies this Factor.}
@returns(200) {sid: str?, account_sid: str?, service_sid: str?, entity_sid: str?, identity: str?, date_created: str(date-time)?, date_updated: str(date-time)?, friendly_name: str?, status: str, factor_type: str, config: any?, metadata: any?, url: str(uri)?} # OK

@endpoint POST /v2/Services/{ServiceSid}/Entities/{Identity}/Factors/{Sid}
@desc Update a specific Factor. This endpoint can be used to Verify a Factor if passed an `AuthPayload` param.
@required {ServiceSid: str # The unique SID identifier of the Service., Identity: str # Customer unique identity for the Entity owner of the Factor. This identifier should be immutable, not PII, length between 8 and 64 characters, and generated by your external system, such as your user's UUID, GUID, or SID. It can only contain dash (-) separated alphanumeric characters., Sid: str # A 34 character string that uniquely identifies this Factor.}
@returns(200) {sid: str?, account_sid: str?, service_sid: str?, entity_sid: str?, identity: str?, date_created: str(date-time)?, date_updated: str(date-time)?, friendly_name: str?, status: str, factor_type: str, config: any?, metadata: any?, url: str(uri)?} # OK

@endpoint GET /v2/Services/{ServiceSid}/Entities/{Identity}/Factors
@desc Retrieve a list of all Factors for an Entity.
@required {ServiceSid: str # The unique SID identifier of the Service., Identity: str # Customer unique identity for the Entity owner of the Factors. This identifier should be immutable, not PII, length between 8 and 64 characters, and generated by your external system, such as your user's UUID, GUID, or SID. It can only contain dash (-) separated alphanumeric characters.}
@optional {PageSize: int(int64) # How many resources to return in each list page. The default is 50, and the maximum is 1000., Page: int # The page index. This value is simply for client state., PageToken: str # The page token. This is provided by the API.}
@returns(200) {factors: [map], meta: map{first_page_url: str(uri), key: str, next_page_url: str(uri)?, page: int, page_size: int, previous_page_url: str(uri)?, url: str(uri)}} # OK

@endpoint POST /v2/Services/{ServiceSid}/Entities/{Identity}/Factors
@desc Create a new Factor for the Entity
@required {ServiceSid: str # The unique SID identifier of the Service., Identity: str # Customer unique identity for the Entity owner of the Factor. This identifier should be immutable, not PII, length between 8 and 64 characters, and generated by your external system, such as your user's UUID, GUID, or SID. It can only contain dash (-) separated alphanumeric characters.}
@returns(201) {sid: str?, account_sid: str?, service_sid: str?, entity_sid: str?, identity: str?, binding: any?, options: any?, date_created: str(date-time)?, date_updated: str(date-time)?, friendly_name: str?, status: str, factor_type: str, config: any?, metadata: any?, url: str(uri)?} # Created

@endgroup

@group Forms
@endpoint GET /v2/Forms/{FormType}
@desc Fetch the forms for a specific Form Type.
@required {FormType: str # The Type of this Form. Currently only `form-push` is supported.}
@returns(200) {form_type: str, forms: any?, form_meta: any?, url: str(uri)?} # OK

@endgroup

@group Services
@endpoint POST /v2/Services/{ServiceSid}/MessagingConfigurations
@desc Create a new MessagingConfiguration for a service.
@required {ServiceSid: str # The SID of the [Service](https://www.twilio.com/docs/verify/api/service) that the resource is associated with.}
@returns(201) {account_sid: str?, service_sid: str?, country: str?, messaging_service_sid: str?, date_created: str(date-time)?, date_updated: str(date-time)?, url: str(uri)?} # Created

@endpoint GET /v2/Services/{ServiceSid}/MessagingConfigurations
@desc Retrieve a list of all Messaging Configurations for a Service.
@required {ServiceSid: str # The SID of the [Service](https://www.twilio.com/docs/verify/api/service) that the resource is associated with.}
@optional {PageSize: int(int64) # How many resources to return in each list page. The default is 50, and the maximum is 1000., Page: int # The page index. This value is simply for client state., PageToken: str # The page token. This is provided by the API.}
@returns(200) {messaging_configurations: [map], meta: map{first_page_url: str(uri), key: str, next_page_url: str(uri)?, page: int, page_size: int, previous_page_url: str(uri)?, url: str(uri)}} # OK

@endpoint POST /v2/Services/{ServiceSid}/MessagingConfigurations/{Country}
@desc Update a specific MessagingConfiguration
@required {ServiceSid: str # The SID of the [Service](https://www.twilio.com/docs/verify/api/service) that the resource is associated with., Country: str # The [ISO-3166-1](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code of the country this configuration will be applied to. If this is a global configuration, Country will take the value `all`.}
@returns(200) {account_sid: str?, service_sid: str?, country: str?, messaging_service_sid: str?, date_created: str(date-time)?, date_updated: str(date-time)?, url: str(uri)?} # OK

@endpoint GET /v2/Services/{ServiceSid}/MessagingConfigurations/{Country}
@desc Fetch a specific MessagingConfiguration.
@required {ServiceSid: str # The SID of the [Service](https://www.twilio.com/docs/verify/api/service) that the resource is associated with., Country: str # The [ISO-3166-1](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code of the country this configuration will be applied to. If this is a global configuration, Country will take the value `all`.}
@returns(200) {account_sid: str?, service_sid: str?, country: str?, messaging_service_sid: str?, date_created: str(date-time)?, date_updated: str(date-time)?, url: str(uri)?} # OK

@endpoint DELETE /v2/Services/{ServiceSid}/MessagingConfigurations/{Country}
@desc Delete a specific MessagingConfiguration.
@required {ServiceSid: str # The SID of the [Service](https://www.twilio.com/docs/verify/api/service) that the resource is associated with., Country: str # The [ISO-3166-1](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code of the country this configuration will be applied to. If this is a global configuration, Country will take the value `all`.}
@returns(204) The resource was deleted successfully.

@endpoint POST /v2/Services/{ServiceSid}/Entities/{Identity}/Challenges/{ChallengeSid}/Notifications
@desc Create a new Notification for the corresponding Challenge
@required {ServiceSid: str # The unique SID identifier of the Service., Identity: str # Customer unique identity for the Entity owner of the Challenge. This identifier should be immutable, not PII, length between 8 and 64 characters, and generated by your external system, such as your user's UUID, GUID, or SID. It can only contain dash (-) separated alphanumeric characters., ChallengeSid: str # The unique SID identifier of the Challenge.}
@returns(201) {sid: str?, account_sid: str?, service_sid: str?, entity_sid: str?, identity: str?, challenge_sid: str?, priority: str?, ttl: int, date_created: str(date-time)?} # Created

@endpoint POST /v2/Services/{ServiceSid}/RateLimits
@desc Create a new Rate Limit for a Service
@required {ServiceSid: str # The SID of the [Service](https://www.twilio.com/docs/verify/api/service) the resource is associated with.}
@returns(201) {sid: str?, service_sid: str?, account_sid: str?, unique_name: str?, description: str?, date_created: str(date-time)?, date_updated: str(date-time)?, url: str(uri)?, links: map?} # Created

@endpoint GET /v2/Services/{ServiceSid}/RateLimits
@desc Retrieve a list of all Rate Limits for a service.
@required {ServiceSid: str # The SID of the [Service](https://www.twilio.com/docs/verify/api/service) the resource is associated with.}
@optional {PageSize: int(int64) # How many resources to return in each list page. The default is 50, and the maximum is 1000., Page: int # The page index. This value is simply for client state., PageToken: str # The page token. This is provided by the API.}
@returns(200) {rate_limits: [map], meta: map{first_page_url: str(uri), key: str, next_page_url: str(uri)?, page: int, page_size: int, previous_page_url: str(uri)?, url: str(uri)}} # OK

@endpoint POST /v2/Services/{ServiceSid}/RateLimits/{Sid}
@desc Update a specific Rate Limit.
@required {ServiceSid: str # The SID of the [Service](https://www.twilio.com/docs/verify/api/service) the resource is associated with., Sid: str # The Twilio-provided string that uniquely identifies the Rate Limit resource to fetch.}
@returns(200) {sid: str?, service_sid: str?, account_sid: str?, unique_name: str?, description: str?, date_created: str(date-time)?, date_updated: str(date-time)?, url: str(uri)?, links: map?} # OK

@endpoint GET /v2/Services/{ServiceSid}/RateLimits/{Sid}
@desc Fetch a specific Rate Limit.
@required {ServiceSid: str # The SID of the [Service](https://www.twilio.com/docs/verify/api/service) the resource is associated with., Sid: str # The Twilio-provided string that uniquely identifies the Rate Limit resource to fetch.}
@returns(200) {sid: str?, service_sid: str?, account_sid: str?, unique_name: str?, description: str?, date_created: str(date-time)?, date_updated: str(date-time)?, url: str(uri)?, links: map?} # OK

@endpoint DELETE /v2/Services/{ServiceSid}/RateLimits/{Sid}
@desc Delete a specific Rate Limit.
@required {ServiceSid: str # The SID of the [Service](https://www.twilio.com/docs/verify/api/service) the resource is associated with., Sid: str # The Twilio-provided string that uniquely identifies the Rate Limit resource to fetch.}
@returns(204) The resource was deleted successfully.

@endgroup

@group SafeList
@endpoint POST /v2/SafeList/Numbers
@desc Add a new phone number to SafeList.
@returns(201) {sid: str?, phone_number: str?, url: str(uri)?} # Created

@endpoint GET /v2/SafeList/Numbers/{PhoneNumber}
@desc Check if a phone number exists in SafeList.
@required {PhoneNumber: str # The phone number to be fetched from SafeList. Phone numbers must be in [E.164 format](https://www.twilio.com/docs/glossary/what-e164).}
@returns(200) {sid: str?, phone_number: str?, url: str(uri)?} # OK

@endpoint DELETE /v2/SafeList/Numbers/{PhoneNumber}
@desc Remove a phone number from SafeList.
@required {PhoneNumber: str # The phone number to be removed from SafeList. Phone numbers must be in [E.164 format](https://www.twilio.com/docs/glossary/what-e164).}
@returns(204) The resource was deleted successfully.

@endgroup

@group Services
@endpoint POST /v2/Services
@desc Create a new Verification Service.
@returns(201) {sid: str?, account_sid: str?, friendly_name: str?, code_length: int, lookup_enabled: bool?, psd2_enabled: bool?, skip_sms_to_landlines: bool?, dtmf_input_required: bool?, tts_name: str?, do_not_share_warning_enabled: bool?, custom_code_enabled: bool?, push: any?, totp: any?, default_template_sid: str?, whatsapp: any?, passkeys: any?, verify_event_subscription_enabled: bool?, date_created: str(date-time)?, date_updated: str(date-time)?, url: str(uri)?, links: map?} # Created

@endpoint GET /v2/Services
@desc Retrieve a list of all Verification Services for an account.
@optional {PageSize: int(int64) # How many resources to return in each list page. The default is 50, and the maximum is 1000., Page: int # The page index. This value is simply for client state., PageToken: str # The page token. This is provided by the API.}
@returns(200) {services: [map], meta: map{first_page_url: str(uri), key: str, next_page_url: str(uri)?, page: int, page_size: int, previous_page_url: str(uri)?, url: str(uri)}} # OK

@endpoint GET /v2/Services/{Sid}
@desc Fetch specific Verification Service Instance.
@required {Sid: str # The Twilio-provided string that uniquely identifies the Verification Service resource to fetch.}
@returns(200) {sid: str?, account_sid: str?, friendly_name: str?, code_length: int, lookup_enabled: bool?, psd2_enabled: bool?, skip_sms_to_landlines: bool?, dtmf_input_required: bool?, tts_name: str?, do_not_share_warning_enabled: bool?, custom_code_enabled: bool?, push: any?, totp: any?, default_template_sid: str?, whatsapp: any?, passkeys: any?, verify_event_subscription_enabled: bool?, date_created: str(date-time)?, date_updated: str(date-time)?, url: str(uri)?, links: map?} # OK

@endpoint DELETE /v2/Services/{Sid}
@desc Delete a specific Verification Service Instance.
@required {Sid: str # The Twilio-provided string that uniquely identifies the Verification Service resource to delete.}
@returns(204) The resource was deleted successfully.

@endpoint POST /v2/Services/{Sid}
@desc Update a specific Verification Service.
@required {Sid: str # The Twilio-provided string that uniquely identifies the Service resource to update.}
@returns(200) {sid: str?, account_sid: str?, friendly_name: str?, code_length: int, lookup_enabled: bool?, psd2_enabled: bool?, skip_sms_to_landlines: bool?, dtmf_input_required: bool?, tts_name: str?, do_not_share_warning_enabled: bool?, custom_code_enabled: bool?, push: any?, totp: any?, default_template_sid: str?, whatsapp: any?, passkeys: any?, verify_event_subscription_enabled: bool?, date_created: str(date-time)?, date_updated: str(date-time)?, url: str(uri)?, links: map?} # OK

@endpoint POST /v2/Services/{ServiceSid}/Verifications
@desc Create a new Verification using a Service
@required {ServiceSid: str # The SID of the verification [Service](https://www.twilio.com/docs/verify/api/service) to create the resource under.}
@returns(201) {sid: str?, service_sid: str?, account_sid: str?, to: str?, channel: str, status: str?, valid: bool?, lookup: any?, amount: str?, payee: str?, send_code_attempts: [any]?, date_created: str(date-time)?, date_updated: str(date-time)?, sna: any?, url: str(uri)?} # Created
@errors {429: Too Many Requests}

@endpoint POST /v2/Services/{ServiceSid}/Verifications/{Sid}
@desc Update a Verification status
@required {ServiceSid: str # The SID of the verification [Service](https://www.twilio.com/docs/verify/api/service) to update the resource from., Sid: str # The Twilio-provided string that uniquely identifies the Verification resource to update.}
@returns(200) {sid: str?, service_sid: str?, account_sid: str?, to: str?, channel: str, status: str?, valid: bool?, lookup: any?, amount: str?, payee: str?, send_code_attempts: [any]?, date_created: str(date-time)?, date_updated: str(date-time)?, sna: any?, url: str(uri)?} # OK

@endpoint GET /v2/Services/{ServiceSid}/Verifications/{Sid}
@desc Fetch a specific Verification
@required {ServiceSid: str # The SID of the verification [Service](https://www.twilio.com/docs/verify/api/service) to fetch the resource from., Sid: str # The Twilio-provided string that uniquely identifies the Verification resource to fetch.}
@returns(200) {sid: str?, service_sid: str?, account_sid: str?, to: str?, channel: str, status: str?, valid: bool?, lookup: any?, amount: str?, payee: str?, send_code_attempts: [any]?, date_created: str(date-time)?, date_updated: str(date-time)?, sna: any?, url: str(uri)?} # OK

@endgroup

@group Attempts
@endpoint GET /v2/Attempts
@desc List all the verification attempts for a given Account.
@optional {DateCreatedAfter: str(date-time) # Datetime filter used to consider only Verification Attempts created after this datetime on the summary aggregation. Given as GMT in ISO 8601 formatted datetime string: yyyy-MM-dd'T'HH:mm:ss'Z., DateCreatedBefore: str(date-time) # Datetime filter used to consider only Verification Attempts created before this datetime on the summary aggregation. Given as GMT in ISO 8601 formatted datetime string: yyyy-MM-dd'T'HH:mm:ss'Z., ChannelData.To: str # Destination of a verification. It is phone number in E.164 format., Country: str(iso-country-code) # Filter used to query Verification Attempts sent to the specified destination country., Channel: str # Filter used to query Verification Attempts by communication channel., VerifyServiceSid: str # Filter used to query Verification Attempts by verify service. Only attempts of the provided SID will be returned., VerificationSid: str # Filter used to return all the Verification Attempts of a single verification. Only attempts of the provided verification SID will be returned., Status: str # Filter used to query Verification Attempts by conversion status. Valid values are `UNCONVERTED`, for attempts that were not converted, and `CONVERTED`, for attempts that were confirmed., PageSize: int(int64) # How many resources to return in each list page. The default is 50, and the maximum is 1000., Page: int # The page index. This value is simply for client state., PageToken: str # The page token. This is provided by the API.}
@returns(200) {attempts: [map], meta: map{first_page_url: str(uri), key: str, next_page_url: str(uri)?, page: int, page_size: int, previous_page_url: str(uri)?, url: str(uri)}} # OK

@endpoint GET /v2/Attempts/{Sid}
@desc Fetch a specific verification attempt.
@required {Sid: str # The unique SID identifier of a Verification Attempt}
@returns(200) {sid: str?, account_sid: str?, service_sid: str?, verification_sid: str?, date_created: str(date-time)?, date_updated: str(date-time)?, conversion_status: str, channel: str, price: any?, channel_data: any?, url: str(uri)?} # OK

@endpoint GET /v2/Attempts/Summary
@desc Get a summary of how many attempts were made and how many were converted.
@optional {VerifyServiceSid: str # Filter used to consider only Verification Attempts of the given verify service on the summary aggregation., DateCreatedAfter: str(date-time) # Datetime filter used to consider only Verification Attempts created after this datetime on the summary aggregation. Given as GMT in ISO 8601 formatted datetime string: yyyy-MM-dd'T'HH:mm:ss'Z., DateCreatedBefore: str(date-time) # Datetime filter used to consider only Verification Attempts created before this datetime on the summary aggregation. Given as GMT in ISO 8601 formatted datetime string: yyyy-MM-dd'T'HH:mm:ss'Z., Country: str(iso-country-code) # Filter used to consider only Verification Attempts sent to the specified destination country on the summary aggregation., Channel: str # Filter Verification Attempts considered on the summary aggregation by communication channel., DestinationPrefix: str # Filter the Verification Attempts considered on the summary aggregation by Destination prefix. It is the prefix of a phone number in E.164 format.}
@returns(200) {total_attempts: int, total_converted: int, total_unconverted: int, conversion_rate_percentage: str?, url: str(uri)?} # OK

@endgroup

@group Services
@endpoint POST /v2/Services/{ServiceSid}/VerificationCheck
@desc challenge a specific Verification Check.
@required {ServiceSid: str # The SID of the verification [Service](https://www.twilio.com/docs/verify/api/service) to create the resource under.}
@returns(200) {sid: str?, service_sid: str?, account_sid: str?, to: str?, channel: str, status: str?, valid: bool?, amount: str?, payee: str?, date_created: str(date-time)?, date_updated: str(date-time)?, sna_attempts_error_codes: [any]?} # OK
@returns(201) {sid: str?, service_sid: str?, account_sid: str?, to: str?, channel: str, status: str?, valid: bool?, amount: str?, payee: str?, date_created: str(date-time)?, date_updated: str(date-time)?, sna_attempts_error_codes: [any]?} # Created

@endgroup

@group Templates
@endpoint GET /v2/Templates
@desc List all the available templates for a given Account.
@optional {FriendlyName: str # String filter used to query templates with a given friendly name., PageSize: int(int64) # How many resources to return in each list page. The default is 50, and the maximum is 1000., Page: int # The page index. This value is simply for client state., PageToken: str # The page token. This is provided by the API.}
@returns(200) {templates: [map], meta: map{first_page_url: str(uri), key: str, next_page_url: str(uri)?, page: int, page_size: int, previous_page_url: str(uri)?, url: str(uri)}} # OK

@endgroup

@group Services
@endpoint POST /v2/Services/{ServiceSid}/Webhooks
@desc Create a new Webhook for the Service
@required {ServiceSid: str # The unique SID identifier of the Service.}
@returns(201) {sid: str?, service_sid: str?, account_sid: str?, friendly_name: str?, event_types: [str]?, status: str, version: str, webhook_url: str(uri)?, webhook_method: str, date_created: str(date-time)?, date_updated: str(date-time)?, url: str(uri)?} # Created

@endpoint GET /v2/Services/{ServiceSid}/Webhooks
@desc Retrieve a list of all Webhooks for a Service.
@required {ServiceSid: str # The unique SID identifier of the Service.}
@optional {PageSize: int(int64) # How many resources to return in each list page. The default is 50, and the maximum is 1000., Page: int # The page index. This value is simply for client state., PageToken: str # The page token. This is provided by the API.}
@returns(200) {webhooks: [map], meta: map{first_page_url: str(uri), key: str, next_page_url: str(uri)?, page: int, page_size: int, previous_page_url: str(uri)?, url: str(uri)}} # OK

@endpoint POST /v2/Services/{ServiceSid}/Webhooks/{Sid}
@required {ServiceSid: str # The unique SID identifier of the Service., Sid: str # The Twilio-provided string that uniquely identifies the Webhook resource to update.}
@returns(200) {sid: str?, service_sid: str?, account_sid: str?, friendly_name: str?, event_types: [str]?, status: str, version: str, webhook_url: str(uri)?, webhook_method: str, date_created: str(date-time)?, date_updated: str(date-time)?, url: str(uri)?} # OK

@endpoint DELETE /v2/Services/{ServiceSid}/Webhooks/{Sid}
@desc Delete a specific Webhook.
@required {ServiceSid: str # The unique SID identifier of the Service., Sid: str # The Twilio-provided string that uniquely identifies the Webhook resource to delete.}
@returns(204) The resource was deleted successfully.

@endpoint GET /v2/Services/{ServiceSid}/Webhooks/{Sid}
@desc Fetch a specific Webhook.
@required {ServiceSid: str # The unique SID identifier of the Service., Sid: str # The Twilio-provided string that uniquely identifies the Webhook resource to fetch.}
@returns(200) {sid: str?, service_sid: str?, account_sid: str?, friendly_name: str?, event_types: [str]?, status: str, version: str, webhook_url: str(uri)?, webhook_method: str, date_created: str(date-time)?, date_updated: str(date-time)?, url: str(uri)?} # OK

@endpoint POST /v2/Services/{ServiceSid}/Passkeys/VerifyFactor
@desc Verify a Passkeys Factor
@required {ServiceSid: str # The unique SID identifier of the Service., response: map{attestationObject: str, clientDataJSON: str, transports: [str]} # The result of a WebAuthn credential registration via `navigator.credentials.create()`, as specified in [AuthenticatorAttestationResponse](https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorAttestationResponse).}
@optional {id: str # A [base64url](https://base64.guru/standards/base64url) encoded representation of `rawId`., rawId: str # The globally unique identifier for this `PublicKeyCredential`., authenticatorAttachment: str(platform/cross-platform) # A string that indicates the mechanism by which the WebAuthn implementation is attached to the authenticator at the time the associated  `navigator.credentials.create()` or `navigator.credentials.get()` call completes., type: str=public-key # The valid credential types supported by the API. The values of this enumeration are used for versioning the `AuthenticatorAssertion` and `AuthenticatorAttestation` structures according to the type of the authenticator.}
@returns(200) {sid: str?, account_sid: str?, service_sid: str?, entity_sid: str?, identity: str?, date_created: str(date-time)?, date_updated: str(date-time)?, friendly_name: str?, status: str, factor_type: str, config: any?, metadata: any?, url: str(uri)?} # Created
@example_request {"id":"6ySmhJd6qGUMCthiqszyb4Od4U6TFn0v3DLz-1EZrNQ","rawId":"eb24a684977aa8650c0ad862aaccf26f839de14e93167d2fdc32f3fb5119acd4","authenticatorAttachment":"platform","response":{"attestationObject":"o2NmbXRkbm9uZWdhdHRTdG10oGhhdXRoRGF0YViko3mm9u6vuaVeN4wRgDTidR5oL6ufLTCrE9ISVYbOGUdFAAAAAAAAAAAAAAAAAAAAAAAAAAAAIOskpoSXeqhlDArYYqrM8m-DneFOkxZ9L9wy8_tRGazUpQECAyYgASFYIOP8op-6gZJ1H0wHNLe2k7cgBqaSUR4pdcBqtOHPaYUhIlggsXZWuWfZS-6YpbeU9dsB2UoroACSKXJOrdE_auaUIf4","clientDataJSON":"eyJ0eXBlIjoid2ViYXV0aG4uY3JlYXRlIiwiY2hhbGxlbmdlIjoiV1VZd05EaGtNV0UzWldNellUSmhOamszTURBMU9XTXlOelkyWW1Kak4yVXdaZyIsIm9yaWdpbiI6Imh0dHBzOi8vZXhhbXBsZS5jb20iLCJjcm9zc09yaWdpbiI6ZmFsc2V9","transports":["internal"]},"type":"public-key"}

@endpoint POST /v2/Services/{ServiceSid}/Passkeys/Factors
@desc Create a new Passkeys Factor for the Entity
@required {ServiceSid: str # The unique SID identifier of the Service., friendly_name: str, identity: str}
@optional {config: map{relying_party: map, authenticator_attachment: str, discoverable_credentials: str, user_verification: str}}
@returns(201) {sid: str?, account_sid: str?, service_sid: str?, entity_sid: str?, identity: str?, binding: any?, options: any?, date_created: str(date-time)?, date_updated: str(date-time)?, friendly_name: str?, status: str, factor_type: str, config: any?, metadata: any?, url: str(uri)?} # Created
@example_request {"friendly_name":"FriendlyName","identity":"ff483d1ff591898a9942916050d2ca3f","config":{"relying_party":{"id":"example.com","name":"Example","origins":["https://example.com"]},"authenticator_attachment":"platform","discoverable_credentials":"preferred","user_verification":"preferred"}}

@endpoint POST /v2/Services/{ServiceSid}/Passkeys/Challenges
@desc Create a Passkeys Challenge
@required {ServiceSid: str # The unique SID identifier of the Service.}
@optional {identity: str, factor_sid: str}
@returns(201) {options: map, sid: str?, account_sid: str?, service_sid: str?, entity_sid: str?, identity: str?, factor_sid: str?, date_created: str(date-time)?, date_updated: str(date-time)?, date_responded: str(date-time)?, expiration_date: str(date-time)?, status: str, responded_reason: str, details: any?, hidden_details: any?, metadata: any?, factor_type: str, url: str(uri)?, links: map?} # Created
@example_request {}

@endpoint POST /v2/Services/{ServiceSid}/Passkeys/ApproveChallenge
@desc Approve a Passkeys Challenge
@required {ServiceSid: str # The unique SID identifier of the Service., id: str # A [base64url](https://base64.guru/standards/base64url) encoded representation of `rawId`., rawId: str # The globally unique identifier for this `PublicKeyCredential`., authenticatorAttachment: str(platform/cross-platform) # A string that indicates the mechanism by which the WebAuthn implementation is attached to the authenticator at the time the associated `navigator.credentials.create()` or `navigator.credentials.get()` call completes., response: map{authenticatorData!: str, clientDataJSON!: str, signature!: str, userHandle: str} # The result of a WebAuthn authentication via a `navigator.credentials.get()` request, as specified in [AuthenticatorAttestationResponse](https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorAttestationResponse).}
@optional {type: str=public-key # The valid credential types supported by the API. The values of this enumeration are used for versioning the `AuthenticatorAssertion` and `AuthenticatorAttestation` structures according to the type of the authenticator.}
@returns(200) {options: map, sid: str?, account_sid: str?, service_sid: str?, entity_sid: str?, identity: str?, factor_sid: str?, date_created: str(date-time)?, date_updated: str(date-time)?, date_responded: str(date-time)?, expiration_date: str(date-time)?, status: str, responded_reason: str, details: any?, hidden_details: any?, metadata: any?, factor_type: str, url: str(uri)?, links: map?} # Approved
@example_request {"id":"6ySmhJd6qGUMCthiqszyb4Od4U6TFn0v3DLz-1EZrNQ","rawId":"eb24a684977aa8650c0ad862aaccf26f839de14e93167d2fdc32f3fb5119acd4","authenticatorAttachment":"platform","type":"public-key","response":{"clientDataJSON":"eyJ0eXBlIjoid2ViYXV0aG4uY3JlYXRlIiwiY2hhbGxlbmdlIjoiV1VZd05EaGtNV0UzWldNellUSmhOamszTURBMU9XTXlOelkyWW1Kak4yVXdaZyIsIm9yaWdpbiI6Imh0dHBzOi8vZXhhbXBsZS5jb20iLCJjcm9zc09yaWdpbiI6ZmFsc2V9","signature":"MEYCIQDDs662ykELzpmxkQaOR6HY5GwO7n","userHandle":"WUU0ZmQzYWFmNGU0NT","authenticatorData":"o3mm9u6vuaVeN4wRgDTid"}}

@endgroup

@end
