MIMIC API (0.0.0)

Download OpenAPI specification:

Tenant

Operations-only tenant administration. Not client-facing. See ADR-0020.

Change a tenant's executor class [ops]

Pin a tenant to a different executor class (compute pool). Operations-only — not something a tenant can do to itself. The target tenant is named by the X-Tenant-ID header, as with every other cross-tenant Operations call.

Repointing a tenant's class reassigns where all of its jobs are routed, with no cross-class fallback (ADR-0020). In-flight jobs already assigned to an executor are not touched; jobs still pending in the queue pick up the new class on the next assignment attempt.

The class is validated as a slug. If no executor is currently registered for the target class, the change still succeeds, but the response carries a warning — the tenant's jobs will queue until a matching pool is provisioned. This is intentional: Operations sometimes repoints a tenant ahead of standing up its pool.

Authorization: requires the mimic:write:tenants_mgmt scope, granted only to the qvyon-ops role. The handler additionally rejects any non-Operations caller.

Returns 400 if executor_class is malformed. Returns 404 if the X-Tenant-ID header names an unknown tenant.

Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
executor_class
required
string

The executor class to pin the tenant to — the named pool identifier that determines which executors its jobs route to. Slug format: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?$. There is no cross-class fallback — if no executor is currently registered for this class, the tenant's jobs will queue until a matching pool is provisioned (surfaced as a warning, not an error).

Responses

Request samples

Content type
application/json
{
  • "executor_class": "string"
}

Response samples

Content type
application/json
{
  • "executor_class": "string",
  • "warnings": [
    ]
}

Import

Send a sequence folder straight to object storage with presigned URLs, then register it as a validation.

Open an import of one sequence folder

Opens an import of one sequence folder from the caller's machine. The full file list is announced here and checked before anything is sent: scene.json at the folder's root, paths that stay inside the folder, no path twice, each file at most 5 GiB, at most 50 GiB in total.

The files are written directly to object storage with presigned URLs (see POST /{import_id}/urls), into a folder of their own -- the one the sequence will live in. Close with POST /{import_id}/complete.

Authorization (requires mimic:write:validations scope):

  • Admin Users: Opens in their tenant (from JWT org_id). X-Tenant-ID header ignored.
  • Operations Users: Opens in the specified tenant. X-Tenant-ID header required.
Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
name
required
string [ 1 .. 255 ] characters

Sequence name, usually the folder's name. Becomes the validation's name. Not unique.

required
Array of objects (MimicResources.SequenceImportFile) [ 1 .. 10000 ] items

Every file of the folder. Must hold scene.json at the folder's root, no path twice, and at most 50 GiB in total.

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "files": [
    ]
}

Response samples

Content type
application/json
{
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "import_id": "13230382-dadc-41f2-963d-e123bd5c0585",
  • "name": "string",
  • "object_uri": "string",
  • "status": "UPLOADING",
  • "file_count": 0,
  • "total_bytes": 0,
  • "uploaded_files": 0,
  • "uploaded_bytes": 0,
  • "expires_at": "2019-08-24T14:15:22Z",
  • "validation_id": "4b787051-9941-4155-aa13-68df4d20d7bc"
}

List sequence imports

List sequence imports for the authenticated tenant, in every status.

Pass status to filter to imports currently in any of the given statuses.

Authorization (requires mimic:read:validations scope):

  • Admin Users: Lists imports in their tenant (from JWT org_id). X-Tenant-ID header ignored.
  • Operations Users: Lists imports in the specified tenant. X-Tenant-ID header required.
Authorizations:
OAuth2Auth
query Parameters
limit
integer <int32> [ 1 .. 200 ]
Default: 50

Maximum items to return. Server default: 50. Server maximum: 200.

cursor
string

Opaque continuation token from previous response.

status
Array of strings (MimicResources.SequenceImportStatus)
Items Enum: "UPLOADING" "COMPLETED" "CANCELLED" "EXPIRED"
sort_by
string
Default: "CREATED_AT"
Enum: "CREATED_AT" "NAME" "TOTAL_BYTES" "STATUS"

Field to sort the sequence import list by.

order
string
Default: "DESC"
Enum: "ASC" "DESC"

Direction for a sorted list endpoint's order query parameter.

header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "page": {
    }
}

Get a sequence import by ID

Retrieve a single sequence import by ID. Does not look at object storage -- see /resume for that.

Authorization (requires mimic:read:validations scope).

Returns 404 if not found.

Authorizations:
OAuth2Auth
path Parameters
import_id
required
string <uuid>
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "import_id": "13230382-dadc-41f2-963d-e123bd5c0585",
  • "name": "string",
  • "object_uri": "string",
  • "status": "UPLOADING",
  • "file_count": 0,
  • "total_bytes": 0,
  • "uploaded_files": 0,
  • "uploaded_bytes": 0,
  • "expires_at": "2019-08-24T14:15:22Z",
  • "validation_id": "4b787051-9941-4155-aa13-68df4d20d7bc"
}

Cancel a sequence import

Cancels an UPLOADING import: no validation run is created, and the files received so far are deleted shortly after. A COMPLETED import is left alone -- its files are the sequence's now; delete the validation instead.

Authorization (requires mimic:write:validations scope).

Idempotent: returns 204 even if already cancelled, expired, completed or not found.

Authorizations:
OAuth2Auth
path Parameters
import_id
required
string <uuid>
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string"
}

Close an import and register the sequence

Checks that object storage holds exactly the announced files at the announced sizes, then creates the sequence's validation run in READY_TO_VALIDATE, with the import's object_uri. Call the validations :start to run it.

Safe to retry: on an import already COMPLETED, returns its validation again.

Authorization (requires mimic:write:validations scope).

Returns 400 if a file is missing, has another size, or was not announced (one error per file, the first 100); 404 if the import is not found, CANCELLED or EXPIRED.

Authorizations:
OAuth2Auth
path Parameters
import_id
required
string <uuid>
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "validation_id": "4b787051-9941-4155-aa13-68df4d20d7bc",
  • "name": "string",
  • "object_uri": "string",
  • "job_id": "453bd7d7-5355-4d6d-a38e-d9e7eb218c3f",
  • "status": "READY_TO_VALIDATE",
  • "result": {
    },
  • "progress": {
    },
  • "executor_version": "string",
  • "started_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "tag_ids": [
    ]
}

Find what an interrupted import still needs

Compares object storage with the announced files and returns those still missing (or at another size, e.g. overwritten by a stray PUT), so an interrupted upload -- even one whose caller lost its own record of what was sent -- picks up where it stopped. Refreshes uploaded_files/uploaded_bytes and pushes expires_at back.

Authorization (requires mimic:write:validations scope).

Returns 404 if the import is not UPLOADING.

Authorizations:
OAuth2Auth
path Parameters
import_id
required
string <uuid>
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "import": {
    },
  • "missing_paths": [
    ]
}

Sign upload URLs for some of an import's files

Returns a presigned PUT URL for each path given, valid for 15 minutes. Each URL is bound to its file's key and announced size: the PUT must carry that exact Content-Length. Ask in batches as the upload goes rather than for every file at once -- a URL that expires before it is used is simply asked for again. Pushes expires_at back.

Authorization (requires mimic:write:validations scope).

Returns 400 if a path was not announced, 404 if the import is not UPLOADING.

Authorizations:
OAuth2Auth
path Parameters
import_id
required
string <uuid>
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
paths
required
Array of strings [ 1 .. 1000 ] items

Paths to sign, each one announced when the import was opened. Ask in batches as the upload goes, since a URL lives no longer than 15 minutes.

Responses

Request samples

Content type
application/json
{
  • "paths": [
    ]
}

Response samples

Content type
application/json
{
  • "urls": [
    ]
}

Validation

Discovery and explicit, job-backed validation of a sequence's Mimic format.

Create validation runs for an explicitly given set of sequences

Creates one validation run record per sequence given, in order, in READY_TO_VALIDATE -- no job is created and no executor is involved yet. The manual counterpart to :scan for a caller that already knows a sequence's name and object_uri rather than discovering it by walking the landing zone -- sequences must be non-empty. Call :start to actually dispatch the validation jobs.

Authorization (requires mimic:write:validations scope):

  • Admin Users: Creates validations in their tenant (from JWT org_id). X-Tenant-ID header ignored.
  • Operations Users: Creates validations in the specified tenant. X-Tenant-ID header required.
Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
required
Array of objects (MimicResources.Sequence)

The sequences to create validation run records for. Must be non-empty.

Responses

Request samples

Content type
application/json
{
  • "sequences": [
    ]
}

Response samples

Content type
application/json
{
  • "validations": [
    ]
}

List validation runs

List validation runs for the authenticated tenant.

Pass job_id to look up the validation run created by a specific validation job -- useful for clients (e.g. a generic jobs list) that only know the job ID and need to poll its progress.

Pass name to filter by a case-insensitive substring match on the sequence's name.

Pass tag_ids to filter to validations tagged with any of the given tags.

Pass executor_version to filter to validations whose job reported that exact executor version.

Pass status to filter to validations currently in any of the given statuses.

Pass created_at_from and/or created_at_to to filter to validations whose created_at falls within that inclusive range.

Pass sort_by to choose the sort column.

Authorization (requires mimic:read:validations scope):

  • Admin Users: Lists validations in their tenant (from JWT org_id). X-Tenant-ID header ignored.
  • Operations Users: Lists validations in the specified tenant. X-Tenant-ID header required.
Authorizations:
OAuth2Auth
query Parameters
limit
integer <int32> [ 1 .. 200 ]
Default: 50

Maximum items to return. Server default: 50. Server maximum: 200.

cursor
string

Opaque continuation token from previous response.

job_id
string <uuid>
name
string
tag_ids
Array of strings
executor_version
string
status
Array of strings (MimicResources.ValidationStatus)
Items Enum: "READY_TO_VALIDATE" "QUEUED" "VALIDATING" "VALID" "INVALID" "ERROR" "CANCELLED"
created_at_from
string <date-time>
created_at_to
string <date-time>
sort_by
string
Default: "CREATED_AT"
Enum: "CREATED_AT" "NAME" "EXECUTOR_VERSION"

Sortable columns for ValidationsAPI.list's sort_by query parameter.

order
string
Default: "ASC"
Enum: "ASC" "DESC"

Direction for a sorted list endpoint's order query parameter.

header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "page": {
    }
}

Get the tenant's staging directory

Returns the URI of the tenant's staging directory -- a fixed location, not something a caller chooses. Drop raw sequences there, then call :scan to discover them.

Authorization (requires mimic:read:validations scope):

  • Admin Users: Returns their own tenant's staging directory (from JWT org_id). X-Tenant-ID header ignored.
  • Operations Users: Returns the specified tenant's staging directory. X-Tenant-ID header required.
Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "uri": "string"
}

Attach tags to validations

Attach every listed tag to every listed validation, so that a multi-row selection produces one request instead of one per pair.

Authorization (requires mimic:write:tags scope).

Idempotent: pairs that are already attached are left alone. Returns 404 if any tag or validation does not exist.

Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
tag_ids
required
Array of strings

The tags to apply. Must be non-empty.

validation_ids
required
Array of strings

The validations to apply them to. Must be non-empty.

Responses

Request samples

Content type
application/json
{
  • "tag_ids": [
    ],
  • "validation_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "errors": [
    ],
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string"
}

Detach tags from validations

Detach every listed tag from every listed validation.

Authorization (requires mimic:write:tags scope).

Idempotent: pairs that are not attached are left alone. Returns 404 if any tag or validation does not exist.

Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
tag_ids
required
Array of strings

The tags to apply. Must be non-empty.

validation_ids
required
Array of strings

The validations to apply them to. Must be non-empty.

Responses

Request samples

Content type
application/json
{
  • "tag_ids": [
    ],
  • "validation_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "errors": [
    ],
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string"
}

List executor versions seen for Validations

Returns every distinct executor_version recorded across this tenant's validation runs (e.g. for a UI filter dropdown) -- looks through the executor_version reported on every Validation, not just the latest.

Empty list if no run has reported a version yet, including when there are no validations at all.

Authorization (requires mimic:read:validations scope).

Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ]
}

Get a validation run by ID

Retrieve a single validation run by ID.

Authorization (requires mimic:read:validations scope):

  • Admin Users: Can only read validations in their tenant. X-Tenant-ID header ignored.
  • Operations Users: Can read validations in any tenant. X-Tenant-ID header required.

Returns 404 if not found or soft-deleted.

Authorizations:
OAuth2Auth
path Parameters
validation_id
required
string <uuid>
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "validation_id": "4b787051-9941-4155-aa13-68df4d20d7bc",
  • "name": "string",
  • "object_uri": "string",
  • "job_id": "453bd7d7-5355-4d6d-a38e-d9e7eb218c3f",
  • "status": "READY_TO_VALIDATE",
  • "result": {
    },
  • "progress": {
    },
  • "executor_version": "string",
  • "started_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "tag_ids": [
    ]
}

Delete a validation run

Soft-delete a validation run, matching Reconstruction/Actor's delete semantics.

If the underlying job is still QUEUED, ASSIGNED, or RUNNING, it is cancelled first before the validation run is soft-deleted. Otherwise (VALID, INVALID, ERROR, READY_TO_VALIDATE, already CANCELLED) it is soft-deleted directly. Sequence files the platform stores (imported or scanned in) are then permanently deleted.

Returns 409 while any reconstruction of it still exists (delete those first), or while a job built on this sequence is still winding down -- deleting would pull the files out from under them.

Authorization (requires mimic:write:validations scope):

  • Admin Users: Can delete validations in their tenant. X-Tenant-ID header ignored.
  • Operations Users: Can delete validations in any tenant. X-Tenant-ID header required.

Idempotent: returns 204 even if already deleted or not found.

Authorizations:
OAuth2Auth
path Parameters
validation_id
required
string <uuid>
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string"
}

Scan the tenant's staging directory for sequences and create validation runs

Step 1 of the pipeline: scans the tenant's staging directory (see GET /import-directory), walking its directory tree for scene.json files. For each one found, the immediate parent directory name becomes the sequence's name and its S3 path becomes its object_uri.

Validations are the system's registry of sequences -- there is no separate registration step. A validation run is created directly for each newly discovered sequence, in READY_TO_VALIDATE. Sequences already known (matched by object_uri) are skipped, so repeated (re-)scans are safe -- only genuinely new sequences produce new records.

No job is created and no executor is involved yet -- call :start to actually dispatch the validation jobs.

Authorization (requires mimic:write:validations scope):

  • Admin Users: Scans their tenant's staging directory (from JWT org_id). X-Tenant-ID header ignored.
  • Operations Users: Scans the specified tenant's staging directory. X-Tenant-ID header required.
Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "validations": [
    ]
}

Start (or retry) a chosen set of validation runs

Starts the validation job for each validation run ID given, in order -- validation_ids must be non-empty. Unlike Actor's per-resource :start, this is bulk: a validation job takes no per-item args, so one request can start many runs at once.

Eligible starting statuses: READY_TO_VALIDATE (first run), or VALID/INVALID/ERROR/ CANCELLED (to retry or re-run) -- so a caller can bulk-retry a set of failed or cancelled validations in one call. Not eligible while a run is already in flight (QUEUED, VALIDATING).

Authorization (requires mimic:write:validations scope):

  • Admin Users: Can only start validations in their tenant. X-Tenant-ID header ignored.
  • Operations Users: Can start validations in any tenant. X-Tenant-ID header required.

Returns 409 if any validation run is not in an eligible status.

Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
validation_ids
required
Array of strings

The validation runs to start. Must be non-empty.

Responses

Request samples

Content type
application/json
{
  • "validation_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "validations": [
    ]
}

Reconstruction

Train a 3D Gaussian Splatting reconstruction from a validated sequence.

Create a Reconstruction

Create a reconstructed model record without starting anything -- no job is created and no executor is involved. The model starts in READY_TO_RECONSTRUCT. Call :start to actually dispatch the reconstruction job.

This lets a caller (e.g. the Mimic UI, transitioning between pipeline stages) create the record ahead of time without committing to run it yet.

Authorization (requires mimic:write:reconstructions scope):

  • Admin Users: Creates the reconstruction in their tenant (from JWT org_id). X-Tenant-ID header ignored.
  • Operations Users: Creates the reconstruction in the specified tenant. X-Tenant-ID header required.

Supports Idempotency-Key header for safe retries.

Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
validation_id
required
string <uuid>

ID of the validation (must be VALID) whose sequence to reconstruct on.

name
string

Human-readable name for the model. If omitted, auto-generated from scene name.

Responses

Request samples

Content type
application/json
{
  • "validation_id": "4b787051-9941-4155-aa13-68df4d20d7bc",
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "reconstruction_id": "b8b4f18f-1fee-4bf5-8e0c-3e50b159e778",
  • "validation_id": "4b787051-9941-4155-aa13-68df4d20d7bc",
  • "job_id": "453bd7d7-5355-4d6d-a38e-d9e7eb218c3f",
  • "name": "string",
  • "run_count": 0,
  • "frame_count": 0,
  • "status": "READY_TO_RECONSTRUCT",
  • "args": {
    },
  • "result": {
    },
  • "progress": {
    },
  • "executor_version": "string",
  • "object_uri": "string",
  • "started_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "tag_ids": [
    ],
  • "kpis": {
    },
  • "scene_actors": [
    ]
}

List reconstructed models

List reconstructed models for the authenticated tenant.

Default sort: created_at DESC, reconstruction_id ASC (newest first, stable tie-breaker). Includes models in all statuses (PROCESSING, READY, FAILED). Excludes soft-deleted models.

Pass job_id to look up the reconstruction created by a specific training job — useful for clients (e.g. a generic jobs list) that only know the job ID and need to poll its progress/metrics/output_uri.

Pass name to filter by a case-insensitive substring match on the model's name.

Pass tag_ids to filter to models tagged with any of the given tags.

Pass executor_version to filter to models whose job reported that exact executor version.

Pass status to filter to models currently in any of the given statuses.

Pass started_at_from and/or started_at_to to filter to models whose started_at falls within that inclusive range.

Pass sort_by to choose the sort column.

Authorization (requires mimic:read:reconstructions scope):

  • Admin Users: Lists reconstructions in their tenant (from JWT org_id). X-Tenant-ID header ignored.
  • Operations Users: Lists reconstructions in the specified tenant. X-Tenant-ID header required.
Authorizations:
OAuth2Auth
query Parameters
limit
integer <int32> [ 1 .. 200 ]
Default: 50

Maximum items to return. Server default: 50. Server maximum: 200.

cursor
string

Opaque continuation token from previous response.

job_id
string <uuid>
name
string
tag_ids
Array of strings
executor_version
string
status
Array of strings (MimicResources.ReconstructionStatus)
Items Enum: "READY_TO_RECONSTRUCT" "QUEUED" "PROCESSING" "READY" "FAILED" "ERROR" "CANCELLED"
started_at_from
string <date-time>
started_at_to
string <date-time>
sort_by
string
Default: "CREATED_AT"
Enum: "CREATED_AT" "NAME" "EXECUTOR_VERSION" "RUN_COUNT" "STARTED_AT" "COMPLETED_AT"

Sortable columns for ReconstructionsAPI.list's sort_by query parameter.

order
string
Default: "ASC"
Enum: "ASC" "DESC"

Direction for a sorted list endpoint's order query parameter.

header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "page": {
    }
}

List configurable reconstruction parameters

Returns the parameters accepted by POST /reconstructions's args field, derived from the ReconstructionArgs schema, so a client can render a form without hardcoding field names.

Static schema only — does not resolve per-scene default values.

Authorization (requires mimic:read:reconstructions scope).

Authorizations:
OAuth2Auth

Responses

Response samples

Content type
application/json
{
  • "items": [
    ]
}

Attach tags to reconstructions

Attach every listed tag to every listed reconstruction, so that a multi-row selection produces one request instead of one per pair.

Authorization (requires mimic:write:tags scope).

Idempotent: pairs that are already attached are left alone. Returns 404 if any tag or reconstruction does not exist.

Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
tag_ids
required
Array of strings

The tags to apply. Must be non-empty.

reconstruction_ids
required
Array of strings

The reconstructions to apply them to. Must be non-empty.

Responses

Request samples

Content type
application/json
{
  • "tag_ids": [
    ],
  • "reconstruction_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "errors": [
    ],
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string"
}

Detach tags from reconstructions

Detach every listed tag from every listed reconstruction.

Authorization (requires mimic:write:tags scope).

Idempotent: pairs that are not attached are left alone. Returns 404 if any tag or reconstruction does not exist.

Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
tag_ids
required
Array of strings

The tags to apply. Must be non-empty.

reconstruction_ids
required
Array of strings

The reconstructions to apply them to. Must be non-empty.

Responses

Request samples

Content type
application/json
{
  • "tag_ids": [
    ],
  • "reconstruction_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "errors": [
    ],
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string"
}

List executor versions seen for Reconstructions

Returns every distinct executor_version recorded across this tenant's reconstruction runs (e.g. for a UI filter dropdown) -- looks through the executor_version reported on every Reconstruction, not just the latest.

Empty list if no run has reported a version yet, including when there are no reconstructions at all.

Authorization (requires mimic:read:reconstructions scope).

Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ]
}

Get a reconstructed model by ID

Retrieve a single reconstructed model by ID.

Authorization (requires mimic:read:reconstructions scope):

  • Admin Users: Can only read reconstructions in their tenant. X-Tenant-ID header ignored.
  • Operations Users: Can read reconstructions in any tenant. X-Tenant-ID header required.

Returns 404 if not found or soft-deleted.

Authorizations:
OAuth2Auth
path Parameters
reconstruction_id
required
string <uuid>
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "reconstruction_id": "b8b4f18f-1fee-4bf5-8e0c-3e50b159e778",
  • "validation_id": "4b787051-9941-4155-aa13-68df4d20d7bc",
  • "job_id": "453bd7d7-5355-4d6d-a38e-d9e7eb218c3f",
  • "name": "string",
  • "run_count": 0,
  • "frame_count": 0,
  • "status": "READY_TO_RECONSTRUCT",
  • "args": {
    },
  • "result": {
    },
  • "progress": {
    },
  • "executor_version": "string",
  • "object_uri": "string",
  • "started_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "tag_ids": [
    ],
  • "kpis": {
    },
  • "scene_actors": [
    ]
}

Rename a Reconstruction

Rename a reconstructed model. Renames the reconstruction's own name only -- distinct from and independent of the source sequence's name it was trained from.

Authorization (requires mimic:write:reconstructions scope):

  • Admin Users: Can only rename reconstructions in their tenant. X-Tenant-ID header ignored.
  • Operations Users: Can rename reconstructions in any tenant. X-Tenant-ID header required.

Returns 404 if not found or soft-deleted.

Authorizations:
OAuth2Auth
path Parameters
reconstruction_id
required
string <uuid>
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
name
required
string

New human-readable name for this reconstructed model.

Responses

Request samples

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "reconstruction_id": "b8b4f18f-1fee-4bf5-8e0c-3e50b159e778",
  • "validation_id": "4b787051-9941-4155-aa13-68df4d20d7bc",
  • "job_id": "453bd7d7-5355-4d6d-a38e-d9e7eb218c3f",
  • "name": "string",
  • "run_count": 0,
  • "frame_count": 0,
  • "status": "READY_TO_RECONSTRUCT",
  • "args": {
    },
  • "result": {
    },
  • "progress": {
    },
  • "executor_version": "string",
  • "object_uri": "string",
  • "started_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "tag_ids": [
    ],
  • "kpis": {
    },
  • "scene_actors": [
    ]
}

Delete a Reconstruction

Soft-delete a Reconstruction.

Authorization (requires mimic:write:reconstructions scope):

  • Admin Users: Can delete reconstructions in their tenant. X-Tenant-ID header ignored.
  • Operations Users: Can delete reconstructions in any tenant. X-Tenant-ID header required.

Idempotent: returns 204 even if already deleted or not found. Cancels an in-flight reconstruction job, then permanently deletes its output files.

Returns 409 while an export run or an augmentation session that loaded it is still active -- deleting would pull the files out from under them.

Authorizations:
OAuth2Auth
path Parameters
reconstruction_id
required
string <uuid>
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string"
}

Start (or retry) a bulk set of Reconstructions

Start the reconstruction job for each reconstructed model given, in order, each with its own args -- reconstructions must be non-empty.

Each model transitions to QUEUED, then PROCESSING when picked up by an executor, then READY or ERROR when the job completes. reconstruction parameters are optional -- server defaults are applied for any omitted parameters. The resolved parameters (with defaults) are stored on the reconstructed model for reproducibility.

Eligible starting statuses: READY_TO_RECONSTRUCT (first run), or FAILED/ERROR/READY/ CANCELLED (to retry or re-run) -- so a caller can bulk-retry a set of failed or cancelled reconstructions in one call. Not eligible while a run is already in flight (QUEUED, PROCESSING).

Authorization (requires mimic:write:reconstructions scope):

  • Admin Users: Can only start reconstructions in their tenant. X-Tenant-ID header ignored.
  • Operations Users: Can start reconstructions in any tenant. X-Tenant-ID header required.

Returns 409 if any reconstruction is not in an eligible status.

Supports Idempotency-Key header for safe retries.

Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
required
Array of objects (MimicResources.StartReconstructionRequestItem)

The reconstructed models to start. Must be non-empty.

Responses

Request samples

Content type
application/json
{
  • "reconstructions": [
    ]
}

Response samples

Content type
application/json
{
  • "reconstructions": [
    ]
}

KPI

Metrics a reconstruction's own executor reports, surfaced as comparable columns across every finished run.

List KPI rows across every finished reconstruction

One row per reconstruction whose job finished successfully, each carrying its final reading per KPI metric (Reconstruction.kpis) with the executor's own colour. Directions are per metric, in listMetadata.

Pass search to filter to reconstructions whose sequence name matches.

Pass tag_ids to filter to reconstructions carrying any of the given tags.

Pass sort_by to choose the sort column -- score sorts by sequence name for now.

Authorization (requires mimic:read:reconstructions scope):

  • Admin Users: Lists rows in their tenant (from JWT org_id). X-Tenant-ID header ignored.
  • Operations Users: Lists rows in the specified tenant. X-Tenant-ID header required.
Authorizations:
OAuth2Auth
query Parameters
limit
integer <int32> [ 1 .. 200 ]
Default: 50

Maximum items to return. Server default: 50. Server maximum: 200.

cursor
string

Opaque continuation token from previous response.

search
string
tag_ids
Array of strings
sort_by
string
Default: "SEQUENCE_NAME"
Enum: "SEQUENCE_NAME" "SCORE"

Sortable columns for KpisAPI.list's sort_by query parameter.

order
string
Default: "ASC"
Enum: "ASC" "DESC"

Direction for a sorted list endpoint's order query parameter.

header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "page": {
    }
}

List the KPI metrics the tenant's finished reconstructions reported

The comparison grid's columns: every metric key found in KpisAPI.list's rows, with the direction the executor last reported for it, plus the score column's own. Derived from the data -- a metric appears once some finished reconstruction reports it.

Authorization (requires mimic:read:reconstructions scope).

Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "score": {
    },
  • "items": [
    ]
}

Get one reconstruction's full KPI history

One entry per metric this reconstruction reported, built from its current run's metrics history, plus the run's final score.

Authorization (requires mimic:read:reconstructions scope).

Authorizations:
OAuth2Auth
path Parameters
reconstruction_id
required
string <uuid>
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "score": {
    },
  • "kpis": [
    ]
}

Actor

Actors across both the tenant's library and its sequences' detected scene actors.

List all actors, in the library or not

Every actor in the tenant, regardless of kind or library membership -- unlike GET /v1/library/actors, which only returns actors already added to the library (library_id set). Check kind/library_id on each entry.

Pass name to filter by a case-insensitive substring match on the actor's name.

Pass sequence_id to filter to actors detected in that exact sequence (kind SCENE), or imported from it (kind SCENE, library_id set).

Default sort: created_at DESC, actor_id ASC.

Authorization (requires mimic:read:actors scope):

  • Admin Users: Lists actors in their tenant (from JWT org_id). X-Tenant-ID header ignored.
  • Operations Users: Lists actors in the specified tenant. X-Tenant-ID header required.
Authorizations:
OAuth2Auth
query Parameters
limit
integer <int32> [ 1 .. 200 ]
Default: 50

Maximum items to return. Server default: 50. Server maximum: 200.

cursor
string

Opaque continuation token from previous response.

name
string
sequence_id
string <uuid>
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "page": {
    }
}

Create an Actor from an uploaded file

Upload a vendor 3D asset (mesh, glTF/GLB, CAD file, image set, or gaussian-splat PLY) and immediately convert it into an actor. Stores the file under the tenant's actor library in object storage, creates the Actor record (kind EXTERNAL, library_id set immediately), and dispatches the conversion job -- all in this one call. Returns the actor immediately in QUEUED.

Authorization (requires mimic:write:actors scope):

  • Admin Users: Creates in their tenant (from JWT org_id). X-Tenant-ID header ignored.
  • Operations Users: Creates in the specified tenant. X-Tenant-ID header required.

Returns 409 if an actor with this name already exists in the tenant's library.

Supports Idempotency-Key header for safe retries.

Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: multipart/form-data
required
file
required
string <binary>
required
object (MimicResources.CreateActorRequest)

Metadata for uploading a vendor 3D asset as a new actor.

Responses

Response samples

Content type
application/json
{
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "actor_id": "04f37679-bfbf-4906-b749-01756515cecf",
  • "kind": "SCENE",
  • "library_id": "21f784c9-c915-48d4-a805-f15b3e01b084",
  • "name": "string",
  • "job_id": "453bd7d7-5355-4d6d-a38e-d9e7eb218c3f",
  • "status": "QUEUED",
  • "category_ids": [
    ],
  • "dimensions": {
    },
  • "description": "string",
  • "license": "string",
  • "sequence_id": "7cd84c09-94f4-486c-9c49-de3b9cf3f74f",
  • "category": "string",
  • "progress": {
    },
  • "executor_version": "string",
  • "result": {
    },
  • "object_uri": "string",
  • "started_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z"
}

List Actors

List actors already in the tenant's library (library_id set) -- see GET /v1/actors for every actor regardless of library membership.

Default sort: created_at DESC, actor_id ASC (newest first, stable tie-breaker). Includes actors in all statuses.

Pass job_id to look up the actor created by a specific job — useful for clients (e.g. a generic jobs list) that only know the job ID and need to poll its progress/result.

Pass name to filter by a case-insensitive substring match on the actor's class name.

Pass executor_version to filter to actors whose job reported that exact executor version.

Pass category_ids to keep only actors carrying every one of those categories. Each one narrows the list further, rather than widening it, so a client can stack them. Returns 404 if any of them is not a category of this tenant -- a filter naming something that does not exist is a mistake worth reporting, not an empty grid to puzzle over.

Pass kind or status to filter to actors currently matching any of the given values.

Pass created_at_from and/or created_at_to to filter to actors whose created_at falls within that inclusive range.

Pass sort_by to choose the sort column.

Authorization (requires mimic:read:actors scope):

  • Admin Users: Lists actors in their tenant (from JWT org_id). X-Tenant-ID header ignored.
  • Operations Users: Lists actors in the specified tenant. X-Tenant-ID header required.
Authorizations:
OAuth2Auth
query Parameters
limit
integer <int32> [ 1 .. 200 ]
Default: 50

Maximum items to return. Server default: 50. Server maximum: 200.

cursor
string

Opaque continuation token from previous response.

job_id
string <uuid>
name
string
executor_version
string
category_ids
Array of strings

Keep actors carrying every one of these categories.

kind
Array of strings (MimicResources.ActorKind)
Items Enum: "SCENE" "EXTERNAL"
status
Array of strings (MimicResources.ActorStatus)
Items Enum: "QUEUED" "PROCESSING" "READY" "FAILED" "CANCELLED"
created_at_from
string <date-time>
created_at_to
string <date-time>
sort_by
string
Default: "CREATED_AT"
Enum: "CREATED_AT" "NAME" "KIND"

Sortable columns for ActorsAPI.list's sort_by query parameter.

order
string
Default: "DESC"
Enum: "ASC" "DESC"

Direction for a sorted list endpoint's order query parameter.

header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "page": {
    }
}

List configurable actor parameters

Returns the parameters accepted by create's metadata part, derived from the CreateActorRequest schema, so a client can render a form without hardcoding field names.

Static schema only.

Authorization (requires mimic:read:actors scope).

Authorizations:
OAuth2Auth

Responses

Response samples

Content type
application/json
{
  • "items": [
    ]
}

List executor versions seen for Actors

Returns every distinct executor_version recorded across this tenant's actor runs (e.g. for a UI filter dropdown) -- looks through the executor_version reported on every Actor, not just the latest.

Empty list if no run has reported a version yet, including when there are no actors at all.

Authorization (requires mimic:read:actors scope).

Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ]
}

Get an Actor by ID

Retrieve a single actor by ID.

Authorization (requires mimic:read:actors scope):

  • Admin Users: Can only read actors in their tenant. X-Tenant-ID header ignored.
  • Operations Users: Can read actors in any tenant. X-Tenant-ID header required.

Returns 404 if not found.

Authorizations:
OAuth2Auth
path Parameters
actor_id
required
string <uuid>
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "actor_id": "04f37679-bfbf-4906-b749-01756515cecf",
  • "kind": "SCENE",
  • "library_id": "21f784c9-c915-48d4-a805-f15b3e01b084",
  • "name": "string",
  • "job_id": "453bd7d7-5355-4d6d-a38e-d9e7eb218c3f",
  • "status": "QUEUED",
  • "category_ids": [
    ],
  • "dimensions": {
    },
  • "description": "string",
  • "license": "string",
  • "sequence_id": "7cd84c09-94f4-486c-9c49-de3b9cf3f74f",
  • "category": "string",
  • "progress": {
    },
  • "executor_version": "string",
  • "result": {
    },
  • "object_uri": "string",
  • "started_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z"
}

Rename an Actor

Rename an actor in the tenant's library. Oplists insert library actors by name, so oplists written against the old name stop resolving once it is renamed.

Authorization (requires mimic:write:actors scope):

  • Admin Users: Can rename actors in their tenant. X-Tenant-ID header ignored.
  • Operations Users: Can rename actors in any tenant. X-Tenant-ID header required.

Returns 404 if actor_id doesn't match an actor in the tenant's library. Returns 409 if another actor in the tenant's library already uses the new name (case-insensitive).

Authorizations:
OAuth2Auth
path Parameters
actor_id
required
string <uuid>
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
name
required
string

New human-readable actor class name. Must be unique within the tenant's library.

Responses

Request samples

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "actor_id": "04f37679-bfbf-4906-b749-01756515cecf",
  • "kind": "SCENE",
  • "library_id": "21f784c9-c915-48d4-a805-f15b3e01b084",
  • "name": "string",
  • "job_id": "453bd7d7-5355-4d6d-a38e-d9e7eb218c3f",
  • "status": "QUEUED",
  • "category_ids": [
    ],
  • "dimensions": {
    },
  • "description": "string",
  • "license": "string",
  • "sequence_id": "7cd84c09-94f4-486c-9c49-de3b9cf3f74f",
  • "category": "string",
  • "progress": {
    },
  • "executor_version": "string",
  • "result": {
    },
  • "object_uri": "string",
  • "started_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z"
}

Delete an Actor

Soft-delete an Actor, matching Reconstruction's delete semantics.

If the underlying job is still QUEUED, ASSIGNED, or RUNNING, it is cancelled first (same effect as the old cancel-only behavior) before the actor is soft-deleted. Otherwise (READY, FAILED, already CANCELLED) the actor is soft-deleted directly -- unlike the old behavior, this no longer returns 409 Conflict for a terminal job. Its source and converted files are then permanently deleted.

Authorization (requires mimic:write:actors scope):

  • Admin Users: Can delete actors in their tenant. X-Tenant-ID header ignored.
  • Operations Users: Can delete actors in any tenant. X-Tenant-ID header required.

Idempotent: returns 204 even if already deleted or not found.

Authorizations:
OAuth2Auth
path Parameters
actor_id
required
string <uuid>
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string"
}

List an Actor's downloadable artifacts

List the actor bundle's files with a presigned download URL for each. Empty until the bundle has been uploaded to object storage (i.e. before status is READY, or if upload failed) -- poll read for status first.

Authorization (requires mimic:read:actors scope):

  • Admin Users: Can only read actors in their tenant. X-Tenant-ID header ignored.
  • Operations Users: Can read actors in any tenant. X-Tenant-ID header required.

Returns 404 if the actor isn't found.

Authorizations:
OAuth2Auth
path Parameters
actor_id
required
string <uuid>
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "artifacts": [
    ]
}

Import a scene actor into the library

Copy an existing kind-SCENE actor (see GET /v1/actors?sequence_id=..., not in the library) into the tenant's actor library as a new actor, and immediately convert it. The scene actor itself is left untouched and can be imported again under a different name. The copy gets a fresh actor_id; dimensions, category and sequence_id carry over from the scene actor, name/description/category_ids come from the request. Returns the new actor immediately in QUEUED.

Authorization (requires mimic:write:actors scope):

  • Admin Users: Imports into their tenant (from JWT org_id). X-Tenant-ID header ignored.
  • Operations Users: Imports into the specified tenant. X-Tenant-ID header required.

Returns 404 if actor_id doesn't match an existing not-in-library kind-SCENE actor in this tenant. Returns 409 if an actor with this name already exists in the tenant's library.

Supports Idempotency-Key header for safe retries.

Authorizations:
OAuth2Auth
path Parameters
actor_id
required
string <uuid>
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
name
required
string

Human-readable actor class name, e.g. "vehicle.porsche_911_gt2". Must be unique within the tenant's library.

description
string

Free text description, written to actor.json.

category_ids
Array of strings

IDs of categories (from GET /v1/library/categories) to attach at import. Must already exist in the tenant's registry.

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "string",
  • "category_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "actor_id": "04f37679-bfbf-4906-b749-01756515cecf",
  • "kind": "SCENE",
  • "library_id": "21f784c9-c915-48d4-a805-f15b3e01b084",
  • "name": "string",
  • "job_id": "453bd7d7-5355-4d6d-a38e-d9e7eb218c3f",
  • "status": "QUEUED",
  • "category_ids": [
    ],
  • "dimensions": {
    },
  • "description": "string",
  • "license": "string",
  • "sequence_id": "7cd84c09-94f4-486c-9c49-de3b9cf3f74f",
  • "category": "string",
  • "progress": {
    },
  • "executor_version": "string",
  • "result": {
    },
  • "object_uri": "string",
  • "started_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z"
}

Start (or retry) a bulk set of Actors

(Re-)dispatch the conversion job for each actor id given, in order -- actor_ids must be non-empty. No args are accepted: every actor's boxtype/dimensions/category/source were already fixed at create/import time, and a retry re-runs the conversion job against those same stored inputs unchanged.

Each actor transitions to QUEUED, then PROCESSING when picked up by an executor, then READY or FAILED when the job completes.

Eligible starting statuses: FAILED or READY (to retry or re-run). Not eligible while a run is already in flight (QUEUED, PROCESSING) or CANCELLED.

Authorization (requires mimic:write:actors scope):

  • Admin Users: Can only start actors in their tenant. X-Tenant-ID header ignored.
  • Operations Users: Can start actors in any tenant. X-Tenant-ID header required.

Returns 409 if any actor is not in an eligible status.

Supports Idempotency-Key header for safe retries.

Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
actor_ids
required
Array of strings

IDs of the actors to start. Must be non-empty.

Responses

Request samples

Content type
application/json
{
  • "actor_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "items": [
    ]
}

Editor

Edit a reconstructed sequence with an augmentation container the calling user holds a GPU on.

Get the GPU allocation

The calling user's GPU allocation in this tenant. Poll after gpu:allocate until READY (or FAILED). Always 200: a user with no session gets status UNALLOCATED.

Authorization (requires mimic:read:editor scope).

Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "job_id": "453bd7d7-5355-4d6d-a38e-d9e7eb218c3f",
  • "status": "UNALLOCATED",
  • "created_at": "2019-08-24T14:15:22Z",
  • "started_at": "2019-08-24T14:15:22Z",
  • "error": {
    }
}

Allocate a GPU

Request a GPU for the calling user and start their augmentation session. Each user in a tenant holds their own session.

Asynchronous: returns as soon as the session is queued. Poll GET /v1/editor/gpu until READY. A missing executor shows up there as FAILED, not as an error here.

Idempotent -- if the user already has a session that is not UNALLOCATED or FAILED, that session is returned rather than starting a second one.

Authorization (requires mimic:write:editor scope).

Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "job_id": "453bd7d7-5355-4d6d-a38e-d9e7eb218c3f",
  • "status": "UNALLOCATED",
  • "created_at": "2019-08-24T14:15:22Z",
  • "started_at": "2019-08-24T14:15:22Z",
  • "error": {
    }
}

Release the GPU

Hand the GPU back, ending the calling user's augmentation session.

Idempotent -- releasing what was never held succeeds.

Authorization (requires mimic:write:editor scope).

Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string"
}

List the sequences the editor can open

List sequences whose reconstruction finished.

search matches the sequence name, case-insensitively. name matches it exactly, for a link that means one sequence. sequence_ids narrows to the sequences named, for a link that means particular ones whatever they are called.

Authorization (requires mimic:read:editor scope):

  • Admin Users: Lists sequences in their tenant (from JWT org_id). X-Tenant-ID header ignored.
  • Operations Users: Lists sequences in the specified tenant. X-Tenant-ID header required.
Authorizations:
OAuth2Auth
query Parameters
limit
integer <int32> [ 1 .. 200 ]
Default: 50

Maximum items to return. Server default: 50. Server maximum: 200.

cursor
string

Opaque continuation token from previous response.

search
string

Case-insensitive match on the sequence name.

name
string

Exact sequence name, for a link that means one sequence.

sequence_ids
Array of strings

Keep only the sequences with these ids.

header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "page": {
    }
}

List configurable export parameters

Returns the parameters accepted by setExportParameters's body, derived from the ExportParameters schema, so a client can render a form without hardcoding field names.

Static schema only.

Authorization (requires mimic:read:editor scope).

Authorizations:
OAuth2Auth

Responses

Response samples

Content type
application/json
{
  • "items": [
    ]
}

Rename a sequence

Rename a sequence. Nothing else about it changes.

Authorization (requires mimic:write:editor scope).

Authorizations:
OAuth2Auth
path Parameters
sequence_id
required
string <uuid>

The sequence to rename.

header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
name
required
string <= 255 characters

The new name. Not required to be unique -- capped at what a filesystem takes for one name: a sequence is named on screen and written to disk under that name.

Responses

Request samples

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "sequence_id": "7cd84c09-94f4-486c-9c49-de3b9cf3f74f",
  • "reconstruction_id": "b8b4f18f-1fee-4bf5-8e0c-3e50b159e778",
  • "name": "string",
  • "frame_count": 0,
  • "scene_actors": [
    ],
  • "cameras": [
    ],
  • "lidars": [
    ],
  • "radars": [
    ],
  • "export_parameters": {
    }
}

Select which loaded variant frames are rendered from

Select one variant of the package loadOplist put on the calling user's held augmentation container -- or, with variant_name omitted, the base scene -- so later getFrame calls render from it. Sends no oplists: every variant was already loaded.

A PUT: it replaces the current selection, and selecting the same variant twice leaves the same state.

Blocks (bounded) until the container reports the result. Returns 400 if no GPU is held, or with the container's message if it rejects the selection (e.g. a variant name not in the loaded package -- not checked here).

Authorization (requires mimic:write:editor scope).

Authorizations:
OAuth2Auth
path Parameters
sequence_id
required
string <uuid>

The baseline sequence to load or to apply its variant off of.

header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
variant_name
string

Which variant (or base reconstruction) is currently selected to apply

Responses

Request samples

Content type
application/json
{
  • "variant_name": "string"
}

Response samples

Content type
application/json
{
  • "errors": [
    ],
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string"
}

Set what a sequence is exported with

Set a sequence's export parameters: what everything exported from it is rendered with.

A replacement rather than a patch. Both values are always given, so there is no state where one is set and the other is unknown, and no order in which two of them have to be applied. Sending the same parameters twice is the same as sending them once.

Authorization (requires mimic:write:editor scope).

Authorizations:
OAuth2Auth
path Parameters
sequence_id
required
string <uuid>

The sequence to set them on.

header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
fix_visual_artifacts
required
boolean

Whether visual-artifact correction is applied. Off until turned on.

adapt_actors_style
required
boolean

Whether actor-style adaptation is applied. Off until turned on.

Responses

Request samples

Content type
application/json
{
  • "fix_visual_artifacts": true,
  • "adapt_actors_style": true
}

Response samples

Content type
application/json
{
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "sequence_id": "7cd84c09-94f4-486c-9c49-de3b9cf3f74f",
  • "reconstruction_id": "b8b4f18f-1fee-4bf5-8e0c-3e50b159e778",
  • "name": "string",
  • "frame_count": 0,
  • "scene_actors": [
    ],
  • "cameras": [
    ],
  • "lidars": [
    ],
  • "radars": [
    ],
  • "export_parameters": {
    }
}

Render one or more frames

One or more frames of the sequence currently loaded on the calling user's held augmentation session, drawn with the overlays given. Requires the calling user's GPU to be READY (see GET /v1/editor/gpu) -- returns 400 if none is held.

A POST because the overlays decide what is rendered: the same frame asked for with the lidar off is a different frame, not a filtered one.

Blocks until the augmentation container renders every requested frame (a bounded wait -- returns an error if that takes too long, rather than hanging indefinitely). Returns 400 with the container's message if it reports the render failed. Returns 409 if another frames request for the calling user's session is already in flight -- only one may run at a time per user (other users in the tenant hold their own sessions and are unaffected).

Authorization (requires mimic:read:editor scope).

Authorizations:
OAuth2Auth
path Parameters
sequence_id
required
string <uuid>

The sequence the frames belong to.

header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
frames
required
Array of integers <int32> [ items <int32 > ]

Indexes of the frames within the recording. Must be non-empty.

camera_indices
Array of integers <int32> [ items <int32 > ]

Camera indices to render. Omitted returns every camera configured in the augmentation job; an explicit empty list returns none.

include_gt
required
boolean

Whether to include the original validated sequence's images in the resulting glb files. note, this is used mainly for comparing side by side images in cameras.

include_3d
boolean

Tells the executor whether to include and embed radar and lidar data in the resulting frames. Used by the frontend to mask on/off the 3d view panel. Defaults to true if omitted

required
object

What the frames are to be drawn with.

Responses

Request samples

Content type
application/json
{
  • "frames": [
    ],
  • "camera_indices": [
    ],
  • "include_gt": true,
  • "include_3d": true,
  • "overlays": {
    }
}

Response samples

Content type
application/json
{
  • "files": {
    }
}

Load a sequence's scene onto the held GPU

Load this sequence's reconstructed scene (training output and validated data) onto the augmentation container the calling user currently holds a GPU on. Loads no variants -- see loadOplist -- e.g. to render the base scene on editor launch.

A POST rather than a PUT: a command to the container, not a replacement of a stored representation, and an expensive one (heavy object-storage reads) that a retry repeats.

Replaces whatever scene was previously loaded, and with it any loaded variants. Blocks (bounded) until the container reports the load's result. Returns 400 if no GPU is held, or with the container's message if it reports the load failed.

Authorization (requires mimic:write:editor scope).

Authorizations:
OAuth2Auth
path Parameters
sequence_id
required
string <uuid>

The sequence to load.

header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "errors": [
    ],
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string"
}

Load a variant package onto the held GPU's scene

Load a variant package onto the scene load put on the calling user's held augmentation container. Every variant is loaded at once; apply then picks one without resending them. Requires load to have been called first.

A PUT: the package wholesale replaces whatever package was loaded before, and sending the same one twice leaves the same state. Omitting oplists (or null) clears it, back to the base scene alone.

Blocks (bounded) until the container reports the load's result. Returns 400 if no GPU is held, if an external actor the package references is not READY in the library, or with the container's message if it reports the load failed.

Authorization (requires mimic:write:editor scope).

Authorizations:
OAuth2Auth
path Parameters
sequence_id
required
string <uuid>

The sequence to load.

header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
object or null

The entire oplist package to build on this sequence's scene. Omitted or null loads nothing.

Responses

Request samples

Content type
application/json
{
  • "oplists": {
    }
}

Response samples

Content type
application/json
{
  • "errors": [
    ],
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string"
}

Export

Export a reconstructed sequence's variants to storage, and track the runs that write them.

Send variants for export

Record the editor's selected variants as exports, ready to be started.

This creates rows only: no job is submitted and no tokens are held, so sending is free and the user decides later what to run. Every variant lands READY_TO_EXPORT.

The reconstruction must be READY -- a variant cannot be exported from a sequence that has not finished training.

Authorization (requires mimic:write:exports scope):

  • Admin Users: Sends exports in their tenant (from JWT org_id). X-Tenant-ID header ignored.
  • Operations Users: Sends exports in the specified tenant. X-Tenant-ID header required.
Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
reconstruction_id
required
string <uuid>

The reconstruction the variants were produced from. Must be READY.

required
Array of objects (MimicResources.SendExportVariant)

Variants to send. Must be non-empty.

Responses

Request samples

Content type
application/json
{
  • "reconstruction_id": "b8b4f18f-1fee-4bf5-8e0c-3e50b159e778",
  • "variants": [
    ]
}

Response samples

Content type
application/json
{
  • "items": [
    ]
}

List variants sent for export

List the tenant's export variants, newest run first by default.

Pass sort_by to choose the sort column, and the filters to narrow the list. A variant with no job yet is READY_TO_EXPORT and sorts with no started_at.

Authorization (requires mimic:read:exports scope):

  • Admin Users: Lists exports in their tenant (from JWT org_id). X-Tenant-ID header ignored.
  • Operations Users: Lists exports in the specified tenant. X-Tenant-ID header required.
Authorizations:
OAuth2Auth
query Parameters
limit
integer <int32> [ 1 .. 200 ]
Default: 50

Maximum items to return. Server default: 50. Server maximum: 200.

cursor
string

Opaque continuation token from previous response.

search
string
status
string (MimicResources.ExportStatus)
Enum: "READY_TO_EXPORT" "IN_QUEUE" "IN_PROGRESS" "COMPLETED" "FAILED"

State of a variant's export.

tag_ids
Array of strings
started_after
string <date-time>
started_before
string <date-time>
sort_by
string
Default: "STARTED_AT"
Enum: "SEQUENCE_NAME" "SCRIPT_NAME" "VARIANT_NAME" "STATUS" "PROGRESS" "STARTED_AT" "COMPLETED_AT"

Sortable columns for ExportsAPI.list's sort_by query parameter.

order
string
Default: "DESC"
Enum: "ASC" "DESC"

Direction for a sorted list endpoint's order query parameter.

header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "page": {
    }
}

Start exporting variants

Start an export run for each of the given variants.

Every id is checked before any run starts: if one is not READY_TO_EXPORT the whole request is refused and nothing is started, so a batch never half-runs. Tokens are held per variant and released if any later one fails.

Authorization (requires mimic:write:exports scope):

  • Admin Users: Starts exports in their tenant (from JWT org_id). X-Tenant-ID header ignored.
  • Operations Users: Starts exports in the specified tenant. X-Tenant-ID header required.
Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
export_ids
required
Array of strings

Variants to export. Each must be READY_TO_EXPORT. Must be non-empty.

Responses

Request samples

Content type
application/json
{
  • "export_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "items": [
    ]
}

Where this instance writes exports

The storage location this tenant's exports are written to.

Read-only, and specific to the calling tenant: the instance configures the bucket, the tenant's own prefix gives the rest. The grid shows it so the user does not have to go looking for it.

Authorization (requires mimic:read:exports scope):

  • Admin Users: Their own tenant's destination. X-Tenant-ID header ignored.
  • Operations Users: The specified tenant's destination. X-Tenant-ID header required.
Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "path": "string"
}

Attach tags to exports

Attach every listed tag to every listed export, so that a multi-row selection produces one request instead of one per pair.

Authorization (requires mimic:write:tags scope).

Idempotent: pairs that are already attached are left alone. Returns 404 if any tag or export does not exist.

Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
tag_ids
required
Array of strings

The tags to apply. Must be non-empty.

export_ids
required
Array of strings

The exports to apply them to. Must be non-empty.

Responses

Request samples

Content type
application/json
{
  • "tag_ids": [
    ],
  • "export_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "errors": [
    ],
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string"
}

Detach tags from exports

Detach every listed tag from every listed export.

Authorization (requires mimic:write:tags scope).

Idempotent: pairs that are not attached are left alone. Returns 404 if any tag or export does not exist.

Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
tag_ids
required
Array of strings

The tags to apply. Must be non-empty.

export_ids
required
Array of strings

The exports to apply them to. Must be non-empty.

Responses

Request samples

Content type
application/json
{
  • "tag_ids": [
    ],
  • "export_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "errors": [
    ],
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string"
}

Get one export by ID

Retrieve a single export variant by ID.

Authorization (requires mimic:read:exports scope):

  • Admin Users: Can only read exports in their tenant. X-Tenant-ID header ignored.
  • Operations Users: Can read exports in any tenant. X-Tenant-ID header required.

Returns 404 if not found or soft-deleted.

Authorizations:
OAuth2Auth
path Parameters
export_id
required
string <uuid>
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "export_id": "a9a55f8d-48b1-4a5b-a88e-c41b0cd75102",
  • "reconstruction_id": "b8b4f18f-1fee-4bf5-8e0c-3e50b159e778",
  • "sequence_name": "string",
  • "script_name": "string",
  • "variant_name": "string",
  • "frames": {
    },
  • "status": "READY_TO_EXPORT",
  • "progress": 0,
  • "tag_ids": [
    ],
  • "started_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "job_id": "453bd7d7-5355-4d6d-a38e-d9e7eb218c3f",
  • "error_message": "string",
  • "fix_visual_artifacts": true,
  • "adapt_actors_style": true
}

Remove an export from the list

Soft-delete an export variant.

An in-flight run is cancelled, then the files it wrote are permanently deleted.

Authorization (requires mimic:write:exports scope):

  • Admin Users: Can only delete exports in their tenant. X-Tenant-ID header ignored.
  • Operations Users: Can delete exports in any tenant. X-Tenant-ID header required.
Authorizations:
OAuth2Auth
path Parameters
export_id
required
string <uuid>
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "errors": [
    ],
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string"
}

List what an export wrote

The files this export's run wrote, each with a presigned download URL, for the client to save wherever the user chose.

Empty until the run has uploaded anything, which in practice means until it is COMPLETED. The URLs are short-lived: list again rather than keeping them, and expect a long download to need a fresh listing partway.

Authorization (requires mimic:read:exports scope):

  • Admin Users: Can only list exports in their tenant. X-Tenant-ID header ignored.
  • Operations Users: Can list exports in any tenant. X-Tenant-ID header required.

Returns 404 if not found or soft-deleted.

Authorizations:
OAuth2Auth
path Parameters
export_id
required
string <uuid>
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "files": [
    ]
}

Run failed exports again

Start a new run for each of the given variants, which must all be FAILED.

Checked and reserved as a batch, exactly like start: one id that is not FAILED refuses the whole request, so a stale grid cannot restart a run that is already going.

The run writes to the same location as the one that failed, so whatever the failed run managed to upload stays where the client already expects to find it. The executor has no frame-level resume, so the new run re-renders the variant's whole frame range and progress starts again at zero.

Authorization (requires mimic:write:exports scope):

  • Admin Users: Resumes exports in their tenant (from JWT org_id). X-Tenant-ID header ignored.
  • Operations Users: Resumes exports in the specified tenant. X-Tenant-ID header required.
Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
export_ids
required
Array of strings

Variants to resume. Each must be FAILED. Must be non-empty.

Responses

Request samples

Content type
application/json
{
  • "export_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "items": [
    ]
}

Category

Tenant-wide category registry.

List categories

List the tenant's actor-category registry.

One registry per tenant: the same categories are available to every actor in the library, so there is nothing to scope this call by.

Authorization (requires mimic:read:categories scope).

Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ]
}

Create a category

Add a category to the tenant's registry.

Authorization (requires mimic:write:categories scope).

Returns 409 if a category with the same name (case-insensitive) already exists.

Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
name
required
string

Display name for the new category.

Responses

Request samples

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "category_id": "8de4c9fd-61a4-4c0b-bf88-0ed3a0fe3fa2",
  • "name": "string"
}

Rename a category

Rename a category. The new name applies everywhere the category is attached.

Authorization (requires mimic:write:categories scope).

Returns 409 if another category already uses the new name.

Authorizations:
OAuth2Auth
path Parameters
category_id
required
string <uuid>
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
name
required
string

New display name.

Responses

Request samples

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "category_id": "8de4c9fd-61a4-4c0b-bf88-0ed3a0fe3fa2",
  • "name": "string"
}

Delete a category

Remove a category from the registry.

Authorization (requires mimic:write:categories scope).

Returns 409 if the category is still assigned to an actor. Detaching is an explicit act, so a delete never silently strips the category off rows the caller cannot see.

Idempotent otherwise: returns 204 even if the category does not exist.

Authorizations:
OAuth2Auth
path Parameters
category_id
required
string <uuid>
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string"
}

Attach categories to actors

Attach every listed category to every listed actor, so that a multi-row selection produces one request instead of one per pair.

Authorization (requires mimic:write:categories scope).

Idempotent: pairs that are already attached are left alone. Returns 404 if any category or actor does not exist.

Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
category_ids
required
Array of strings

The categories to apply. Must be non-empty.

actor_ids
required
Array of strings

The actors to apply them to. Must be non-empty.

Responses

Request samples

Content type
application/json
{
  • "category_ids": [
    ],
  • "actor_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "errors": [
    ],
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string"
}

Detach categories from actors

Detach every listed category from every listed actor.

Authorization (requires mimic:write:categories scope).

Idempotent: pairs that are not attached are left alone. Returns 404 if any category or actor does not exist.

Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
category_ids
required
Array of strings

The categories to apply. Must be non-empty.

actor_ids
required
Array of strings

The actors to apply them to. Must be non-empty.

Responses

Request samples

Content type
application/json
{
  • "category_ids": [
    ],
  • "actor_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "errors": [
    ],
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string"
}

Tag

Tenant-wide tag registry.

List tags

List the tenant's tag registry.

One registry per tenant: the same tags are available to every validation and reconstruction, so there is nothing to scope this call by.

Authorization (requires mimic:read:tags scope).

Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "tags": [
    ]
}

Create a tag

Add a tag to the tenant's registry.

Authorization (requires mimic:write:tags scope).

Returns 409 if a tag with the same name (case-insensitive) already exists.

Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
name
required
string

Display name for the new tag.

Responses

Request samples

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "tag_id": "39c8a0b3-fbe8-4801-95bf-e8a0792edf1d",
  • "name": "string"
}

Rename a tag

Rename a tag. The new name applies everywhere the tag is attached.

Authorization (requires mimic:write:tags scope).

Returns 409 if another tag already uses the new name.

Authorizations:
OAuth2Auth
path Parameters
tag_id
required
string <uuid>
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
name
required
string

New display name.

Responses

Request samples

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "tag_id": "39c8a0b3-fbe8-4801-95bf-e8a0792edf1d",
  • "name": "string"
}

Delete a tag

Remove a tag from the registry.

Authorization (requires mimic:write:tags scope).

Returns 409 if the tag is still assigned to a validation or reconstruction. Detaching is an explicit act, so a delete never silently strips the tag off rows the caller cannot see.

Idempotent otherwise: returns 204 even if the tag does not exist.

Authorizations:
OAuth2Auth
path Parameters
tag_id
required
string <uuid>
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string"
}

Job

Generic, cross-resource job management.

List Jobs

List jobs for the authenticated tenant.

Authorization (requires mimic:read:jobs scope):

  • Admin Users: Lists jobs in their tenant (from JWT org_id). X-Tenant-ID header ignored.
  • Operations Users: Lists jobs in specified tenant. X-Tenant-ID header required.

Returns jobs ordered by created_at DESC (newest first), with stable tie-breaking by id ASC. Jobs in all statuses are included (QUEUED, RUNNING, SUCCEEDED, FAILED, CANCELLED, etc.).

Use the cursor parameter to paginate through results. The page.next field in the response contains an opaque cursor for the next page.

Authorizations:
OAuth2Auth
query Parameters
limit
integer <int32> [ 1 .. 200 ]
Default: 50

Maximum items to return. Server default: 50. Server maximum: 200.

cursor
string

Opaque continuation token from previous response.

header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "page": {
    }
}

Get a Job by ID

Retrieve a single job by ID.

Authorization (requires mimic:read:jobs scope):

  • Admin Users: Can only read jobs in their tenant. X-Tenant-ID header ignored.
  • Operations Users: Can read jobs in any tenant. X-Tenant-ID header required.

Returns 404 if job not found or not in target tenant.

Authorizations:
OAuth2Auth
path Parameters
job_id
required
string <uuid>
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
Example
{
  • "status": "QUEUED",
  • "value": {
    }
}

Get a job's log lines

Retrieve every stdout/stderr line recorded for this job so far, oldest first, in a single response.

Authorization (requires mimic:read:jobs scope):

  • Admin Users: Can only read logs for jobs in their tenant. X-Tenant-ID header ignored.
  • Operations Users: Can read logs for jobs in any tenant. X-Tenant-ID header required.

Returns 404 if job not found or not in target tenant.

Authorizations:
OAuth2Auth
path Parameters
job_id
required
string <uuid>
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ]
}

Get a job's full metrics history

Retrieve every metrics frame recorded for this job so far, oldest first, in a single response. Generalizes across any job kind that reports metrics -- currently only RECONSTRUCT.

Returns 400 if this job's type never reports metrics. Returns an empty list (not 404) if the job's type supports metrics but none have arrived yet.

Authorization (requires mimic:read:jobs scope):

  • Admin Users: Can only read metrics for jobs in their tenant. X-Tenant-ID header ignored.
  • Operations Users: Can read metrics for jobs in any tenant. X-Tenant-ID header required.

Returns 404 if job not found or not in target tenant.

Authorizations:
OAuth2Auth
path Parameters
job_id
required
string <uuid>
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Responses

Response samples

Content type
application/json
{
  • "metrics": [
    ]
}

Cancel a job

Cancels a job if it is in a cancellable state (QUEUED, ASSIGNED, RUNNING).

Authorization (requires mimic:write:jobs scope):

  • Admin Users: Can cancel jobs in their tenant. X-Tenant-ID header ignored.

  • Operations Users: Can cancel jobs in any tenant. X-Tenant-ID header required.

  • QUEUED: Cancelled immediately, no executor involved

  • ASSIGNED: Cancelled immediately, cancel message sent to executor

  • RUNNING: Transitioned to CANCELLING, cancel message sent to executor

  • Terminal states (SUCCEEDED, FAILED, CANCELLED): Returns 409 Conflict

  • CANCELLING: Returns 409 Conflict

soft_timeout: Maximum time to wait for graceful process termination before force-kill. Optional, defaults to 10s, maximum 5m.

Authorizations:
OAuth2Auth
header Parameters
X-Tenant-ID
string

Auth0 Organization ID of the target tenant (e.g., 'org_abc123'). Required for Operations Users.

Request Body schema: application/json
required
job_id
required
string <uuid>

Job ID to cancel

soft_timeout
string

Timeout for graceful termination (default: 10s, max: 5m). Format: duration string (e.g., '30s', '1m')

Responses

Request samples

Content type
application/json
{
  • "job_id": "453bd7d7-5355-4d6d-a38e-d9e7eb218c3f",
  • "soft_timeout": "string"
}

Response samples

Content type
application/json
Example
{
  • "status": "QUEUED",
  • "value": {
    }
}

Executor

Service-to-service endpoints executor-daemon instances use to self-register and deregister. See ADR-0016.

Register a new executor

Mint a fresh executor identity and return the NATS .creds the daemon uses to connect.

Server-generated identity: the public_id in the response is generated by mimic-api on every call. A daemon that wants a stable identity must persist the returned public_id and pass it to DELETE /v1/executors/{public_id} at shutdown.

Side effects: creates the executor row (in offline status until the daemon publishes its first heartbeat), creates the three per-executor JetStream consumers in mimic-control, and mints a .creds NATS user JWT + NKey. All committed atomically — on any error the caller can safely retry with a new request (each retry produces a fresh identity).

Authentication: Auth0 M2M client_credentials token with the mimic:register:executors scope. Not tenant-scoped — the caller identifies the target tenant via tenant_slug in the body, matching the CLI mint semantics.

Returns 400 if name is empty or tenant_slug refers to an unknown tenant. Returns 409 if an executor with the given name already exists in the target scope (within the same tenant for single-tenant registrations, globally for multi-tenant).

Authorizations:
OAuth2Auth_
Request Body schema: application/json
required
name
required
string

Human-readable name for the executor, surfaced in observability and mimic-api logs. Not required to be unique; the server-generated public_id is the identity.

tenant_slug
string

Optional tenant slug for single-tenant executors. Omit for multi-tenant. Behaves the same way as the --tenant-slug flag on the CLI mint command.

executor_class
string

Optional executor class declaring which pool this executor belongs to (ADR-0020). Slug format (^[a-z0-9]([a-z0-9-]*[a-z0-9])?$). If omitted, mimic-api applies its configured default (MIMIC_API_DEFAULT_EXECUTOR_CLASS) and logs a deprecation warning — the field is expected to become required once every daemon deployment carries the value.

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "tenant_slug": "string",
  • "executor_class": "string"
}

Response samples

Content type
application/json
{
  • "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
  • "nats_creds": "string"
}

Get an executor

Read the current status of an executor by public_id.

Intended consumer: operator tooling that polls after a POST to confirm the daemon came online. The Ansible verify role described in ADR-0022 uses this endpoint as its mimic-api round-trip exit criterion — "playbook done" means "mimic-api reports the just-provisioned executor as ready."

Authentication: same mimic:register:executors M2M scope as register/deregister — the daemon that mints and reaps an identity is the same principal that reads its status.

Returns 404 if no executor with that public_id exists. Returns 200 for any status including deregistered; the status field tells the caller what state the executor is in. Does not reveal .creds material.

Authorizations:
OAuth2Auth__
path Parameters
public_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
  • "name": "string",
  • "executor_class": "string",
  • "status": "ready",
  • "last_heartbeat_at": "2019-08-24T14:15:22Z",
  • "tenant_slug": "string"
}

Deregister an executor

Mark an executor as deregistered — a terminal status distinct from offline.

offline means "temporarily unreachable, may come back with the same identity." deregistered means "the daemon has voluntarily gone away for good; do not assign jobs, do not resurrect on reconciliation." Job-assignment queries filter on status = 'ready', so a deregistered executor stops receiving assignments immediately. Existing assignments in flight when this is called are not cancelled here — the caller (daemon shutdown) is expected to drain them first via its own graceful-shutdown path.

Soft-delete: the DB row, JetStream consumers, and .creds secret are all left in place for post-mortem. A future GC pass may hard-delete deregistered executors older than some retention window.

Authentication: same as register.

Idempotent: returns 204 whether the executor exists, is already deregistered, or was never registered. A daemon shutting down does not need to know whether it successfully registered in the first place.

Authorizations:
OAuth2Auth___
path Parameters
public_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "type": "string",
  • "title": "string",
  • "status": 0,
  • "detail": "string",
  • "instance": "string"
}

Potentially Used in the Future

Not used by any client today. Kept for possible future use, e.g. importing sequences directly in the Mimic UI.