{
  "swagger": "2.0",
  "info": {
    "title": "Containerized extractor 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": {
    "/extractors/v1/container": {
      "post": {
        "operationId": "ContainerizedExtractorService_registerContainerizedExtractor",
        "summary": "Register containerized extractor",
        "tags": [
          "Containerized Extractor Service"
        ],
        "description": "Registers a containerized extractor for a given set of containerized files.",
        "parameters": [
          {
            "name": "request",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/RegisterContainerizedExtractorRequest"
            },
            "required": true,
            "x-example": {
              "name": "<name>",
              "workspace": "<workspace rid>"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/RegisterContainerizedExtractorResponse"
            },
            "x-example": {
              "extractorRid": "<containerized extractor rid>"
            }
          }
        }
      }
    },
    "/extractors/v1/container/{extractorRid}": {
      "get": {
        "operationId": "ContainerizedExtractorService_getContainerizedExtractor",
        "summary": "Get containerized extractor",
        "tags": [
          "Containerized Extractor Service"
        ],
        "description": "Get a containerized extractor by its RID.",
        "parameters": [
          {
            "name": "extractorRid",
            "in": "path",
            "type": "string",
            "format": "rid",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ContainerizedExtractor"
            },
            "x-example": {
              "rid": "<containerized extractor rid>",
              "name": "<name>",
              "description": "<description>",
              "image": {
                "registry": "<registry>",
                "repository": "<repository>",
                "tagDetails": {
                  "tags": [
                    "<tags>"
                  ],
                  "defaultTag": "<default tag>"
                },
                "authentication": {
                  "type": "userAndPassword",
                  "userAndPassword": {
                    "username": "<username>",
                    "passwordSecretRid": "<secret rid>"
                  }
                },
                "command": "<command>"
              },
              "containerImageRid": "<container image rid>",
              "inputs": [
                {
                  "environmentVariable": "<environment variable>",
                  "name": "<name>",
                  "description": "<description>",
                  "fileFilters": [
                    {
                      "type": "suffix",
                      "suffix": "<file suffix>"
                    }
                  ],
                  "required": true
                }
              ],
              "parameters": [
                {
                  "environmentVariable": "<environment variable>",
                  "name": "<name>",
                  "description": "<description>",
                  "required": true
                }
              ],
              "properties": {
                "<key>": "<property value>"
              },
              "labels": [
                "<label>"
              ],
              "createdAt": "2026-01-01T00:00:00Z",
              "isArchived": true,
              "timestampMetadata": {
                "seriesName": "<series name>",
                "timestampType": {
                  "type": "relative",
                  "relative": {
                    "timeUnit": "DAYS",
                    "offset": "2026-01-01T00:00:00Z"
                  }
                }
              },
              "outputFileFormat": "PARQUET",
              "exitCodeMappings": [
                {
                  "exitCode": 1,
                  "code": "<code>",
                  "message": "<message>",
                  "retryable": true
                }
              ],
              "resources": {
                "cpuCores": 1,
                "memoryGib": 1,
                "diskGib": 1
              }
            }
          }
        }
      },
      "put": {
        "operationId": "ContainerizedExtractorService_updateContainerizedExtractor",
        "summary": "Update containerized extractor",
        "tags": [
          "Containerized Extractor Service"
        ],
        "description": "Update a containerized extractor. Only the fields that are set in the request will be updated.",
        "parameters": [
          {
            "name": "extractorRid",
            "in": "path",
            "type": "string",
            "format": "rid",
            "required": true
          },
          {
            "name": "request",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/UpdateContainerizedExtractorRequest"
            },
            "required": true,
            "x-example": {
              "name": "<name>",
              "description": "<description>",
              "inputs": [
                {
                  "environmentVariable": "<environment variable>",
                  "name": "<name>"
                }
              ],
              "parameters": [
                {
                  "environmentVariable": "<environment variable>",
                  "name": "<name>"
                }
              ],
              "properties": {
                "<key>": "<property value>"
              },
              "labels": [
                "<label>"
              ],
              "timestampMetadata": {
                "seriesName": "<series name>",
                "timestampType": {
                  "type": "relative",
                  "relative": {
                    "timeUnit": "DAYS"
                  }
                }
              },
              "outputFileFormat": "PARQUET",
              "registry": "<registry>",
              "repository": "<repository>",
              "tags": [
                "<tags>"
              ],
              "defaultTag": "<default tag>",
              "authentication": {
                "type": "userAndPassword",
                "userAndPassword": {
                  "username": "<username>",
                  "passwordSecretRid": "<secret rid>"
                }
              },
              "command": "<command>"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/ContainerizedExtractor"
            },
            "x-example": {
              "rid": "<containerized extractor rid>",
              "name": "<name>",
              "description": "<description>",
              "image": {
                "registry": "<registry>",
                "repository": "<repository>",
                "tagDetails": {
                  "tags": [
                    "<tags>"
                  ],
                  "defaultTag": "<default tag>"
                },
                "authentication": {
                  "type": "userAndPassword",
                  "userAndPassword": {
                    "username": "<username>",
                    "passwordSecretRid": "<secret rid>"
                  }
                },
                "command": "<command>"
              },
              "containerImageRid": "<container image rid>",
              "inputs": [
                {
                  "environmentVariable": "<environment variable>",
                  "name": "<name>",
                  "description": "<description>",
                  "fileFilters": [
                    {
                      "type": "suffix",
                      "suffix": "<file suffix>"
                    }
                  ],
                  "required": true
                }
              ],
              "parameters": [
                {
                  "environmentVariable": "<environment variable>",
                  "name": "<name>",
                  "description": "<description>",
                  "required": true
                }
              ],
              "properties": {
                "<key>": "<property value>"
              },
              "labels": [
                "<label>"
              ],
              "createdAt": "2026-01-01T00:00:00Z",
              "isArchived": true,
              "timestampMetadata": {
                "seriesName": "<series name>",
                "timestampType": {
                  "type": "relative",
                  "relative": {
                    "timeUnit": "DAYS",
                    "offset": "2026-01-01T00:00:00Z"
                  }
                }
              },
              "outputFileFormat": "PARQUET",
              "exitCodeMappings": [
                {
                  "exitCode": 1,
                  "code": "<code>",
                  "message": "<message>",
                  "retryable": true
                }
              ],
              "resources": {
                "cpuCores": 1,
                "memoryGib": 1,
                "diskGib": 1
              }
            }
          }
        }
      }
    },
    "/extractors/v1/container/search": {
      "post": {
        "operationId": "ContainerizedExtractorService_searchContainerizedExtractors",
        "summary": "Search containerized extractors",
        "tags": [
          "Containerized Extractor Service"
        ],
        "description": "Search for containerized extractors based on query parameters.",
        "parameters": [
          {
            "name": "request",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/SearchContainerizedExtractorsRequest"
            },
            "required": true,
            "x-example": {
              "query": {
                "type": "searchText",
                "searchText": "<search text>"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/ContainerizedExtractor"
              }
            },
            "x-example": [
              {
                "rid": "<containerized extractor rid>",
                "name": "<name>",
                "description": "<description>",
                "image": {
                  "registry": "<registry>",
                  "repository": "<repository>",
                  "tagDetails": {
                    "tags": [
                      "<tags>"
                    ],
                    "defaultTag": "<default tag>"
                  },
                  "authentication": {
                    "type": "userAndPassword",
                    "userAndPassword": {
                      "username": "<username>",
                      "passwordSecretRid": "<secret rid>"
                    }
                  },
                  "command": "<command>"
                },
                "containerImageRid": "<container image rid>",
                "inputs": [
                  {
                    "environmentVariable": "<environment variable>",
                    "name": "<name>",
                    "description": "<description>",
                    "fileFilters": [
                      {
                        "type": "suffix",
                        "suffix": "<file suffix>"
                      }
                    ],
                    "required": true
                  }
                ],
                "parameters": [
                  {
                    "environmentVariable": "<environment variable>",
                    "name": "<name>",
                    "description": "<description>",
                    "required": true
                  }
                ],
                "properties": {
                  "<key>": "<property value>"
                },
                "labels": [
                  "<label>"
                ],
                "createdAt": "2026-01-01T00:00:00Z",
                "isArchived": true,
                "timestampMetadata": {
                  "seriesName": "<series name>",
                  "timestampType": {
                    "type": "relative",
                    "relative": {
                      "timeUnit": "DAYS",
                      "offset": "2026-01-01T00:00:00Z"
                    }
                  }
                },
                "outputFileFormat": "PARQUET",
                "exitCodeMappings": [
                  {
                    "exitCode": 1,
                    "code": "<code>",
                    "message": "<message>",
                    "retryable": true
                  }
                ],
                "resources": {
                  "cpuCores": 1,
                  "memoryGib": 1,
                  "diskGib": 1
                }
              }
            ]
          }
        }
      }
    },
    "/extractors/v1/container/{extractorRid}/archive": {
      "put": {
        "operationId": "ContainerizedExtractorService_archiveContainerizedExtractor",
        "summary": "Archive containerized extractor",
        "tags": [
          "Containerized Extractor Service"
        ],
        "description": "Archive a containerized extractor.",
        "parameters": [
          {
            "name": "extractorRid",
            "in": "path",
            "type": "string",
            "format": "rid",
            "required": true
          }
        ],
        "responses": {
          "204": {
            "description": "No content."
          }
        }
      }
    },
    "/extractors/v1/container/{extractorRid}/unarchive": {
      "put": {
        "operationId": "ContainerizedExtractorService_unarchiveContainerizedExtractor",
        "summary": "Unarchive containerized extractor",
        "tags": [
          "Containerized Extractor Service"
        ],
        "description": "Unarchive a containerized extractor.",
        "parameters": [
          {
            "name": "extractorRid",
            "in": "path",
            "type": "string",
            "format": "rid",
            "required": true
          }
        ],
        "responses": {
          "204": {
            "description": "No content."
          }
        }
      }
    }
  },
  "definitions": {
    "Property": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "x-alias": "PropertyName"
        },
        "value": {
          "type": "string",
          "x-alias": "PropertyValue"
        }
      },
      "required": [
        "name",
        "value"
      ]
    },
    "TimeUnit": {
      "type": "string",
      "enum": [
        "DAYS",
        "HOURS",
        "MINUTES",
        "SECONDS",
        "MILLISECONDS",
        "MICROSECONDS",
        "NANOSECONDS"
      ]
    },
    "AbsoluteTimestamp": {
      "type": "object",
      "x-union": true,
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "iso8601",
            "epochOfTimeUnit",
            "customFormat"
          ]
        },
        "iso8601": {
          "$ref": "#/definitions/Iso8601Timestamp"
        },
        "epochOfTimeUnit": {
          "$ref": "#/definitions/EpochTimestamp"
        },
        "customFormat": {
          "$ref": "#/definitions/CustomTimestamp"
        }
      },
      "required": [
        "type"
      ],
      "description": "Set `type` to the name of one of the other fields, and set only that field.",
      "example": {
        "type": "iso8601",
        "iso8601": {}
      }
    },
    "Authentication": {
      "description": "Authentication methods for Docker registries.\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": [
            "userAndPassword",
            "public"
          ]
        },
        "userAndPassword": {
          "$ref": "#/definitions/UserAndPasswordAuthentication"
        },
        "public": {
          "$ref": "#/definitions/PublicAuthentication"
        }
      },
      "required": [
        "type"
      ],
      "example": {
        "type": "userAndPassword",
        "userAndPassword": {
          "username": "string",
          "passwordSecretRid": "string"
        }
      }
    },
    "ContainerResources": {
      "description": "Compute resources granted to an extractor container. Every field is optional; an unset field falls back to the deployment-wide default configured on combined-service.",
      "type": "object",
      "properties": {
        "cpuCores": {
          "type": "integer",
          "format": "int32",
          "description": "CPU cores requested for the extractor container."
        },
        "memoryGib": {
          "type": "integer",
          "format": "int32",
          "description": "Memory in GiB, applied as both the request and the limit."
        },
        "diskGib": {
          "type": "integer",
          "format": "int32",
          "description": "Size in GiB of each of the ephemeral input and output volumes."
        }
      }
    },
    "ContainerizedExtractor": {
      "description": "Represents a containerized extractor that processes input files using a container.",
      "type": "object",
      "properties": {
        "rid": {
          "type": "string",
          "format": "rid",
          "x-alias": "ContainerizedExtractorRid",
          "description": "Unique resource identifier for the extractor."
        },
        "name": {
          "type": "string",
          "description": "The name of the extractor as defined by the user."
        },
        "description": {
          "type": "string",
          "description": "Optional description of the extractor."
        },
        "image": {
          "allOf": [
            {
              "$ref": "#/definitions/DockerImageSource"
            }
          ],
          "description": "Deprecated: use containerImageRid instead for self-hosted images. Container image used to run the extractor via an external registry. When containerImageRid is set, this field contains placeholder values and should be ignored.",
          "x-deprecated": "Use containerImageRid for self-hosted images."
        },
        "containerImageRid": {
          "type": "string",
          "format": "rid",
          "x-alias": "ContainerImageRid",
          "description": "RID of a self-hosted container image in the internal registry. When set, the extractor uses the internal registry; when absent, the legacy image field is used."
        },
        "inputs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/FileExtractionInput"
          },
          "description": "The input files that this extractor requires, mapped to environment variables that store the path to the file."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/FileExtractionParameter"
          },
          "description": "Describes the parameters of the extractor."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string",
            "x-alias": "PropertyValue"
          },
          "x-map-key": "PropertyName",
          "description": "Additional properties associated with this extractor."
        },
        "labels": {
          "type": "array",
          "items": {
            "type": "string",
            "x-alias": "Label"
          },
          "uniqueItems": true,
          "description": "Set of labels applied to this extractor."
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp when this extractor was created."
        },
        "isArchived": {
          "type": "boolean",
          "description": "Whether this extractor is archived."
        },
        "timestampMetadata": {
          "allOf": [
            {
              "$ref": "#/definitions/TimestampMetadata"
            }
          ],
          "description": "Metadata about the intermediate parquet this extractor will produce. If not set, timestamp metadata must be provided at ingest time."
        },
        "outputFileFormat": {
          "allOf": [
            {
              "$ref": "#/definitions/FileOutputFormat"
            }
          ],
          "description": "The format of the output file. Currently only \"parquet\", \"csv\", \"parquet.tar\" are supported"
        },
        "exitCodeMappings": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ExitCodeMapping"
          },
          "description": "Fallback exit-code-to-error mappings for extractors that cannot emit a structured termination-log document. Populated from the active container image for v2 extractors; empty otherwise."
        },
        "resources": {
          "allOf": [
            {
              "$ref": "#/definitions/ContainerResources"
            }
          ],
          "description": "Compute resources declared on the extractor's container image. Read-only: set at image build time and never accepted on register or update. Absent, and absent per field, for an image that declares none, in which case the deployment-wide default configured on combined-service applies."
        }
      },
      "required": [
        "rid",
        "name",
        "image",
        "createdAt",
        "isArchived",
        "outputFileFormat"
      ]
    },
    "CustomTimestamp": {
      "type": "object",
      "properties": {
        "format": {
          "type": "string",
          "description": "The format string should be in the format of the `DateTimeFormatter` class in Java."
        },
        "defaultYear": {
          "type": "integer",
          "format": "int32",
          "description": "Default year is accepted as an optional field for cases like IRIG time format and will be overridden by year in time format."
        },
        "defaultDayOfYear": {
          "type": "integer",
          "format": "int32",
          "description": "Default day of year is accepted as an optional field for cases like IRIG time format and will be overridden by day of year in time format."
        }
      },
      "required": [
        "format"
      ]
    },
    "DockerImageSource": {
      "description": "Docker container image source definition.",
      "type": "object",
      "properties": {
        "registry": {
          "type": "string",
          "description": "The container registry where the image is hosted."
        },
        "repository": {
          "type": "string",
          "description": "The repository name of the image."
        },
        "tagDetails": {
          "$ref": "#/definitions/TagDetails"
        },
        "authentication": {
          "allOf": [
            {
              "$ref": "#/definitions/Authentication"
            }
          ],
          "description": "Optional authentication for accessing private container registries."
        },
        "command": {
          "type": "string"
        }
      },
      "required": [
        "registry",
        "repository",
        "tagDetails",
        "authentication"
      ]
    },
    "EpochTimestamp": {
      "type": "object",
      "properties": {
        "timeUnit": {
          "$ref": "#/definitions/TimeUnit"
        }
      },
      "required": [
        "timeUnit"
      ]
    },
    "ExitCodeMapping": {
      "description": "Maps a container exit code to a structured error, for extractors that cannot emit a structured /dev/termination-log document. Applied as a fallback error tier at ingest time.",
      "type": "object",
      "properties": {
        "exitCode": {
          "type": "integer",
          "format": "int32",
          "description": "The container process exit code this mapping applies to."
        },
        "code": {
          "type": "string",
          "description": "Machine-readable error code. Extractor-defined codes must fall outside the reserved platform namespace."
        },
        "message": {
          "type": "string",
          "description": "Human-readable error message."
        },
        "retryable": {
          "type": "boolean",
          "description": "Whether the platform may retry the ingest for this failure."
        }
      },
      "required": [
        "exitCode",
        "code",
        "message",
        "retryable"
      ]
    },
    "FileExtractionInput": {
      "description": "Defines an input file to be provided to the extractor.",
      "type": "object",
      "properties": {
        "environmentVariable": {
          "type": "string",
          "x-alias": "EnvironmentVariable",
          "description": "The environment variable that stores the path to the input file."
        },
        "name": {
          "type": "string",
          "description": "Name of the input file which users will be prompted with"
        },
        "description": {
          "type": "string",
          "description": "Description of the input file which users will be prompted with"
        },
        "fileFilters": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/FileFilter"
          },
          "description": "Optionally filter files for file selection"
        },
        "required": {
          "type": "boolean",
          "description": "Whether the input file is required for the extractor to run."
        }
      },
      "required": [
        "environmentVariable",
        "name"
      ]
    },
    "FileExtractionParameter": {
      "description": "Defines an input parameter to be provided to the extractor.",
      "type": "object",
      "properties": {
        "environmentVariable": {
          "type": "string",
          "x-alias": "EnvironmentVariable",
          "description": "The environment variable that stores the argument"
        },
        "name": {
          "type": "string",
          "description": "Name of the parameter which users will be prompted with"
        },
        "description": {
          "type": "string",
          "description": "Description of the parameter which users will be prompted with"
        },
        "required": {
          "type": "boolean",
          "description": "Whether the parameter is required for the extractor to run."
        }
      },
      "required": [
        "environmentVariable",
        "name"
      ]
    },
    "FileFilter": {
      "type": "object",
      "x-union": true,
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "suffix"
          ]
        },
        "suffix": {
          "type": "string",
          "x-alias": "FileSuffix"
        }
      },
      "required": [
        "type"
      ],
      "description": "Set `type` to the name of one of the other fields, and set only that field.",
      "example": {
        "type": "suffix",
        "suffix": "string"
      }
    },
    "FileOutputFormat": {
      "type": "string",
      "enum": [
        "PARQUET",
        "CSV",
        "PARQUET_TAR",
        "AVRO_STREAM",
        "JSON_L",
        "MANIFEST"
      ]
    },
    "Iso8601Timestamp": {
      "type": "object",
      "properties": {}
    },
    "PublicAuthentication": {
      "type": "object",
      "properties": {}
    },
    "RegisterContainerizedExtractorRequest": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "image": {
          "allOf": [
            {
              "$ref": "#/definitions/DockerImageSource"
            }
          ],
          "description": "Deprecated: use containerImageRid instead for self-hosted images. Container image for the extractor. Used for external registries. Ignored when containerImageRid is set.",
          "x-deprecated": "Use containerImageRid for self-hosted images."
        },
        "containerImageRid": {
          "type": "string",
          "format": "rid",
          "x-alias": "ContainerImageRid",
          "description": "RID of a self-hosted container image. When set, the extractor uses the internal registry and the image field is ignored."
        },
        "inputs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/FileExtractionInput"
          },
          "description": "payload must match input defined in containerized extraction"
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/FileExtractionParameter"
          },
          "description": "Describes the parameters of the extractor."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string",
            "x-alias": "PropertyValue"
          },
          "x-map-key": "PropertyName"
        },
        "labels": {
          "type": "array",
          "items": {
            "type": "string",
            "x-alias": "Label"
          },
          "uniqueItems": true
        },
        "workspace": {
          "type": "string",
          "format": "rid",
          "x-alias": "WorkspaceRid",
          "description": "The workspace in which to create the extractor"
        },
        "timestampMetadata": {
          "allOf": [
            {
              "$ref": "#/definitions/TimestampMetadata"
            }
          ],
          "description": "Metadata about the intermediate parquet this extractor will produce. If not set, timestamp metadata must be provided at ingest time."
        },
        "outputFileFormat": {
          "allOf": [
            {
              "$ref": "#/definitions/FileOutputFormat"
            }
          ],
          "description": "The format of the output file. Currently only \"parquet\", \"csv\", \"parquet.tar\" are supported"
        }
      },
      "required": [
        "name",
        "workspace"
      ],
      "example": {
        "name": "<name>",
        "workspace": "<workspace rid>"
      }
    },
    "RegisterContainerizedExtractorResponse": {
      "type": "object",
      "properties": {
        "extractorRid": {
          "type": "string",
          "format": "rid",
          "x-alias": "ContainerizedExtractorRid"
        }
      },
      "required": [
        "extractorRid"
      ]
    },
    "RelativeTimestamp": {
      "type": "object",
      "properties": {
        "timeUnit": {
          "$ref": "#/definitions/TimeUnit"
        },
        "offset": {
          "type": "string",
          "format": "date-time",
          "description": "Starting timestamp to use when indexing the file. This field is required when uploading a new file to an existing dataset."
        }
      },
      "required": [
        "timeUnit"
      ]
    },
    "SearchContainerizedExtractorsQuery": {
      "type": "object",
      "x-union": true,
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "searchText",
            "label",
            "property",
            "and",
            "or",
            "workspace"
          ]
        },
        "searchText": {
          "type": "string"
        },
        "label": {
          "type": "string",
          "x-alias": "Label"
        },
        "property": {
          "$ref": "#/definitions/Property"
        },
        "and": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SearchContainerizedExtractorsQuery"
          },
          "uniqueItems": true
        },
        "or": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SearchContainerizedExtractorsQuery"
          },
          "uniqueItems": true
        },
        "workspace": {
          "type": "string",
          "format": "rid",
          "x-alias": "WorkspaceRid"
        }
      },
      "required": [
        "type"
      ],
      "description": "Set `type` to the name of one of the other fields, and set only that field.",
      "example": {
        "type": "searchText",
        "searchText": "string"
      }
    },
    "SearchContainerizedExtractorsRequest": {
      "type": "object",
      "properties": {
        "query": {
          "$ref": "#/definitions/SearchContainerizedExtractorsQuery"
        }
      },
      "required": [
        "query"
      ],
      "example": {
        "query": {
          "type": "searchText",
          "searchText": "<search text>"
        }
      }
    },
    "TagDetails": {
      "type": "object",
      "properties": {
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "uniqueItems": true
        },
        "defaultTag": {
          "type": "string"
        }
      },
      "required": [
        "defaultTag"
      ]
    },
    "TimestampMetadata": {
      "type": "object",
      "properties": {
        "seriesName": {
          "type": "string"
        },
        "timestampType": {
          "$ref": "#/definitions/TimestampType"
        }
      },
      "required": [
        "seriesName",
        "timestampType"
      ]
    },
    "TimestampType": {
      "type": "object",
      "x-union": true,
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "relative",
            "absolute"
          ]
        },
        "relative": {
          "$ref": "#/definitions/RelativeTimestamp"
        },
        "absolute": {
          "$ref": "#/definitions/AbsoluteTimestamp"
        }
      },
      "required": [
        "type"
      ],
      "description": "Set `type` to the name of one of the other fields, and set only that field.",
      "example": {
        "type": "relative",
        "relative": {
          "timeUnit": "DAYS",
          "offset": "2026-01-01T00:00:00Z"
        }
      }
    },
    "UpdateContainerizedExtractorRequest": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "inputs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/FileExtractionInput"
          }
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/FileExtractionParameter"
          }
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string",
            "x-alias": "PropertyValue"
          },
          "x-map-key": "PropertyName"
        },
        "labels": {
          "type": "array",
          "items": {
            "type": "string",
            "x-alias": "Label"
          },
          "uniqueItems": true
        },
        "timestampMetadata": {
          "$ref": "#/definitions/TimestampMetadata"
        },
        "outputFileFormat": {
          "$ref": "#/definitions/FileOutputFormat"
        },
        "registry": {
          "type": "string"
        },
        "repository": {
          "type": "string"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "uniqueItems": true
        },
        "defaultTag": {
          "type": "string"
        },
        "authentication": {
          "$ref": "#/definitions/Authentication"
        },
        "command": {
          "type": "string"
        }
      },
      "example": {
        "name": "<name>",
        "description": "<description>",
        "inputs": [
          {
            "environmentVariable": "<environment variable>",
            "name": "<name>"
          }
        ],
        "parameters": [
          {
            "environmentVariable": "<environment variable>",
            "name": "<name>"
          }
        ],
        "properties": {
          "<key>": "<property value>"
        },
        "labels": [
          "<label>"
        ],
        "timestampMetadata": {
          "seriesName": "<series name>",
          "timestampType": {
            "type": "relative",
            "relative": {
              "timeUnit": "DAYS"
            }
          }
        },
        "outputFileFormat": "PARQUET",
        "registry": "<registry>",
        "repository": "<repository>",
        "tags": [
          "<tags>"
        ],
        "defaultTag": "<default tag>",
        "authentication": {
          "type": "userAndPassword",
          "userAndPassword": {
            "username": "<username>",
            "passwordSecretRid": "<secret rid>"
          }
        },
        "command": "<command>"
      }
    },
    "UserAndPasswordAuthentication": {
      "description": "Username and password authentication.",
      "type": "object",
      "properties": {
        "username": {
          "type": "string",
          "description": "Username for registry authentication."
        },
        "passwordSecretRid": {
          "type": "string",
          "format": "rid",
          "x-alias": "SecretRid",
          "description": "The RID of the secret containing the password for registry authentication."
        }
      },
      "required": [
        "username",
        "passwordSecretRid"
      ]
    }
  },
  "tags": [
    {
      "name": "Containerized Extractor Service",
      "x-displayName": "Containerized extractor service",
      "description": "The Containerized Extractor service provides functionality for creating, updating, and archiving containerized extractors.",
      "x-errors": [
        {
          "status": 404,
          "errorCode": "NOT_FOUND",
          "errorName": "ContainerizedExtractor:ContainerizedExtractorNotFound"
        },
        {
          "status": 404,
          "errorCode": "NOT_FOUND",
          "errorName": "ContainerizedExtractor:ContainerizedExtractorsNotFound"
        },
        {
          "status": 400,
          "errorCode": "INVALID_ARGUMENT",
          "errorName": "ContainerizedExtractor:InvalidContainerImage"
        },
        {
          "status": 400,
          "errorCode": "INVALID_ARGUMENT",
          "errorName": "ContainerizedExtractor:InvalidDefaultTag"
        },
        {
          "status": 400,
          "errorCode": "INVALID_ARGUMENT",
          "errorName": "ContainerizedExtractor:InvalidOutputFileFormat"
        }
      ]
    }
  ]
}
