{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "#/components/schemas/Field",
  "title": "Field",
  "type": "object",
  "required": [
    "name",
    "type"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "Name of the field."
    },
    "type": {
      "type": "string",
      "description": "Data type of the field. Supported types include string, int32, int64, float, bool, string[], int32[], int64[], float[], bool[], auto, object, object[], geopoint, geopoint[], image.",
      "enum": [
        "string",
        "int32",
        "int64",
        "float",
        "bool",
        "string[]",
        "int32[]",
        "int64[]",
        "float[]",
        "bool[]",
        "auto",
        "object",
        "object[]",
        "geopoint",
        "geopoint[]",
        "image"
      ]
    },
    "optional": {
      "type": "boolean",
      "description": "Whether this field is optional in documents."
    },
    "facet": {
      "type": "boolean",
      "description": "Whether this field can be used for faceting."
    },
    "index": {
      "type": "boolean",
      "description": "Whether this field should be indexed for search."
    },
    "sort": {
      "type": "boolean",
      "description": "Whether this field can be used for sorting."
    },
    "infix": {
      "type": "boolean",
      "description": "Whether infix search is enabled for this field."
    },
    "locale": {
      "type": "string",
      "description": "Locale for language-specific tokenization."
    },
    "reference": {
      "type": "string",
      "description": "Reference to a field in another collection for JOINs."
    },
    "num_dim": {
      "type": "integer",
      "description": "Number of dimensions for vector fields."
    },
    "store": {
      "type": "boolean",
      "description": "Whether to store the field value for retrieval."
    },
    "range_index": {
      "type": "boolean",
      "description": "Whether to build a range index for this field."
    },
    "stem": {
      "type": "boolean",
      "description": "Whether stemming is enabled for this field."
    },
    "stem_dictionary": {
      "type": "string",
      "description": "Name of the custom stemming dictionary to use."
    },
    "drop": {
      "type": "boolean",
      "description": "Whether to drop this field during a schema update."
    },
    "vec_dist": {
      "type": "string",
      "description": "Distance metric for vector fields.",
      "enum": [
        "cosine",
        "ip"
      ]
    },
    "embed": {
      "type": "object",
      "description": "Embedding configuration for auto-generating vector embeddings.",
      "properties": {
        "from": {
          "type": "array",
          "description": "Field names to generate embeddings from.",
          "items": {
            "type": "string"
          }
        },
        "model_config": {
          "type": "object",
          "description": "Model configuration for embedding generation.",
          "properties": {
            "model_name": {
              "type": "string",
              "description": "Name of the embedding model."
            },
            "api_key": {
              "type": "string",
              "description": "API key for external embedding services."
            },
            "url": {
              "type": "string",
              "description": "URL of the embedding service."
            }
          }
        }
      }
    }
  }
}