Ingestion server API

The ingestion server exposes an API at the /task endpoint to schedule various tasks and get updates about their status and progress.

New tasks can be created using the POST method and a payload as described below. The response for this request provides an endpoint (containing a task’s unique ID) that can be used to retrieve the task information using the GET method.

REINDEX

If a complete data-refresh is not required, a new index can be created using the REINDEX action. This action will create a new index for the given media type using the data from the API database. A suffix can be provided for the index otherwise a random UUID will be used.

Body

{
  model: "image" | "audio"
  action: "REINDEX"
  index_suffix: string
}

Example

curl \
  -X POST \
  -H 'Content-Type: application/json' \
  -d '{"model": "image", "action": "REINDEX", "index_suffix": "20231106"}' \
  http://localhost:8001/task

CREATE_AND_POPULATE_FILTERED_INDEX

This endpoint creates a filtered index for a media type out of an existing index. A REINDEX job must be followed by this job to ensure that the new index has an associated filtered index as well before we promote it.

Body

{
  model: "image" | "audio"
  action: "CREATE_AND_POPULATE_FILTERED_INDEX"
  destination_index_suffix: string
}

Caution

Destination suffix here implies the suffix of the existing unfiltered index. The filtered index will be created with “-filtered” appended to the destination suffix.

Example

curl \
  -X POST \
  -H 'Content-Type: application/json' \
  -d '{"model": "image", "action": "CREATE_AND_POPULATE_FILTERED_INDEX", "destination_index_suffix": "20231106"}' \
  http://localhost:8001/task

POINT_ALIAS

This endpoint maps the index to a given alias. When an index is aliased to the name of the media type (image or audio) or name + “-filtered”, it becomes the default or filtered index for that media type respectively.

Body

{
  model: "image" | "audio"
  action: "POINT_ALIAS"
  index_suffix: string
  alias: string // should be model or model + "-filtered"
}

Example

curl \
  -X POST \
  -H 'Content-Type: application/json' \
  -d '{"model": "image", "action": "POINT_ALIAS", "index_suffix": "20231106", "alias": "image-filtered"}' \
  http://localhost:8001/task

DELETE_INDEX

This endpoint deletes the given index for a given media type.

Danger

Index deletion is an irreversible destructive operation. Please ensure that you do not delete an index that is currently in use as the default or filtered index for a media type.

Body

{
  model: "image" | "audio"
  action: "DELETE_INDEX"
  index_suffix: string
}

Example

curl \
  -X POST \
  -H 'Content-Type: application/json' \
  -d '{"model": "image", "action": "DELETE_INDEX", "index_suffix": "20231106"}' \
  http://localhost:8001/task