{
  "swagger": "2.0",
  "info": {
    "title": "Ingest job service",
    "version": "0.1507.0",
    "description": "Send your API key as a bearer token: `Authorization: Bearer <api key>`."
  },
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "securityDefinitions": {
    "ApiKey": {
      "type": "apiKey",
      "in": "header",
      "name": "Authorization",
      "description": "Your API key as a bearer token: `Authorization: Bearer <api key>`."
    }
  },
  "security": [
    {
      "ApiKey": []
    }
  ],
  "paths": {
    "/ingest/v1/ingest-job/{ingestJobRid}": {
      "get": {
        "operationId": "IngestJobService_getIngestJob",
        "summary": "Get ingest job",
        "tags": [
          "Ingest Job Service"
        ],
        "description": "Returns a single ingest job by RID. Does not include the full ingest request details.",
        "parameters": [
          {
            "name": "ingestJobRid",
            "in": "path",
            "type": "string",
            "format": "rid",
            "x-alias": "IngestJobRid",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/IngestJob"
            },
            "x-example": {
              "ingestJobRid": "<ingest job rid>",
              "status": "SUBMITTED",
              "originFiles": [
                "<origin files>"
              ],
              "createdBy": "<created by>",
              "createdByRid": "<user rid>",
              "orgUuid": "<org uuid>",
              "ingestType": "TABULAR",
              "datasetRid": "<dataset rid>",
              "createdAt": "2026-01-01T00:00:00Z",
              "startTime": "2026-01-01T00:00:00Z",
              "endTime": "2026-01-01T00:00:00Z",
              "producedFileCount": 1
            }
          }
        }
      }
    },
    "/ingest/v1/ingest-transform/{ingestTransformRid}": {
      "get": {
        "operationId": "IngestJobService_getIngestTransform",
        "summary": "Get ingest transform",
        "tags": [
          "Ingest Job Service"
        ],
        "description": "Returns a single ingest transform by RID. The caller must be authorized to read the dataset produced by the transform's parent ingest job; a transform whose parent job is not visible to the caller is reported as IngestTransformNotFound rather than leaking its existence.",
        "parameters": [
          {
            "name": "ingestTransformRid",
            "in": "path",
            "type": "string",
            "format": "rid",
            "x-alias": "IngestTransformRid",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/IngestTransform"
            },
            "x-example": {
              "ingestTransformRid": "<ingest transform rid>",
              "ingestJobRid": "<ingest job rid>",
              "transformType": "CONTAINERIZED",
              "status": "QUEUED",
              "createdAt": "2026-01-01T00:00:00Z",
              "updatedAt": "2026-01-01T00:00:00Z",
              "errorMessage": "<error message>",
              "finishedAt": "2026-01-01T00:00:00Z",
              "extractorRid": "<containerized extractor rid>",
              "sourcePaths": [
                "<source paths>"
              ]
            }
          }
        }
      }
    },
    "/ingest/v1/ingest-transform/{ingestTransformRid}/origin-uris": {
      "get": {
        "operationId": "IngestJobService_getIngestTransformOriginFileUris",
        "summary": "Get ingest transform origin file uris",
        "tags": [
          "Ingest Job Service"
        ],
        "description": "Returns pre-signed download URIs for a transform's input file(s), keyed on the transform rather than on a produced dataset file, so the inputs of a transform that produced no file — one that is still running, or that failed — remain downloadable. Counterpart to the catalog's getOriginFileUris, which requires a dataset file to key on.\n\nThe caller must be authorized to read data on the parent ingest job's dataset; a transform whose parent job is not visible to the caller is reported as IngestTransformNotFound.\n\nOnly inputs residing in object storage this deployment can sign for are returned, so the result may be shorter than `sourcePaths` on the same transform: an input still awaiting its copy into the uploads bucket (a GCS object, a caller-supplied presigned URL, or a File Store revision) has no signable location yet and is omitted. An unrecognized stored payload yields an empty list.",
        "parameters": [
          {
            "name": "ingestTransformRid",
            "in": "path",
            "type": "string",
            "format": "rid",
            "x-alias": "IngestTransformRid",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/OriginFileUri"
              }
            },
            "x-example": [
              {
                "uri": "<uri>",
                "path": "<path>"
              }
            ]
          }
        }
      }
    },
    "/ingest/v1/ingest-transforms/search": {
      "post": {
        "operationId": "IngestJobService_searchIngestTransforms",
        "summary": "Search ingest transforms",
        "tags": [
          "Ingest Job Service"
        ],
        "description": "Returns a paginated list of the transforms belonging to a single ingest job, oldest-first and optionally filtered by status. The caller must be authorized to read the parent job's dataset; a job that is not visible to the caller is reported as IngestJobNotFound.",
        "parameters": [
          {
            "name": "request",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/SearchIngestTransformsRequest"
            },
            "required": true,
            "x-example": {
              "ingestJobRid": "<ingest job rid>"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/SearchIngestTransformsResponse"
            },
            "x-example": {
              "ingestTransforms": [
                {
                  "ingestTransformRid": "<ingest transform rid>",
                  "ingestJobRid": "<ingest job rid>",
                  "transformType": "CONTAINERIZED",
                  "status": "QUEUED",
                  "createdAt": "2026-01-01T00:00:00Z",
                  "updatedAt": "2026-01-01T00:00:00Z",
                  "errorMessage": "<error message>",
                  "finishedAt": "2026-01-01T00:00:00Z",
                  "extractorRid": "<containerized extractor rid>",
                  "sourcePaths": [
                    "<source paths>"
                  ]
                }
              ],
              "nextPageToken": "<token>"
            }
          }
        }
      }
    },
    "/ingest/v1/ingest-jobs/search": {
      "post": {
        "operationId": "IngestJobService_searchIngestJobs",
        "summary": "Search ingest jobs",
        "tags": [
          "Ingest Job Service"
        ],
        "description": "Returns a paginated list of ingest jobs, optionally filtered by dataset.",
        "parameters": [
          {
            "name": "request",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/SearchIngestJobsRequest"
            },
            "required": true,
            "x-example": {
              "pageSize": 1,
              "nextPageToken": "<token>",
              "filter": {
                "type": "datasetRids",
                "datasetRids": [
                  "<dataset rid>"
                ]
              },
              "sort": {
                "isDescending": true,
                "sortKey": "CREATED_AT"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/SearchIngestJobsResponse"
            },
            "x-example": {
              "ingestJobs": [
                {
                  "ingestJobRid": "<ingest job rid>",
                  "status": "SUBMITTED",
                  "originFiles": [
                    "<origin files>"
                  ],
                  "createdBy": "<created by>",
                  "createdByRid": "<user rid>",
                  "orgUuid": "<org uuid>",
                  "ingestType": "TABULAR",
                  "datasetRid": "<dataset rid>",
                  "createdAt": "2026-01-01T00:00:00Z",
                  "startTime": "2026-01-01T00:00:00Z",
                  "endTime": "2026-01-01T00:00:00Z",
                  "producedFileCount": 1
                }
              ],
              "nextPageToken": "<token>"
            }
          }
        }
      }
    },
    "/ingest/v1/ingest-jobs/count": {
      "post": {
        "operationId": "IngestJobService_countIngestJobs",
        "summary": "Count ingest jobs",
        "tags": [
          "Ingest Job Service"
        ],
        "description": "Returns the number of ingest jobs matching the filter, applying the same visibility rules as searchIngestJobs: jobs without a persisted dataset are excluded, and only jobs whose dataset the caller is authorized to read are counted. Intended for cheap polling (e.g. an active-job indicator) instead of paginating searchIngestJobs just to count results. Throws INVALID_ARGUMENT when the filter matches jobs across more distinct datasets than can be authorized in one request; narrow the filter in that case.",
        "parameters": [
          {
            "name": "request",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/CountIngestJobsRequest"
            },
            "required": true,
            "x-example": {
              "filter": {
                "type": "datasetRids",
                "datasetRids": [
                  "<dataset rid>"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/CountIngestJobsResponse"
            },
            "x-example": {
              "count": 1
            }
          }
        }
      }
    },
    "/ingest/v1/ingest-job/{ingestJobRid}/cancel": {
      "post": {
        "operationId": "IngestJobService_cancelIngestJob",
        "summary": "Cancel ingest job",
        "tags": [
          "Ingest Job Service"
        ],
        "description": "Cancels an ingest job. Jobs that have not yet started running (SUBMITTED, QUEUED) are transitioned directly to CANCELLED. Jobs that are IN_PROGRESS have their underlying workflow cancelled; the workflow is responsible for transitioning the job to CANCELLED and tearing down in-flight work. Cancelling a job that is already in a terminal state (COMPLETED, FAILED, CANCELLED) throws IngestJobNotCancellable.",
        "parameters": [
          {
            "name": "ingestJobRid",
            "in": "path",
            "type": "string",
            "format": "rid",
            "x-alias": "IngestJobRid",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/IngestJob"
            },
            "x-example": {
              "ingestJobRid": "<ingest job rid>",
              "status": "SUBMITTED",
              "originFiles": [
                "<origin files>"
              ],
              "createdBy": "<created by>",
              "createdByRid": "<user rid>",
              "orgUuid": "<org uuid>",
              "ingestType": "TABULAR",
              "datasetRid": "<dataset rid>",
              "createdAt": "2026-01-01T00:00:00Z",
              "startTime": "2026-01-01T00:00:00Z",
              "endTime": "2026-01-01T00:00:00Z",
              "producedFileCount": 1
            }
          }
        }
      }
    },
    "/ingest/v1/ingest-jobs/cancel": {
      "post": {
        "operationId": "IngestJobService_batchCancelIngestJobs",
        "summary": "Batch cancel ingest jobs",
        "tags": [
          "Ingest Job Service"
        ],
        "description": "Cancels multiple ingest jobs in a single call. Each job is processed independently and best-effort: a job that cannot be cancelled (already terminal, missing, or not authorized for the caller) yields a `failed` result rather than aborting the batch. Per-job cancellation semantics match cancelIngestJob. At most 100 jobs may be requested per call.",
        "parameters": [
          {
            "name": "request",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/BatchCancelIngestJobsRequest"
            },
            "required": true,
            "x-example": {
              "ingestJobRids": [
                "<ingest job rid>"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/BatchCancelIngestJobsResponse"
            },
            "x-example": {
              "results": [
                {
                  "ingestJobRid": "<ingest job rid>",
                  "outcome": {
                    "type": "cancelled",
                    "cancelled": {
                      "ingestJobRid": "<ingest job rid>",
                      "status": "SUBMITTED",
                      "originFiles": [
                        "<origin files>"
                      ],
                      "createdBy": "<created by>",
                      "createdByRid": "<user rid>",
                      "orgUuid": "<org uuid>",
                      "ingestType": "TABULAR",
                      "datasetRid": "<dataset rid>",
                      "createdAt": "2026-01-01T00:00:00Z",
                      "startTime": "2026-01-01T00:00:00Z",
                      "endTime": "2026-01-01T00:00:00Z",
                      "producedFileCount": 1
                    }
                  }
                }
              ]
            }
          }
        }
      }
    }
  },
  "definitions": {
    "BatchCancelIngestJobsRequest": {
      "description": "Request to cancel multiple ingest jobs in a single call.",
      "type": "object",
      "properties": {
        "ingestJobRids": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "rid",
            "x-alias": "IngestJobRid"
          },
          "description": "The ingest jobs to cancel. At most 100 jobs may be requested; a larger list is rejected with INVALID_ARGUMENT."
        }
      },
      "example": {
        "ingestJobRids": [
          "<ingest job rid>"
        ]
      }
    },
    "BatchCancelIngestJobsResponse": {
      "description": "Per-job results for a batch cancel. Every requested job has exactly one result, returned in request order.",
      "type": "object",
      "properties": {
        "results": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/CancelIngestJobResult"
          }
        }
      }
    },
    "CancelIngestJobFailure": {
      "type": "object",
      "properties": {
        "reason": {
          "$ref": "#/definitions/CancelIngestJobFailureReason"
        },
        "message": {
          "type": "string",
          "description": "Human-readable description of why the job could not be cancelled."
        }
      },
      "required": [
        "reason",
        "message"
      ]
    },
    "CancelIngestJobFailureReason": {
      "description": "NOT_FOUND: the job does not exist, or the caller is not authorized to cancel it. NOT_CANCELLABLE: the job is already in a terminal state (COMPLETED or FAILED).",
      "type": "string",
      "enum": [
        "NOT_FOUND",
        "NOT_CANCELLABLE"
      ]
    },
    "CancelIngestJobOutcome": {
      "description": "`cancelled` carries the resulting job (including the idempotent already-cancelled case); `failed` describes why the job could not be cancelled.\n\nSet `type` to the name of one of the other fields, and set only that field.",
      "type": "object",
      "x-union": true,
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "cancelled",
            "failed"
          ]
        },
        "cancelled": {
          "$ref": "#/definitions/IngestJob"
        },
        "failed": {
          "$ref": "#/definitions/CancelIngestJobFailure"
        }
      },
      "required": [
        "type"
      ],
      "example": {
        "type": "cancelled",
        "cancelled": {
          "ingestJobRid": "string",
          "status": "SUBMITTED",
          "originFiles": [
            "string"
          ],
          "createdBy": "string",
          "createdByRid": "string",
          "orgUuid": "string",
          "ingestType": "TABULAR",
          "datasetRid": "string",
          "createdAt": "2026-01-01T00:00:00Z",
          "startTime": "2026-01-01T00:00:00Z",
          "endTime": "2026-01-01T00:00:00Z",
          "producedFileCount": 1
        }
      }
    },
    "CancelIngestJobResult": {
      "description": "The outcome of attempting to cancel a single ingest job within a batch.",
      "type": "object",
      "properties": {
        "ingestJobRid": {
          "type": "string",
          "format": "rid",
          "x-alias": "IngestJobRid"
        },
        "outcome": {
          "$ref": "#/definitions/CancelIngestJobOutcome"
        }
      },
      "required": [
        "ingestJobRid",
        "outcome"
      ]
    },
    "CountIngestJobsRequest": {
      "type": "object",
      "properties": {
        "filter": {
          "allOf": [
            {
              "$ref": "#/definitions/IngestJobSearchFilter"
            }
          ],
          "description": "Matches all jobs when omitted. Prefer a filter that bounds the result, such as non-terminal statuses."
        }
      },
      "example": {
        "filter": {
          "type": "datasetRids",
          "datasetRids": [
            "<dataset rid>"
          ]
        }
      }
    },
    "CountIngestJobsResponse": {
      "type": "object",
      "properties": {
        "count": {
          "type": "integer",
          "format": "int64",
          "description": "The exact number of matching ingest jobs visible to the caller."
        }
      },
      "required": [
        "count"
      ]
    },
    "IngestJob": {
      "description": "Ingest job information",
      "type": "object",
      "properties": {
        "ingestJobRid": {
          "type": "string",
          "format": "rid",
          "x-alias": "IngestJobRid"
        },
        "status": {
          "$ref": "#/definitions/IngestJobStatus"
        },
        "originFiles": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "createdBy": {
          "type": "string",
          "format": "uuid",
          "x-deprecated": "use createdByRid instead"
        },
        "createdByRid": {
          "type": "string",
          "format": "rid",
          "x-alias": "UserRid"
        },
        "orgUuid": {
          "type": "string",
          "format": "uuid"
        },
        "ingestType": {
          "$ref": "#/definitions/IngestType"
        },
        "datasetRid": {
          "type": "string",
          "format": "rid",
          "x-alias": "DatasetRid"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time"
        },
        "startTime": {
          "type": "string",
          "format": "date-time",
          "description": "The time the job transitioned to IN_PROGRESS. Absent for jobs that have not started running yet (SUBMITTED, QUEUED)."
        },
        "endTime": {
          "type": "string",
          "format": "date-time"
        },
        "producedFileCount": {
          "type": "integer",
          "format": "int32",
          "description": "Count of dataset files produced by this ingest job."
        }
      },
      "required": [
        "ingestJobRid",
        "status",
        "createdBy",
        "orgUuid",
        "ingestType"
      ]
    },
    "IngestJobSearchFilter": {
      "description": "Filter for ingest-job search. A filter type that is not provided defaults to matching all jobs. Jobs without a persisted dataset UUID are not returned.\n\nSet `type` to the name of one of the other fields, and set only that field.",
      "type": "object",
      "x-union": true,
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "datasetRids",
            "createdByRids",
            "statuses",
            "searchText",
            "startTimeRange",
            "and",
            "or",
            "not",
            "workspace",
            "triggeringIngestRuleRids"
          ]
        },
        "datasetRids": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "rid",
            "x-alias": "DatasetRid"
          }
        },
        "createdByRids": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "rid",
            "x-alias": "UserRid"
          }
        },
        "statuses": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IngestJobStatus"
          }
        },
        "searchText": {
          "type": "string",
          "description": "Case-insensitive substring match against any origin file path."
        },
        "startTimeRange": {
          "$ref": "#/definitions/IngestJobStartTimeRange"
        },
        "and": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IngestJobSearchFilter"
          }
        },
        "or": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IngestJobSearchFilter"
          }
        },
        "not": {
          "$ref": "#/definitions/IngestJobSearchFilter"
        },
        "workspace": {
          "type": "string",
          "format": "rid",
          "x-alias": "WorkspaceRid"
        },
        "triggeringIngestRuleRids": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "rid",
            "x-alias": "DriveIngestRuleRid"
          },
          "description": "Matches jobs any of these File Store ingest rules triggered. At most 100 rids."
        }
      },
      "required": [
        "type"
      ],
      "example": {
        "type": "datasetRids",
        "datasetRids": [
          "string"
        ]
      }
    },
    "IngestJobSortKey": {
      "type": "string",
      "enum": [
        "CREATED_AT",
        "STATUS"
      ]
    },
    "IngestJobSortOptions": {
      "type": "object",
      "properties": {
        "isDescending": {
          "type": "boolean"
        },
        "sortKey": {
          "$ref": "#/definitions/IngestJobSortKey"
        }
      },
      "required": [
        "isDescending",
        "sortKey"
      ]
    },
    "IngestJobStartTimeRange": {
      "description": "Filters ingest jobs by start time. The lower bound is inclusive; the upper bound is exclusive.",
      "type": "object",
      "properties": {
        "startTimeAfter": {
          "type": "string",
          "format": "date-time"
        },
        "startTimeBefore": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "IngestJobStatus": {
      "type": "string",
      "enum": [
        "SUBMITTED",
        "QUEUED",
        "IN_PROGRESS",
        "COMPLETED",
        "FAILED",
        "CANCELLED",
        "DELETION_IN_PROGRESS",
        "DELETED"
      ]
    },
    "IngestTransform": {
      "description": "A single transform within an ingest job: one unit of extraction/processing work. Surfaces status, type, and error details so callers can monitor and alert on ingest pipelines.",
      "type": "object",
      "properties": {
        "ingestTransformRid": {
          "type": "string",
          "format": "rid",
          "x-alias": "IngestTransformRid"
        },
        "ingestJobRid": {
          "type": "string",
          "format": "rid",
          "x-alias": "IngestJobRid",
          "description": "The ingest job this transform belongs to."
        },
        "transformType": {
          "$ref": "#/definitions/IngestTransformType"
        },
        "status": {
          "$ref": "#/definitions/IngestTransformStatus"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time"
        },
        "errorMessage": {
          "type": "string",
          "description": "The failure detail recorded when the transform terminated. Present only for FAILED transforms. May contain customer-derived content and is therefore not safe to log."
        },
        "finishedAt": {
          "type": "string",
          "format": "date-time",
          "description": "The time the transform reached a terminal status (COMPLETED or FAILED). Absent while the transform is still QUEUED or IN_PROGRESS."
        },
        "extractorRid": {
          "type": "string",
          "format": "rid",
          "x-alias": "ContainerizedExtractorRid",
          "description": "The containerized extractor running this transform. Present only for CONTAINERIZED transforms."
        },
        "sourcePaths": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Locators of the transform's input file(s): S3/GCS paths, presigned URLs (query string stripped so no signing credentials are carried), or File Store file-revision rids. CONTAINERIZED transforms may have several inputs, ordered by the container environment variable they bind to; other types have exactly one. Empty when this server version cannot interpret the stored payload. May contain customer-derived content and is therefore not safe to log."
        }
      },
      "required": [
        "ingestTransformRid",
        "ingestJobRid",
        "transformType",
        "status",
        "createdAt",
        "updatedAt"
      ]
    },
    "IngestTransformStatus": {
      "type": "string",
      "enum": [
        "QUEUED",
        "IN_PROGRESS",
        "COMPLETED",
        "FAILED"
      ]
    },
    "IngestTransformType": {
      "type": "string",
      "enum": [
        "CONTAINERIZED",
        "MCAP",
        "DATAFLASH",
        "PARQUET_ARCHIVE",
        "FILE_COPY"
      ]
    },
    "IngestType": {
      "type": "string",
      "enum": [
        "TABULAR",
        "MCAP",
        "DATAFLASH",
        "JOURNAL_JSON",
        "CONTAINERIZED",
        "VIDEO",
        "AVRO_STREAM",
        "POINT_CLOUD",
        "MULTI"
      ]
    },
    "SearchIngestJobsRequest": {
      "type": "object",
      "properties": {
        "pageSize": {
          "type": "integer",
          "format": "int32",
          "description": "Defaults to 100. Clamped to 1_000 if larger, and to 1 if non-positive."
        },
        "nextPageToken": {
          "type": "string",
          "x-alias": "Token"
        },
        "filter": {
          "$ref": "#/definitions/IngestJobSearchFilter"
        },
        "sort": {
          "allOf": [
            {
              "$ref": "#/definitions/IngestJobSortOptions"
            }
          ],
          "description": "Defaults to most recent created_at first when omitted."
        }
      },
      "example": {
        "pageSize": 1,
        "nextPageToken": "<token>",
        "filter": {
          "type": "datasetRids",
          "datasetRids": [
            "<dataset rid>"
          ]
        },
        "sort": {
          "isDescending": true,
          "sortKey": "CREATED_AT"
        }
      }
    },
    "SearchIngestJobsResponse": {
      "type": "object",
      "properties": {
        "ingestJobs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IngestJob"
          }
        },
        "nextPageToken": {
          "type": "string",
          "x-alias": "Token"
        }
      }
    },
    "SearchIngestTransformsRequest": {
      "description": "Request to list the transforms belonging to a single ingest job, oldest-first.",
      "type": "object",
      "properties": {
        "ingestJobRid": {
          "type": "string",
          "format": "rid",
          "x-alias": "IngestJobRid",
          "description": "The ingest job whose transforms to list."
        },
        "statuses": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IngestTransformStatus"
          },
          "description": "When present and non-empty, only transforms in one of these statuses are returned. Omit, or pass an empty list, to return transforms in any status."
        },
        "pageSize": {
          "type": "integer",
          "format": "int32",
          "description": "Defaults to 100. Clamped to 1_000 if larger, and to 1 if non-positive."
        },
        "nextPageToken": {
          "type": "string",
          "x-alias": "Token"
        }
      },
      "required": [
        "ingestJobRid"
      ],
      "example": {
        "ingestJobRid": "<ingest job rid>"
      }
    },
    "SearchIngestTransformsResponse": {
      "type": "object",
      "properties": {
        "ingestTransforms": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IngestTransform"
          }
        },
        "nextPageToken": {
          "type": "string",
          "x-alias": "Token"
        }
      }
    },
    "OriginFileUri": {
      "description": "Pre-signed URI that can be used to download an origin file directly. Expires if the download has not been initiated within 1 minute.",
      "type": "object",
      "properties": {
        "uri": {
          "type": "string"
        },
        "path": {
          "type": "string"
        }
      },
      "required": [
        "uri",
        "path"
      ]
    }
  },
  "tags": [
    {
      "name": "Ingest Job Service",
      "x-displayName": "Ingest job service",
      "description": "Public API for querying ingest jobs."
    }
  ]
}
