v10

latestOpenAPI 3.1.02026-08-085671,1112.8 MB
Manifest

Apply Manifest

Apply a YAML manifest to create resources.

Creates all resources defined in the manifest file in dependency order. Fails if any resource already exists (create-only mode). Performs automatic rollback if any resource creation fails.

Features:

  • Topological sorting ensures resources are created in correct dependency order
  • Secret references (${{ secrets.NAME }}) are resolved from organization secrets
  • Atomic operation: rolls back all created resources if any creation fails
  • Dry run mode validates the manifest without making changes

Example:

curl -X POST /v1/manifest/apply \
  -H "Authorization: Bearer $API_KEY" \
  -H "X-Namespace: ns_xxx" \
  -F "manifest_file=@mixpeek.yaml"

Example manifest:

version: "1.0"
metadata:
  name: "my-environment"

namespaces:
  - name: video_search
    feature_extractors:
      - name: multimodal_extractor
        version: v1

buckets:
  - name: raw_videos
    namespace: video_search
    schema:
      properties:
        video: { type: video }
post/v1/manifest/apply

Query parameters

dry_runboolean

Validate only, don't create resources

Validate only, don't create resources

Response

Successful Response

successboolean required

Whether all resources were created successfully

created_countinteger

Number of resources created

failed_countinteger

Number of resources that failed

skipped_countinteger

Number of resources skipped

errorsstring[]

Error messages

warningsstring[]

Non-fatal issues found while PARSING the manifest, chiefly keys the parser had to drop. MG-1435: the parser already detects these and /validate and /lint already surface them, but /apply computed them and threw them away — so anyone applying without validating first got a 201 and no hint that part of their manifest was ignored. A collection-level field_passthrough: is the case that cost a customer POC: detected, described, discarded.

rollback_performedboolean

Whether a rollback was ATTEMPTED after a failure. MG-1440: this used to read as 'the namespace was returned to its prior state', which it does not mean — rollback deletes only namespaces and buckets today, so any other resource created before the failure SURVIVES. Read rollback_orphans to find out what is still there.

rollback_orphansstring[]

Resources created before the failure that rollback did NOT delete, as '<type>/<id>'. Non-empty means the namespace is in a PARTIAL state and a straight retry will hit AlreadyExists on these. MG-1440: previously these were silently skipped while rollback_performed=true claimed otherwise, which is the state that had to be unpicked by hand on the Radio-Canada POC.

dry_runboolean

Whether this was a dry run (no changes made)

Example response

{
  "created_count": 2,
  "dry_run": false,
  "errors": [],
  "failed_count": 0,
  "resources": [
    {
      "name": "video_search",
      "resource_id": "ns_abc123",
      "resource_type": "namespace",
      "status": "created"
    },
    {
      "name": "raw_videos",
      "resource_id": "bkt_xyz789",
      "resource_type": "bucket",
      "status": "created"
    }
  ],
  "rollback_performed": false,
  "skipped_count": 0,
  "success": true
}