Twilio · Arazzo Workflow

Twilio Verify Start, Poll, and Cancel a Verification

Version 1.0.0

Start a verification, fetch it to read its status, and cancel it if it is still pending.

1 workflow 1 source API 1 provider
View Spec View on GitHub AuthenticationCommunicationsContact CenterEmailIoTMessagingPhoneSMST1VerificationVideoVoiceArazzoWorkflows

Provider

twilio

Workflows

start-poll-and-cancel-verification
Start a verification, read its status, and cancel it if still pending.
Creates a verification, fetches it to read the status, and conditionally cancels it when it remains pending.
3 steps inputs: channel, serviceSid, to outputs: finalStatus, verificationSid
1
startVerification
createVerification
Start a verification on the service.
2
fetchVerification
fetchVerification
Fetch the verification by SID to read its current status.
3
cancelVerification
updateVerification
Cancel the still-pending verification by updating its status to canceled.

Source API Descriptions

Arazzo Workflow Specification

twilio-verify-start-poll-and-cancel-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Twilio Verify Start, Poll, and Cancel a Verification
  summary: Start a verification, fetch it to read its status, and cancel it if it is still pending.
  description: >-
    A verification lifecycle management pattern. The workflow starts a
    verification on a Verify service, fetches the verification back by its SID to
    read the current status, and branches: when the verification is still
    pending it cancels it by updating its status to canceled, and when it has
    already been approved it ends. This is used to expire stale verifications.
    Every step spells out its request inline so the flow can be read and executed
    without opening the underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: verifyApi
  url: ../openapi/twilio-verify-openapi.yml
  type: openapi
workflows:
- workflowId: start-poll-and-cancel-verification
  summary: Start a verification, read its status, and cancel it if still pending.
  description: >-
    Creates a verification, fetches it to read the status, and conditionally
    cancels it when it remains pending.
  inputs:
    type: object
    required:
    - serviceSid
    - to
    - channel
    properties:
      serviceSid:
        type: string
        description: The Verify service SID (starts with VA).
      to:
        type: string
        description: Phone number (E.164) or email address to verify.
      channel:
        type: string
        description: Delivery channel - one of sms, call, email, whatsapp, or sna.
  steps:
  - stepId: startVerification
    description: >-
      Start a verification on the service.
    operationId: createVerification
    parameters:
    - name: ServiceSid
      in: path
      value: $inputs.serviceSid
    requestBody:
      contentType: application/x-www-form-urlencoded
      payload:
        To: $inputs.to
        Channel: $inputs.channel
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      verificationSid: $response.body#/sid
      status: $response.body#/status
  - stepId: fetchVerification
    description: >-
      Fetch the verification by SID to read its current status.
    operationId: fetchVerification
    parameters:
    - name: ServiceSid
      in: path
      value: $inputs.serviceSid
    - name: VerificationSid
      in: path
      value: $steps.startVerification.outputs.verificationSid
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      status: $response.body#/status
    onSuccess:
    - name: stillPending
      type: goto
      stepId: cancelVerification
      criteria:
      - context: $response.body
        condition: $.status == "pending"
        type: jsonpath
    - name: settled
      type: end
      criteria:
      - context: $response.body
        condition: $.status != "pending"
        type: jsonpath
  - stepId: cancelVerification
    description: >-
      Cancel the still-pending verification by updating its status to canceled.
    operationId: updateVerification
    parameters:
    - name: ServiceSid
      in: path
      value: $inputs.serviceSid
    - name: VerificationSid
      in: path
      value: $steps.startVerification.outputs.verificationSid
    requestBody:
      contentType: application/x-www-form-urlencoded
      payload:
        Status: canceled
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      finalStatus: $response.body#/status
  outputs:
    verificationSid: $steps.startVerification.outputs.verificationSid
    finalStatus: $steps.cancelVerification.outputs.finalStatus