Amigo Intake API

The Intake API from Amigo — 20 operation(s) for intake.

Operations 23

POST /v1/{workspace_id}/intake/files/external Receive Intake File #
GET /v1/{workspace_id}/intake/files List Intake Files #
POST /v1/{workspace_id}/intake/files Upload Intake File #
GET /v1/{workspace_id}/intake/files/{file_id}/download Download Intake File #
GET /v1/{workspace_id}/intake/datasets List Intake Datasets #
POST /v1/{workspace_id}/intake/sources Register Intake Source #
GET /v1/{workspace_id}/intake/sources List Intake Sources #
POST /v1/{workspace_id}/intake/sources/{source_id}/sync Sync Intake Source #
POST /v1/{workspace_id}/intake/schema/register Register Intake Schema #
GET /v1/{workspace_id}/intake/batches List Intake Batches #
GET /v1/{workspace_id}/intake/batches/{batch_id} Get Intake Batch #
GET /v1/{workspace_id}/intake/batches/{batch_id}/processing-manifest Get Batch Processing Manifest #
POST /v1/{workspace_id}/intake/batches/{batch_id}/process Process Intake Batch #
POST /v1/{workspace_id}/intake/materialize Materialize Intake #
POST /v1/{workspace_id}/intake/datasets/{dataset}/update Update Intake Dataset #
GET /v1/{workspace_id}/intake/update-runs/{run_id} Get Intake Update Run #
GET /v1/{workspace_id}/intake/materializations List Intake Materializations #
POST /v1/{workspace_id}/intake/files/{file_id}/status Write Back Intake File Status #
GET /v1/{workspace_id}/intake/links/{link_id}/uploads/{upload_id}/download Download an uploaded file #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/amigo-intake-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

amigo-intake-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Amigo Account Intake API
  version: 0.1.0
servers:
- url: https://api.amigo.ai
- url: https://internal-api.amigo.ai
- url: https://api-eu-central-1.amigo.ai
- url: https://api-ap-southeast-2.amigo.ai
- url: https://api-ca-central-1.amigo.ai
security:
- Bearer-Authorization: []
  Bearer-Authorization-Organization: []
  Basic: []
tags:
- name: Intake
paths:
  /v1/{workspace_id}/intake/files/external:
    post:
      tags:
      - Intake
      summary: Receive Intake File
      operationId: receive_intake_file_v1__workspace_id__intake_files_external_post
      parameters:
      - name: workspace_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Workspace Id
      - name: x-amigo-intake-sha256
        in: header
        required: true
        schema:
          type: string
          maxLength: 64
          title: X-Amigo-Intake-Sha256
      - name: x-amigo-intake-timestamp
        in: header
        required: true
        schema:
          type: string
          maxLength: 20
          title: X-Amigo-Intake-Timestamp
      - name: x-amigo-intake-signature
        in: header
        required: true
        schema:
          type: string
          maxLength: 512
          title: X-Amigo-Intake-Signature
      - name: x-amigo-intake-customer-slug
        in: header
        required: true
        schema:
          type: string
          maxLength: 63
          title: X-Amigo-Intake-Customer-Slug
      - name: x-amigo-intake-filename
        in: header
        required: true
        schema:
          type: string
          maxLength: 256
          title: X-Amigo-Intake-Filename
      - name: x-amigo-intake-content-type
        in: header
        required: false
        schema:
          type: string
          maxLength: 128
          default: application/octet-stream
          title: X-Amigo-Intake-Content-Type
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntakeFileResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/{workspace_id}/intake/files:
    get:
      tags:
      - Intake
      summary: List Intake Files
      operationId: list_intake_files_v1__workspace_id__intake_files_get
      parameters:
      - name: workspace_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Workspace Id
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 200
          minimum: 1
          default: 50
          title: Limit
      - name: continuation_token
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          default: 0
          title: Continuation Token
      - name: sort_by
        in: query
        required: false
        schema:
          type: string
          maxLength: 64
          default: -ingested_at
          title: Sort By
      - name: status
        in: query
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/_FileStatus'
          - type: 'null'
          title: Status
      - name: search
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 200
          - type: 'null'
          title: Search
      - name: include_withdrawn
        in: query
        required: false
        schema:
          type: boolean
          default: false
          title: Include Withdrawn
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_IntakeFileRow_'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    post:
      tags:
      - Intake
      summary: Upload Intake File
      operationId: upload_intake_file_v1__workspace_id__intake_files_post
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Body_upload_intake_file_v1__workspace_id__intake_files_post'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntakeFileRow'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      parameters:
      - name: workspace_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Workspace Id
  /v1/{workspace_id}/intake/files/{file_id}/download:
    get:
      tags:
      - Intake
      summary: Download Intake File
      operationId: download_intake_file_v1__workspace_id__intake_files__file_id__download_get
      parameters:
      - name: workspace_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Workspace Id
      - name: file_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: File Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/{workspace_id}/intake/datasets:
    get:
      tags:
      - Intake
      summary: List Intake Datasets
      operationId: list_intake_datasets_v1__workspace_id__intake_datasets_get
      parameters:
      - name: workspace_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Workspace Id
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 200
          minimum: 1
          default: 50
          title: Limit
      - name: continuation_token
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          default: 0
          title: Continuation Token
      - name: sort_by
        in: query
        required: false
        schema:
          type: string
          maxLength: 64
          default: name
          title: Sort By
      - name: search
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 200
          - type: 'null'
          title: Search
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_DatasetRow_'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/{workspace_id}/intake/sources:
    post:
      tags:
      - Intake
      summary: Register Intake Source
      operationId: register_intake_source_v1__workspace_id__intake_sources_post
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterSourceRequest'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntakeSourceRow'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      parameters:
      - name: workspace_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Workspace Id
    get:
      tags:
      - Intake
      summary: List Intake Sources
      operationId: list_intake_sources_v1__workspace_id__intake_sources_get
      parameters:
      - name: workspace_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Workspace Id
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 200
          minimum: 1
          default: 50
          title: Limit
      - name: continuation_token
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          default: 0
          title: Continuation Token
      - name: sort_by
        in: query
        required: false
        schema:
          type: string
          maxLength: 64
          default: -created_ts
          title: Sort By
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_IntakeSourceRow_'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/{workspace_id}/intake/sources/{source_id}/sync:
    post:
      tags:
      - Intake
      summary: Sync Intake Source
      operationId: sync_intake_source_v1__workspace_id__intake_sources__source_id__sync_post
      parameters:
      - name: workspace_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Workspace Id
      - name: source_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Source Id
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SourceSyncResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/{workspace_id}/intake/schema/register:
    post:
      tags:
      - Intake
      summary: Register Intake Schema
      operationId: register_intake_schema_v1__workspace_id__intake_schema_register_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterSchemaRequest'
        required: true
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatasetRow'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      parameters:
      - name: workspace_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Workspace Id
  /v1/{workspace_id}/intake/batches:
    get:
      tags:
      - Intake
      summary: List Intake Batches
      operationId: list_intake_batches_v1__workspace_id__intake_batches_get
      parameters:
      - name: workspace_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Workspace Id
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 200
          minimum: 1
          default: 50
          title: Limit
      - name: continuation_token
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          default: 0
          title: Continuation Token
      - name: sort_by
        in: query
        required: false
        schema:
          type: string
          maxLength: 64
          default: -created_ts
          title: Sort By
      - name: source_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Source Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_BatchRow_'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/{workspace_id}/intake/batches/{batch_id}:
    get:
      tags:
      - Intake
      summary: Get Intake Batch
      operationId: get_intake_batch_v1__workspace_id__intake_batches__batch_id__get
      parameters:
      - name: workspace_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Workspace Id
      - name: batch_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Batch Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchDetail'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/{workspace_id}/intake/batches/{batch_id}/processing-manifest:
    get:
      tags:
      - Intake
      summary: Get Batch Processing Manifest
      description: 'The per-file params the batch-extract job needs to process every still-

        ``received`` file in one run. Same workspace-scoped auth as the write-back

        (the job holds the batch''s agent-session token). Documents only — snapshot/CSV

        batches process in version order via the chained per-file path, not here.'
      operationId: get_batch_processing_manifest_v1__workspace_id__intake_batches__batch_id__processing_manifest_get
      parameters:
      - name: workspace_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Workspace Id
      - name: batch_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Batch Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchProcessingManifest'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/{workspace_id}/intake/batches/{batch_id}/process:
    post:
      tags:
      - Intake
      summary: Process Intake Batch
      operationId: process_intake_batch_v1__workspace_id__intake_batches__batch_id__process_post
      parameters:
      - name: workspace_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Workspace Id
      - name: batch_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Batch Id
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchRow'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/{workspace_id}/intake/materialize:
    post:
      tags:
      - Intake
      summary: Materialize Intake
      description: 'Trigger the intake → customer-data materializer for this workspace.


        Fires the materializer Databricks job (run-now); it rescans the workspace''s

        curated intake files and (re)materializes each snapshot dataset into

        ``customer_data_<env>.<workspace_id>.<dataset>``. Every write is an idempotent

        keyed MERGE / full overwrite, so a re-click is safe. Optionally scope to one

        ``dataset``; omit for all curated snapshot datasets. Returns ``202`` with the

        job ``run_id`` (``null`` when the job is not configured in this environment).

        Same auth gate as ``POST /batches/{batch_id}/process``.'
      operationId: materialize_intake_v1__workspace_id__intake_materialize_post
      requestBody:
        content:
          application/json:
            schema:
              anyOf:
              - $ref: '#/components/schemas/MaterializeRequest'
              - type: 'null'
              title: Body
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MaterializeResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      parameters:
      - name: workspace_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Workspace Id
  /v1/{workspace_id}/intake/datasets/{dataset}/update:
    post:
      tags:
      - Intake
      summary: Update Intake Dataset
      description: 'Run the customer-facing dataset update flow.


        This is the one-click orchestration path for the console: check mapped Drive

        folders, prepare any newly landed files, and publish immediately when no

        preparation is needed. If preparation is async, the run remains durable and

        is advanced by file write-backs or by refresh.'
      operationId: update_intake_dataset_v1__workspace_id__intake_datasets__dataset__update_post
      parameters:
      - name: workspace_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Workspace Id
      - name: dataset
        in: path
        required: true
        schema:
          type: string
          minLength: 2
          maxLength: 63
          pattern: ^[a-z0-9][a-z0-9_-]*[a-z0-9]$
          title: Dataset
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatasetUpdateRunResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/{workspace_id}/intake/update-runs/{run_id}:
    get:
      tags:
      - Intake
      summary: Get Intake Update Run
      operationId: get_intake_update_run_v1__workspace_id__intake_update_runs__run_id__get
      parameters:
      - name: workspace_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Workspace Id
      - name: run_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Run Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatasetUpdateRunResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/{workspace_id}/intake/materializations:
    get:
      tags:
      - Intake
      summary: List Intake Materializations
      description: 'Per-dataset materialization status for the workspace''s Destinations tab.


        Lists each registered dataset alongside its customer-data destination table''s

        status — ``materialized`` (with row count + last-write time) or

        ``not_materialized`` (no table yet). The dataset list + pagination mirror

        ``GET /datasets`` (the contracts registry); the destination status is read

        from the ``customer_data_<env>`` catalog via the SQL warehouse. Member read.'
      operationId: list_intake_materializations_v1__workspace_id__intake_materializations_get
      parameters:
      - name: workspace_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Workspace Id
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 200
          minimum: 1
          default: 50
          title: Limit
      - name: continuation_token
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          default: 0
          title: Continuation Token
      - name: sort_by
        in: query
        required: false
        schema:
          type: string
          maxLength: 64
          default: name
          title: Sort By
      - name: search
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 200
          - type: 'null'
          title: Search
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_MaterializationRow_'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/{workspace_id}/intake/files/{file_id}/status:
    post:
      tags:
      - Intake
      summary: Write Back Intake File Status
      description: 'Advance a file''s status from the async CDC/extraction job (P4).


        The job authenticates with the workspace''s API key (Bearer) — the same

        Databricks→platform-api path launch_dpc uses — so RLS scopes the update to

        that workspace. Moves the row to its terminal verdict and records the

        curated/cdc paths. For a batch-sourced file, advances its batch (chain the

        next snapshot version + roll up) once the verdict is terminal.'
      operationId: write_back_intake_file_status_v1__workspace_id__intake_files__file_id__status_post
      parameters:
      - name: workspace_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Workspace Id
      - name: file_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: File Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StatusWriteBackRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntakeFileRow'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/{workspace_id}/intake/links:
    post:
      tags:
      - Intake
      summary: Generate upload link
      description: Create a shareable upload link for a customer.
      operationId: create-intake-link
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateLinkRequest'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntakeLinkResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      parameters:
      - name: workspace_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Workspace Id
    get:
      tags:
      - Intake
      summary: List upload links
      operationId: list-intake-links
      parameters:
      - name: workspace_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Workspace Id
      - name: include_expired
        in: query
        required: false
        schema:
          type: boolean
          default: false
          title: Include Expired
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 500
          minimum: 1
          default: 100
          title: Limit
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          default: 0
          title: Offset
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/IntakeLinkResponse'
                title: Response List-Intake-Links
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/{workspace_id}/intake/links/{link_id}:
    delete:
      tags:
      - Intake
      summary: Revoke upload link
      operationId: revoke-intake-link
      parameters:
      - name: workspace_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Workspace Id
      - name: link_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Link Id
      responses:
        '204':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/{workspace_id}/intake/links/{link_id}/uploads:
    get:
      tags:
      - Intake
      summary: List uploads for a link
      operationId: list-intake-link-uploads
      parameters:
      - name: workspace_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Workspace Id
      - name: link_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Link Id
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 500
          minimum: 1
          default: 200
          title: Limit
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          default: 0
          title: Offset
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/IntakeUploadResponse'
                title: Response List-Intake-Link-Uploads
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/{workspace_id}/intake/links/{link_id}/uploads/{upload_id}/download:
    get:
      tags:
      - Intake
      summary: Download an uploaded file
      description: Proxy the raw file bytes from the UC Volume back to the caller.
      operationId: download-intake-upload
      parameters:
      - name: workspace_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Workspace Id
      - name: link_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Link Id
      - name: upload_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Upload Id
      responses:
        '200':
          description: 'File bytes with Content-Disposition: attachment'
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          description: Link, upload, or file not found
        '502':
          description: UC Volume storage backend unavailable
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    PaginatedResponse_IntakeFileRow_:
      properties:
        items:
          items:
            $ref: '#/components/schemas/IntakeFileRow'
          type: array
          title: Items
        has_more:
          type: boolean
          title: Has More
        continuation_token:
          anyOf:
          - type: integer
          - type: 'null'
          title: Continuation Token
        total:
          anyOf:
          - type: integer
          - type: 'null'
          title: Total
      type: object
      required:
      - items
      - has_more
      title: PaginatedResponse[IntakeFileRow]
    BatchProcessingManifest:
      properties:
        document_processing:
          additionalProperties: true
          type: object
          title: Document Processing
        files:
          items:
            $ref: '#/components/schemas/FileEntry'
          type: array
          title: Files
      type: object
      required:
      - document_processing
      - files
      title: BatchProcessingManifest
      description: 'Per-file extraction params for a document batch''s still-``received`` files —

        consumed by the batch-extract job, which runs ONCE per batch and extracts

        every file (instead of one run-now per file, which blows the request/gateway

        timeout for large batches). Authenticated by the same short-lived

        workspace-scoped token as the status write-back. ``document_processing`` is

        dataset-wide (the contract); ``file_type`` is per-file (V265 multi-type).

        Filenames are deliberately absent — PHI stays on the Lakebase row.'
    PaginatedResponse_IntakeSourceRow_:
      properties:
        items:
          items:
            $ref: '#/components/schemas/IntakeSourceRow'
          type: array
          title: Items
        has_more:
          type: boolean
          title: Has More
        continuation_token:
          anyOf:
          - type: integer
          - type: 'null'
          title: Continuation Token
        total:
          anyOf:
          - type: integer
          - type: 'null'
          title: Total
      type: object
      required:
      - items
      - has_more
      title: PaginatedResponse[IntakeSourceRow]
    StatusWriteBackRequest:
      properties:
        status:
          $ref: '#/components/schemas/_FileStatus'
        error_reason:
          anyOf:
          - type: string
            maxLength: 2000
          - type: 'null'
          title: Error Reason
        curated_path:
          anyOf:
          - $ref: '#/components/schemas/_VolumePath'
          - type: 'null'
        cdc_path:
          anyOf:
          - $ref: '#/components/schemas/_VolumePath'
          - type: 'null'
      type: object
      required:
      - status
      title: StatusWriteBac

# --- truncated at 32 KB (58 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/amigo/refs/heads/main/openapi/amigo-intake-api-openapi.yml