> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vortexiq.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Analyse workflow

> Read an n8n workflow export, a Shopify Flow export, or a workflow described as an intent, and see how Vortex IQ
would run it: the closest templates, and for each step whether it runs, only shows what it would write, or is
not supported. For an export, the answer also carries its `plan` and `canvas` where running imported workflows
is switched on for your organisation. Nothing is saved; [Create import](/automations/api/create-import) keeps
it.

The workflow is checked first: a secret typed into a step is removed and reported. Answers `413` for an export
over the size limit and `422` for one that cannot be read.

Needs the `automations:read` scope.



## OpenAPI

````yaml automations/api/openapi.json POST /v1/automations/imports/analyse
openapi: 3.1.0
info:
  title: Vortex IQ Automations API
  version: 1.0.0
  description: >
    REST API for Vortex IQ Automations. List the templates your organisation can
    use, set automations up on your

    stores, schedule them, run them, and follow every run, from your own tools
    instead of the Automations screens.


    The API is served from `https://automations-api.vortexiq.ai`; the login that
    gives you a token is on

    `https://app.vortexiq.ai`. Every call acts as the person who logged in,
    within their organisation, and every

    answer is JSON. See [Authentication](/automations/api/authentication).
  contact:
    name: Vortex IQ Support
    url: https://www.vortexiq.ai/contact-us
servers:
  - url: https://automations-api.vortexiq.ai
    description: Vortex IQ Automations (production)
security:
  - bearerAuth: []
  - apiCredential: []
tags:
  - name: Authentication
    description: >-
      Exchange your identity and your organisation's API credential for a bearer
      token.
  - name: Templates & stores
    description: What you can set up, and what it can run on.
  - name: Automations
    description: Set automations up, read them and change them.
  - name: Automation controls
    description: Pause, resume, archive and restore.
  - name: Runs
    description: Run an automation now, follow a run, read the history.
  - name: Schedules & calendar
    description: Preview a schedule, list the coming runs, move or skip one.
  - name: Approvals
    description: >-
      The runs waiting for a decision. Deciding happens in the Vortex IQ app
      only.
  - name: Imported workflows
    description: >-
      Bring an n8n or Shopify Flow workflow in, see how it would run, and run it
      as your own automation.
  - name: Status
    description: >-
      Whether Automations are on for your organisation, and how the service is
      doing.
paths:
  /v1/automations/imports/analyse:
    post:
      tags:
        - Imported workflows
      summary: Analyse workflow
      description: >-
        Read an n8n workflow export, a Shopify Flow export, or a workflow
        described as an intent, and see how Vortex IQ

        would run it: the closest templates, and for each step whether it runs,
        only shows what it would write, or is

        not supported. For an export, the answer also carries its `plan` and
        `canvas` where running imported workflows

        is switched on for your organisation. Nothing is saved; [Create
        import](/automations/api/create-import) keeps

        it.


        The workflow is checked first: a secret typed into a step is removed and
        reported. Answers `413` for an export

        over the size limit and `422` for one that cannot be read.


        Needs the `automations:read` scope.
      operationId: analyseImport
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImportSource'
            example:
              source: n8n
              workflow:
                name: Daily product summary
                nodes:
                  - name: Daily
                    type: n8n-nodes-base.scheduleTrigger
                    typeVersion: 1.2
                    position:
                      - 0
                      - 0
                    parameters:
                      rule:
                        interval:
                          - triggerAtHour: 7
                  - name: Products
                    type: n8n-nodes-base.httpRequest
                    typeVersion: 4.2
                    position:
                      - 200
                      - 0
                    parameters:
                      url: >-
                        https://demo.myshopify.com/admin/api/2024-10/products.json
                    onError: continueRegularOutput
                connections:
                  Daily:
                    main:
                      - - node: Products
                          type: main
                          index: 0
                  Products:
                    main:
                      - - node: Summary
                          type: main
                          index: 0
                settings:
                  executionOrder: v1
      responses:
        '200':
          description: The analysis.
          content:
            application/json:
              schema:
                type: object
                required:
                  - success
                  - data
                  - contract_version
                properties:
                  success:
                    type: boolean
                    const: true
                  contract_version:
                    $ref: '#/components/schemas/ContractVersion'
                  data:
                    type: object
                    required:
                      - analysis
                    properties:
                      analysis:
                        $ref: '#/components/schemas/ImportAnalysis'
                      plan:
                        $ref: '#/components/schemas/ImportPlan'
                        description: >-
                          How the workflow would run once kept, as Get import
                          plan answers it. Present for an n8n or Shopify Flow
                          export, where running imported workflows is switched
                          on for your organisation.
                      canvas:
                        $ref: '#/components/schemas/WorkflowCanvas'
                        description: >-
                          The workflow drawn as Get import canvas would draw it
                          once kept. Present when `plan` is.
              example:
                success: true
                contract_version: 1
                data:
                  analysis:
                    intent:
                      source: n8n
                      platform: shopify
                      trigger:
                        kind: schedule
                        cadence: daily
                        run_at: '07:00'
                      steps:
                        - label: Products
                          connector: shopify
                          resource: products
                          action: read
                          mapping: alias
                        - label: Summary
                          connector: null
                          resource: other
                          action: read
                          mapping: none
                    matches:
                      - template_id: shopify-price-and-margin
                        name: Price and margin exceptions · Shopify
                        covered: 1
                        total: 2
                        not_covered:
                          - Summary
                        trigger_note: >-
                          Yours runs daily; this template runs when you press
                          Run by default. You can change it in set-up.
                        needs_store: null
                      - template_id: shopify-catalogue-quality
                        name: Catalogue quality checklist · Shopify
                        covered: 1
                        total: 2
                        not_covered:
                          - Summary
                        trigger_note: >-
                          Yours runs daily; this template runs when you press
                          Run by default. You can change it in set-up.
                        needs_store: null
                    preview:
                      steps:
                        - label: Products
                          words: Reads products from Shopify.
                          supported: true
                          changes_store: false
                        - label: Summary
                          words: No template does this yet.
                          supported: false
                          changes_store: false
                      changes: []
                    excluded: []
                  plan:
                    name: Daily product summary
                    platform: shopify
                    plan_hash: >-
                      55fcc85799bf00e5863a27d77276d8b82ec84e2863fb580e0ccb99fa741260f2
                    runnable: true
                    refusal: null
                    trigger:
                      kind: schedule
                      node: Daily
                    schedule:
                      cadence: daily
                      run_at: '07:00'
                    trigger_rule: every day at 07:00
                    trigger_timezone: null
                    plan_summary:
                      runs: 3
                      shows: 0
                      unsupported: 0
                      sends: 0
                    steps:
                      - name: Daily
                        type: n8n-nodes-base.scheduleTrigger
                        disposition: run
                        reason: null
                        needs: null
                      - name: Products
                        type: n8n-nodes-base.httpRequest
                        disposition: run
                        reason: null
                        needs:
                          kind: store
                          target: null
                  canvas:
                    nodes:
                      - name: Daily
                        type: n8n-nodes-base.scheduleTrigger
                        kind: trigger
                        disposition: run
                        reason: null
                        position:
                          - 0
                          - 0
                        disabled: false
                        outputs:
                          - null
                        inputs: 0
                        subtitle: every day at 07:00
                      - name: Products
                        type: n8n-nodes-base.httpRequest
                        kind: step
                        disposition: run
                        reason: null
                        position:
                          - 200
                          - 0
                        disabled: false
                        outputs:
                          - null
                        inputs: 1
                        subtitle: 'GET: products.json'
                    connections:
                      - from: Daily
                        output: 0
                        to: Products
                        input: 0
                        type: main
                      - from: Products
                        output: 0
                        to: Summary
                        input: 0
                        type: main
                    notes: []
                    bounds:
                      x: -40
                      'y': 0
                      width: 580
                      height: 160
                    trigger:
                      node: Daily
                      kind: schedule
                      rule: every day at 07:00
                      timezone: null
                    timezone_origin: null
        '401':
          $ref: '#/components/responses/Unauthorised'
        '403':
          $ref: '#/components/responses/Forbidden'
        '413':
          $ref: '#/components/responses/TooLarge'
        '422':
          $ref: '#/components/responses/ValidationFailed'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      security:
        - bearerAuth:
            - automations:read
        - apiCredential:
            - automations:read
components:
  schemas:
    ImportSource:
      description: >-
        An n8n workflow export, a Shopify Flow export, or an intent already
        built from a description. Nothing else.
      oneOf:
        - type: object
          additionalProperties: false
          required:
            - source
            - workflow
          properties:
            source:
              type: string
              const: n8n
            workflow:
              type: object
        - type: object
          additionalProperties: false
          required:
            - source
            - flow
          properties:
            source:
              type: string
              const: shopify_flow
            flow:
              type: object
              description: >-
                A Shopify Flow export as JSON: the exported text without the
                64-character prefix and the colon before the JSON.
        - type: object
          additionalProperties: false
          required:
            - source
            - intent
          properties:
            source:
              type: string
              const: intent
            intent:
              $ref: '#/components/schemas/Intent'
            name:
              $ref: '#/components/schemas/ImportName'
              description: What you call it; its words help find the closest template.
    ContractVersion:
      type: integer
      minimum: 1
      description: >-
        The version of the API this answer follows. It changes only for a
        breaking change.
    ImportAnalysis:
      type: object
      additionalProperties: false
      required:
        - intent
        - matches
        - preview
        - excluded
      properties:
        intent:
          $ref: '#/components/schemas/Intent'
        matches:
          type: array
          maxItems: 3
          items:
            $ref: '#/components/schemas/ImportMatch'
        preview:
          type: object
          additionalProperties: false
          required:
            - steps
            - changes
          properties:
            steps:
              type: array
              items:
                $ref: '#/components/schemas/ImportPreviewStep'
            changes:
              type: array
              items:
                type: string
        excluded:
          type: array
          items:
            type: string
          description: What was left out of the kept copy, e.g. n8n credential references.
    ImportPlan:
      type: object
      required:
        - name
        - platform
        - plan_hash
        - runnable
        - trigger
        - schedule
        - plan_summary
        - steps
      properties:
        name:
          type: string
        source:
          type: string
          enum:
            - n8n
            - shopify_flow
          description: 'Where the workflow came from: `n8n` or `shopify_flow`.'
        platform:
          description: >-
            The store the plan reads; null when the workflow names none (then it
            cannot run).
          oneOf:
            - $ref: '#/components/schemas/Platform'
            - type: 'null'
        plan_hash:
          type: string
          description: sha256 of the plan's canonical JSON.
        runnable:
          type: boolean
          description: >-
            False while any step is not supported, or when the whole workflow is
            refused (`refusal`); such an import cannot be set up.
        refusal:
          type:
            - string
            - 'null'
          description: >-
            Why the whole workflow cannot run (n8n's v0 execution order, no
            store named), in plain words.
        trigger:
          type:
            - object
            - 'null'
          required:
            - kind
            - node
          properties:
            kind:
              type: string
              enum:
                - schedule
                - manual
                - event
              description: >-
                How the workflow starts. `event`: when the store sends an event;
                it takes no schedule and cannot be run by hand.
            node:
              type: string
            topic:
              type: string
              description: >-
                Present exactly when `kind` is `event`: the store event it
                starts on, as the platform's webhooks name it, such as
                `inventory_levels/update`.
            words:
              type: string
              description: >-
                Present exactly when `kind` is `event`: that topic in plain
                words, such as "Runs when stock changes".
        schedule:
          description: >-
            The workflow's own schedule, when it can run exactly as written;
            null when it has none, and you choose one.
          oneOf:
            - $ref: '#/components/schemas/Schedule'
            - type: 'null'
        trigger_rule:
          type:
            - string
            - 'null'
          description: >-
            The start's Schedule Trigger rule in words, as n8n runs it, with
            n8n's defaults for what the export leaves out (hour and minute 0,
            Sunday, day 1): "every weekday at 08:00". Never a URL. Null for a
            Manual Trigger, a store event (its words are in `trigger.words`), or
            no start.
        trigger_timezone:
          type:
            - string
            - 'null'
          description: >-
            The workflow's own timezone when the export names a real one
            (`settings.timezone`), as its canonical name (europe/london reads
            Europe/London); null when it names none, says DEFAULT, or names
            something that is not a zone.
        plan_summary:
          type: object
          required:
            - runs
            - shows
            - unsupported
          properties:
            runs:
              type: integer
              minimum: 0
            shows:
              type: integer
              minimum: 0
            unsupported:
              type: integer
              minimum: 0
            sends:
              type: integer
              minimum: 0
              description: Steps that send through a bound connection (disposition `send`).
        steps:
          type: array
          items:
            $ref: '#/components/schemas/ImportPlanStep'
    WorkflowCanvas:
      type: object
      additionalProperties: false
      description: >-
        An imported workflow drawn as n8n draws it. Never a step's settings, a
        credential or a removed secret.
      required:
        - nodes
        - connections
        - notes
        - bounds
        - trigger
        - timezone_origin
      properties:
        nodes:
          type: array
          maxItems: 500
          items:
            $ref: '#/components/schemas/CanvasNode'
        connections:
          type: array
          maxItems: 5000
          items:
            $ref: '#/components/schemas/CanvasConnection'
        notes:
          type: array
          maxItems: 100
          items:
            $ref: '#/components/schemas/CanvasNote'
        bounds:
          type: object
          additionalProperties: false
          required:
            - x
            - 'y'
            - width
            - height
          description: >-
            Every node's box (its tile and the label beneath) and every note,
            for fit-to-view.
          properties:
            x:
              type: number
            'y':
              type: number
            width:
              type: number
              minimum: 0
            height:
              type: number
              minimum: 0
        trigger:
          type:
            - object
            - 'null'
          additionalProperties: false
          required:
            - node
            - kind
            - rule
            - timezone
          description: >-
            Where runs start, as the plan chose it; null when the workflow has
            no start Vortex IQ runs.
          properties:
            node:
              type: string
            kind:
              type: string
              enum:
                - schedule
                - manual
                - event
            rule:
              type:
                - string
                - 'null'
              description: >-
                The start in words: a Schedule Trigger's rule, or for a store
                event what starts it, such as "Runs when stock changes". Null
                for a Manual Trigger.
            timezone:
              type:
                - string
                - 'null'
        timezone_origin:
          type:
            - string
            - 'null'
          enum:
            - n8n
            - store
            - merchant
            - null
          description: >-
            An automation's read only, where its timezone came from; null for an
            import, and for an automation set up before it was kept.
        source:
          type: string
          enum:
            - n8n
            - shopify_flow
          description: >-
            Where the workflow came from, as the import's plan says it; an
            automation's canvas is always n8n's, the only kind that becomes one.
    Intent:
      type: object
      additionalProperties: false
      required:
        - source
        - platform
        - trigger
        - steps
      properties:
        source:
          type: string
          enum:
            - n8n
            - words
            - shopify_flow
        platform:
          oneOf:
            - $ref: '#/components/schemas/Platform'
            - type: 'null'
        trigger:
          $ref: '#/components/schemas/ImportTrigger'
        steps:
          type: array
          minItems: 1
          maxItems: 500
          items:
            $ref: '#/components/schemas/IntentStep'
    ImportName:
      type: string
      minLength: 1
      maxLength: 120
    ImportMatch:
      type: object
      additionalProperties: false
      required:
        - template_id
        - name
        - covered
        - total
        - not_covered
        - trigger_note
        - needs_store
      properties:
        template_id:
          $ref: '#/components/schemas/TemplateId'
        name:
          type: string
        covered:
          type: integer
          minimum: 1
        total:
          type: integer
          minimum: 1
        not_covered:
          type: array
          items:
            type: string
        trigger_note:
          oneOf:
            - type: string
            - type: 'null'
        needs_store:
          oneOf:
            - $ref: '#/components/schemas/Platform'
            - type: 'null'
    ImportPreviewStep:
      type: object
      additionalProperties: false
      required:
        - label
        - words
        - supported
        - changes_store
      properties:
        label:
          type: string
        words:
          type: string
        supported:
          type: boolean
        changes_store:
          type: boolean
    Platform:
      type: string
      pattern: ^[a-z][a-z0-9_]{1,63}$
      description: >-
        What an automation runs on: a store's platform (`shopify`,
        `bigcommerce`), or an account a template runs on, such as a cloud
        account (`aws`).
      example: shopify
    Schedule:
      type: object
      required:
        - cadence
      properties:
        cadence:
          $ref: '#/components/schemas/Cadence'
        run_at:
          type:
            - string
            - 'null'
          description: >-
            The time of day in the automation's timezone, `HH:MM`. Required for
            once, daily, weekdays, weekly and monthly.
          pattern: ^([01][0-9]|2[0-3]):[0-5][0-9]$
        day_of_week:
          type:
            - integer
            - 'null'
          minimum: 1
          maximum: 7
          description: >-
            1 is Monday. Required for weekly, and for monthly with
            `week_of_month`.
        day_of_month:
          type:
            - integer
            - 'null'
          minimum: 1
          maximum: 31
          description: >-
            For monthly, unless `week_of_month` is given. 31 runs on the last
            day of a shorter month.
        date:
          type:
            - string
            - 'null'
          pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$
          description: >-
            Required for once; the local calendar day it runs on, in the
            automation's timezone. A day and time already passed are refused.
        days:
          type:
            - array
            - 'null'
          items:
            type: integer
            minimum: 1
            maximum: 7
          minItems: 1
          maxItems: 7
          uniqueItems: true
          description: >-
            For weekdays; which days, 1 is Monday. Absent means Monday to
            Friday.
        week_of_month:
          type:
            - integer
            - 'null'
          enum:
            - 1
            - 2
            - 3
            - 4
            - -1
            - null
          description: >-
            For monthly, with `day_of_week`; the first to fourth, or -1 the
            last, such weekday of the month, instead of `day_of_month`.
    ImportPlanStep:
      type: object
      required:
        - name
        - type
        - disposition
        - reason
      properties:
        name:
          type: string
        type:
          type: string
          description: n8n's node type
          such as n8n-nodes-base.httpRequest.: null
        disposition:
          $ref: '#/components/schemas/StepDisposition'
        reason:
          type:
            - string
            - 'null'
          description: 'Plain words: what it would write to, or why it is not supported.'
        needs:
          description: >-
            What the step needs to run; null when it needs nothing or cannot
            run.
          oneOf:
            - $ref: '#/components/schemas/StepNeed'
            - type: 'null'
    CanvasNode:
      type: object
      additionalProperties: false
      description: One n8n node as the canvas draws it. Never its parameters.
      required:
        - name
        - type
        - kind
        - disposition
        - reason
        - position
        - disabled
        - outputs
        - inputs
        - subtitle
      properties:
        name:
          type: string
        type:
          type: string
          description: n8n's type, e.g. n8n-nodes-base.httpRequest.
        kind:
          type: string
          enum:
            - trigger
            - error_trigger
            - step
        disposition:
          $ref: '#/components/schemas/StepDisposition'
        reason:
          type:
            - string
            - 'null'
          description: The plan's reason, as ImportPlanStep has it.
        position:
          type: array
          minItems: 2
          maxItems: 2
          items:
            type: number
          description: n8n's own coordinates.
        disabled:
          type: boolean
        outputs:
          type: array
          maxItems: 5000
          items:
            type:
              - string
              - 'null'
          description: >-
            One entry per output, its label (a Switch's renamed output, true and
            false, Success and Error, done and loop), or null. At most 5,000: a
            count written into the export above that is cut there, and a
            connection can only use an output below it.
        inputs:
          type: integer
          minimum: 0
          maximum: 5000
          description: >-
            How many main inputs it has: 0 for a trigger, 2 or more for a Merge.
            At most 5,000, as outputs.
        subtitle:
          type:
            - string
            - 'null'
          maxLength: 60
          description: >-
            A short description of the step in Vortex IQ's words; never an
            address or a secret.
    CanvasConnection:
      type: object
      additionalProperties: false
      required:
        - from
        - output
        - to
        - input
        - type
      properties:
        from:
          type: string
        output:
          type: integer
          minimum: 0
          maximum: 4999
          description: The source output's index.
        to:
          type: string
        input:
          type: integer
          minimum: 0
          maximum: 4999
          description: >-
            The destination input's index (n8n's `index`): which input of a
            Merge it feeds.
        type:
          type: string
          description: 'n8n''s connection type: main, or a sub-node''s such as ai_tool.'
    CanvasNote:
      type: object
      additionalProperties: false
      required:
        - text
        - position
        - size
        - color
      properties:
        text:
          type: string
          maxLength: 4000
          description: >-
            The note's markdown as its author wrote it, after the import's
            secret check: a note that held a key or a private webhook reads
            [removed]. Other links and addresses stay, as text.
        position:
          type: array
          minItems: 2
          maxItems: 2
          items:
            type: number
        size:
          type: array
          minItems: 2
          maxItems: 2
          items:
            type: number
            minimum: 1
        color:
          type: integer
          minimum: 1
          maximum: 7
    ErrorResponse:
      type: object
      required:
        - success
        - message
        - contract_version
      properties:
        success:
          type: boolean
          const: false
        contract_version:
          $ref: '#/components/schemas/ContractVersion'
        message:
          type: string
          description: Plain words saying what happened and what to do.
        code:
          type: string
          description: >-
            A stable code to act on, such as `wrong_state`, `stale_version` or
            `allowance_spent`.
        errors:
          type: object
          description: Field name to messages, for 422.
          additionalProperties:
            type: array
            items:
              type: string
    ImportTrigger:
      description: >-
        When the workflow runs. A schedule is in the store's time zone; an event
        is a store event, a webhook or a form.
      oneOf:
        - type: object
          additionalProperties: false
          required:
            - kind
            - cadence
          properties:
            kind:
              type: string
              const: schedule
            cadence:
              type: string
              enum:
                - hourly
                - daily
                - weekly
                - monthly
            run_at:
              type: string
              pattern: ^([01][0-9]|2[0-3]):[0-5][0-9]$
            day:
              type: integer
              minimum: 1
              maximum: 31
              description: 'Weekly: 1 (Monday) to 7 (Sunday). Monthly: the day of the month.'
        - type: object
          additionalProperties: false
          required:
            - kind
            - event
          properties:
            kind:
              type: string
              const: event
            event:
              type: string
              minLength: 1
              maxLength: 80
        - type: object
          additionalProperties: false
          required:
            - kind
          properties:
            kind:
              type: string
              const: manual
    IntentStep:
      type: object
      additionalProperties: false
      required:
        - label
        - connector
        - resource
        - action
        - mapping
      properties:
        label:
          type: string
          minLength: 1
          maxLength: 120
        connector:
          oneOf:
            - type: string
              pattern: ^[a-z0-9_]{1,40}$
            - type: 'null'
        resource:
          $ref: '#/components/schemas/ImportResource'
        action:
          type: string
          enum:
            - read
            - change
            - notify
        channel:
          type: string
          enum:
            - email
            - slack
            - sms
            - webhook
            - other
        mapping:
          type: string
          enum:
            - exact
            - alias
            - none
          description: >-
            How the step was recognised: exact (a catalogue operation), alias
            (its connector and resource by name), none (not supported yet).
        operation_id:
          type: string
          maxLength: 120
    TemplateId:
      type: string
      description: The template's id, such as `shopify-catalogue-quality`.
      pattern: ^[a-z0-9][a-z0-9-]{1,80}$
    Cadence:
      type: string
      description: >-
        How often an automation runs. `once` runs on one date and time and then
        has no next run.
      enum:
        - manual
        - once
        - hourly
        - every_6_hours
        - daily
        - weekdays
        - weekly
        - monthly
    StepDisposition:
      type: string
      enum:
        - run
        - show
        - send
        - unsupported
      description: >-
        `run`: runs in Vortex IQ. `send`: writes through the connection bound to
        the step. `unsupported`: cannot run in this version.
    StepNeed:
      type: object
      required:
        - kind
        - target
      properties:
        kind:
          $ref: '#/components/schemas/StepNeedKind'
        target:
          oneOf:
            - $ref: '#/components/schemas/StepTarget'
            - type: 'null'
    ImportResource:
      type: string
      enum:
        - products
        - stock
        - orders
        - customers
        - fulfilments
        - store
        - content
        - other
    StepNeedKind:
      type: string
      enum:
        - store
        - google_sheets
        - teams
      description: >-
        What a step needs to run: `store`, the automation's own store, always
        there; or a Google Sheets or Microsoft Teams connection you bind.
    StepTarget:
      type: object
      additionalProperties: false
      description: >-
        Where a step's connection must lead, as far as the plan can read it from
        the step. A field the step decides only while running is null or absent.
      properties:
        spreadsheet_id:
          type:
            - string
            - 'null'
          description: The spreadsheet a Google Sheets step writes to or reads.
        sheet:
          type:
            - string
            - 'null'
          description: The tab, by its name.
  responses:
    Unauthorised:
      description: >-
        The token is missing, has expired, or is no longer valid (for example,
        the API credential was rotated or disabled). The answer carries
        `WWW-Authenticate`; log in again for a new token.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Forbidden:
      description: >-
        Your token is valid but may not do this: it lacks the scope, the
        operation is not part of the Automations API, or Automations are
        switched off for your organisation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    TooLarge:
      description: The body is over its size limit.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    ValidationFailed:
      description: The request was not valid; `errors` names the fields.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    TooManyRequests:
      description: >-
        Too many calls in a minute from you or your organisation; nothing was
        done. `Retry-After` says how many seconds to wait.
      headers:
        Retry-After:
          schema:
            type: integer
            minimum: 1
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        A bearer token from [Login](/automations/api/login), sent as
        `Authorization: Bearer <token>`. Valid for 60 minutes; it acts as the
        person named at login, within their organisation, and never approves.
        Rotating or disabling the organisation's API credential ends every token
        made with it on its next call. See
        [Authentication](/automations/api/authentication).
    apiCredential:
      type: oauth2
      description: >-
        Your organisation's API credential, exchanged at
        [Login](/automations/api/login) for the bearer token above: an OAuth 2.0
        client-credentials request, with the `username`, `email` and
        `organization_name` of the person the token acts as sent as extra
        fields, as Postman's OAuth 2.0 helper can send them. The token never
        holds `automations:approve`.
      flows:
        clientCredentials:
          tokenUrl: https://app.vortexiq.ai/v2/api/automations/login
          scopes:
            automations:read: >-
              Read automations, templates, stores, runs, the calendar, approvals
              and imports.
            automations:write: >-
              Set automations up, change, pause, resume, archive, restore and
              run them; move and skip coming runs; keep and delete imports.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.