Morning Consult · Arazzo Workflow

Morning Consult — bulk Data Bridge load

Version 1.0.0

Authenticate, resolve the data source and questions, submit an asynchronous bulk responses request, then poll it to completion for the Parquet result.

1 workflow 1 source API 1 provider
View Spec View on GitHub CompanyMarket ResearchSurvey DataConsumer IntelligenceBrand TrackingDecision IntelligencePublic OpinionAnalyticsDataArtificial IntelligenceArazzoWorkflows

Provider

morning-consult

Workflows

bulk-responses-load
Queue and poll a Data Bridge bulk responses job.
The Data Bridge bucket allows only 100 submissions per day, so batch every question you need into one request. There is no webhook — polling is the only completion signal.
5 steps inputs: aggregation, country_code, max_date, min_date, password, question_query, username outputs: request_id, result
1
authenticate
postAuthToken
2
list-data-sources
getDataSources
3
find-questions
getDataSourceQuestions
Resolve the question IDs to include in the bulk request.
4
submit-bulk
postResponsesBulk
Submit the asynchronous bulk responses request.
5
poll-bulk
getResponsesBulkStatus
Poll until the job completes and the Parquet download is available.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Morning Consult — bulk Data Bridge load
  version: 1.0.0
  description: >-
    Authenticate, resolve the data source and questions, submit an asynchronous bulk
    responses request, then poll it to completion for the Parquet result.
sourceDescriptions:
- name: morningConsult
  url: ../openapi/morning-consult-openapi-original.yml
  type: openapi
workflows:
- workflowId: bulk-responses-load
  summary: Queue and poll a Data Bridge bulk responses job.
  description: >-
    The Data Bridge bucket allows only 100 submissions per day, so batch every question
    you need into one request. There is no webhook — polling is the only completion
    signal.
  inputs:
    type: object
    required: [username, password, country_code]
    properties:
      username:
        type: string
      password:
        type: string
      country_code:
        type: string
        example: US
      question_query:
        type: string
        description: Search term used to select the questions to include.
      min_date:
        type: string
        example: '2025-01-01'
      max_date:
        type: string
        example: '2025-03-31'
      aggregation:
        type: string
        description: 'BulkAggregation: day | week | month | quarter | year (not "all").'
        example: month
  steps:
  - stepId: authenticate
    operationId: postAuthToken
    outputs:
      id_token: $response.body#/id_token
  - stepId: list-data-sources
    operationId: getDataSources
    outputs:
      data_source_id: $response.body#/data_sources/0/id
  - stepId: find-questions
    description: Resolve the question IDs to include in the bulk request.
    operationId: getDataSourceQuestions
    parameters:
    - name: data_source_id
      in: path
      value: $steps.list-data-sources.outputs.data_source_id
    - name: country_code
      in: path
      value: $inputs.country_code
    - name: query
      in: query
      value: $inputs.question_query
    - name: page_size
      in: query
      value: 100
    outputs:
      question_id: $response.body#/questions/0/id
  - stepId: submit-bulk
    description: Submit the asynchronous bulk responses request.
    operationId: postResponsesBulk
    requestBody:
      contentType: application/json
      payload:
        data_source_id: $steps.list-data-sources.outputs.data_source_id
        country: $inputs.country_code
        question_ids:
        - $steps.find-questions.outputs.question_id
        aggregation: $inputs.aggregation
        min_date: $inputs.min_date
        max_date: $inputs.max_date
    outputs:
      request_id: $response.body#/request_id
  - stepId: poll-bulk
    description: Poll until the job completes and the Parquet download is available.
    operationId: getResponsesBulkStatus
    parameters:
    - name: request_id
      in: path
      value: $steps.submit-bulk.outputs.request_id
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      status: $response.body
  outputs:
    request_id: $steps.submit-bulk.outputs.request_id
    result: $steps.poll-bulk.outputs.status