Amigo Intake API

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

OpenAPI Specification

amigo-intake-api-openapi.yml Raw ↑
openapi: 3.1.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:
    DriveFolderMapping:
      properties:
        folder_id:
          type: string
          maxLength: 256
          minLength: 1
          pattern: ^[A-Za-z0-9_-]+$
          title: Folder Id
        dataset:
          type: string
          maxLength: 63
          minLength: 2
          pattern: ^[a-z0-9][a-z0-9_-]*[a-z0-9]$
          title: Dataset
      type: object
      required:
      - folder_id
      - dataset
      title: DriveFolderMapping
      description: 'One Google Drive folder ↔ one intake dataset.


        ``folder_id`` is the Drive folder id (the identity — never the folder name,

        which can be renamed/moved). One folder maps to exactly one dataset.'
    MaterializeRequest:
      properties:
        dataset:
          anyOf:
          - $ref: '#/components/schemas/_DatasetSlug'
          - type: 'null'
      type: object
      title: MaterializeRequest
    DocumentProcessingSpec:
      properties:
        retain_source:
          type: boolean
          title: Retain Source
          default: true
        extraction_mode:
          type: string
          enum:
          - text_extract
          - OCR
          - hybrid
          title: Extraction Mode
          default: text_extract
      type: object
      title: DocumentProcessingSpec
      description: 'Processing config for a document dataset (``ingestion_mode=document``).


        Documents have no schema/primary-key/CDC; this is what the contract carries

        instead (docs/plans/intake_file_processing_pipeline.md §5.9). Page-split /

        output-metadata rules are stored in the same jsonb and may be added later

        without a migration.'
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    IntakeLinkResponse:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        workspace_id:
          type: string
          format: uuid
          title: Workspace Id
        customer_slug:
          $ref: '#/components/schemas/SlugString'
        display_name:
          anyOf:
          - $ref: '#/components/schemas/DescriptionString'
          - type: 'null'
        upload_url:
          type: string
          maxLength: 512
          title: Upload Url
        link_token:
          type: string
          maxLength: 128
          minLength: 32
     

# --- 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