{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/couchbase/main/json-schema/couchbase-search-index-definition-schema.json",
  "title": "SearchIndexDefinition",
  "description": "Full Text Search index definition",
  "x-generated": "2026-10-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/couchbase-search-indexes-api-openapi.yml#/components/schemas/SearchIndexDefinition",
  "type": "object",
  "required": [
    "name",
    "type",
    "sourceName"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "Name of the search index"
    },
    "type": {
      "type": "string",
      "description": "Type of the index",
      "enum": [
        "fulltext-index",
        "fulltext-alias"
      ]
    },
    "sourceName": {
      "type": "string",
      "description": "Name of the source bucket"
    },
    "sourceType": {
      "type": "string",
      "description": "Type of the data source",
      "default": "couchbase"
    },
    "sourceUUID": {
      "type": "string",
      "description": "UUID of the source bucket"
    },
    "planParams": {
      "type": "object",
      "description": "Index partition and replication plan",
      "properties": {
        "maxPartitionsPerPIndex": {
          "type": "integer",
          "description": "Maximum partitions per index partition"
        },
        "numReplicas": {
          "type": "integer",
          "description": "Number of index replicas",
          "minimum": 0
        },
        "indexPartitions": {
          "type": "integer",
          "description": "Number of index partitions"
        }
      }
    },
    "params": {
      "type": "object",
      "description": "Index configuration parameters",
      "properties": {
        "mapping": {
          "type": "object",
          "description": "Type mapping configuration",
          "properties": {
            "default_mapping": {
              "type": "object",
              "description": "Default type mapping",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Whether the default mapping is enabled"
                },
                "dynamic": {
                  "type": "boolean",
                  "description": "Whether to dynamically index all fields"
                }
              }
            },
            "types": {
              "type": "object",
              "description": "Named type mappings",
              "additionalProperties": {
                "type": "object"
              }
            },
            "default_analyzer": {
              "type": "string",
              "description": "Default analyzer for the index"
            },
            "default_type": {
              "type": "string",
              "description": "Default type for documents"
            }
          }
        },
        "doc_config": {
          "type": "object",
          "description": "Document configuration",
          "properties": {
            "mode": {
              "type": "string",
              "description": "Document type identification mode",
              "enum": [
                "scope.collection.type_field",
                "scope.collection.docid_prefix",
                "scope.collection.docid_regexp",
                "type_field",
                "docid_prefix",
                "docid_regexp"
              ]
            }
          }
        },
        "store": {
          "type": "object",
          "description": "Store configuration",
          "properties": {
            "indexType": {
              "type": "string",
              "description": "Index storage type",
              "enum": [
                "scorch"
              ]
            }
          }
        }
      }
    },
    "uuid": {
      "type": "string",
      "description": "UUID of the index"
    }
  }
}