VideoAmp Data Streams API

dataStreams operations.

OpenAPI Specification

videoamp-datastreams-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: VideoAmp Public Data Streams API
  version: '2026-07-31'
  summary: Audience, planning, measurement and data-collaboration APIs for VideoAmp's cross-platform media measurement platform.
  description: 'The VideoAmp Public API powers audience building, media planning and optimization, ad and content measurement, inventory and rate cards, data streams, and cross-organization data sharing.


    **Provenance.** VideoAmp does not publish an anonymous OpenAPI document: `https://docs.videoamp.dev` redirects to Auth0 and the CLI''s `--oas` flag fetches the specification from the authenticated API. This document was derived by API Evangelist from the operation table that VideoAmp itself ships inside the official `videoamp` CLI binary (GitHub release `v0.148.32`, api_edition `2026-07-31`) — every path, method, operationId, summary, description and parameter here is reproduced verbatim from that binary''s own `--help` output. Request and response body schemas are not exposed on any anonymous surface and have deliberately been left unspecified rather than invented.


    **Not an official VideoAmp artifact.** See https://docs.videoamp.dev for the authoritative specification.'
  contact:
    name: VideoAmp Support
    email: support@videoamp.com
    url: https://help.videoamp.dev
  termsOfService: https://videoamp.com/terms-of-use/
servers:
- url: https://api.videoamp.dev
  description: Production. The VideoAmp CLI also references `staging` and `preprod` environments (api.staging.videoamp.dev, api.preprod.videoamp.dev), but neither resolves publicly (DNS NXDOMAIN as of 2026-08-02), so they are not listed as callable servers.
security:
- videoampOAuth: []
tags:
- name: dataStreams
  description: dataStreams operations.
paths:
  /v1alpha/dataStreams:
    post:
      operationId: data_stream_create
      summary: Create Data Stream
      tags:
      - dataStreams
      description: '### What


        Creates a new Data Stream resource in `DRAFT` status. The server populates `id`, `org_id`, `advertiser_name`, `status`, `created_by`, `updated_by`, `created_at`, and `updated_at`; client-supplied values for those output-only fields are ignored.


        ### Why


        Data Streams register external feeds for ingestion into VideoAmp''s measurement pipeline. The `DRAFT` state lets a user describe the stream before it is configured for delivery.


        ### When


        The first call in the intake flow — see Lifecycle below for the full sequence.


        ### How


        The caller must hold an entitlement on the supplied `advertiser_id`; otherwise the create returns 404 to avoid leaking advertiser existence. Required fields: `advertiser_id`, `name` (1-255 chars), `type`. Optional: `description` (≤ 4096 chars). `name` must be unique among the advertiser''s Data Streams; a duplicate returns 409. A stream is scoped to exactly one `advertiser_id`; advertiser names inside the delivered file are descriptive only and do not change this.


        ### Lifecycle


        Create only registers metadata — it does **not** deliver or ingest data. The stream becomes consumable after this ordered sequence, each step advancing `status` (paths relative to the stream):


        1. Create this stream (**this call**) → `DRAFT`.

        2. `PUT .../deliveryConfig` with `method: FILE_UPLOAD`.

        3. `POST .../deliveryConfig:approve` → `AWAITING_DELIVERY`.

        4. `POST .../deliveryConfig:createUploadUrl`, then `PUT` the file — or send the user to `{{.DashboardUrl}}/data/data-streams/upload/{dataStreamId}` to do it themselves.

        5. `POST .../deliveryInspections` → `AWAITING_APPROVAL`.

        6. `PUT .../schemaMapping` — bind delivered columns to canonical fields.

        7. `POST .../schemaMapping:approve` → `PROVISIONING`, then `PROVISIONED`.


        ### Related operations


        - `GET /v1alpha/dataStreams/{dataStreamId}` — retrieve a Data Stream by id.

        - `PUT /v1alpha/dataStreams/{dataStreamId}/deliveryConfig` — next step: configure how files are delivered.'
      requestBody:
        required: true
        description: JSON request body. The CLI accepts it via `--json`. The body schema is published only in the authenticated OpenAPI document served to logged-in callers (`videoamp data_stream_create --oas`) and at https://docs.videoamp.dev, both of which require an Auth0 session; it is therefore not reproduced here.
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Successful response.
        '401':
          description: Unauthorized — missing or invalid bearer token.
        '404':
          description: Not Found — the resource does not exist or is not accessible to the calling organization.
        '409':
          description: Conflict — the request conflicts with the current state of the resource.
      x-videoamp-cli-command: data_stream_create
    get:
      operationId: data_stream_list
      summary: List Data Streams
      tags:
      - dataStreams
      description: '### What


        Returns a paginated, filterable list of Data Stream resources the caller is entitled to read.


        ### Why


        Use this to power Data Stream list views, dashboards, and bulk-management workflows. Results are scoped to the caller''s accessible advertisers (across the holdco/agency/advertiser hierarchy), so the same call can be issued by a holdco-tier user (sees every reachable advertiser''s rows) or an advertiser-tier user (sees their advertiser''s rows).


        ### When


        Any time after at least one `CreateDataStream`. Empty result sets are returned as `{ "results": [], "total_size": 0 }` rather than 404 — a caller with no accessible advertisers gets an empty page, not an error.


        ### How


        Filters are AND-combined; repeated `status` and `advertiser_id` values are OR-combined within their respective fields. `name` and `advertiser_name` are case-insensitive substring matches. Pagination uses an opaque `page_token`: the response''s `next_page_token` is empty on the final page. Filter parameters must remain identical across pages of the same listing — changing any filter value requires a fresh request without `page_token`.


        ### Related operations


        - `GET /v1alpha/dataStreams/{dataStreamId}` — retrieve a single Data Stream.'
      parameters:
      - name: advertiserId
        in: query
        required: false
        schema:
          type: string
        description: Filter by advertiser UUID. Repeat to match multiple advertisers. Each value must be a UUID v4 within the caller's accessible advertiser scope; advertisers outside that scope are rejected with InvalidArgument.
      - name: advertiserName
        in: query
        required: false
        schema:
          type: string
        description: Case-insensitive substring filter on the Data Stream's denormalized 'advertiser_name'. Useful for holdco/agency callers narrowing within their access scope by advertiser display name.
      - name: ingestionStatus
        in: query
        required: false
        schema:
          type: string
        description: 'Filter by ingestion health. Repeat to match multiple values (e.g. ?ingestionStatus=HEALTHY&ingestionStatus=DEGRADED). ANDs with the `status` filter, so callers can narrow provisioned streams by ingestion outcome. When omitted, ingestion health is not filtered. - DATA_STREAM_INGESTION_STATUS_UNSPECIFIED: Default unspecified value. - NONE: No ingestion has occurred yet. Default for a newly created Data Stream. - HEALTHY: The most recent ingestion succeeded. - DEGRADED: One or more recent ingestions failed, but a prior ingestion succeeded. - FAILING: No ingestion has ever succeeded, or failures have continued for a sustained consecutive streak.'
      - name: name
        in: query
        required: false
        schema:
          type: string
        description: Case-insensitive substring filter on Data Stream 'name'. Matches anywhere in the value (no leading/trailing wildcards required).
      - name: orderBy
        in: query
        required: false
        schema:
          type: string
        description: 'Sort order applied before pagination. Format: ''<field>'' for ascending or ''<field> desc'' for descending. Supported fields: ''created_at'', ''updated_at'', ''name'', ''status''. Defaults to ''updated_at desc'' when omitted. Results carry an additional stable tiebreaker so paging is deterministic.'
      - name: pageSize
        in: query
        required: false
        schema:
          type: string
        description: Query param pageSize specifies the number of results to include in a page of results. Defaults to 50 if not specified. Maximum allowed value is 200.
      - name: pageToken
        in: query
        required: false
        schema:
          type: string
        description: Query param 'pageToken' specifies the value of the next page to retrieve within a paginated set of results. Valid values can be found in paginated responses that include field 'next_page_token'. When requesting the next page, additional query parameters should NOT change between page requests.
      - name: status
        in: query
        required: false
        schema:
          type: string
        description: 'Filter by Data Stream status. Repeat to match multiple statuses (e.g. ?status=DRAFT&status=AWAITING_DELIVERY). When omitted, Data Streams of every status are returned. - DATA_STREAM_STATUS_UNSPECIFIED: Default unspecified value. - DRAFT: Data Stream has been created but delivery configuration or file upload is not yet complete. - AWAITING_DELIVERY: Configuration is set and the Data Stream is awaiting an initial file delivery. - AWAITING_APPROVAL: First successful delivery inspection has completed; the schema mapping is awaiting approval. - PROVISIONING: Schema mapping has been approved; the Data Stream is being provisioned into downstream systems. - PROVISIONED: Ingestion pipeline has acknowledged the provisioning job — the end of the intake/ingestion path. Reached from PROVISIONING.'
      - name: type
        in: query
        required: false
        schema:
          type: string
        description: 'Filter by Data Stream type. Repeat to match multiple types. Supported values: AD_SCHEDULES. - DATA_STREAM_TYPE_UNSPECIFIED: Default unspecified value; rejected at create time. - AD_SCHEDULES: Provider-supplied planned or delivered ad schedule with flight, placement, and inventory metadata.'
      responses:
        '200':
          description: Successful response.
        '401':
          description: Unauthorized — missing or invalid bearer token.
        '404':
          description: Not Found — the resource does not exist or is not accessible to the calling organization.
      x-videoamp-cli-command: data_stream_list
  /v1alpha/dataStreams/{dataStreamId}:
    get:
      operationId: data_stream_get
      summary: Get Data Stream
      tags:
      - dataStreams
      description: '### What


        Retrieves a complete Data Stream configuration by `data_stream_id`, including metadata (`name`, `description`, `type`), lifecycle state (`status`), advertiser (`advertiser_id`, `advertiser_name`), and audit timestamps (`created_at`, `updated_at`) and audit users (`created_by`, `updated_by`).


        ### Why


        Use this to validate intake state, display details in UI, or audit configuration.


        ### When


        After `CreateDataStream` and at any point in the resource''s lifecycle.


        ### How


        Returns 404 if the Data Stream does not exist OR is outside the caller''s access scope (existence is not leaked across organizations).


        ### Related operations


        - `POST /v1alpha/dataStreams` — create a new Data Stream.'
      parameters:
      - name: dataStreamId
        in: path
        required: true
        schema:
          type: string
        description: UUID v4 of the Data Stream to retrieve. Obtained from the response of 'POST /v1alpha/dataStreams'. Returns 404 if the id does not exist OR exists outside the caller's organization/advertiser access scope (existence is not leaked across organizations).
      responses:
        '200':
          description: Successful response.
        '401':
          description: Unauthorized — missing or invalid bearer token.
        '404':
          description: Not Found — the resource does not exist or is not accessible to the calling organization.
      x-videoamp-cli-command: data_stream_get
    patch:
      operationId: data_stream_update
      summary: Update Data Stream
      tags:
      - dataStreams
      description: '### What


        Partial-merge update of a Data Stream''s editable fields: `name` and `description`. Sending an empty string is interpreted as "leave the stored value unchanged". Output-only fields (`id`, `org_id`, `advertiser_id`, `advertiser_name`, `type`, `status`, audit users + timestamps) cannot be modified through this endpoint.


        ### Why


        Lets a caller correct a Data Stream''s user-visible metadata without re-reading the full resource first. PATCH semantics keep client integrations simple and avoid clobbering fields the caller did not intend to touch.


        ### When


        Any time after `CreateDataStream`.


        ### How


        Authorization: the caller must hold `datamanagement.data_stream.write` on the row''s advertiser. Cross-advertiser writes return 404 (matching Get''s existence-protection). Renaming to a `name` already used by another Data Stream under the same advertiser returns 409.


        ### Related operations


        - `GET /v1alpha/dataStreams/{dataStreamId}` — retrieve the resulting Data Stream.'
      parameters:
      - name: dataStreamId
        in: path
        required: true
        schema:
          type: string
        description: UUID v4 of the Data Stream to update. Path parameter only — any value supplied in the body is ignored.
      requestBody:
        required: true
        description: JSON request body. The CLI accepts it via `--json`. The body schema is published only in the authenticated OpenAPI document served to logged-in callers (`videoamp data_stream_update --oas`) and at https://docs.videoamp.dev, both of which require an Auth0 session; it is therefore not reproduced here.
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Successful response.
        '401':
          description: Unauthorized — missing or invalid bearer token.
        '404':
          description: Not Found — the resource does not exist or is not accessible to the calling organization.
        '409':
          description: Conflict — the request conflicts with the current state of the resource.
      x-videoamp-cli-command: data_stream_update
  /v1alpha/dataStreams/{dataStreamId}/deliveryConfig:
    get:
      operationId: delivery_config_get
      summary: Get Delivery Config
      tags:
      - dataStreams
      description: '### What


        Retrieves the DeliveryConfig for a DataStream, including the delivery `method`, lifecycle `status`, and audit timestamps.


        ### Why


        Use this to inspect the current delivery configuration and determine whether to call `:approve` or adjust the method first.


        ### When


        After `PUT /deliveryConfig` and at any point in the resource''s lifecycle.


        ### How


        Returns 404 if the parent DataStream does not exist within the caller''s access scope, or if no DeliveryConfig has been created for it. Existence of the DataStream is not leaked across organizations.


        ### Related operations


        - `PUT /v1alpha/dataStreams/{dataStreamId}/deliveryConfig` — create or update the DeliveryConfig.

        - `POST /v1alpha/dataStreams/{dataStreamId}/deliveryConfig:approve` — approve the DeliveryConfig.'
      parameters:
      - name: dataStreamId
        in: path
        required: true
        schema:
          type: string
        description: UUID v4 of the parent DataStream. Returns 404 if the DataStream does not exist within the caller's access scope, or if no DeliveryConfig has been created for it.
      responses:
        '200':
          description: Successful response.
        '401':
          description: Unauthorized — missing or invalid bearer token.
        '404':
          description: Not Found — the resource does not exist or is not accessible to the calling organization.
      x-videoamp-cli-command: delivery_config_get
    put:
      operationId: delivery_config_update
      summary: Upsert Delivery Config
      tags:
      - dataStreams
      description: '### What


        Creates or replaces the DeliveryConfig for a DataStream. Idempotent for `DRAFT` configs: a second PUT with the same method is a no-op; a PUT with a different method updates it. Output-only fields (`id`, `data_stream_id`, `status`) supplied in the body are ignored.


        ### Why


        Lets a caller configure or reconfigure the delivery method before committing to delivery. Separating configuration (this endpoint) from commitment (`:approve`) means a user can change their mind without reprovisioning infrastructure.


        ### When


        After `CreateDataStream`. The DeliveryConfig need not exist yet — this call creates it if absent. Returns 400 if a DeliveryConfig exists and its `status` is `APPROVED`.


        ### How


        The caller must have write access on the parent DataStream''s advertiser. The parent DataStream must exist within the caller''s access scope; otherwise 404 is returned. The only required field is `method`; unsupported values return 400.


        ### Related operations


        - `GET /v1alpha/dataStreams/{dataStreamId}/deliveryConfig` — retrieve the current DeliveryConfig.

        - `POST /v1alpha/dataStreams/{dataStreamId}/deliveryConfig:approve` — lock the method and provision delivery infrastructure.'
      parameters:
      - name: dataStreamId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        description: JSON request body. The CLI accepts it via `--json`. The body schema is published only in the authenticated OpenAPI document served to logged-in callers (`videoamp delivery_config_update --oas`) and at https://docs.videoamp.dev, both of which require an Auth0 session; it is therefore not reproduced here.
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Successful response.
        '400':
          description: Bad Request — invalid or unsupported parameter values.
        '401':
          description: Unauthorized — missing or invalid bearer token.
        '404':
          description: Not Found — the resource does not exist or is not accessible to the calling organization.
      x-videoamp-cli-command: delivery_config_update
  /v1alpha/dataStreams/{dataStreamId}/deliveryConfig:approve:
    post:
      operationId: delivery_config_approve
      summary: Approve Delivery Config
      tags:
      - dataStreams
      description: '### What


        Commits the delivery configuration: locks the delivery method, provisions S3 infrastructure for the DataStream, runs S3 access probes, and advances the parent DataStream status to `AWAITING_DELIVERY`. Returns the updated DeliveryConfig with `status: APPROVED`.


        ### Why


        Separating configuration (PUT) from commitment (this action) lets callers change the delivery method freely before locking in. Once approved, the DataStream is ready to receive data.


        ### When


        After `PUT /deliveryConfig` has set the desired method and the caller is ready to begin delivery. The DeliveryConfig must be in `DRAFT`; returns 400 if already `APPROVED`.


        ### How


        The caller must have write access on the parent DataStream''s advertiser. On success the DeliveryConfig transitions to `APPROVED` and the parent DataStream transitions to `AWAITING_DELIVERY`. S3 infrastructure provisioning and probe failures are returned as 500; contact VideoAmp Support if this occurs.


        ### Related operations


        - `PUT /v1alpha/dataStreams/{dataStreamId}/deliveryConfig` — configure the delivery method before approving.

        - `POST /v1alpha/dataStreams/{dataStreamId}/deliveryConfig:confirmAccess` — run a read-only connectivity diagnostic.

        - `POST /v1alpha/dataStreams/{dataStreamId}/deliveryConfig:createUploadUrl` — obtain a pre-signed upload URL after approval.'
      parameters:
      - name: dataStreamId
        in: path
        required: true
        schema:
          type: string
        description: UUID v4 of the parent DataStream. Returns 404 if the DataStream or its DeliveryConfig does not exist within the caller's access scope. Returns 400 if the DeliveryConfig is already APPROVED.
      requestBody:
        required: true
        description: JSON request body. The CLI accepts it via `--json`. The body schema is published only in the authenticated OpenAPI document served to logged-in callers (`videoamp delivery_config_approve --oas`) and at https://docs.videoamp.dev, both of which require an Auth0 session; it is therefore not reproduced here.
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Successful response.
        '400':
          description: Bad Request — invalid or unsupported parameter values.
        '401':
          description: Unauthorized — missing or invalid bearer token.
        '500':
          description: Internal Server Error.
      x-videoamp-cli-command: delivery_config_approve
  /v1alpha/dataStreams/{dataStreamId}/deliveryConfig:confirmAccess:
    post:
      operationId: delivery_config_access_confirm
      summary: Confirm Delivery Config Access
      tags:
      - dataStreams
      description: '### What


        Runs a read-only connectivity diagnostic against the DataStream''s delivery destination. No state is changed. Returns `accessible: true` when probes pass and `accessible: false` with a diagnostic `message` when they fail.


        ### Why


        Provides a connectivity check that can be run at any point the config has sufficient information to probe — optionally before `:approve` or as a post-approve re-diagnostic when delivery problems are suspected.


        ### When


        Whenever the DeliveryConfig has sufficient configuration to identify the delivery destination. Returns `400 FailedPrecondition` if the config does not yet have enough information to perform a connectivity check. Connectivity failures are reflected in the response payload (`accessible: false`), not as error status codes.


        ### How


        The caller must have read access on the parent DataStream''s advertiser. Connectivity failures are reflected in the response payload (`accessible: false`) rather than error status codes — the request itself succeeded even when the destination is unreachable.


        ### Related operations


        - `POST /v1alpha/dataStreams/{dataStreamId}/deliveryConfig:approve` — the state-changing commitment that also validates connectivity as part of approval.'
      parameters:
      - name: dataStreamId
        in: path
        required: true
        schema:
          type: string
        description: UUID v4 of the parent DataStream. Returns 404 if the DataStream or its DeliveryConfig does not exist within the caller's access scope.
      requestBody:
        required: true
        description: JSON request body. The CLI accepts it via `--json`. The body schema is published only in the authenticated OpenAPI document served to logged-in callers (`videoamp delivery_config_access_confirm --oas`) and at https://docs.videoamp.dev, both of which require an Auth0 session; it is therefore not reproduced here.
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Successful response.
        '400':
          description: Bad Request — invalid or unsupported parameter values.
        '401':
          description: Unauthorized — missing or invalid bearer token.
      x-videoamp-cli-command: delivery_config_access_confirm
  /v1alpha/dataStreams/{dataStreamId}/deliveryConfig:createUploadUrl:
    post:
      operationId: delivery_config_upload_url_create
      summary: Create Upload URL
      tags:
      - dataStreams
      description: '### What


        Generates a time-limited upload URL for delivering a data file to the DataStream''s delivery destination. Returns the URL and its expiration timestamp. Each call generates a new URL; previous URLs are not invalidated.


        ### Why


        The upload URL allows the caller to deliver files directly to the delivery destination without routing data through the API server, supporting large file transfers efficiently.


        ### When


        After `:approve` has succeeded (DeliveryConfig `status` must be `APPROVED`). Returns 400 if the DeliveryConfig is still `DRAFT`. Obtain a fresh URL for each file upload — do not cache or reuse URLs.


        ### How


        The caller must have write access on the parent DataStream''s advertiser. Supply the original `filename` of the file being uploaded — it identifies the file at the delivery destination. The returned `upload_url` accepts a single HTTP PUT with the raw file bytes as the request body. The URL expires at `expires_at`; requests after that time will be rejected. Uploading with the same `filename` twice overwrites the previous file; use distinct filenames to retain multiple uploads.


        ### For coding agents


        If the caller can''t perform the PUT itself, send the user to `{{.DashboardUrl}}/data/data-streams/upload/{dataStreamId}` instead — a VideoAmp-hosted page where they pick and upload the file directly, no API calls required on their end (they must already be a VideoAmp user; an unauthenticated visit prompts a normal login first). That page only performs the upload — poll `GET .../deliveryConfig:listUploadedFiles` afterward and call `POST .../deliveryInspections` yourself once the file lands.


        ### Related operations


        - `POST /v1alpha/dataStreams/{dataStreamId}/deliveryConfig:approve` — required before this endpoint can be called.

        - `POST /v1alpha/dataStreams/{dataStreamId}/deliveryInspections` — next step: after the file is uploaded, inspect the delivered file(s).'
      parameters:
      - name: dataStreamId
        in: path
        required: true
        schema:
          type: string
        description: UUID v4 of the parent DataStream. Returns 404 if the DataStream or its DeliveryConfig does not exist within the caller's access scope. Returns 400 if the DeliveryConfig is not yet APPROVED.
      requestBody:
        required: true
        description: JSON request body. The CLI accepts it via `--json`. The body schema is published only in the authenticated OpenAPI document served to logged-in callers (`videoamp delivery_config_upload_url_create --oas`) and at https://docs.videoamp.dev, both of which require an Auth0 session; it is therefore not reproduced here.
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Successful response.
        '400':
          description: Bad Request — invalid or unsupported parameter values.
        '401':
          description: Unauthorized — missing or invalid bearer token.
      x-videoamp-cli-command: delivery_config_upload_url_create
  /v1alpha/dataStreams/{dataStreamId}/deliveryConfig:deleteUploadedFile:
    post:
      operationId: delivery_config_file_delete
      summary: Delete Uploaded File
      tags:
      - dataStreams
      description: '### What


        Removes a previously uploaded file from the DataStream''s delivery bucket. Returns 204 on success.


        ### Why


        Allows a caller to remove an incorrect or superseded file before triggering inspection, avoiding a failed inspection run.


        ### When


        While the parent DataStream is in `AWAITING_DELIVERY`. Returns 400 if the DeliveryConfig is not `APPROVED`, or if the DataStream is not in `AWAITING_DELIVERY`. Returns 404 if the specified file does not exist in the bucket.


        ### How


        The caller must have write access on the parent DataStream''s advertiser. Supply the exact filename used at upload time. After deletion the file is permanently removed; obtain a new upload URL via `:createUploadUrl` to re-upload.


        ### Related operations


        - `POST /v1alpha/dataStreams/{dataStreamId}/deliveryConfig:createUploadUrl` — obtain a new upload URL after deleting a file.

        - `GET /v1alpha/dataStreams/{dataStreamId}/deliveryConfig:listUploadedFiles` — list files currently in the bucket.'
      parameters:
      - name: dataStreamId
        in: path
        required: true
        schema:
          type: string
        description: UUID v4 of the parent DataStream. Returns 404 if the DataStream or its DeliveryConfig does not exist within the caller's access scope.
      requestBody:
        required: true
        description: JSON request body. The CLI accepts it via `--json`. The body schema is published only in the authenticated OpenAPI document served to logged-in callers (`videoamp delivery_config_file_delete --oas`) and at https://docs.videoamp.dev, both of which require an Auth0 session; it is therefore not reproduced here.
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Successful response.
        '400':
          description: Bad Request — invalid or unsupported parameter values.
        '401':
          description: Unauthorized — missing or invalid bearer token.
        '404':
          description: Not Found — the resource does not exist or is not accessible to the calling organization.
      x-videoamp-cli-command: delivery_config_file_delete
  /v1alpha/dataStreams/{dataStreamId}/deliveryConfig:listUploadedFiles:
    get:
      operationId: delivery_config_uploaded_files_get
      summary: List Uploaded Files
      tags:
      - dataStreams
      description: '### What


        Returns metadata for all files currently in the DataStream''s delivery bucket. Returns an empty list if no files have been uploaded.


        ### Why


        Allows a caller to verify which files are present before triggering inspection, and to surface existing files when returning to the delivery step.


        ### When


        After `:approve` has succeeded (DeliveryConfig `status` must be `APPROVED`). Returns 400 if the DeliveryConfig is still `DRAFT`.


        ### How


        The caller must have read access on the parent DataStream''s advertiser. Files are returned in undefined order; there is no pagination in this endpoint.


        ### Related operations


        - `POST /v1alpha/dataStreams/{dataStreamId}/deliveryConfig:createUploadUrl` — upload a new file.

        - `POST /v1alpha/dataStreams/{dataStreamId}/deliveryConfig:deleteUploadedFile` — remove a specific file.'
      parameters:
      - name: dataStreamId
        in: path
        required: true
        schema:
          type: string
        description: UUID v4 of the parent DataStream. Returns 404 if the DataStream or its DeliveryConfig does not exist within the caller's access scope. Returns 400 if the DeliveryConfig is not yet APPROVED.
      responses:
        '200':
          description: Successful response.
        '400':
          description: Bad Request — invalid or unsupported parameter values.
        '401':
          description: Unauthorized — missing or invalid bearer token.
      x-videoamp-cli-command: delivery_config_uploaded_files_get
  /v1alpha/dataStreams/{dataStreamId}/deliveryInspections:
    post:
      operationId: delivery_inspection_create
      summary: Create Delivery Inspection
      tags:
      - dataStreams
      description: '### What


        Triggers a delivery inspection for the DataStream. All files at the DataStream''s delivery prefix are listed and inspected synchronously. Returns `200` with the full `DeliveryInspection` result — the same shape as `GetDeliveryInspe

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