Zapier · Arazzo Workflow

Zapier Discover and Configure an Action

Version 1.0.0

Search for an app, list its actions, read the input fields, and resolve the choices for a dropdown field.

1 workflow 1 source API 1 provider
View Spec View on GitHub IntegrationsiPaaSArazzoWorkflows

Provider

zapier

Workflows

discover-and-configure-action
Find an app, pick an action, and populate a dropdown input field with its choices.
Searches the app directory by query, lists actions for the matched app, reads the input field schema for the target action, and fetches the choices for a SELECT input field so a configuration UI can be rendered.
4 steps inputs: accessToken, actionId, appQuery, authentication, inputId outputs: appId, choices, inputFields
1
searchApps
get-v2-apps
Search the Zapier app directory for an app whose title matches the query and capture its canonical id.
2
listActions
get-actions
List the actions exposed by the matched app so the target action can be confirmed.
3
resolveInputFields
get-fields-inputs
Read the input field definitions for the target action so the UI knows which fields exist and which require choices.
4
resolveChoices
get-choices
Fetch the possible values for the SELECT input field so a dropdown can be populated in the configuration UI.

Source API Descriptions

Arazzo Workflow Specification

zapier-discover-and-configure-action-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Zapier Discover and Configure an Action
  summary: Search for an app, list its actions, read the input fields, and resolve the choices for a dropdown field.
  description: >-
    A configuration-time flow for building an action step in an embedded Zapier
    experience. It searches the Zapier app directory for a matching app, lists
    the actions that app exposes, fetches the input fields for the chosen
    action, and then resolves the available choices for a SELECT input field so
    a dropdown can be populated. 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: zapierPartnerApi
  url: ../openapi/zapier-partner-api.yml
  type: openapi
workflows:
- workflowId: discover-and-configure-action
  summary: Find an app, pick an action, and populate a dropdown input field with its choices.
  description: >-
    Searches the app directory by query, lists actions for the matched app,
    reads the input field schema for the target action, and fetches the choices
    for a SELECT input field so a configuration UI can be rendered.
  inputs:
    type: object
    required:
    - accessToken
    - appQuery
    - actionId
    - authentication
    - inputId
    properties:
      accessToken:
        type: string
        description: OAuth2 bearer token used in the Authorization header.
      appQuery:
        type: string
        description: Text query to find an app by title in the app directory.
      actionId:
        type: string
        description: The Action ID whose input fields and choices are needed.
      authentication:
        type: string
        description: The Authentication ID granting access to the third-party app.
      inputId:
        type: string
        description: The Input Field ID of the SELECT field whose choices to resolve.
  steps:
  - stepId: searchApps
    description: >-
      Search the Zapier app directory for an app whose title matches the query
      and capture its canonical id.
    operationId: get-v2-apps
    parameters:
    - name: Authorization
      in: header
      value: "Bearer $inputs.accessToken"
    - name: query
      in: query
      value: $inputs.appQuery
    - name: limit
      in: query
      value: 1
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      appId: $response.body#/0/data/0/id
  - stepId: listActions
    description: >-
      List the actions exposed by the matched app so the target action can be
      confirmed.
    operationId: get-actions
    parameters:
    - name: Authorization
      in: header
      value: "Bearer $inputs.accessToken"
    - name: app
      in: query
      value: $steps.searchApps.outputs.appId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      actions: $response.body#/0/data
  - stepId: resolveInputFields
    description: >-
      Read the input field definitions for the target action so the UI knows
      which fields exist and which require choices.
    operationId: get-fields-inputs
    parameters:
    - name: Authorization
      in: header
      value: "Bearer $inputs.accessToken"
    - name: action_id
      in: path
      value: $inputs.actionId
    requestBody:
      contentType: application/json
      payload:
        data:
          authentication: $inputs.authentication
          inputs: {}
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      inputFields: $response.body#/data
  - stepId: resolveChoices
    description: >-
      Fetch the possible values for the SELECT input field so a dropdown can be
      populated in the configuration UI.
    operationId: get-choices
    parameters:
    - name: Authorization
      in: header
      value: "Bearer $inputs.accessToken"
    - name: action_id
      in: path
      value: $inputs.actionId
    - name: input_id
      in: path
      value: $inputs.inputId
    requestBody:
      contentType: application/json
      payload:
        data:
          authentication: $inputs.authentication
          inputs: {}
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      choices: $response.body
  outputs:
    appId: $steps.searchApps.outputs.appId
    inputFields: $steps.resolveInputFields.outputs.inputFields
    choices: $steps.resolveChoices.outputs.choices