{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/trymnemo-com/json-schema/trymnemo-com-embed-response-schema.json",
  "title": "EmbedResponse",
  "x-generated": "2026-11-13",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/trymnemo-com-openapi.json#/components/schemas/EmbedResponse",
  "type": "object",
  "required": [
    "vector_uid",
    "watermarked_vector",
    "created_at",
    "dimensions"
  ],
  "properties": {
    "vector_uid": {
      "type": "string",
      "description": "Identifier of the registered object. Use it with getLineage and as `parent.vector_uid`; verify returns it when a vector resolves to this object."
    },
    "watermarked_vector": {
      "type": "array",
      "items": {
        "type": "number"
      },
      "description": "A measurably perturbed, unit-length watermarked copy of your input, with the same number of dimensions. Store and use it in place of your original: it carries the identity and is the vector that verifies."
    },
    "created_at": {
      "type": "string",
      "description": "When the object was registered (ISO 8601, UTC)."
    },
    "dimensions": {
      "type": "integer",
      "description": "Length of `watermarked_vector`; equals the input length."
    },
    "subject_proof": {
      "oneOf": [
        {
          "$ref": "#/$defs/SubjectProof"
        },
        {
          "type": "null"
        }
      ],
      "description": "Present only when a `subject` was supplied and accepted; pass it back unchanged as `subject_proof` on verify."
    },
    "lineage": {
      "oneOf": [
        {
          "$ref": "#/$defs/EmbedLineage"
        },
        {
          "type": "null"
        }
      ],
      "description": "Present only when a `parent` was supplied and verified: the derivation recorded for this object."
    },
    "namespace_expires_at": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time",
      "description": "With a namespace capability: the namespace's `expires_at`; on a funded namespace, its `retained_until`. null with an API key."
    },
    "namespace_state": {
      "type": [
        "string",
        "null"
      ],
      "description": "With a namespace capability: the namespace's lifecycle state. null with an API key."
    },
    "warning": {
      "oneOf": [
        {
          "$ref": "#/$defs/ExpiryWarning"
        },
        {
          "type": "null"
        }
      ],
      "description": "The one expiry warning of a namespace, attached once; null otherwise."
    }
  },
  "$defs": {
    "EmbedLineage": {
      "type": "object",
      "required": [
        "parent_uid",
        "relation",
        "depth"
      ],
      "properties": {
        "parent_uid": {
          "type": "string",
          "description": "The verified parent's `vector_uid`."
        },
        "relation": {
          "type": "string",
          "description": "The relation recorded for this derivation."
        },
        "depth": {
          "type": "integer",
          "description": "This object's depth in its chain: the parent's depth + 1 (a root is 0)."
        }
      }
    },
    "ExpiryWarning": {
      "type": "object",
      "description": "Attached once, to the first response after 75% of the lifetime has passed. On a funded namespace (burst_500) the one warning comes with the last 24 hours of retention (the grace), on the status call, and its expires_at is retained_until.",
      "required": [
        "code",
        "expires_at",
        "seconds_remaining",
        "action_required",
        "data_after_expiry"
      ],
      "properties": {
        "code": {
          "type": "string",
          "enum": [
            "EPHEMERAL_STORAGE_EXPIRING"
          ]
        },
        "expires_at": {
          "type": "string",
          "format": "date-time"
        },
        "seconds_remaining": {
          "type": "integer"
        },
        "action_required": {
          "type": "string",
          "enum": [
            "upgrade_to_persistent"
          ]
        },
        "data_after_expiry": {
          "type": "string",
          "enum": [
            "purged"
          ]
        }
      }
    },
    "SubjectProof": {
      "type": "object",
      "additionalProperties": true,
      "description": "Opaque. Pass back unchanged as `subject_proof` on verify."
    }
  }
}