Manifest

Lint a YAML manifest for best practices and potential issues.

Goes beyond basic validation to provide actionable suggestions for improving your manifest configuration. This endpoint is designed for AI agents and developers who want to optimize their Mixpeek setup.

Lint Rules:

  • UNUSED_EXTRACTOR: Feature extractor defined but not used by any collection
  • UNUSED_COLLECTION: Collection not referenced by any retriever
  • MISSING_INPUT_SCHEMA: Retriever uses templates but has no input_schema
  • SUBOPTIMAL_STAGE_ORDER: Filter stages after expensive operations
  • DUPLICATE_FEATURE_URI: Same feature searched multiple times
  • MISSING_DESCRIPTION: Resources without descriptions
  • NO_SEARCH_STAGE: Retriever with no search stages
  • EXTRACTOR_NOT_IN_NAMESPACE: Collection uses extractor not in namespace
  • MISSING_SECRET: Secret reference not configured
  • UNUSED_BUCKET: Bucket that no collection reads
  • TAXONOMY_INPUT_NOT_WRITTEN: Taxonomy reads a feature its collection does not write
  • RETRIEVER_FEATURE_NOT_IN_COLLECTIONS: Retriever searches a feature none of its collections write

Severity Levels:

  • error: Must be fixed before applying
  • warning: Best practice violation, should be fixed
  • info: Suggestion for improvement

Example:

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

Response includes actionable suggestions:

{
  "valid": true,
  "results": [
    {
      "code": "MISSING_INPUT_SCHEMA",
      "severity": "warning",
      "message": "Retriever 'product_search' uses template variables but has no input_schema defined",
      "location": "retrievers[0]",
      "suggestion": "Define input_schema to document and validate retriever inputs",
      "fix_example": "input_schema:\n  type: object\n  properties:\n    query:\n      type: string"
    }
  ],
  "summary": {"error": 0, "warning": 1, "info": 0}
}
post/v1/manifest/lint

Request

  • Base URL: https://api.mixpeek.com
  • URL: https://api.mixpeek.com/v1/manifest/lint
  • Auth: HTTP bearer

Query parameters

skip_rulesstring[]

Rule codes to skip (e.g., MISSING_DESCRIPTION)

Request body multipart/form-data

manifest_filestring binary required

YAML manifest file

parametersstring nullable

JSON object of values for the manifest's declared parameters, e.g. {"camera_url": "rtsp://host/stream", "polling_seconds": 300}. Each value must match its declared type. Omit when the manifest declares none.

Response

Successful Response

validboolean required

Whether the manifest is valid (no errors, warnings OK)

summaryobject

Count of results by severity

Example response

{
  "results": [
    {
      "code": "UNUSED_COLLECTION",
      "location": "collections[2]",
      "message": "Collection 'orphan_data' is not referenced by any retriever",
      "severity": "warning",
      "suggestion": "Add a retriever that uses this collection or remove it"
    }
  ],
  "summary": {
    "error": 0,
    "info": 0,
    "warning": 1
  },
  "valid": true
}

Changes

    • info

      added the new optional request property

    • warning

      removed the optional property from the response with the status

    • info

      added the non-success response with the status

    • info

      added the non-success response with the status

    • info

      added the optional property to the response with the status

    • info

      added the required property to the response with the status

    • info

      added the required property to the response with the status