{
  "openapi": "3.1.0",
  "info": {
    "title": "meilisearch",
    "description": "Meilisearch HTTP server",
    "contact": {
      "name": "Quentin de Quelen",
      "email": "quentin@dequelen.me"
    },
    "license": {
      "name": "MIT",
      "identifier": "MIT"
    },
    "version": "1.53.0"
  },
  "servers": [
    {
      "url": "http://localhost:7700",
      "description": "Local server."
    }
  ],
  "paths": {
    "/batches": {
      "get": {
        "tags": [
          "Async task management"
        ],
        "summary": "List batches",
        "description": "Meilisearch groups compatible tasks ([asynchronous operations](https://www.meilisearch.com/docs/learn/async/asynchronous_operations)) into batches for efficient processing.\n\nFor example, multiple document additions to the same index may be batched together. List batches to monitor their progress and performance.\n\nBatches are always returned in descending order of uid. This means that by default, the most recently created batch objects appear first. Batch results are paginated and can be filtered with query parameters.",
        "operationId": "get_batches",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of batches to return.",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "u-int32",
              "default": 20,
              "minimum": 0
            },
            "example": 12
          },
          {
            "name": "from",
            "in": "query",
            "description": "`uid` of the first batch returned.",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "u-int32",
              "minimum": 0
            },
            "example": 12421
          },
          {
            "name": "reverse",
            "in": "query",
            "description": "If `true`, returns results in the reverse order, from oldest to most recent.",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "example": true
          },
          {
            "name": "batchUids",
            "in": "query",
            "description": "Permits to filter tasks by their batch uid. By default, when the\n`batchUids` query parameter is not set, all task uids are returned.\nIt's possible to specify several batch uids by separating them with\nthe `,` character.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "u-int32",
                "minimum": 0
              }
            },
            "example": [
              1,
              2,
              3
            ]
          },
          {
            "name": "uids",
            "in": "query",
            "description": "Permits to filter tasks by their uid. By default, when the uids query\nparameter is not set, all task uids are returned. It's possible to\nspecify several uids by separating them with the `,` character.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "u-int32",
                "minimum": 0
              }
            },
            "example": [
              231,
              423,
              598
            ]
          },
          {
            "name": "canceledBy",
            "in": "query",
            "description": "Permits to filter tasks using the uid of the task that canceled them.\nIt's possible to specify several task uids by separating them with\nthe `,` character.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "u-int32",
                "minimum": 0
              }
            },
            "example": [
              374
            ]
          },
          {
            "name": "types",
            "in": "query",
            "description": "Permits to filter tasks by their related type. By default, when `types`\nquery parameter is not set, all task types are returned. It's possible\nto specify several types by separating them with the `,` character.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "example": [
              "documentAdditionOrUpdate"
            ]
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Permits to filter tasks by their status. By default, when `statuses`\nquery parameter is not set, all task statuses are returned. It's\npossible to specify several statuses by separating them with the `,`\ncharacter.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/Status"
              }
            },
            "example": [
              "succeeded",
              "failed",
              "canceled",
              "enqueued",
              "processing"
            ]
          },
          {
            "name": "indexUids",
            "in": "query",
            "description": "Permits to filter tasks by their related index. By default, when\n`indexUids` query parameter is not set, the tasks of all the indexes\nare returned. It is possible to specify several indexes by separating\nthem with the `,` character.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "example": [
              "movies",
              "theater"
            ]
          },
          {
            "name": "afterEnqueuedAt",
            "in": "query",
            "description": "Permits to filter tasks based on their enqueuedAt time. Matches tasks\nenqueued after the given date. Supports RFC 3339 date format.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2024-08-08T16:37:09.971Z"
          },
          {
            "name": "beforeEnqueuedAt",
            "in": "query",
            "description": "Permits to filter tasks based on their enqueuedAt time. Matches tasks\nenqueued before the given date. Supports RFC 3339 date format.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2024-08-08T16:37:09.971Z"
          },
          {
            "name": "afterStartedAt",
            "in": "query",
            "description": "Permits to filter tasks based on their startedAt time. Matches tasks\nstarted after the given date. Supports RFC 3339 date format.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2024-08-08T16:37:09.971Z"
          },
          {
            "name": "beforeStartedAt",
            "in": "query",
            "description": "Permits to filter tasks based on their startedAt time. Matches tasks\nstarted before the given date. Supports RFC 3339 date format.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2024-08-08T16:37:09.971Z"
          },
          {
            "name": "afterFinishedAt",
            "in": "query",
            "description": "Permits to filter tasks based on their finishedAt time. Matches tasks\nfinished after the given date. Supports RFC 3339 date format.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2024-08-08T16:37:09.971Z"
          },
          {
            "name": "beforeFinishedAt",
            "in": "query",
            "description": "Permits to filter tasks based on their finishedAt time. Matches tasks\nfinished before the given date. Supports RFC 3339 date format.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2024-08-08T16:37:09.971Z"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the batches.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AllBatches"
                },
                "example": {
                  "results": [
                    {
                      "uid": 2,
                      "details": {
                        "stopWords": [
                          "of",
                          "the"
                        ]
                      },
                      "progress": null,
                      "stats": {
                        "totalNbTasks": 1,
                        "status": {
                          "succeeded": 1
                        },
                        "types": {
                          "settingsUpdate": 1
                        },
                        "indexUids": {
                          "INDEX_NAME": 1
                        }
                      },
                      "duration": "PT0.110083S",
                      "startedAt": "2024-12-10T15:49:04.995321Z",
                      "finishedAt": "2024-12-10T15:49:05.105404Z"
                    }
                  ],
                  "total": 1,
                  "limit": 20,
                  "from": 1,
                  "next": null
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "tasks.get",
              "tasks.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'http://MEILISEARCH_URL/batches'"
          }
        ]
      }
    },
    "/batches/stream": {
      "get": {
        "tags": [
          "Async task management"
        ],
        "summary": "Stream batches changes",
        "description": "The `/batches/stream` route returns information about [asynchronous operations](https://docs.meilisearch.com/learn/advanced/asynchronous_operations.html) (indexing, document updates, settings changes, and so on).\n\nBatches are sent throught an SSE stream any time their progress or status changes, i.e., enqueued, processing, succeeded, failed.",
        "operationId": "get_batches_stream",
        "responses": {
          "200": {
            "description": "Stream of batches changes.",
            "content": {
              "application/x-ndjson": {
                "schema": {
                  "$ref": "#/components/schemas/BatchView"
                },
                "example": {
                  "uid": 0,
                  "details": {
                    "receivedDocuments": 1,
                    "indexedDocuments": 1
                  },
                  "progress": null,
                  "stats": {
                    "totalNbTasks": 1,
                    "status": {
                      "succeeded": 1
                    },
                    "types": {
                      "documentAdditionOrUpdate": 1
                    },
                    "indexUids": {
                      "INDEX_NAME": 1
                    }
                  },
                  "duration": "PT0.364788S",
                  "startedAt": "2024-12-10T15:48:49.672141Z",
                  "finishedAt": "2024-12-10T15:48:50.036929Z",
                  "batchStrategy": "batched all enqueued tasks"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "tasks.get",
              "tasks.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/batches/stream' \\\n  -H 'Accept: text/event-stream'"
          }
        ]
      }
    },
    "/batches/{batch_id}": {
      "get": {
        "tags": [
          "Async task management"
        ],
        "summary": "Get batch",
        "description": "Meilisearch groups compatible tasks ([asynchronous operations](https://www.meilisearch.com/docs/learn/async/asynchronous_operations)) into batches for efficient processing.\n\nFor example, multiple document additions to the same index may be batched together. Retrieve a single batch by its unique identifier to monitor its progress and performance.",
        "operationId": "get_batch",
        "parameters": [
          {
            "name": "batch_id",
            "in": "path",
            "description": "The unique batch identifier.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "8685"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the batch.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchView"
                },
                "example": {
                  "uid": 0,
                  "details": {
                    "receivedDocuments": 1,
                    "indexedDocuments": 1
                  },
                  "progress": null,
                  "stats": {
                    "totalNbTasks": 1,
                    "status": {
                      "succeeded": 1
                    },
                    "types": {
                      "documentAdditionOrUpdate": 1
                    },
                    "indexUids": {
                      "INDEX_NAME": 1
                    }
                  },
                  "duration": "PT0.364788S",
                  "startedAt": "2024-12-10T15:48:49.672141Z",
                  "finishedAt": "2024-12-10T15:48:50.036929Z",
                  "batchStrategy": "batched all enqueued tasks"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Batch not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Batch not found.",
                  "code": "batch_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#batch_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "tasks.get",
              "tasks.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'http://MEILISEARCH_URL/batches/BATCH_UID'"
          }
        ]
      }
    },
    "/chats": {
      "get": {
        "tags": [
          "Chats"
        ],
        "summary": "List chat workspaces",
        "description": "List all chat workspaces registered on the instance, with pagination.\n\nThis route is only available when the `chatCompletions` [experimental feature](https://www.meilisearch.com/docs/resources/help/experimental_features_overview) is enabled.",
        "operationId": "list_workspaces",
        "responses": {
          "200": {
            "description": "Chat workspaces retrieved.",
            "content": {
              "application/json": {
                "example": {
                  "results": [
                    {
                      "uid": "my-workspace"
                    }
                  ],
                  "offset": 0,
                  "limit": 20,
                  "total": 1
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "chats.get",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/chats'"
          }
        ]
      }
    },
    "/chats/{workspace_uid}": {
      "get": {
        "tags": [
          "Chats"
        ],
        "summary": "Get a chat workspace",
        "description": "Get the details of a chat workspace by its unique identifier.\n\nThis route is only available when the `chatCompletions` [experimental feature](https://www.meilisearch.com/docs/resources/help/experimental_features_overview) is enabled.",
        "operationId": "get_chat",
        "parameters": [
          {
            "name": "workspace_uid",
            "in": "path",
            "description": "The unique identifier of the chat workspace.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "my-workspace"
          }
        ],
        "responses": {
          "200": {
            "description": "Chat workspace retrieved.",
            "content": {
              "application/json": {
                "example": {
                  "uid": "my-workspace"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Chat not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Chat :workspaceUid not found.",
                  "code": "chat_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#chat_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "chats.get",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/chats/WORKSPACE_NAME'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Chats"
        ],
        "summary": "Delete a chat workspace",
        "description": "Delete a chat workspace and its settings by its unique identifier.\n\nThis route is only available when the `chatCompletions` [experimental feature](https://www.meilisearch.com/docs/resources/help/experimental_features_overview) is enabled.",
        "operationId": "delete_chat",
        "parameters": [
          {
            "name": "workspace_uid",
            "in": "path",
            "description": "The unique identifier of the chat workspace.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "my-workspace"
          }
        ],
        "responses": {
          "204": {
            "description": "Chat workspace deleted."
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Chat not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Chat :workspaceUid not found.",
                  "code": "chat_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#chat_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "chats.delete",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/chats/WORKSPACE_NAME'"
          }
        ]
      }
    },
    "/chats/{workspace_uid}/chat/completions": {
      "post": {
        "tags": [
          "Chats"
        ],
        "summary": "Request a chat completion",
        "description": "Answer a conversational question with the OpenAI-compatible chat completions API,\nusing the documents of the authorized indexes as context.\nOnly streamed responses (`stream: true`) are supported.\n\nThis route is only available when the `chatCompletions` [experimental feature](https://www.meilisearch.com/docs/resources/help/experimental_features_overview) is enabled.",
        "operationId": "chat",
        "parameters": [
          {
            "name": "workspace_uid",
            "in": "path",
            "description": "The unique identifier of the chat workspace.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "my-workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateChatCompletionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Start a conversation.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateChatCompletionResponse"
                },
                "example": {
                  "id": "chatcmpl-abc123",
                  "choices": [
                    {
                      "index": 0,
                      "message": {
                        "content": "After searching the Steam database, here are some game recommendations related to your query:\n\n1. **Game Dev Tycoon**: This game might interest you, as it involves developing games, which could resonate with your work as a developer working on selling a search engine. It is a casual, strategy, and simulation game where you simulate a game development studio.\n\n2. **Mad Games Tycoon**: Another game that could be relevant is Mad Games Tycoon. In this game, you build up your own games, similar to the process of creating and selling software, which could provide insights and inspiration for your work.\n\n3. **Airline Tycoon 2**: While not directly related to search engines, Airline Tycoon 2 involves strategic decision-making and business management, which could offer valuable lessons for selling a product like a search engine.\n\nThese games provide a mix of strategic thinking, simulation, and development aspects that might appeal to you as a developer working on selling a search engine.",
                        "refusal": null,
                        "tool_calls": null,
                        "role": "assistant",
                        "function_call": null,
                        "audio": null
                      },
                      "finish_reason": "stop",
                      "logprobs": null
                    }
                  ],
                  "created": 1747922647,
                  "model": "gpt-3.5-turbo-0125",
                  "service_tier": "default",
                  "system_fingerprint": null,
                  "object": "chat.completion",
                  "usage": {
                    "prompt_tokens": 1515,
                    "completion_tokens": 197,
                    "total_tokens": 1712,
                    "prompt_tokens_details": {
                      "audio_tokens": 0,
                      "cached_tokens": 0
                    },
                    "completion_tokens_details": {
                      "accepted_prediction_tokens": 0,
                      "audio_tokens": 0,
                      "reasoning_tokens": 0,
                      "rejected_prediction_tokens": 0
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Chat not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Chat :workspaceUid not found.",
                  "code": "chat_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#chat_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "chatsCompletions",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl -N \\\n  -X POST 'MEILISEARCH_URL/chats/WORKSPACE_NAME/chat/completions' \\\n  -H 'Authorization: Bearer MEILISEARCH_KEY' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '{\n    \"model\": \"PROVIDER_MODEL_UID\",\n    \"messages\": [\n      {\n        \"role\": \"user\",\n        \"content\": \"USER_PROMPT\"\n      }\n    ],\n    \"tools\": [\n      {\n        \"type\": \"function\",\n        \"function\": {\n          \"name\": \"_meiliSearchProgress\",\n          \"description\": \"Reports real-time search progress to the user\"\n        }\n      },\n      {\n        \"type\": \"function\",\n        \"function\": {\n          \"name\": \"_meiliSearchSources\",\n          \"description\": \"Provides sources and references for the information\"\n        }\n      }\n    ]\n  }'"
          }
        ]
      }
    },
    "/chats/{workspace_uid}/settings": {
      "get": {
        "tags": [
          "Chats"
        ],
        "summary": "Get settings of a chat workspace",
        "description": "Get the settings of a chat workspace, such as the LLM source, the base prompts,\nand the search parameters. The API key is never returned.\n\nThis route is only available when the `chatCompletions` [experimental feature](https://www.meilisearch.com/docs/resources/help/experimental_features_overview) is enabled.",
        "operationId": "get_settings",
        "parameters": [
          {
            "name": "workspace_uid",
            "in": "path",
            "description": "The unique identifier of the chat workspace.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "my-workspace"
          }
        ],
        "responses": {
          "200": {
            "description": "Chat settings retrieved.",
            "content": {
              "application/json": {
                "example": {
                  "source": "openAi",
                  "baseUrl": null,
                  "apiKey": "$LLM_API_KEY",
                  "prompts": {
                    "system": "My super system prompt",
                    "searchDescription": "My super search tool description",
                    "searchQParam": "My awesome q search parameter description",
                    "searchIndexUidParam": "My incredible index uid param description",
                    "searchFilterParam": "My filter parameter description"
                  }
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Chat not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Chat :workspaceUid not found.",
                  "code": "chat_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#chat_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "chats.settings.get",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/chats/WORKSPACE_NAME/settings' \\\n  -H \"Authorization: Bearer MEILISEARCH_KEY\""
          }
        ]
      },
      "delete": {
        "tags": [
          "Chats"
        ],
        "summary": "Reset the settings of a chat workspace",
        "description": "Reset all the settings of a chat workspace to their default value.\n\nThis route is only available when the `chatCompletions` [experimental feature](https://www.meilisearch.com/docs/resources/help/experimental_features_overview) is enabled.",
        "operationId": "reset_settings",
        "parameters": [
          {
            "name": "workspace_uid",
            "in": "path",
            "description": "The unique identifier of the chat workspace.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "my-workspace"
          }
        ],
        "responses": {
          "200": {
            "description": "Chat settings retrieved.",
            "content": {
              "application/json": {
                "example": {
                  "source": "openAi",
                  "baseUrl": null,
                  "apiKey": "$LLM_API_KEY",
                  "prompts": {
                    "system": "default system prompt",
                    "searchDescription": "default search tool description",
                    "searchQParam": "default q search parameter description",
                    "searchIndexUidParam": "default index uid param description"
                  }
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Chat not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Chat :workspaceUid not found.",
                  "code": "chat_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#chat_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "chats.settings.update",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/chats/WORKSPACE_NAME/settings' \\\n  -H \"Authorization: Bearer MEILISEARCH_KEY\""
          }
        ]
      },
      "patch": {
        "tags": [
          "Chats"
        ],
        "summary": "Update settings of a chat workspace",
        "description": "Partially update the settings of a chat workspace, such as the LLM source, the base prompts,\nand the search parameters. Fields set to `null` are reset to their default value,\nand missing fields are left unchanged.\n\nThis route is only available when the `chatCompletions` [experimental feature](https://www.meilisearch.com/docs/resources/help/experimental_features_overview) is enabled.",
        "operationId": "patch_settings",
        "parameters": [
          {
            "name": "workspace_uid",
            "in": "path",
            "description": "The unique identifier of the chat workspace.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "my-workspace"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChatWorkspaceSettings"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Chat settings retrieved.",
            "content": {
              "application/json": {
                "example": {
                  "source": "openAi",
                  "baseUrl": null,
                  "apiKey": "$LLM_API_KEY",
                  "prompts": {
                    "system": "My super system prompt",
                    "searchDescription": "My super search tool description",
                    "searchQParam": "My awesome q search parameter description",
                    "searchIndexUidParam": "My incredible index uid param description"
                  }
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Chat not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Chat :workspaceUid not found.",
                  "code": "chat_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#chat_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "chats.settings.update",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PATCH 'MEILISEARCH_URL/chats/WORKSPACE_NAME/settings' \\\n  -H \"Authorization: Bearer MEILISEARCH_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  --data-binary '{ \"apiKey\": \"your-valid-api-key\" }'"
          }
        ]
      }
    },
    "/dumps": {
      "post": {
        "tags": [
          "Backups"
        ],
        "summary": "Create dump",
        "description": "Trigger a dump creation process. When complete, a dump file is written to the [dump directory](https://www.meilisearch.com/docs/learn/self_hosted/configure_meilisearch_at_launch#dump-directory). The directory is created if it does not exist.",
        "operationId": "create_dump",
        "responses": {
          "202": {
            "description": "Dump is being created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 0,
                  "indexUid": null,
                  "status": "enqueued",
                  "type": "dumpCreation",
                  "enqueuedAt": "2021-01-01T09:39:00.000000Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "dumps.create",
              "dumps.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X POST 'MEILISEARCH_URL/dumps'"
          }
        ]
      }
    },
    "/dynamic-search-rules": {
      "post": {
        "tags": [
          "Search rules"
        ],
        "summary": "List search rules",
        "description": "Return all search rules configured on the instance.",
        "operationId": "list_rules",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ListRules"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Dynamic search rules are returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginationView_DynamicSearchRule"
                },
                "example": {
                  "results": [
                    {
                      "uid": "black-friday",
                      "description": "Black Friday 2025 rules",
                      "precedence": 10,
                      "active": true,
                      "conditions": {
                        "query": {
                          "isEmpty": true
                        },
                        "time": {
                          "start": "2025-11-28T00:00:00Z",
                          "end": "2025-11-28T23:59:59Z"
                        }
                      },
                      "actions": [
                        {
                          "selector": {
                            "indexUid": "products",
                            "id": "123"
                          },
                          "action": {
                            "type": "pin",
                            "position": 1
                          }
                        }
                      ]
                    }
                  ],
                  "offset": 0,
                  "limit": 20,
                  "total": 1
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "dynamicSearchRules.get",
              "dynamicSearchRules.*",
              "*.get",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X POST 'MEILISEARCH_URL/dynamic-search-rules' \\\n  -H 'Content-Type: application/json'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Search rules"
        ],
        "summary": "Delete all search rules.",
        "description": "This will delete **all** the currently defined search rules.",
        "operationId": "clear_rules",
        "responses": {
          "202": {
            "description": "Enqueued a task to delete all search rules.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": null,
                  "status": "enqueued",
                  "type": "dsrClear",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "dynamicSearchRules.delete",
              "dynamicSearchRules.*",
              "*.delete",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/dynamic-search-rules'"
          }
        ]
      }
    },
    "/dynamic-search-rules/{uid}": {
      "get": {
        "tags": [
          "Search rules"
        ],
        "summary": "Get a search rule",
        "description": "Retrieve a single search rule by its unique identifier.",
        "operationId": "get_rule",
        "parameters": [
          {
            "name": "uid",
            "in": "path",
            "description": "Unique identifier of the search rule.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "black-friday"
          }
        ],
        "responses": {
          "200": {
            "description": "Dynamic search rule returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DynamicSearchRule"
                },
                "example": {
                  "uid": "black-friday",
                  "description": "Black Friday 2025 rules",
                  "precedence": 10,
                  "active": true,
                  "conditions": {
                    "query": {
                      "isEmpty": true
                    },
                    "time": {
                      "start": "2025-11-28T00:00:00Z",
                      "end": "2025-11-28T23:59:59Z"
                    }
                  },
                  "actions": [
                    {
                      "selector": {
                        "indexUid": "products",
                        "id": "123"
                      },
                      "action": {
                        "type": "pin",
                        "position": 1
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Dynamic search rule not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Dynamic search rule `black-friday` not found.",
                  "code": "dynamic_search_rule_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#dynamic_search_rule_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "dynamicSearchRules.get",
              "dynamicSearchRules.*",
              "*.get",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/dynamic-search-rules/black-friday'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Search rules"
        ],
        "summary": "Delete a search rule",
        "description": "Delete a search rule by its unique identifier.",
        "operationId": "delete_rule",
        "parameters": [
          {
            "name": "uid",
            "in": "path",
            "description": "Unique identifier of the search rule.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "black-friday"
          }
        ],
        "responses": {
          "202": {
            "description": "Dynamic search rule task deletion.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": null,
                  "status": "enqueued",
                  "type": "dsrUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "dynamicSearchRules.delete",
              "dynamicSearchRules.*",
              "*.delete",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/dynamic-search-rules/black-friday'"
          }
        ]
      },
      "patch": {
        "tags": [
          "Search rules"
        ],
        "summary": "Create or update a search rule",
        "description": "Partially update a search rule by replacing the provided fields. If the rule doesn't exist, it will be created.",
        "operationId": "update_or_create_rule",
        "parameters": [
          {
            "name": "uid",
            "in": "path",
            "description": "Unique identifier of the search rule.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "black-friday"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DynamicSearchRuleUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task enqueued to update dynamic search rule.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": null,
                  "status": "enqueued",
                  "type": "dsrUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "dynamicSearchRules.update",
              "dynamicSearchRules.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PATCH 'MEILISEARCH_URL/dynamic-search-rules/black-friday' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '{\n    \"description\": \"Black Friday 2025 rules\",\n    \"precedence\": 10,\n    \"active\": true,\n    \"conditions\": {\n      \"query\": {\n        \"isEmpty\": true\n      },\n      \"time\": {\n        \"start\": \"2025-11-28T00:00:00Z\",\n        \"end\": \"2025-11-28T23:59:59Z\"\n      }\n    },\n    \"actions\": [\n      {\n        \"selector\": { \"indexUid\": \"products\", \"id\": \"123\" },\n        \"action\": { \"type\": \"pin\", \"position\": 1 }\n      }\n    ]\n  }'"
          }
        ]
      }
    },
    "/experimental-features": {
      "get": {
        "tags": [
          "Experimental features"
        ],
        "summary": "List experimental features",
        "description": "Return all experimental features that can be toggled via this API, and whether each one is currently enabled or disabled.",
        "operationId": "get_features",
        "responses": {
          "200": {
            "description": "Experimental features are returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RuntimeTogglableFeatures"
                },
                "example": {
                  "metrics": true,
                  "logsRoute": false,
                  "tasksStreamingRoute": false,
                  "editDocumentsByFunction": false,
                  "containsFilter": false,
                  "dynamicSearchRules": false,
                  "network": false,
                  "getTaskDocumentsRoute": false,
                  "taskQueueCompactionRoute": false,
                  "compositeEmbedders": false,
                  "chatCompletions": false,
                  "multimodal": false,
                  "foreignKeys": false,
                  "disableDocumentsFetchQueue": false,
                  "legacySearch": false,
                  "renderRoute": false
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "experimental_features.get",
              "experimental_features.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/experimental-features/'"
          }
        ]
      },
      "patch": {
        "tags": [
          "Experimental features"
        ],
        "summary": "Configure experimental features",
        "description": "Enable or disable experimental features at runtime.",
        "operationId": "patch_features",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RuntimeTogglableFeatures"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Experimental features are returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RuntimeTogglableFeatures"
                },
                "example": {
                  "metrics": true,
                  "logsRoute": false,
                  "tasksStreamingRoute": false,
                  "editDocumentsByFunction": false,
                  "containsFilter": false,
                  "dynamicSearchRules": false,
                  "network": false,
                  "getTaskDocumentsRoute": false,
                  "taskQueueCompactionRoute": false,
                  "compositeEmbedders": false,
                  "chatCompletions": false,
                  "multimodal": false,
                  "foreignKeys": false,
                  "disableDocumentsFetchQueue": false,
                  "legacySearch": false,
                  "renderRoute": false
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "experimental_features.update",
              "experimental_features.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PATCH 'MEILISEARCH_URL/experimental-features/' \\\n  -H 'Content-Type: application/json'  \\\n  --data-binary '{\n    \"metrics\": true\n  }'"
          }
        ]
      }
    },
    "/export": {
      "post": {
        "tags": [
          "Export"
        ],
        "summary": "Export to a remote Meilisearch",
        "description": "Trigger an export that sends documents and settings from this instance to a remote Meilisearch server. Configure the remote URL and optional API key in the request body.",
        "operationId": "export",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Export"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Export successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 1,
                  "status": "enqueued",
                  "type": "export",
                  "enqueuedAt": "2021-08-11T09:25:53.000000Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "export",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X POST 'MEILISEARCH_URL/export' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '{\n    \"url\": \"TARGET_INSTANCE_URL\",\n    \"indexes\": {\n      \"*\": {\n        \"overrideSettings\": true\n      }\n    }\n  }'"
          }
        ]
      }
    },
    "/health": {
      "get": {
        "tags": [
          "Health"
        ],
        "summary": "Get health",
        "description": "The health check endpoint enables you to periodically test the health of your Meilisearch instance. Returns a simple status indicating that the server is available.\n\nThe engine will return `available` status with a `200` status code when the instance is healthy.\nIt will return `mustRestart` status with a `500` status code if the instance requires a restart.\nThis restart is required after a compaction of the task queue for example.",
        "operationId": "get_health",
        "responses": {
          "200": {
            "description": "Instance is healthy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HealthResponse"
                },
                "example": {
                  "status": "available"
                }
              }
            }
          }
        },
        "security": [],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/health'"
          }
        ]
      }
    },
    "/indexes": {
      "get": {
        "tags": [
          "Indexes"
        ],
        "summary": "List all indexes",
        "description": "Returns a paginated list of indexes. Use the `offset` and `limit` query parameters to page through results.",
        "operationId": "list_indexes",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "The number of indexes to skip before starting to retrieve anything.",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            },
            "example": 100
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The number of indexes to retrieve.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 20,
              "minimum": 0
            },
            "example": 1
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of indexes with pagination metadata.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginationView_IndexView"
                },
                "example": {
                  "results": [
                    {
                      "uid": "movies",
                      "primaryKey": "movie_id",
                      "createdAt": "2019-11-20T09:40:33.711324Z",
                      "updatedAt": "2019-11-20T09:40:33.711324Z"
                    }
                  ],
                  "limit": 1,
                  "offset": 0,
                  "total": 1
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "indexes.get",
              "indexes.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes?limit=3'"
          }
        ]
      },
      "post": {
        "tags": [
          "Indexes"
        ],
        "summary": "Create index",
        "description": "Create a new index with an optional [primary key](https://www.meilisearch.com/docs/learn/getting_started/primary_key).\n\nIf no primary key is provided, Meilisearch will [infer one](https://www.meilisearch.com/docs/learn/getting_started/primary_key#meilisearch-guesses-your-primary-key) from the first batch of documents.",
        "operationId": "create_index",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IndexCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "indexCreation",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "indexes.create",
              "indexes.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X POST 'MEILISEARCH_URL/indexes' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '{\n    \"uid\": \"movies\",\n    \"primaryKey\": \"id\"\n  }'"
          }
        ]
      }
    },
    "/indexes/{index_uid}": {
      "get": {
        "tags": [
          "Indexes"
        ],
        "summary": "Get index",
        "description": "Retrieve the metadata of a single index: its uid, [primary key](https://www.meilisearch.com/docs/learn/getting_started/primary_key), and creation/update timestamps.",
        "operationId": "get_index",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "200": {
            "description": "The index is returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IndexView"
                },
                "example": {
                  "uid": "movies",
                  "primaryKey": "movie_id",
                  "createdAt": "2019-11-20T09:40:33.711324Z",
                  "updatedAt": "2019-11-20T09:40:33.711324Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "indexes.get",
              "indexes.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes/movies'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Indexes"
        ],
        "summary": "Delete index",
        "description": "Permanently delete an index and all its documents, settings, and task history.",
        "operationId": "delete_index",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 0,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "indexDeletion",
                  "enqueuedAt": "2021-01-01T09:39:00.000000Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "indexes.delete",
              "indexes.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/indexes/movies'"
          }
        ]
      },
      "patch": {
        "tags": [
          "Indexes"
        ],
        "summary": "Update index",
        "description": "Update the [primary key](https://www.meilisearch.com/docs/learn/getting_started/primary_key) or uid of an index.\n\nReturns an error if the index does not exist or if it already contains documents ([primary key](https://www.meilisearch.com/docs/learn/getting_started/primary_key) cannot be changed in that case).",
        "operationId": "update_index",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateIndexRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 0,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "indexUpdate",
                  "enqueuedAt": "2021-01-01T09:39:00.000000Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "indexes.update",
              "indexes.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PATCH 'MEILISEARCH_URL/indexes/movies' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '{ \"primaryKey\": \"id\" }'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/compact": {
      "post": {
        "tags": [
          "Indexes"
        ],
        "summary": "Compact index",
        "description": "Trigger a compaction process on the specified index.\n\nCompaction reorganizes the index database to reclaim space and improve read performance.",
        "operationId": "compact",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "indexCompaction",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "indexes.compact",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X POST 'MEILISEARCH_URL/indexes/INDEX_UID/compact'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/documents": {
      "get": {
        "tags": [
          "Documents"
        ],
        "summary": "List documents with GET",
        "description": "Retrieve documents in batches using query parameters for offset, limit, and optional filtering.\n\n**Deprecated:** This endpoint will be deprecated in a future release. Use `POST /indexes/{index_uid}/documents/fetch` instead, which supports more parameters and array-based filter expressions.\n\n**Note:** Documents are not returned following the order of their primary keys.",
        "operationId": "get_documents",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of documents to skip in the response. Use this parameter\ntogether with `limit` to paginate through large document sets. For\nexample, to get documents 21-40, set `offset=20` and `limit=20`.\nDefaults to `0`.",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of documents to return in a single response. Use\ntogether with `offset` for pagination. Defaults to `20`.",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "Comma-separated list of document attributes to include in the\nresponse. Use `*` to retrieve all attributes. By default, all\nattributes are returned. Example: `title,description,price`.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "retrieveVectors",
            "in": "query",
            "description": "When `true`, includes vector embeddings in the response for documents\nthat have them. This is useful when you need to inspect or export\nvector data. Defaults to `false`.",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "ids",
            "in": "query",
            "description": "Comma-separated list of document IDs to retrieve. Only documents with\nmatching IDs will be returned. If not specified, all documents\nmatching other criteria are returned.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Filter expression to select which documents to return. Attributes must be added to the\n`filterableAttributes` index setting before they can be used in filters. Only accepts\nstring expressions (not array syntax). Example: `genres = action AND rating > 4`.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "popularity > 1000"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Attribute(s) to sort the documents by. Format: `attribute:asc` or\n`attribute:desc`. Multiple sort criteria can be comma-separated.\nExample: `price:asc,rating:desc`.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "useNetwork",
            "in": "query",
            "description": "When `true`, runs the query on the whole network (all shards covered exactly once).\n\nWhen `false`, the query runs locally.\n\nWhen omitted or `null`, the default value depends on whether the sharding is enabled for the instance:\n\n- If the instance has sharding enabled (has a leader), defaults to `true`.\n- Otherwise defaults to `false`.\n\nIt also requires the `network` [experimental feature](http://localhost:3000/reference/api/experimental-features/configure-experimental-features).\n\nValues: `true` = use the whole network; `false` = local, default = see above.\n\nWhen using the network, the index must exist with compatible settings on all remotes.",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The documents are returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginationView_Value"
                },
                "example": {
                  "results": [
                    {
                      "id": 25684,
                      "title": "American Ninja 5",
                      "poster": "https://image.tmdb.org/t/p/w1280/iuAQVI4mvjI83wnirpD8GVNRVuY.jpg",
                      "overview": "When a scientists daughter is kidnapped, American Ninja, attempts to find her, but this time he teams up with a youngster he has trained in the ways of the ninja.",
                      "release_date": 725846400
                    },
                    {
                      "id": 45881,
                      "title": "The Bridge of San Luis Rey",
                      "poster": "https://image.tmdb.org/t/p/w500/4X7quIcdkc24Cveg5XdpfRqxtYA.jpg",
                      "overview": "The Bridge of San Luis Rey is American author Thornton Wilder's second novel, first published in 1927 to worldwide acclaim. It tells the story of several interrelated people who die in the collapse of an Inca rope-fiber suspension bridge in Peru, and the events that lead up to their being on the bridge.[ A friar who has witnessed the tragic accident then goes about inquiring into the lives of the victims, seeking some sort of cosmic answer to the question of why each had to die. The novel won the Pulitzer Prize in 1928.",
                      "release_date": 1072915200
                    }
                  ],
                  "limit": 20,
                  "offset": 0,
                  "total": 2
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "documents.get",
              "documents.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes/movies/documents?limit=2&filter=genres=action'"
          }
        ]
      },
      "put": {
        "tags": [
          "Documents"
        ],
        "summary": "Add or update documents",
        "description": "Add a list of documents or update them if they already exist.\n\nIf you send an already existing document (same id) the old document will\nbe only partially updated according to the fields of the new document.\nThus, any fields not present in the new document are kept and remained\nunchanged.\n\n**Important:** Partial updates apply only to top-level fields. Updating an object attribute\nreplaces the entire object, removing any subfields not present in the update. Dot notation\nin an update request creates a new flat attribute rather than updating an existing nested field.\n\nIf the provided index does not exist, it will be created.\n\n**Accepted content types:** `application/json`, `application/x-ndjson`, `text/csv`.\n\n**Note:** Use the reserved `_geo` object to add geo coordinates: `{\"lat\": 48.8566, \"lng\": 2.3522}`.\n\nTo completely overwrite a document, see [add or replace documents route](/docs/reference/api/documents/add-or-replace-documents).",
        "operationId": "update_documents",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          },
          {
            "name": "primaryKey",
            "in": "query",
            "description": "The [primary key](https://www.meilisearch.com/docs/learn/getting_started/primary_key) field for uniquely identifying each document.\nThis parameter is optional and can only be set the first time documents are added to an index.\nSubsequent attempts to specify it will be ignored if the primary key has already been set.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "id"
          },
          {
            "name": "csvDelimiter",
            "in": "query",
            "description": "Customize the CSV column delimiter when importing CSV documents. Must be a single ASCII\ncharacter. Only valid when the content type is `text/csv`; using this parameter with\n`application/json` or `application/x-ndjson` will return an error. Default: `,`.",
            "required": false,
            "schema": {
              "type": "string",
              "default": ","
            },
            "example": ";"
          },
          {
            "name": "customMetadata",
            "in": "query",
            "description": "A string that can be used to identify and filter tasks. This metadata\nis stored with the task and returned in task responses. Useful for\ntracking tasks from external systems or associating tasks with\nspecific operations in your application.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "custom"
          },
          {
            "name": "skipCreation",
            "in": "query",
            "description": "When set to `true`, only updates existing documents and skips creating\nnew ones. Documents that don't already exist in the index will be\nignored. This is useful for partial updates where you only want to\nmodify existing records without adding new ones.",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "example": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {}
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": null,
                  "status": "enqueued",
                  "type": "documentAdditionOrUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "documents.add",
              "documents.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PUT 'MEILISEARCH_URL/indexes/movies/documents' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '[\n    {\n      \"id\": 287947,\n      \"title\": \"Shazam ⚡️\",\n      \"genres\": \"comedy\"\n    }\n  ]'"
          }
        ]
      },
      "post": {
        "tags": [
          "Documents"
        ],
        "summary": "Add or replace documents",
        "description": "Add a list of documents or replace them if they already exist.\n\nIf you send an already existing document (same id) the whole existing document will be\noverwritten by the new document. Fields previously in the document not present in the new\ndocument are removed.\n\nIf the provided index does not exist, it will be created.\n\n**Accepted content types:** `application/json`, `application/x-ndjson`, `text/csv`.\n\n**Note:** Use the reserved `_geo` object to add geo coordinates: `{\"lat\": 48.8566, \"lng\": 2.3522}`.\n\nFor a partial update see [add or update documents route](/docs/reference/api/documents/add-or-update-documents).",
        "operationId": "replace_documents",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          },
          {
            "name": "primaryKey",
            "in": "query",
            "description": "The [primary key](https://www.meilisearch.com/docs/learn/getting_started/primary_key) field for uniquely identifying each document.\nThis parameter is optional and can only be set the first time documents are added to an index.\nSubsequent attempts to specify it will be ignored if the primary key has already been set.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "id"
          },
          {
            "name": "csvDelimiter",
            "in": "query",
            "description": "Customize the CSV column delimiter when importing CSV documents. Must be a single ASCII\ncharacter. Only valid when the content type is `text/csv`; using this parameter with\n`application/json` or `application/x-ndjson` will return an error. Default: `,`.",
            "required": false,
            "schema": {
              "type": "string",
              "default": ","
            },
            "example": ";"
          },
          {
            "name": "customMetadata",
            "in": "query",
            "description": "A string that can be used to identify and filter tasks. This metadata\nis stored with the task and returned in task responses. Useful for\ntracking tasks from external systems or associating tasks with\nspecific operations in your application.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "custom"
          },
          {
            "name": "skipCreation",
            "in": "query",
            "description": "When set to `true`, only updates existing documents and skips creating\nnew ones. Documents that don't already exist in the index will be\nignored. This is useful for partial updates where you only want to\nmodify existing records without adding new ones.",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "example": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {}
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": null,
                  "status": "enqueued",
                  "type": "documentAdditionOrUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "documents.add",
              "documents.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X POST 'MEILISEARCH_URL/indexes/movies/documents' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '[\n    {\n      \"id\": 287947,\n      \"title\": \"Shazam\",\n      \"poster\": \"https://image.tmdb.org/t/p/w1280/xnopI5Xtky18MPhK40cZAGAOVeV.jpg\",\n      \"overview\": \"A boy is given the ability to become an adult superhero in times of need with a single magic word.\",\n      \"release_date\": \"2019-03-23\"\n    }\n  ]'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Documents"
        ],
        "summary": "Delete all documents",
        "description": "Permanently delete all documents in the specified index. Settings and index metadata are preserved.",
        "operationId": "clear_all_documents",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          },
          {
            "name": "customMetadata",
            "in": "query",
            "description": "A string that can be used to identify and filter tasks. This metadata\nis stored with the task and returned in task responses. Useful for\ntracking tasks from external systems or associating tasks with\nspecific operations in your application.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "custom"
          }
        ],
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": null,
                  "status": "enqueued",
                  "type": "documentDeletion",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "documents.delete",
              "documents.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/indexes/movies/documents'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/documents/delete": {
      "post": {
        "tags": [
          "Documents"
        ],
        "summary": "Delete documents by filter",
        "description": "Delete all documents in the index that match the given filter expression.",
        "operationId": "delete_documents_by_filter",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          },
          {
            "name": "customMetadata",
            "in": "query",
            "description": "A string that can be used to identify and filter tasks. This metadata\nis stored with the task and returned in task responses. Useful for\ntracking tasks from external systems or associating tasks with\nspecific operations in your application.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "custom"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DocumentDeletionByFilter"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": null,
                  "status": "enqueued",
                  "type": "documentDeletion",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "documents.delete",
              "documents.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X POST MEILISEARCH_URL/indexes/movies/documents/delete \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '{\n    \"filter\": \"genres = action OR genres = adventure\"\n  }'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/documents/delete-batch": {
      "post": {
        "tags": [
          "Documents"
        ],
        "summary": "Delete documents by batch",
        "description": "Delete multiple documents in one request by providing an array of [primary key](https://www.meilisearch.com/docs/learn/getting_started/primary_key) values.",
        "operationId": "delete_documents_batch",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          },
          {
            "name": "customMetadata",
            "in": "query",
            "description": "A string that can be used to identify and filter tasks. This metadata\nis stored with the task and returned in task responses. Useful for\ntracking tasks from external systems or associating tasks with\nspecific operations in your application.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "custom"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {}
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": null,
                  "status": "enqueued",
                  "type": "documentAdditionOrUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "documents.delete",
              "documents.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X POST 'MEILISEARCH_URL/indexes/movies/documents/delete-batch' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '[\n    23488,\n    153738,\n    437035,\n    363869\n  ]'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/documents/edit": {
      "post": {
        "tags": [
          "Documents"
        ],
        "summary": "Edit documents by function",
        "description": "Use a [RHAI function](https://rhai.rs/book/engine/hello-world.html) to edit one or more documents directly in Meilisearch. The function receives each document and returns the modified document.\n\nThis feature is experimental and must be enabled through the experimental route.",
        "operationId": "edit_documents_by_function",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          },
          {
            "name": "customMetadata",
            "in": "query",
            "description": "A string that can be used to identify and filter tasks. This metadata\nis stored with the task and returned in task responses. Useful for\ntracking tasks from external systems or associating tasks with\nspecific operations in your application.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "custom"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DocumentEditionByFunction"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": null,
                  "status": "enqueued",
                  "type": "documentDeletion",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "documents.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X POST 'MEILISEARCH_URL/indexes/movies/documents/edit' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '{\n    \"function\": \"doc.new_field = `a]new[value`\",\n    \"filter\": \"id > 3000\",\n    \"context\": {\n      \"max_title_length\": 10\n    }\n  }'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/documents/fetch": {
      "post": {
        "tags": [
          "Documents"
        ],
        "summary": "List documents with POST",
        "description": "Retrieve a set of documents with optional filtering, sorting, and pagination. Use the request\nbody to specify filters, sort order, and which fields to return.\n\n**Note:** Sending an empty payload (`{}`) returns all documents in the index.\n\n**Note:** Documents are not returned following the order of their primary keys.",
        "operationId": "documents_by_query_post",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BrowseQuery"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Documents returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginationView_Value"
                },
                "example": {
                  "results": [
                    {
                      "title": "The Travels of Ibn Battuta",
                      "genres": [
                        "Travel",
                        "Adventure"
                      ],
                      "language": "English",
                      "rating": 4.5
                    },
                    {
                      "title": "Pride and Prejudice",
                      "genres": [
                        "Classics",
                        "Fiction",
                        "Romance",
                        "Literature"
                      ],
                      "language": "English",
                      "rating": 4
                    }
                  ],
                  "offset": 0,
                  "limit": 2,
                  "total": 5
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "documents.get",
              "documents.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X POST MEILISEARCH_URL/indexes/books/documents/fetch \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '{\n    \"filter\": \"(rating > 3 AND (genres = Adventure OR genres = Fiction)) AND language = English\",\n    \"fields\": [\"title\", \"genres\", \"rating\", \"language\"],\n    \"limit\": 3\n  }'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/documents/{document_id}": {
      "get": {
        "tags": [
          "Documents"
        ],
        "summary": "Get document",
        "description": "Retrieve a single document by its [primary key](https://www.meilisearch.com/docs/learn/getting_started/primary_key) value.",
        "operationId": "get_document",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          },
          {
            "name": "document_id",
            "in": "path",
            "description": "The document identifier.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "85087"
          },
          {
            "name": "fields",
            "in": "query",
            "description": "Comma-separated list of document attributes to include in the\nresponse. Use `*` to retrieve all attributes. By default, all\nattributes listed in the `displayedAttributes` setting are returned.\nExample: `title,description,price`.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "retrieveVectors",
            "in": "query",
            "description": "When `true`, includes the vector embeddings in the response for this\ndocument. This is useful when you need to inspect or export vector\ndata. Note that this can significantly increase response size if the\ndocument has multiple embedders configured. Defaults to `false`.",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "useNetwork",
            "in": "query",
            "description": "When `true`, runs the query on the whole network (all shards covered exactly once).\n\nWhen `false`, the query runs locally.\n\nWhen omitted or `null`, the default value depends on whether the sharding is enabled for the instance:\n\n- If the instance has sharding enabled (has a leader), defaults to `true`.\n- Otherwise defaults to `false`.\n\nIt also requires the `network` [experimental feature](http://localhost:3000/reference/api/experimental-features/configure-experimental-features).\n\nValues: `true` = use the whole network; `false` = local, default = see above.\n\nWhen using the network, the index must exist with compatible settings on all remotes.",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The document is returned.",
            "content": {
              "application/json": {
                "schema": {},
                "example": {
                  "id": 25684,
                  "title": "American Ninja 5",
                  "poster": "https://image.tmdb.org/t/p/w1280/iuAQVI4mvjI83wnirpD8GVNRVuY.jpg",
                  "overview": "When a scientists daughter is kidnapped, American Ninja, attempts to find her, but this time he teams up with a youngster he has trained in the ways of the ninja.",
                  "release_date": 725846400
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Document not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Document :uid not found.",
                  "code": "document_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#document_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "documents.get",
              "documents.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes/movies/documents/25684?fields=id,title,poster,release_date'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Documents"
        ],
        "summary": "Delete document",
        "description": "Delete a single document by its [primary key](https://www.meilisearch.com/docs/learn/getting_started/primary_key).",
        "operationId": "delete_document",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          },
          {
            "name": "document_id",
            "in": "path",
            "description": "Document identifier.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "853"
          },
          {
            "name": "customMetadata",
            "in": "query",
            "description": "A string that can be used to identify and filter tasks. This metadata\nis stored with the task and returned in task responses. Useful for\ntracking tasks from external systems or associating tasks with\nspecific operations in your application.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "custom"
          }
        ],
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": null,
                  "status": "enqueued",
                  "type": "documentAdditionOrUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "documents.delete",
              "documents.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/indexes/movies/documents/25684'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/facet-search": {
      "post": {
        "tags": [
          "Facet Search"
        ],
        "summary": "Search for facet values",
        "description": "Search for facet values matching a query within a given facet attribute. Use this to build\nautocomplete or dropdown UIs for facet filters.\n\n**Prerequisite:** The `facetName` attribute must be in the index's `filterableAttributes` list.\nFacet search will not work without this configuration.\n\n**Note:** Facet search only considers the first word of `facetQuery`. Searching for `Jane`\nreturns `Jane Austen`, but searching for `Austen` does not.\n\n**Note:** Numeric facet values are not searchable. Convert numbers to strings if you need\nto search them as facets.",
        "operationId": "search",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FacetSearchQuery"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Facet values matching the query are returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FacetSearchResult"
                },
                "example": {
                  "facetHits": [
                    {
                      "value": "action",
                      "count": 273
                    },
                    {
                      "value": "animated",
                      "count": 15
                    }
                  ],
                  "facetQuery": "ac",
                  "processingTimeMs": 0
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "search",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X POST 'MEILISEARCH_URL/indexes/books/facet-search' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '{\n    \"facetQuery\": \"fiction\",\n    \"facetName\": \"genres\",\n    \"filter\": \"rating > 3\"\n  }'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/fields": {
      "post": {
        "tags": [
          "Indexes"
        ],
        "summary": "List index fields",
        "description": "Returns a paginated list of fields in the index with their metadata: whether they are displayed, searchable, sortable, filterable, distinct, have a custom ranking rule (asc/desc), and for filterable fields the sort order for facet values.",
        "operationId": "post_index_fields",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index whose fields to list.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ListFields"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginationView_Field"
                },
                "example": {
                  "results": [
                    {
                      "name": "title",
                      "displayed": {
                        "enabled": true
                      },
                      "searchable": {
                        "enabled": true
                      },
                      "sortable": {
                        "enabled": true
                      },
                      "distinct": {
                        "enabled": false
                      },
                      "rankingRule": {
                        "enabled": false,
                        "order": []
                      },
                      "filterable": {
                        "enabled": false,
                        "sortBy": "count",
                        "facetSearch": false,
                        "equality": false,
                        "comparison": false
                      },
                      "localized": {
                        "locales": []
                      }
                    },
                    {
                      "name": "genre",
                      "displayed": {
                        "enabled": true
                      },
                      "searchable": {
                        "enabled": false
                      },
                      "sortable": {
                        "enabled": false
                      },
                      "distinct": {
                        "enabled": false
                      },
                      "rankingRule": {
                        "enabled": false,
                        "order": []
                      },
                      "filterable": {
                        "enabled": true,
                        "sortBy": "alpha",
                        "facetSearch": true,
                        "equality": true,
                        "comparison": false
                      },
                      "localized": {
                        "locales": []
                      }
                    }
                  ],
                  "offset": 0,
                  "limit": 20,
                  "total": 2
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid authorization header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "fields.post",
              "fields.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X POST 'MEILISEARCH_URL/indexes/INDEX_NAME/fields' \\\n  -H 'Content-Type: application/json'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/search": {
      "get": {
        "tags": [
          "Search"
        ],
        "summary": "Search with GET",
        "description": "Search for documents matching a query in the given index.\n\n> Equivalent to the [search with POST route](/docs/reference/api/search/search-with-post) in the Meilisearch API.\n\n**Note:** By default this endpoint returns at most 1000 results. Configure `pagination.maxTotalHits` in index settings to change this limit.\n\n**Note:** The GET route only accepts string filter expressions. Use the POST route if you need array-of-array filter syntax.",
        "operationId": "search_with_url_query",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          },
          {
            "name": "q",
            "in": "query",
            "description": "Sets the search terms.\n\nMeilisearch returns documents that match this query.\n\nThe query supports [prefix search](https://www.meilisearch.com/docs/learn/engine/prefix) and [typo tolerance](https://www.meilisearch.com/docs/learn/relevancy/typo_tolerance_settings).\n\nMeilisearch only considers the first ten words; terms are normalized (lowercase, accents ignored).\n\nOmit or leave empty for a placeholder search: no query terms are applied, so Meilisearch returns all searchable documents in the index, ordered by [ranking rules](https://www.meilisearch.com/docs/learn/relevancy/ranking_rules).\n\nEnclose terms in double quotes (`\"`) for phrase search: only documents containing that exact sequence of words are returned (e.g. `\"Winter Feast\"`).\n\nUse a minus sign (`-`) before a word or phrase to exclude it from results.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of documents to skip at the start of the results.\n\nUse together with `limit` for [pagination](https://www.meilisearch.com/docs/guides/front_end/pagination) (e.g. offset=20 and limit=20 returns results 21–40).\n\nThis parameter is ignored when `page` or `hitsPerPage` is set; in that case the response includes `totalHits` and `totalPages` instead of `estimatedTotalHits`.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of documents to return in the response.\n\nUse with `offset` for [pagination](https://www.meilisearch.com/docs/guides/front_end/pagination).\n\nThis parameter is ignored when `page` or `hitsPerPage` is set.\n\nThe value cannot exceed the index [maxTotalHits](https://www.meilisearch.com/docs/reference/api/settings/update-pagination#body-max-total-hits-one-of-0) setting.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 20,
              "minimum": 0
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Request a specific results page (1-indexed).\n\nUse together with `hitsPerPage`.\n\nWhen this parameter is set, the response includes `totalHits` and `totalPages` instead of `estimatedTotalHits`.\n\n`page` and `hitsPerPage` take precedence over `offset` and `limit`.",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          },
          {
            "name": "hitsPerPage",
            "in": "query",
            "description": "Maximum number of documents per page for [pagination](https://www.meilisearch.com/docs/guides/front_end/pagination).\n\nThis value determines `totalPages`; use it together with `page`.\n\nWhen set, the response includes `totalHits` and `totalPages`.\n\nSet to 0 to obtain the exhaustive `totalHits` count without returning any documents.",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          },
          {
            "name": "attributesToRetrieve",
            "in": "query",
            "description": "List of attributes to include in each returned document.\n\nUse `[\"*\"]` to return all attributes; if not set, the index [displayed attributes](https://www.meilisearch.com/docs/learn/relevancy/displayed_searchable_attributes) list is used.\n\nAttributes that are not in [displayedAttributes](https://www.meilisearch.com/docs/reference/api/settings/update-all-settings#body-displayed-attributes-one-of-0) are omitted from the response.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "explode": false
          },
          {
            "name": "attributesToCrop",
            "in": "query",
            "description": "Attributes whose values should be cropped to a short excerpt.\n\nThe cropped text appears in each hit's `_formatted` object.\n\nLength is controlled by `cropLength`, or you can override it per attribute with the `attribute:length` syntax.\n\nUse `[\"*\"]` to crop all attributes in `attributesToRetrieve`.\n\nWhen possible, the crop is centered around the matching terms.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "explode": false
          },
          {
            "name": "cropLength",
            "in": "query",
            "description": "Maximum number of words to include in cropped values.\n\nThis parameter only applies when `attributesToCrop` is set.\n\nBoth query terms and [stop words](https://www.meilisearch.com/docs/reference/api/settings/update-all-settings#body-stop-words-one-of-0) count toward this length.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 10,
              "minimum": 0
            }
          },
          {
            "name": "cropMarker",
            "in": "query",
            "description": "String used to mark crop boundaries in cropped text.\n\nIf null or empty, no markers are inserted.\n\nMarkers are only added where content was actually removed.",
            "required": false,
            "schema": {
              "type": "string",
              "default": "…"
            }
          },
          {
            "name": "attributesToHighlight",
            "in": "query",
            "description": "Attributes in which matching query terms should be highlighted.\n\nThe highlighted text appears in each hit's `_formatted` object.\n\nUse `[\"*\"]` to highlight in all attributes from `attributesToRetrieve`.\n\nBy default, matches are wrapped in `<em>` and `</em>`; you can override this with `highlightPreTag` and `highlightPostTag`.\n\nHighlighting also applies to [synonyms](https://www.meilisearch.com/docs/learn/relevancy/synonyms) and [stop words](https://www.meilisearch.com/docs/reference/api/settings/update-all-settings#body-stop-words-one-of-0).\n\nSupported value types are string, number, array, and object.\n\nNote: highlights matches within all listed attributes, even those not in `searchableAttributes`.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "explode": false
          },
          {
            "name": "highlightPreTag",
            "in": "query",
            "description": "String to insert before each highlighted term.\n\nCan be any string (e.g. `<strong>`, `*`).\n\nIf null or empty, nothing is inserted at the start of a match.",
            "required": false,
            "schema": {
              "type": "string",
              "default": "<em>"
            }
          },
          {
            "name": "highlightPostTag",
            "in": "query",
            "description": "String to insert after each highlighted term.\n\nShould be used together with `highlightPreTag` to avoid malformed output (e.g. unclosed HTML tags).",
            "required": false,
            "schema": {
              "type": "string",
              "default": "</em>"
            }
          },
          {
            "name": "showMatchesPosition",
            "in": "query",
            "description": "When true, each hit includes a `_matchesPosition` object with the byte offset (`start` and `length`) of each matched term.\n\nThis is useful when you need custom highlighting.\n\nNote: reports match positions in all attributes, even non-searchable ones. Positions are measured in bytes, not characters.",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "A [filter](https://www.meilisearch.com/docs/learn/filtering_and_sorting/filter_search_results) expression to narrow results.\n\nAll attributes used in the expression must be in [filterableAttributes](https://www.meilisearch.com/docs/reference/api/settings/update-all-settings#body-filterable-attributes-one-of-0).\n\nPass a string (e.g. `\"(genres = horror OR genres = mystery) AND director = 'Jordan Peele'\"`).\n\nFor [geo search](https://www.meilisearch.com/docs/learn/filtering_and_sorting/geosearch), use `_geoRadius(lat, lng, distance_in_meters)`, `_geoBoundingBox([lat,lng],[lat,lng])`, or `_geoPolygon([lat,lng], ...)` (GeoJSON only for polygon).\n\nGET route accepts a string only; the value must be URL-encoded.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort results by one or more attributes and their order.\n\nUse the format `[\"attribute:asc\", \"attribute:desc\"]`; only attributes in [sortableAttributes](https://www.meilisearch.com/docs/reference/api/settings/update-all-settings#body-sortable-attributes-one-of-0) can be used.\n\nFor [geo search](https://www.meilisearch.com/docs/learn/filtering_and_sorting/geosearch), use `_geoPoint(lat,lng):asc` or `:desc`; the response then includes `_geoDistance` in meters.\n\nThe first attribute in the list has precedence.\n\nSee [sorting search results](https://www.meilisearch.com/docs/learn/filtering_and_sorting/sort_search_results).",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "distinct",
            "in": "query",
            "description": "Return only one document per distinct value of the given attribute (e.g. deduplicate by product_id).\n\nThe attribute must be in [filterableAttributes](https://www.meilisearch.com/docs/reference/api/settings/update-all-settings#body-filterable-attributes-one-of-0).\n\nThis overrides the index [distinctAttribute](https://www.meilisearch.com/docs/reference/api/settings/update-all-settings#body-distinct-attribute-one-of-0) setting for this request.\n\nSee [distinct attribute](https://www.meilisearch.com/docs/learn/relevancy/distinct_attribute).",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "facets",
            "in": "query",
            "description": "Return the count of matches per facet value for the listed attributes.\n\nThe response includes `facetDistribution` and, for numeric facets, `facetStats` (min/max).\n\nThis route also supports patterns, i.e., \"title\", \"dogs.*\", \"*\", which can match over the [filterableAttributes](https://www.meilisearch.com/docs/reference/api/settings/update-all-settings#body-filterable-attributes-one-of-0).\n\nThe number of values returned per facet is limited by the index [maxValuesPerFacet](https://www.meilisearch.com/docs/reference/api/settings/update-faceting#body-max-values-per-facet-one-of-0) setting; attributes not in filterableAttributes are ignored.\n\nMore info: [faceting](https://www.meilisearch.com/docs/learn/filtering_and_sorting/search_with_facet_filters).",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "explode": false
          },
          {
            "name": "matchingStrategy",
            "in": "query",
            "description": "How to match query terms when there are not enough results to satisfy `limit`.\n\n**`last`**: Returns documents containing all query terms first. If there are not enough such results, Meilisearch removes one query term at a time, starting from the end of the query (e.g. for \"big fat cat\", then \"big fat\", then \"big\").\n\n**`all`**: Only returns documents that contain all query terms. Meilisearch does not relax the query even if fewer than `limit` documents match.\n\n**`frequency`**: Returns documents containing all query terms first. If there are not enough, removes one term at a time starting with the word that is most frequent in the dataset, giving more weight to rarer terms (e.g. in \"white cotton shirt\", prioritizes documents containing \"white\" if \"shirt\" is very common).\n\nDefault: `last`.",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/MatchingStrategy"
            }
          },
          {
            "name": "attributesToSearchOn",
            "in": "query",
            "description": "Restrict the search to the listed attributes only.\n\nEach attribute must be in the index [searchable attributes](https://www.meilisearch.com/docs/learn/relevancy/displayed_searchable_attributes) list.\n\nThe order of attributes in this parameter does not affect relevancy.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "explode": false
          },
          {
            "name": "rankingScoreThreshold",
            "in": "query",
            "description": "Exclude from the results any document whose [ranking score](https://www.meilisearch.com/docs/learn/relevancy/ranking_score) is below this value (between 0.0 and 1.0).\n\nExcluded hits do not count toward `estimatedTotalHits`, `totalHits`, or facet distribution.\n\nWhen used together with `page` and `hitsPerPage`, this parameter may reduce performance because Meilisearch must score all matching documents.",
            "required": false,
            "schema": {
              "type": "number",
              "format": "float"
            }
          },
          {
            "name": "locales",
            "in": "query",
            "description": "Explicitly specify the language(s) of the query.\n\nPass an array of [supported ISO-639 locales](https://www.meilisearch.com/docs/reference/api/settings/update-all-settings#body-localized-attributes-one-of-0).\n\nThis overrides auto-detection; use it when auto-detection is wrong for the query or the documents.\n\nSee also the [localizedAttributes](https://www.meilisearch.com/docs/reference/api/settings/list-all-settings#response-localized-attributes-one-of-0) settings and [Language](https://www.meilisearch.com/docs/learn/resources/language).",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/Locale"
              }
            },
            "explode": false
          },
          {
            "name": "hybridEmbedder",
            "in": "query",
            "description": "Name of the embedder for [hybrid search](https://www.meilisearch.com/docs/learn/ai_powered_search/getting_started_with_ai_search), which combines keyword and semantic search.\n\nMust match an embedder configured in the index settings.\n\nRequired when `vector` or `hybridSemanticRatio` is set.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "hybridSemanticRatio",
            "in": "query",
            "description": "Balance between keyword and semantic search: 0.0 means keyword-only results, 1.0 means semantic-only.\n\nWhen `q` is empty and this value is greater than 0, Meilisearch performs a pure semantic search.\n\nRequires `hybridEmbedder` when set.",
            "required": false,
            "schema": {
              "type": "number",
              "format": "float"
            }
          },
          {
            "name": "vector",
            "in": "query",
            "description": "Custom query vector for [vector or hybrid search](https://www.meilisearch.com/docs/learn/ai_powered_search/getting_started_with_ai_search).\n\nThe array length must match the dimensions of the embedder configured in the index.\n\nThis parameter is mandatory when using a [user-provided embedder](https://www.meilisearch.com/docs/learn/ai_powered_search/search_with_user_provided_embeddings).\n\nWhen used with `hybrid`, documents are ranked by vector similarity.\n\nYou can also use it to override an embedder's automatic vector generation.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "number",
                "format": "float"
              }
            },
            "explode": false
          },
          {
            "name": "retrieveVectors",
            "in": "query",
            "description": "When true, the response includes document and query embeddings in each hit's `_vectors` field.\n\nThe `_vectors` field must be listed in [displayedAttributes](https://www.meilisearch.com/docs/reference/api/settings/update-all-settings#body-displayed-attributes-one-of-0) for it to appear.",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "personalizeUserContext",
            "in": "query",
            "description": "For [personalized search](https://www.meilisearch.com/docs/learn/personalization/making_personalized_search_queries): a string describing the user (e.g. preferences or behavior).\n\nResults are then tailored to that profile.\n\nPersonalization must be [enabled](https://www.meilisearch.com/docs/reference/api/experimental-features/configure-experimental-features) (e.g. Cohere key for self-hosted instances).",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "useNetwork",
            "in": "query",
            "description": "When `true`, runs the query on the whole network (all shards covered, documents deduplicated across remotes).\n\nWhen `false` or omitted, the query runs locally.\n\nIt also requires the `network` [experimental feature](http://localhost:3000/reference/api/experimental-features/configure-experimental-features).\n\nValues: `true` = use the whole network; `false` or omitted = local (default).\n\nWhen using the network, the index must exist with compatible settings on all remotes.\n\nDocuments with the same id are assumed identical for deduplication.",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "showRankingScore",
            "in": "query",
            "description": "When true, each document includes a `_rankingScore` between 0.0 and 1.0; a higher value means the document is more relevant.\n\nSee [ranking score](https://www.meilisearch.com/docs/learn/relevancy/ranking_score).\n\nThe `sort` ranking rule does not affect the value of `_rankingScore`.",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "showRankingScoreDetails",
            "in": "query",
            "description": "When true, each document includes `_rankingScoreDetails`, which breaks down the score contribution of each [ranking rule](https://www.meilisearch.com/docs/learn/relevancy/ranking_rules).\n\nUseful for debugging relevancy.",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "showPerformanceDetails",
            "in": "query",
            "description": "When true, the response includes a `performanceDetails` object with a timing breakdown of the query processing.",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The documents are returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResult"
                },
                "example": {
                  "hits": [
                    {
                      "id": 2770,
                      "title": "American Pie 2",
                      "poster": "https://image.tmdb.org/t/p/w1280/q4LNgUnRfltxzp3gf1MAGiK5LhV.jpg",
                      "overview": "The whole gang are back and as close as ever. They decide to get even closer by spending the summer together at a beach house. They decide to hold the biggest…",
                      "release_date": 997405200
                    },
                    {
                      "id": 190859,
                      "title": "American Sniper",
                      "poster": "https://image.tmdb.org/t/p/w1280/svPHnYE7N5NAGO49dBmRhq0vDQ3.jpg",
                      "overview": "U.S. Navy SEAL Chris Kyle takes his sole mission—protect his comrades—to heart and becomes one of the most lethal snipers in American history. His pinpoint accuracy not only saves countless lives but also makes him a prime…",
                      "release_date": 1418256000
                    }
                  ],
                  "offset": 0,
                  "limit": 2,
                  "estimatedTotalHits": 976,
                  "processingTimeMs": 35,
                  "query": "american "
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "search",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes/movies/search?q=american%20ninja'"
          }
        ]
      },
      "post": {
        "tags": [
          "Search"
        ],
        "summary": "Search with POST",
        "description": "Search for documents matching a query in the given index.\n\n> Equivalent to the [search with GET route](/docs/reference/api/search/search-with-get) in the Meilisearch API.\n\n**Note:** By default this endpoint returns at most 1000 results. Configure `pagination.maxTotalHits` in index settings to change this limit.",
        "operationId": "search_with_post",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQuery"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The documents are returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResult"
                },
                "example": {
                  "hits": [
                    {
                      "id": 2770,
                      "title": "American Pie 2",
                      "poster": "https://image.tmdb.org/t/p/w1280/q4LNgUnRfltxzp3gf1MAGiK5LhV.jpg",
                      "overview": "The whole gang are back and as close as ever. They decide to get even closer by spending the summer together at a beach house. They decide to hold the biggest…",
                      "release_date": 997405200
                    },
                    {
                      "id": 190859,
                      "title": "American Sniper",
                      "poster": "https://image.tmdb.org/t/p/w1280/svPHnYE7N5NAGO49dBmRhq0vDQ3.jpg",
                      "overview": "U.S. Navy SEAL Chris Kyle takes his sole mission—protect his comrades—to heart and becomes one of the most lethal snipers in American history. His pinpoint accuracy not only saves countless lives but also makes him a prime…",
                      "release_date": 1418256000
                    }
                  ],
                  "offset": 0,
                  "limit": 2,
                  "estimatedTotalHits": 976,
                  "processingTimeMs": 35,
                  "query": "american "
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "search",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X POST 'MEILISEARCH_URL/indexes/movies/search' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '{ \"q\": \"american ninja\" }'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/settings": {
      "get": {
        "tags": [
          "Settings"
        ],
        "summary": "List all settings",
        "description": "Returns all settings of the index. Each setting is returned with its current value or the default if not set.",
        "operationId": "get_all",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns all settings with their current or default values. Same structure as the PATCH request body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Settings_Unchecked"
                },
                "example": {
                  "displayedAttributes": [
                    "id",
                    "title",
                    "description",
                    "url"
                  ],
                  "searchableAttributes": [
                    "title",
                    "description"
                  ],
                  "filterableAttributes": [
                    "release_date",
                    "genre"
                  ],
                  "sortableAttributes": [
                    "release_date"
                  ],
                  "rankingRules": [
                    "words",
                    "typo",
                    "proximity",
                    "attributeRank",
                    "sort",
                    "wordPosition",
                    "exactness"
                  ],
                  "stopWords": [
                    "the",
                    "a"
                  ],
                  "nonSeparatorTokens": [
                    "@",
                    "#"
                  ],
                  "separatorTokens": [
                    "|"
                  ],
                  "dictionary": [
                    "J. R. R."
                  ],
                  "synonyms": {
                    "phone": [
                      "iPhone"
                    ]
                  },
                  "distinctAttribute": null,
                  "typoTolerance": {
                    "enabled": true,
                    "minWordSizeForTypos": {
                      "oneTypo": 5,
                      "twoTypos": 9
                    },
                    "disableOnWords": [],
                    "disableOnAttributes": [
                      "title"
                    ],
                    "disableOnNumbers": false
                  },
                  "faceting": {
                    "maxValuesPerFacet": 100,
                    "sortFacetValuesBy": {
                      "genre": "count"
                    }
                  },
                  "pagination": {
                    "maxTotalHits": 1000
                  },
                  "proximityPrecision": "byWord",
                  "embedders": {
                    "default": {
                      "source": "openAi",
                      "model": "text-embedding-3-small",
                      "documentTemplate": "{{doc.title}}: {{doc.overview}}"
                    }
                  },
                  "searchCutoffMs": null,
                  "localizedAttributes": [
                    {
                      "locales": [
                        "jpn"
                      ],
                      "attributePatterns": [
                        "*_ja"
                      ]
                    }
                  ],
                  "facetSearch": true,
                  "prefixSearch": "indexingTime",
                  "chat": {
                    "description": "A comprehensive movie database",
                    "documentTemplateMaxBytes": 400,
                    "searchParameters": {
                      "limit": 20
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.get",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes/movies/settings'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Settings"
        ],
        "summary": "Reset all settings",
        "description": "Resets all settings of the index to their default values.",
        "operationId": "delete_all",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/indexes/movies/settings'"
          }
        ]
      },
      "patch": {
        "tags": [
          "Settings"
        ],
        "summary": "Update all settings",
        "description": "Updates one or more settings for the index. Only the fields sent in the body are changed. Pass null for a setting to reset it to its default. If the index does not exist, it is created.\n\nSee also: [Configuring index settings on the Cloud](https://www.meilisearch.com/docs/learn/configuration/configuring_index_settings).",
        "operationId": "update_all",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Settings_Unchecked"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PATCH 'MEILISEARCH_URL/indexes/movies/settings' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '{\n    \"rankingRules\": [\n      \"words\",\n      \"typo\",\n      \"proximity\",\n      \"attributeRank\",\n      \"sort\",\n      \"wordPosition\",\n      \"exactness\",\n      \"release_date:desc\",\n      \"rank:desc\"\n    ],\n    \"distinctAttribute\": \"movie_id\",\n    \"searchableAttributes\": [\n      \"title\",\n      \"overview\",\n      \"genres\"\n    ],\n    \"displayedAttributes\": [\n      \"title\",\n      \"overview\",\n      \"genres\",\n      \"release_date\"\n    ],\n    \"stopWords\": [\n      \"the\",\n      \"a\",\n      \"an\"\n    ],\n    \"sortableAttributes\": [\n      \"title\",\n      \"release_date\"\n    ],\n    \"synonyms\": {\n      \"wolverine\": [\n        \"xmen\",\n        \"logan\"\n    ],\n      \"logan\": [\"wolverine\"]\n    },\n    \"typoTolerance\": {\n      \"minWordSizeForTypos\": {\n        \"oneTypo\": 8,\n        \"twoTypos\": 10\n      },\n      \"disableOnAttributes\": [\"title\"]\n    },\n    \"pagination\": {\n      \"maxTotalHits\": 5000\n    },\n    \"faceting\": {\n      \"maxValuesPerFacet\": 200\n    },\n    \"searchCutoffMs\": 150\n  }'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/settings/chat": {
      "get": {
        "tags": [
          "Settings"
        ],
        "summary": "Get chat",
        "description": "Returns the current value of the `chat` setting for the index.",
        "operationId": "getchat",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the current value of the `chat` setting.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChatSettings"
                },
                "example": {}
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.get",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes/INDEX_NAME/settings/chat'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Settings"
        ],
        "summary": "Reset chat",
        "description": "Resets the `chat` setting to its default value.",
        "operationId": "deletechat",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/indexes/INDEX_NAME/settings/chat'"
          }
        ]
      },
      "patch": {
        "tags": [
          "Settings"
        ],
        "summary": "Update chat",
        "description": "Updates the `chat` setting for the index. Send the new value in the request body; send null to reset to default.",
        "operationId": "patchchat",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChatSettings"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PATCH 'MEILISEARCH_URL/indexes/INDEX_NAME/settings/chat' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '{\n    \"description\": \"An index of movies.\",\n    \"documentTemplate\": \"A movie titled '{{doc.title}}' released in {{ doc.release_date }}\",\n    \"documentTemplateMaxBytes\": 400\n  }'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/settings/dictionary": {
      "get": {
        "tags": [
          "Settings"
        ],
        "summary": "Get dictionary",
        "description": "Returns the current value of the `dictionary` setting for the index.",
        "operationId": "getdictionary",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the current value of the `dictionary` setting.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "uniqueItems": true
                },
                "example": []
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.get",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes/books/settings/dictionary'"
          }
        ]
      },
      "put": {
        "tags": [
          "Settings"
        ],
        "summary": "Update dictionary",
        "description": "Updates the `dictionary` setting for the index. Send the new value in the request body; send null to reset to default.",
        "operationId": "putdictionary",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "uniqueItems": true
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PUT 'MEILISEARCH_URL/indexes/books/settings/dictionary' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '[\n    \"J. R. R.\",\n    \"W. E. B.\"\n  ]'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Settings"
        ],
        "summary": "Reset dictionary",
        "description": "Resets the `dictionary` setting to its default value.",
        "operationId": "deletedictionary",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/indexes/books/settings/dictionary'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/settings/displayed-attributes": {
      "get": {
        "tags": [
          "Settings"
        ],
        "summary": "Get displayedAttributes",
        "description": "Returns the current value of the `displayedAttributes` setting for the index.",
        "operationId": "getdisplayedAttributes",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the current value of the `displayedAttributes` setting.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "example": []
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.get",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes/movies/settings/displayed-attributes'"
          }
        ]
      },
      "put": {
        "tags": [
          "Settings"
        ],
        "summary": "Update displayedAttributes",
        "description": "Updates the `displayedAttributes` setting for the index. Send the new value in the request body; send null to reset to default.",
        "operationId": "putdisplayedAttributes",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PUT 'MEILISEARCH_URL/indexes/movies/settings/displayed-attributes' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '[\n    \"title\",\n    \"overview\",\n    \"genres\",\n    \"release_date\"\n  ]'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Settings"
        ],
        "summary": "Reset displayedAttributes",
        "description": "Resets the `displayedAttributes` setting to its default value.",
        "operationId": "deletedisplayedAttributes",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/indexes/movies/settings/displayed-attributes'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/settings/distinct-attribute": {
      "get": {
        "tags": [
          "Settings"
        ],
        "summary": "Get distinctAttribute",
        "description": "Returns the current value of the `distinctAttribute` setting for the index.",
        "operationId": "getdistinctAttribute",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the current value of the `distinctAttribute` setting.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                },
                "example": ""
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.get",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes/shoes/settings/distinct-attribute'"
          }
        ]
      },
      "put": {
        "tags": [
          "Settings"
        ],
        "summary": "Update distinctAttribute",
        "description": "Updates the `distinctAttribute` setting for the index. Send the new value in the request body; send null to reset to default.",
        "operationId": "putdistinctAttribute",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "requestBody": {
          "content": {
            "text/plain": {
              "schema": {
                "type": "string"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PUT 'MEILISEARCH_URL/indexes/shoes/settings/distinct-attribute' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '\"skuid\"'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Settings"
        ],
        "summary": "Reset distinctAttribute",
        "description": "Resets the `distinctAttribute` setting to its default value.",
        "operationId": "deletedistinctAttribute",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/indexes/shoes/settings/distinct-attribute'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/settings/embedders": {
      "get": {
        "tags": [
          "Settings"
        ],
        "summary": "Get embedders",
        "description": "Returns the current value of the `embedders` setting for the index.",
        "operationId": "getembedders",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the current value of the `embedders` setting.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "#/components/schemas/SettingEmbeddingSettings"
                  },
                  "propertyNames": {
                    "type": "string"
                  }
                },
                "example": {}
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.get",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes/INDEX_NAME/settings/embedders'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Settings"
        ],
        "summary": "Reset embedders",
        "description": "Resets the `embedders` setting to its default value.",
        "operationId": "deleteembedders",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/indexes/INDEX_NAME/settings/embedders'"
          }
        ]
      },
      "patch": {
        "tags": [
          "Settings"
        ],
        "summary": "Update embedders",
        "description": "Updates the `embedders` setting for the index. Send the new value in the request body; send null to reset to default.",
        "operationId": "patchembedders",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": {
                  "$ref": "#/components/schemas/SettingEmbeddingSettings"
                },
                "propertyNames": {
                  "type": "string"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PATCH 'MEILISEARCH_URL/indexes/INDEX_NAME/settings/embedders' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '{\n    \"default\": {\n      \"source\":  \"openAi\",\n      \"apiKey\": \"OPEN_AI_API_KEY\",\n      \"model\": \"text-embedding-3-small\",\n      \"documentTemplate\": \"A document titled '{{doc.title}}' whose description starts with {{doc.overview|truncatewords: 20}}\"\n    }\n  }'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/settings/facet-search": {
      "get": {
        "tags": [
          "Settings"
        ],
        "summary": "Get facetSearch",
        "description": "Returns the current value of the `facetSearch` setting for the index.",
        "operationId": "getfacetSearch",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the current value of the `facetSearch` setting.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "boolean"
                },
                "example": false
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.get",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes/INDEX_UID/settings/facet-search'"
          }
        ]
      },
      "put": {
        "tags": [
          "Settings"
        ],
        "summary": "Update facetSearch",
        "description": "Updates the `facetSearch` setting for the index. Send the new value in the request body; send null to reset to default.",
        "operationId": "putfacetSearch",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "requestBody": {
          "content": {
            "text/plain": {
              "schema": {
                "type": "boolean"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PUT 'MEILISEARCH_URL/indexes/INDEX_UID/settings/facet-search' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary 'false'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Settings"
        ],
        "summary": "Reset facetSearch",
        "description": "Resets the `facetSearch` setting to its default value.",
        "operationId": "deletefacetSearch",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/indexes/INDEX_UID/settings/facet-search'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/settings/faceting": {
      "get": {
        "tags": [
          "Settings"
        ],
        "summary": "Get faceting",
        "description": "Returns the current value of the `faceting` setting for the index.",
        "operationId": "getfaceting",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the current value of the `faceting` setting.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FacetingSettings"
                },
                "example": {}
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.get",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes/books/settings/faceting'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Settings"
        ],
        "summary": "Reset faceting",
        "description": "Resets the `faceting` setting to its default value.",
        "operationId": "deletefaceting",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/indexes/books/settings/faceting'"
          }
        ]
      },
      "patch": {
        "tags": [
          "Settings"
        ],
        "summary": "Update faceting",
        "description": "Updates the `faceting` setting for the index. Send the new value in the request body; send null to reset to default.",
        "operationId": "patchfaceting",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FacetingSettings"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PATCH 'MEILISEARCH_URL/indexes/books/settings/faceting' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '{\n    \"maxValuesPerFacet\": 2,\n    \"sortFacetValuesBy\": {\n      \"*\": \"alpha\",\n      \"genres\": \"count\"\n    }\n  }'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/settings/filterable-attributes": {
      "get": {
        "tags": [
          "Settings"
        ],
        "summary": "Get filterableAttributes",
        "description": "Returns the current value of the `filterableAttributes` setting for the index.",
        "operationId": "getfilterableAttributes",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the current value of the `filterableAttributes` setting.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FilterableAttributesRule"
                  }
                },
                "example": []
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.get",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes/movies/settings/filterable-attributes'"
          }
        ]
      },
      "put": {
        "tags": [
          "Settings"
        ],
        "summary": "Update filterableAttributes",
        "description": "Updates the `filterableAttributes` setting for the index. Send the new value in the request body; send null to reset to default.",
        "operationId": "putfilterableAttributes",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/FilterableAttributesRule"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PUT 'MEILISEARCH_URL/indexes/movies/settings/filterable-attributes' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '[\n    \"genres\",\n    \"director\",\n    {\n      \"attributePatterns\": [\"*_ratings\"],\n      \"features\": {\n        \"facetSearch\": false,\n        \"filter\": {\n          \"equality\": true,\n          \"comparison\": false\n        }\n      }\n    }\n  ]'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Settings"
        ],
        "summary": "Reset filterableAttributes",
        "description": "Resets the `filterableAttributes` setting to its default value.",
        "operationId": "deletefilterableAttributes",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/indexes/movies/settings/filterable-attributes'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/settings/foreign-keys": {
      "get": {
        "tags": [
          "Settings"
        ],
        "summary": "Get foreignKeys",
        "description": "Returns the current value of the `foreignKeys` setting for the index.",
        "operationId": "getforeignKeys",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the current value of the `foreignKeys` setting.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ForeignKey"
                  }
                },
                "example": []
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.get",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes/books/settings/foreign-keys'"
          }
        ]
      },
      "put": {
        "tags": [
          "Settings"
        ],
        "summary": "Update foreignKeys",
        "description": "Updates the `foreignKeys` setting for the index. Send the new value in the request body; send null to reset to default.",
        "operationId": "putforeignKeys",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ForeignKey"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PUT 'MEILISEARCH_URL/indexes/books/settings/foreign-keys' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '[\n    {\n      \"foreignIndexUid\": \"authors\",\n      \"fieldName\": \"author\"\n    },\n    {\n      \"foreignIndexUid\": \"authors\",\n      \"fieldName\": \"related_authors\"\n    }\n  ]'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Settings"
        ],
        "summary": "Reset foreignKeys",
        "description": "Resets the `foreignKeys` setting to its default value.",
        "operationId": "deleteforeignKeys",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/indexes/books/settings/foreign-keys'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/settings/localized-attributes": {
      "get": {
        "tags": [
          "Settings"
        ],
        "summary": "Get localizedAttributes",
        "description": "Returns the current value of the `localizedAttributes` setting for the index.",
        "operationId": "getlocalizedAttributes",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the current value of the `localizedAttributes` setting.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LocalizedAttributesRuleView"
                  }
                },
                "example": []
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.get",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes/INDEX_NAME/settings/localized-attributes'"
          }
        ]
      },
      "put": {
        "tags": [
          "Settings"
        ],
        "summary": "Update localizedAttributes",
        "description": "Updates the `localizedAttributes` setting for the index. Send the new value in the request body; send null to reset to default.",
        "operationId": "putlocalizedAttributes",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/LocalizedAttributesRuleView"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PUT 'MEILISEARCH_URL/indexes/INDEX_NAME/settings/localized-attributes' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '[\n    {\"locales\": [\"jpn\"], \"attributePatterns\": [\"*_ja\"]}\n  ]'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Settings"
        ],
        "summary": "Reset localizedAttributes",
        "description": "Resets the `localizedAttributes` setting to its default value.",
        "operationId": "deletelocalizedAttributes",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/indexes/INDEX_NAME/settings/localized-attributes'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/settings/non-separator-tokens": {
      "get": {
        "tags": [
          "Settings"
        ],
        "summary": "Get nonSeparatorTokens",
        "description": "Returns the current value of the `nonSeparatorTokens` setting for the index.",
        "operationId": "getnonSeparatorTokens",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the current value of the `nonSeparatorTokens` setting.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "uniqueItems": true
                },
                "example": []
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.get",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes/articles/settings/non-separator-tokens'"
          }
        ]
      },
      "put": {
        "tags": [
          "Settings"
        ],
        "summary": "Update nonSeparatorTokens",
        "description": "Updates the `nonSeparatorTokens` setting for the index. Send the new value in the request body; send null to reset to default.",
        "operationId": "putnonSeparatorTokens",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "uniqueItems": true
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PUT 'MEILISEARCH_URL/indexes/articles/settings/non-separator-tokens' \\\n  -H 'Content-Type: application/json'  \\\n  --data-binary '[\"@\", \"#\"]'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Settings"
        ],
        "summary": "Reset nonSeparatorTokens",
        "description": "Resets the `nonSeparatorTokens` setting to its default value.",
        "operationId": "deletenonSeparatorTokens",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/indexes/articles/settings/non-separator-tokens'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/settings/pagination": {
      "get": {
        "tags": [
          "Settings"
        ],
        "summary": "Get pagination",
        "description": "Returns the current value of the `pagination` setting for the index.",
        "operationId": "getpagination",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the current value of the `pagination` setting.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginationSettings"
                },
                "example": {}
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.get",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes/books/settings/pagination'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Settings"
        ],
        "summary": "Reset pagination",
        "description": "Resets the `pagination` setting to its default value.",
        "operationId": "deletepagination",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/indexes/books/settings/pagination'"
          }
        ]
      },
      "patch": {
        "tags": [
          "Settings"
        ],
        "summary": "Update pagination",
        "description": "Updates the `pagination` setting for the index. Send the new value in the request body; send null to reset to default.",
        "operationId": "patchpagination",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaginationSettings"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PATCH 'MEILISEARCH_URL/indexes/books/settings/pagination' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '{\n    \"maxTotalHits\": 100\n  }'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/settings/prefix-search": {
      "get": {
        "tags": [
          "Settings"
        ],
        "summary": "Get prefixSearch",
        "description": "Returns the current value of the `prefixSearch` setting for the index.",
        "operationId": "getprefixSearch",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the current value of the `prefixSearch` setting.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PrefixSearchSettings"
                },
                "example": "indexingTime"
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.get",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes/INDEX_UID/settings/prefix-search'"
          }
        ]
      },
      "put": {
        "tags": [
          "Settings"
        ],
        "summary": "Update prefixSearch",
        "description": "Updates the `prefixSearch` setting for the index. Send the new value in the request body; send null to reset to default.",
        "operationId": "putprefixSearch",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PrefixSearchSettings"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PUT 'MEILISEARCH_URL/indexes/INDEX_UID/settings/prefix-search' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '\"disabled\"'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Settings"
        ],
        "summary": "Reset prefixSearch",
        "description": "Resets the `prefixSearch` setting to its default value.",
        "operationId": "deleteprefixSearch",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/indexes/INDEX_UID/settings/prefix-search'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/settings/proximity-precision": {
      "get": {
        "tags": [
          "Settings"
        ],
        "summary": "Get proximityPrecision",
        "description": "Returns the current value of the `proximityPrecision` setting for the index.",
        "operationId": "getproximityPrecision",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the current value of the `proximityPrecision` setting.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProximityPrecisionView"
                },
                "example": "byWord"
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.get",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes/books/settings/proximity-precision'"
          }
        ]
      },
      "put": {
        "tags": [
          "Settings"
        ],
        "summary": "Update proximityPrecision",
        "description": "Updates the `proximityPrecision` setting for the index. Send the new value in the request body; send null to reset to default.",
        "operationId": "putproximityPrecision",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProximityPrecisionView"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PUT 'MEILISEARCH_URL/indexes/books/settings/proximity-precision' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '\"byAttribute\"'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Settings"
        ],
        "summary": "Reset proximityPrecision",
        "description": "Resets the `proximityPrecision` setting to its default value.",
        "operationId": "deleteproximityPrecision",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/indexes/books/settings/proximity-precision'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/settings/ranking-rules": {
      "get": {
        "tags": [
          "Settings"
        ],
        "summary": "Get rankingRules",
        "description": "Returns the current value of the `rankingRules` setting for the index.",
        "operationId": "getrankingRules",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the current value of the `rankingRules` setting.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RankingRuleView"
                  }
                },
                "example": []
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.get",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes/movies/settings/ranking-rules'"
          }
        ]
      },
      "put": {
        "tags": [
          "Settings"
        ],
        "summary": "Update rankingRules",
        "description": "Updates the `rankingRules` setting for the index. Send the new value in the request body; send null to reset to default.",
        "operationId": "putrankingRules",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/RankingRuleView"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PUT 'MEILISEARCH_URL/indexes/movies/settings/ranking-rules' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '[\n    \"words\",\n    \"typo\",\n    \"proximity\",\n    \"attributeRank\",\n    \"sort\",\n    \"wordPosition\",\n    \"exactness\",\n    \"release_date:asc\",\n    \"rank:desc\"\n  ]'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Settings"
        ],
        "summary": "Reset rankingRules",
        "description": "Resets the `rankingRules` setting to its default value.",
        "operationId": "deleterankingRules",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/indexes/movies/settings/ranking-rules'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/settings/search-cutoff-ms": {
      "get": {
        "tags": [
          "Settings"
        ],
        "summary": "Get searchCutoffMs",
        "description": "Returns the current value of the `searchCutoffMs` setting for the index.",
        "operationId": "getsearchCutoffMs",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the current value of the `searchCutoffMs` setting.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "integer",
                  "format": "u-int64",
                  "minimum": 0
                },
                "example": 0
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.get",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes/movies/settings/search-cutoff-ms'"
          }
        ]
      },
      "put": {
        "tags": [
          "Settings"
        ],
        "summary": "Update searchCutoffMs",
        "description": "Updates the `searchCutoffMs` setting for the index. Send the new value in the request body; send null to reset to default.",
        "operationId": "putsearchCutoffMs",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "requestBody": {
          "content": {
            "text/plain": {
              "schema": {
                "type": "integer",
                "format": "u-int64",
                "minimum": 0
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PUT 'MEILISEARCH_URL/indexes/movies/settings/search-cutoff-ms' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '150'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Settings"
        ],
        "summary": "Reset searchCutoffMs",
        "description": "Resets the `searchCutoffMs` setting to its default value.",
        "operationId": "deletesearchCutoffMs",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/indexes/movies/settings/search-cutoff-ms'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/settings/searchable-attributes": {
      "get": {
        "tags": [
          "Settings"
        ],
        "summary": "Get searchableAttributes",
        "description": "Returns the current value of the `searchableAttributes` setting for the index.",
        "operationId": "getsearchableAttributes",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the current value of the `searchableAttributes` setting.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "example": []
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.get",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes/movies/settings/searchable-attributes'"
          }
        ]
      },
      "put": {
        "tags": [
          "Settings"
        ],
        "summary": "Update searchableAttributes",
        "description": "Updates the `searchableAttributes` setting for the index. Send the new value in the request body; send null to reset to default.",
        "operationId": "putsearchableAttributes",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PUT 'MEILISEARCH_URL/indexes/movies/settings/searchable-attributes' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '[\n    \"title\",\n    \"overview\",\n    \"genres\"\n  ]'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Settings"
        ],
        "summary": "Reset searchableAttributes",
        "description": "Resets the `searchableAttributes` setting to its default value.",
        "operationId": "deletesearchableAttributes",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/indexes/movies/settings/searchable-attributes'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/settings/separator-tokens": {
      "get": {
        "tags": [
          "Settings"
        ],
        "summary": "Get separatorTokens",
        "description": "Returns the current value of the `separatorTokens` setting for the index.",
        "operationId": "getseparatorTokens",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the current value of the `separatorTokens` setting.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "uniqueItems": true
                },
                "example": []
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.get",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes/articles/settings/separator-tokens'"
          }
        ]
      },
      "put": {
        "tags": [
          "Settings"
        ],
        "summary": "Update separatorTokens",
        "description": "Updates the `separatorTokens` setting for the index. Send the new value in the request body; send null to reset to default.",
        "operationId": "putseparatorTokens",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "uniqueItems": true
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PUT 'MEILISEARCH_URL/indexes/articles/settings/separator-tokens' \\\n  -H 'Content-Type: application/json'  \\\n  --data-binary '[\"|\", \"&hellip;\"]'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Settings"
        ],
        "summary": "Reset separatorTokens",
        "description": "Resets the `separatorTokens` setting to its default value.",
        "operationId": "deleteseparatorTokens",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/indexes/articles/settings/separator-tokens'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/settings/sortable-attributes": {
      "get": {
        "tags": [
          "Settings"
        ],
        "summary": "Get sortableAttributes",
        "description": "Returns the current value of the `sortableAttributes` setting for the index.",
        "operationId": "getsortableAttributes",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the current value of the `sortableAttributes` setting.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "uniqueItems": true
                },
                "example": []
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.get",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes/books/settings/sortable-attributes'"
          }
        ]
      },
      "put": {
        "tags": [
          "Settings"
        ],
        "summary": "Update sortableAttributes",
        "description": "Updates the `sortableAttributes` setting for the index. Send the new value in the request body; send null to reset to default.",
        "operationId": "putsortableAttributes",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "uniqueItems": true
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PUT 'MEILISEARCH_URL/indexes/books/settings/sortable-attributes' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '[\n    \"price\",\n    \"author\"\n  ]'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Settings"
        ],
        "summary": "Reset sortableAttributes",
        "description": "Resets the `sortableAttributes` setting to its default value.",
        "operationId": "deletesortableAttributes",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/indexes/books/settings/sortable-attributes'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/settings/stop-words": {
      "get": {
        "tags": [
          "Settings"
        ],
        "summary": "Get stopWords",
        "description": "Returns the current value of the `stopWords` setting for the index.",
        "operationId": "getstopWords",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the current value of the `stopWords` setting.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "uniqueItems": true
                },
                "example": []
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.get",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes/movies/settings/stop-words'"
          }
        ]
      },
      "put": {
        "tags": [
          "Settings"
        ],
        "summary": "Update stopWords",
        "description": "Updates the `stopWords` setting for the index. Send the new value in the request body; send null to reset to default.",
        "operationId": "putstopWords",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "uniqueItems": true
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PUT 'MEILISEARCH_URL/indexes/movies/settings/stop-words' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '[\n    \"the\",\n    \"of\",\n    \"to\"\n  ]'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Settings"
        ],
        "summary": "Reset stopWords",
        "description": "Resets the `stopWords` setting to its default value.",
        "operationId": "deletestopWords",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/indexes/movies/settings/stop-words'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/settings/synonyms": {
      "get": {
        "tags": [
          "Settings"
        ],
        "summary": "Get synonyms",
        "description": "Returns the current value of the `synonyms` setting for the index.",
        "operationId": "getsynonyms",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the current value of the `synonyms` setting.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "propertyNames": {
                    "type": "string"
                  }
                },
                "example": {}
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.get",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes/movies/settings/synonyms'"
          }
        ]
      },
      "put": {
        "tags": [
          "Settings"
        ],
        "summary": "Update synonyms",
        "description": "Updates the `synonyms` setting for the index. Send the new value in the request body; send null to reset to default.",
        "operationId": "putsynonyms",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "propertyNames": {
                  "type": "string"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PUT 'MEILISEARCH_URL/indexes/movies/settings/synonyms' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '{\n    \"wolverine\": [\n      \"xmen\",\n      \"logan\"\n    ],\n    \"logan\": [\n      \"wolverine\",\n      \"xmen\"\n    ],\n    \"wow\": [\"world of warcraft\"]\n  }'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Settings"
        ],
        "summary": "Reset synonyms",
        "description": "Resets the `synonyms` setting to its default value.",
        "operationId": "deletesynonyms",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/indexes/movies/settings/synonyms'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/settings/typo-tolerance": {
      "get": {
        "tags": [
          "Settings"
        ],
        "summary": "Get typoTolerance",
        "description": "Returns the current value of the `typoTolerance` setting for the index.",
        "operationId": "gettypoTolerance",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the current value of the `typoTolerance` setting.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TypoSettings"
                },
                "example": {}
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.get",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes/books/settings/typo-tolerance'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Settings"
        ],
        "summary": "Reset typoTolerance",
        "description": "Resets the `typoTolerance` setting to its default value.",
        "operationId": "deletetypoTolerance",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/indexes/books/settings/typo-tolerance'"
          }
        ]
      },
      "patch": {
        "tags": [
          "Settings"
        ],
        "summary": "Update typoTolerance",
        "description": "Updates the `typoTolerance` setting for the index. Send the new value in the request body; send null to reset to default.",
        "operationId": "patchtypoTolerance",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TypoSettings"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": "movies",
                  "status": "enqueued",
                  "type": "settingsUpdate",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.update",
              "settings.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PATCH 'MEILISEARCH_URL/indexes/books/settings/typo-tolerance' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '{\n    \"minWordSizeForTypos\": {\n      \"oneTypo\": 4,\n      \"twoTypos\": 10\n    },\n    \"disableOnAttributes\": [\"title\"]\n  }'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/similar": {
      "get": {
        "tags": [
          "Similar documents"
        ],
        "summary": "Get similar documents with GET",
        "description": "Retrieve documents similar to a reference document identified by its id.\n\n> Useful for “more like this” or recommendations.",
        "operationId": "similar_get",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          },
          {
            "name": "id",
            "in": "query",
            "description": "The unique identifier ([primary key](https://www.meilisearch.com/docs/learn/getting_started/primary_key) value) of the target document.\nMeilisearch will find and return documents that are semantically\nsimilar to this document based on their vector embeddings. This is a\nrequired parameter.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "embedder",
            "in": "query",
            "description": "The name of the embedder to use for finding similar documents. This\nmust match one of the embedders configured in your index settings. The\nembedder determines how document similarity is calculated based on\nvector embeddings.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of similar documents to skip in the response. Use together with\n`limit` for pagination through large result sets. For example, to get\nsimilar documents 21-40, set `offset=20` and `limit=20`. Defaults to\n`0`.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of similar documents to return in a single response. Use\ntogether with `offset` for pagination. Higher values return more\nresults but may increase response time. Defaults to `20`.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 20,
              "minimum": 0
            }
          },
          {
            "name": "attributes_to_retrieve",
            "in": "query",
            "description": "Comma-separated list of document attributes to include in the response.\nUse `*` to retrieve all attributes. By default, all attributes listed\nin the `displayedAttributes` setting are returned. Example:\n`title,description,price`.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "retrieve_vectors",
            "in": "query",
            "description": "When `true`, includes the vector embeddings for each returned document.\nUseful for debugging or when you need to inspect the vector data. Note\nthat this can significantly increase response size. Defaults to\n`false`.",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Filter expression to narrow down which documents can be returned as\nsimilar. Uses the same syntax as search filters. Only documents\nmatching this filter will be considered when finding similar documents.\nExample: `genres = action AND year > 2000`.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "show_ranking_score",
            "in": "query",
            "description": "When `true`, includes a global `_rankingScore` field in each document\nshowing how similar it is to the target document. The score is a value\nbetween 0 and 1, where higher values indicate greater similarity.\nDefaults to `false`.",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "show_ranking_score_details",
            "in": "query",
            "description": "When `true`, includes a detailed `_rankingScoreDetails` object in each\ndocument breaking down how the similarity score was calculated. Useful\nfor debugging and understanding why certain documents are considered\nmore similar. Defaults to `false`.",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "show_performance_details",
            "in": "query",
            "description": "When `true`, includes a `_performanceDetails` object showing the\nperformance details of the search.",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "ranking_score_threshold",
            "in": "query",
            "description": "Minimum ranking score threshold (between 0.0 and 1.0) that documents\nmust meet to be included in results. Documents with a similarity score\nbelow this threshold will be excluded. Useful for ensuring only highly\nsimilar documents are returned.",
            "required": false,
            "schema": {
              "type": "number",
              "format": "float"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The documents are returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimilarResult"
                },
                "example": {
                  "hits": [
                    {
                      "id": 2770,
                      "title": "American Pie 2",
                      "poster": "https://image.tmdb.org/t/p/w1280/q4LNgUnRfltxzp3gf1MAGiK5LhV.jpg",
                      "overview": "The whole gang are back and as close as ever. They decide to get even closer by spending the summer together at a beach house. They decide to hold the biggest…",
                      "release_date": 997405200
                    },
                    {
                      "id": 190859,
                      "title": "American Sniper",
                      "poster": "https://image.tmdb.org/t/p/w1280/svPHnYE7N5NAGO49dBmRhq0vDQ3.jpg",
                      "overview": "U.S. Navy SEAL Chris Kyle takes his sole mission—protect his comrades—to heart and becomes one of the most lethal snipers in American history. His pinpoint accuracy not only saves countless lives but also makes him a prime…",
                      "release_date": 1418256000
                    }
                  ],
                  "id": "143",
                  "offset": 0,
                  "limit": 2,
                  "estimatedTotalHits": 976,
                  "processingTimeMs": 35
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "search",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes/INDEX_NAME/similar?id=TARGET_DOCUMENT_ID&embedder=EMBEDDER_NAME'"
          }
        ]
      },
      "post": {
        "tags": [
          "Similar documents"
        ],
        "summary": "Get similar documents with POST",
        "description": "Retrieve documents similar to a reference document identified by its id.\n\n> Useful for “more like this” or recommendations.",
        "operationId": "similar_post",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SimilarQuery"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The documents are returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimilarResult"
                },
                "example": {
                  "hits": [
                    {
                      "id": 2770,
                      "title": "American Pie 2",
                      "poster": "https://image.tmdb.org/t/p/w1280/q4LNgUnRfltxzp3gf1MAGiK5LhV.jpg",
                      "overview": "The whole gang are back and as close as ever. They decide to get even closer by spending the summer together at a beach house. They decide to hold the biggest…",
                      "release_date": 997405200
                    },
                    {
                      "id": 190859,
                      "title": "American Sniper",
                      "poster": "https://image.tmdb.org/t/p/w1280/svPHnYE7N5NAGO49dBmRhq0vDQ3.jpg",
                      "overview": "U.S. Navy SEAL Chris Kyle takes his sole mission—protect his comrades—to heart and becomes one of the most lethal snipers in American history. His pinpoint accuracy not only saves countless lives but also makes him a prime…",
                      "release_date": 1418256000
                    }
                  ],
                  "id": "143",
                  "offset": 0,
                  "limit": 2,
                  "estimatedTotalHits": 976,
                  "processingTimeMs": 35
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "search",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X POST 'MEILISEARCH_URL/indexes/INDEX_NAME/similar' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer DEFAULT_SEARCH_API_KEY' \\\n  --data-binary '{\n    \"id\": TARGET_DOCUMENT_ID,\n    \"embedder\": \"EMBEDDER_NAME\"\n  }'"
          }
        ]
      }
    },
    "/indexes/{index_uid}/stats": {
      "get": {
        "tags": [
          "Indexes"
        ],
        "summary": "Get stats of index",
        "description": "Return statistics for a single index: document count, database size, indexing status, and field distribution.",
        "operationId": "get_index_stats",
        "parameters": [
          {
            "name": "index_uid",
            "in": "path",
            "description": "Unique identifier of the index.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "movies"
          },
          {
            "name": "showInternalDatabaseSizes",
            "in": "query",
            "description": "If `true`, adds `internalDatabaseSizes` to the response.",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "example": false
          },
          {
            "name": "sizeFormat",
            "in": "query",
            "description": "Specify how to format the sizes:\n\n- `\"raw\"` (default): format sizes as a number of bytes\n- `\"human\"`: format sizes as a human-readable string with an appropriate unit.",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/SizeFormat"
            },
            "example": "human"
          }
        ],
        "responses": {
          "200": {
            "description": "The stats of the index.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IndexStats"
                },
                "example": {
                  "numberOfDocuments": 10,
                  "indexSize": 1572864,
                  "usedIndexSize": 524288,
                  "rawDocumentDbSize": 10,
                  "avgDocumentSize": 10,
                  "numberOfEmbeddings": 10,
                  "numberOfEmbeddedDocuments": 10,
                  "isIndexing": true,
                  "fieldDistribution": {
                    "genre": 10,
                    "author": 9
                  }
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Index not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Index `movies` not found.",
                  "code": "index_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#index_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "stats.get",
              "stats.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/indexes/movies/stats'"
          }
        ]
      }
    },
    "/keys": {
      "get": {
        "tags": [
          "Keys"
        ],
        "summary": "List API keys",
        "description": "Return all API keys configured on the instance. Results are paginated and can be filtered by offset and limit. The key value itself is never returned after creation.\n\n**Note:** Expired keys are included in the response but deleted keys are not.\nKeys are returned in descending order of creation date.",
        "operationId": "list_api_keys",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "Number of keys to skip. Use with `limit` for pagination. Defaults to 0.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of keys to return. Use with `offset` for pagination. Defaults to 20.",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 20,
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of keys.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginationView_KeyView"
                },
                "example": {
                  "results": [
                    {
                      "uid": "01b4bc42-eb33-4041-b481-254d00cce834",
                      "key": "d0552b41536279a0ad88bd595327b96f01176a60c2243e906c52ac02375f9bc4",
                      "name": "An API Key",
                      "description": null,
                      "actions": [
                        "documents.add"
                      ],
                      "indexes": [
                        "movies"
                      ],
                      "expiresAt": "2022-11-12T10:00:00Z",
                      "createdAt": "2021-11-12T10:00:00Z",
                      "updatedAt": "2021-11-12T10:00:00Z"
                    }
                  ],
                  "limit": 20,
                  "offset": 0,
                  "total": 1
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "keys.get",
              "keys.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/keys?limit=3' \\\n  -H 'Authorization: Bearer MASTER_KEY'"
          }
        ]
      },
      "post": {
        "tags": [
          "Keys"
        ],
        "summary": "Create API key",
        "description": "Create a new API key with the specified name, description, actions, and index scopes. The key value is returned only once at creation time; store it securely.\n\n**Required fields:** `actions`, `indexes`, `expiresAt`.\n**Optional fields:** `name`, `description`, `uid`.\n\nSet `expiresAt` to `null` to create a key that never expires.\nUse `\"*\"` in the `actions` array to grant all permissions (not recommended for production).\nUse `[\"*\"]` in the `indexes` array to grant access to all indexes.",
        "operationId": "create_api_key",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateApiKey"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Key has been created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeyView"
                },
                "example": {
                  "uid": "01b4bc42-eb33-4041-b481-254d00cce834",
                  "key": "d0552b41536279a0ad88bd595327b96f01176a60c2243e906c52ac02375f9bc4",
                  "name": "Indexing Products API key",
                  "description": null,
                  "actions": [
                    "documents.add"
                  ],
                  "indexes": [
                    "products"
                  ],
                  "expiresAt": "2021-11-13T00:00:00Z",
                  "createdAt": "2021-11-12T10:00:00Z",
                  "updatedAt": "2021-11-12T10:00:00Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "keys.create",
              "keys.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X POST 'MEILISEARCH_URL/keys' \\\n  -H 'Authorization: Bearer MASTER_KEY' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '{\n    \"description\": \"Add documents: Products API key\",\n    \"actions\": [\"documents.add\"],\n    \"indexes\": [\"products\"],\n    \"expiresAt\": \"2042-04-02T00:42:42Z\"\n  }'"
          }
        ]
      }
    },
    "/keys/{key}": {
      "get": {
        "tags": [
          "Keys"
        ],
        "summary": "Get API key",
        "description": "Retrieve a single API key by its `uid` or by its `key` value.",
        "operationId": "get_api_key",
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "description": "The `uid` or `key` field of an existing API key.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "password"
            },
            "example": "7b198a7f-52a0-4188-8762-9ad93cd608b2"
          }
        ],
        "responses": {
          "200": {
            "description": "The key is returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeyView"
                },
                "example": {
                  "uid": "01b4bc42-eb33-4041-b481-254d00cce834",
                  "key": "d0552b41536279a0ad88bd595327b96f01176a60c2243e906c52ac02375f9bc4",
                  "name": "An API Key",
                  "description": null,
                  "actions": [
                    "documents.add"
                  ],
                  "indexes": [
                    "movies"
                  ],
                  "expiresAt": "2022-11-12T10:00:00Z",
                  "createdAt": "2021-11-12T10:00:00Z",
                  "updatedAt": "2021-11-12T10:00:00Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "API key not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The API key was not found.",
                  "code": "api_key_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#api_key_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "keys.get",
              "keys.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/keys/6062abda-a5aa-4414-ac91-ecd7944c0f8d' \\\n  -H 'Authorization: Bearer MASTER_KEY'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Keys"
        ],
        "summary": "Delete API key",
        "description": "Permanently delete the specified API key. The key will no longer be valid for authentication.",
        "operationId": "delete_api_key",
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "description": "The `uid` or `key` field of an existing API key.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "password"
            },
            "example": "7b198a7f-52a0-4188-8762-9ad93cd608b2"
          }
        ],
        "responses": {
          "204": {
            "description": "The key has been removed."
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "API key not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The API key was not found.",
                  "code": "api_key_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#api_key_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "keys.delete",
              "keys.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/keys/6062abda-a5aa-4414-ac91-ecd7944c0f8d' \\\n  -H 'Authorization: Bearer MASTER_KEY'"
          }
        ]
      },
      "patch": {
        "tags": [
          "Keys"
        ],
        "summary": "Update API key",
        "description": "Update the name and description of an API key.\n\nUpdates are partial: only the fields you send are changed, and any fields not present in the payload remain unchanged.\n\n**Note:** Only `name` and `description` can be updated. The fields `actions`, `indexes`,\n`expiresAt`, and `uid` cannot be modified after key creation.",
        "operationId": "patch_api_key",
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "description": "The `uid` or `key` field of an existing API key.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "password"
            },
            "example": "7b198a7f-52a0-4188-8762-9ad93cd608b2"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchApiKey"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The key has been updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeyView"
                },
                "example": {
                  "uid": "01b4bc42-eb33-4041-b481-254d00cce834",
                  "key": "d0552b41536279a0ad88bd595327b96f01176a60c2243e906c52ac02375f9bc4",
                  "name": "An API Key",
                  "description": null,
                  "actions": [
                    "documents.add"
                  ],
                  "indexes": [
                    "movies"
                  ],
                  "expiresAt": "2022-11-12T10:00:00Z",
                  "createdAt": "2021-11-12T10:00:00Z",
                  "updatedAt": "2021-11-12T10:00:00Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "API key not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The API key was not found.",
                  "code": "api_key_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#api_key_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "keys.update",
              "keys.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PATCH 'MEILISEARCH_URL/keys/6062abda-a5aa-4414-ac91-ecd7944c0f8d' \\\n  -H 'Authorization: Bearer MASTER_KEY' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '{\n    \"name\": \"Products/Reviews API key\",\n    \"description\": \"Manage documents: Products/Reviews API key\"\n  }'"
          }
        ]
      }
    },
    "/logs/stderr": {
      "post": {
        "tags": [
          "Logs"
        ],
        "summary": "Update target of the console logs",
        "description": "Configure at runtime the level of the console logs written to stderr (e.g. debug, info, warn, error).",
        "operationId": "update_stderr_target",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateStderrLogs"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "The console logs have been updated."
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "metrics.get",
              "metrics.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X POST MEILISEARCH_URL/logs/stderr \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '{\n      \"target\": \"milli=trace,index_scheduler=info,actix_web=off\"\n  }'"
          }
        ]
      }
    },
    "/logs/stream": {
      "post": {
        "tags": [
          "Logs"
        ],
        "summary": "Retrieve logs",
        "description": "Stream logs over HTTP. The format of the logs depends on the configuration specified in the payload. The logs are sent as multi-part, and the stream never stops, so ensure your client can handle a long-lived connection. To stop receiving logs, call the `DELETE /logs/stream` route.\n\nOnly one client can listen at a time. An error is returned if you call this route while it is already in use by another client.",
        "operationId": "get_logs",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetLogs"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Logs are being returned.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                },
                "example": "\n2024-10-08T13:35:02.643750Z  WARN HTTP request{method=GET host=\"localhost:7700\" route=/metrics query_parameters= user_agent=HTTPie/3.2.3 status_code=400 error=Getting metrics requires enabling the `metrics` experimental feature. See https://github.com/meilisearch/product/discussions/625}: tracing_actix_web::middleware: Error encountered while processing the incoming HTTP request: ResponseError { code: 400, message: \"Getting metrics requires enabling the `metrics` experimental feature. See https://github.com/meilisearch/product/discussions/625\", error_code: \"feature_not_enabled\", error_type: \"invalid_request\", error_link: \"https://docs.meilisearch.com/errors#feature_not_enabled\" }\n2024-10-08T13:35:02.644191Z  INFO HTTP request{method=GET host=\"localhost:7700\" route=/metrics query_parameters= user_agent=HTTPie/3.2.3 status_code=400 error=Getting metrics requires enabling the `metrics` experimental feature. See https://github.com/meilisearch/product/discussions/625}: meilisearch: close time.busy=1.66ms time.idle=658µs\n2024-10-08T13:35:18.564152Z  INFO HTTP request{method=PATCH host=\"localhost:7700\" route=/experimental-features query_parameters= user_agent=curl/8.6.0 status_code=200}: meilisearch: close time.busy=1.17ms time.idle=127µs\n2024-10-08T13:35:23.094987Z  INFO HTTP request{method=GET host=\"localhost:7700\" route=/metrics query_parameters= user_agent=HTTPie/3.2.3 status_code=200}: meilisearch: close time.busy=2.12ms time.idle=595µs\n"
              }
            }
          },
          "400": {
            "description": "The route is already being used.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The `/logs/stream` route is currently in use by someone else.",
                  "code": "bad_request",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#bad_request"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "metrics.get",
              "metrics.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X POST MEILISEARCH_URL/logs/stream \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '{\n    \"mode\": \"human\",\n    \"target\": \"index_scheduler=trace\"\n  }'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Logs"
        ],
        "summary": "Stop retrieving logs",
        "description": "Call this route to make the engine stop sending logs to the client that opened the `POST /logs/stream` connection.",
        "operationId": "cancel_logs",
        "responses": {
          "204": {
            "description": "Logs are being returned."
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "metrics.get",
              "metrics.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE MEILISEARCH_URL/logs/stream\n}'"
          }
        ]
      }
    },
    "/metrics": {
      "get": {
        "tags": [
          "Stats"
        ],
        "summary": "Get Prometheus metrics",
        "description": "Return metrics for the engine in Prometheus format. This is an [experimental feature](https://www.meilisearch.com/docs/learn/experimental/overview) and must be enabled before use.",
        "operationId": "get_metrics",
        "responses": {
          "200": {
            "description": "The metrics of the instance.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                },
                "example": "\n# HELP meilisearch_db_size_bytes Meilisearch DB Size In Bytes\n# TYPE meilisearch_db_size_bytes gauge\nmeilisearch_db_size_bytes 1130496\n# HELP meilisearch_batch_running_progress_trace The currently running progress trace\n# TYPE meilisearch_batch_running_progress_trace gauge\nmeilisearch_batch_running_progress_trace{batch_uid=\"0\",step_name=\"document\"} 0.710618582519409\nmeilisearch_batch_running_progress_trace{batch_uid=\"0\",step_name=\"extracting word proximity\"} 0.2222222222222222\nmeilisearch_batch_running_progress_trace{batch_uid=\"0\",step_name=\"indexing\"} 0.6666666666666666\nmeilisearch_batch_running_progress_trace{batch_uid=\"0\",step_name=\"processing tasks\"} 0\n# HELP meilisearch_http_requests_total Meilisearch HTTP requests total\n# TYPE meilisearch_http_requests_total counter\nmeilisearch_http_requests_total{method=\"GET\",path=\"/metrics\",status=\"400\"} 1\nmeilisearch_http_requests_total{method=\"PATCH\",path=\"/experimental-features\",status=\"200\"} 1\n# HELP meilisearch_http_response_time_seconds Meilisearch HTTP response times\n# TYPE meilisearch_http_response_time_seconds histogram\nmeilisearch_http_response_time_seconds_bucket{method=\"GET\",path=\"/metrics\",le=\"0.005\"} 0\nmeilisearch_http_response_time_seconds_bucket{method=\"GET\",path=\"/metrics\",le=\"0.01\"} 0\nmeilisearch_http_response_time_seconds_bucket{method=\"GET\",path=\"/metrics\",le=\"0.025\"} 0\nmeilisearch_http_response_time_seconds_bucket{method=\"GET\",path=\"/metrics\",le=\"0.05\"} 0\nmeilisearch_http_response_time_seconds_bucket{method=\"GET\",path=\"/metrics\",le=\"0.075\"} 0\nmeilisearch_http_response_time_seconds_bucket{method=\"GET\",path=\"/metrics\",le=\"0.1\"} 0\nmeilisearch_http_response_time_seconds_bucket{method=\"GET\",path=\"/metrics\",le=\"0.25\"} 0\nmeilisearch_http_response_time_seconds_bucket{method=\"GET\",path=\"/metrics\",le=\"0.5\"} 0\nmeilisearch_http_response_time_seconds_bucket{method=\"GET\",path=\"/metrics\",le=\"0.75\"} 0\nmeilisearch_http_response_time_seconds_bucket{method=\"GET\",path=\"/metrics\",le=\"1\"} 0\nmeilisearch_http_response_time_seconds_bucket{method=\"GET\",path=\"/metrics\",le=\"2.5\"} 0\nmeilisearch_http_response_time_seconds_bucket{method=\"GET\",path=\"/metrics\",le=\"5\"} 0\nmeilisearch_http_response_time_seconds_bucket{method=\"GET\",path=\"/metrics\",le=\"7.5\"} 0\nmeilisearch_http_response_time_seconds_bucket{method=\"GET\",path=\"/metrics\",le=\"10\"} 0\nmeilisearch_http_response_time_seconds_bucket{method=\"GET\",path=\"/metrics\",le=\"+Inf\"} 0\nmeilisearch_http_response_time_seconds_sum{method=\"GET\",path=\"/metrics\"} 0\nmeilisearch_http_response_time_seconds_count{method=\"GET\",path=\"/metrics\"} 0\n# HELP meilisearch_last_finished_batches_progress_trace_ms The last few batches progress trace in milliseconds\n# TYPE meilisearch_last_finished_batches_progress_trace_ms gauge\nmeilisearch_last_finished_batches_progress_trace_ms{batch_uid=\"0\",step_name=\"processing tasks\"} 19360\nmeilisearch_last_finished_batches_progress_trace_ms{batch_uid=\"0\",step_name=\"processing tasks > computing document changes\"} 368\nmeilisearch_last_finished_batches_progress_trace_ms{batch_uid=\"0\",step_name=\"processing tasks > computing document changes > preparing payloads\"} 367\nmeilisearch_last_finished_batches_progress_trace_ms{batch_uid=\"0\",step_name=\"processing tasks > computing document changes > preparing payloads > payload\"} 367\nmeilisearch_last_finished_batches_progress_trace_ms{batch_uid=\"0\",step_name=\"processing tasks > indexing\"} 18970\n# HELP meilisearch_index_count Meilisearch Index Count\n# TYPE meilisearch_index_count gauge\nmeilisearch_index_count 1\n# HELP meilisearch_index_docs_count Meilisearch Index Docs Count\n# TYPE meilisearch_index_docs_count gauge\nmeilisearch_index_docs_count{index=\"mieli\"} 2\n# HELP meilisearch_is_indexing Meilisearch Is Indexing\n# TYPE meilisearch_is_indexing gauge\nmeilisearch_is_indexing 0\n# HELP meilisearch_last_update Meilisearch Last Update\n# TYPE meilisearch_last_update gauge\nmeilisearch_last_update 1726675964\n# HELP meilisearch_nb_tasks Meilisearch Number of tasks\n# TYPE meilisearch_nb_tasks gauge\nmeilisearch_nb_tasks{kind=\"indexes\",value=\"mieli\"} 39\nmeilisearch_nb_tasks{kind=\"statuses\",value=\"canceled\"} 0\nmeilisearch_nb_tasks{kind=\"statuses\",value=\"enqueued\"} 0\nmeilisearch_nb_tasks{kind=\"statuses\",value=\"failed\"} 4\nmeilisearch_nb_tasks{kind=\"statuses\",value=\"processing\"} 0\nmeilisearch_nb_tasks{kind=\"statuses\",value=\"succeeded\"} 35\nmeilisearch_nb_tasks{kind=\"types\",value=\"documentAdditionOrUpdate\"} 9\nmeilisearch_nb_tasks{kind=\"types\",value=\"documentDeletion\"} 0\nmeilisearch_nb_tasks{kind=\"types\",value=\"documentEdition\"} 0\nmeilisearch_nb_tasks{kind=\"types\",value=\"dumpCreation\"} 0\nmeilisearch_nb_tasks{kind=\"types\",value=\"indexCreation\"} 0\nmeilisearch_nb_tasks{kind=\"types\",value=\"indexDeletion\"} 8\nmeilisearch_nb_tasks{kind=\"types\",value=\"indexSwap\"} 0\nmeilisearch_nb_tasks{kind=\"types\",value=\"indexUpdate\"} 0\nmeilisearch_nb_tasks{kind=\"types\",value=\"settingsUpdate\"} 22\nmeilisearch_nb_tasks{kind=\"types\",value=\"snapshotCreation\"} 0\nmeilisearch_nb_tasks{kind=\"types\",value=\"taskCancelation\"} 0\nmeilisearch_nb_tasks{kind=\"types\",value=\"taskDeletion\"} 0\n# HELP meilisearch_used_db_size_bytes Meilisearch Used DB Size In Bytes\n# TYPE meilisearch_used_db_size_bytes gauge\nmeilisearch_used_db_size_bytes 409600\n# HELP meilisearch_last_indexed_documents_count The last number of indexed documents in a batch\n# TYPE meilisearch_last_indexed_documents_count gauge\nmeilisearch_last_indexed_documents_count{batch_uid=\"0\",index=\"movies\"} 31944\n# HELP meilisearch_last_indexed_documents_duration_ms The duration in ms of the last batch that indexed documents\n# TYPE meilisearch_last_indexed_documents_duration_ms gauge\nmeilisearch_last_indexed_documents_duration_ms{batch_uid=\"0\",index=\"movies\"} 17904\n"
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "metrics.get",
              "metrics.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/metrics'"
          }
        ]
      }
    },
    "/multi-search": {
      "post": {
        "tags": [
          "Multi-search"
        ],
        "summary": "Perform a multi-search",
        "description": "Run multiple search queries in a single API request.\n\nEach query can target a different index, so you can search across several indexes at once and get one combined response.\n\n**Warning:** If Meilisearch encounters an error processing any query in the request, it immediately\nstops and returns an error message for the first error encountered. Partial results are not returned.",
        "operationId": "multi_search_with_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FederatedSearch"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Federated multi-search.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FederatedSearchResult"
                },
                "example": {
                  "hits": [
                    {
                      "id": 42,
                      "title": "Batman returns",
                      "overview": "The overview of batman returns",
                      "_federation": {
                        "indexUid": "movies",
                        "queriesPosition": 0
                      }
                    },
                    {
                      "comicsId": "batman-killing-joke",
                      "description": "This comic is really awesome",
                      "title": "Batman: the killing joke",
                      "_federation": {
                        "indexUid": "comics",
                        "queriesPosition": 1
                      }
                    }
                  ],
                  "processingTimeMs": 0,
                  "limit": 20,
                  "offset": 0,
                  "estimatedTotalHits": 2,
                  "semanticHitCount": 0
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "search",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X POST 'MEILISEARCH_URL/multi-search' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '{\n    \"queries\": [\n      {\n        \"indexUid\": \"movies\",\n        \"q\": \"pooh\",\n        \"limit\": 5\n      },\n      {\n        \"indexUid\": \"movies\",\n        \"q\": \"nemo\",\n        \"limit\": 5\n      },\n      {\n        \"indexUid\": \"movie_ratings\",\n        \"q\": \"us\"\n      }\n    ]\n  }'"
          }
        ]
      }
    },
    "/network": {
      "get": {
        "tags": [
          "Experimental features"
        ],
        "summary": "Get network topology",
        "description": "Return the list of Meilisearch instances currently known to this node (self and remotes).",
        "operationId": "get_network",
        "responses": {
          "200": {
            "description": "Known nodes are returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Network"
                },
                "example": {
                  "self": "ms-0",
                  "remotes": {
                    "ms-0": {
                      "url": "http://localhost:7700",
                      "searchApiKey": null,
                      "writeApiKey": null
                    },
                    "ms-1": {
                      "url": "http://localhost:7701",
                      "searchApiKey": "foo",
                      "writeApiKey": "bar"
                    },
                    "ms-2": {
                      "url": "http://localhost:7702",
                      "searchApiKey": "bar",
                      "writeApiKey": "foo"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "network.get",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/network'"
          }
        ]
      },
      "patch": {
        "tags": [
          "Experimental features"
        ],
        "summary": "Configure network topology",
        "description": "Add or remove remote nodes from the network. Changes apply to the current instance’s view of the cluster.",
        "operationId": "patch_network",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Network"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "New network state is returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Network"
                },
                "example": {
                  "self": "ms-0",
                  "remotes": {
                    "ms-0": {
                      "url": "http://localhost:7700",
                      "searchApiKey": null,
                      "writeApiKey": null
                    },
                    "ms-1": {
                      "url": "http://localhost:7701",
                      "searchApiKey": "foo",
                      "writeApiKey": "bar"
                    },
                    "ms-2": {
                      "url": "http://localhost:7702",
                      "searchApiKey": "bar",
                      "writeApiKey": "foo"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "network.update",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PATCH 'MEILISEARCH_URL/network' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '{\n    \"self\": \"ms-00\",\n    \"remotes\": {\n      \"ms-00\": {\n        \"url\": \"http://INSTANCE_URL\",\n        \"searchApiKey\": \"INSTANCE_API_KEY\"\n      },\n      \"ms-01\": {\n        \"url\": \"http://ANOTHER_INSTANCE_URL\",\n        \"searchApiKey\": \"ANOTHER_INSTANCE_API_KEY\"\n      }\n    }\n  }'"
          }
        ]
      }
    },
    "/network/control": {
      "post": {
        "tags": [
          "Experimental features"
        ],
        "summary": "Network control",
        "description": "Send messages to control the progress of a network topology change task.\n\nThe route is mostly used internally when sending a PATCH to the network, but is accessible for manual control as well.",
        "operationId": "post_network_change",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NetworkChange"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Empty response."
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "network.update",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X POST 'MEILISEARCH_URL/network/control' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '{\n    \"origin\": {\n      \"remoteName\": \"ms-00\",\n      \"taskUid\": 42,\n      \"networkVersion\": \"0195e7a8-9c0d-7b3a-8f2e-123456789abc\"\n    },\n    \"message\": {\n      \"type\": \"exportNoIndexForRemote\",\n      \"remote\": \"ms-01\"\n    }\n  }'"
          }
        ]
      }
    },
    "/render-template": {
      "post": {
        "tags": [
          "Template"
        ],
        "summary": "Render template",
        "description": "Render a template, either fetched from the settings of an index (embedder document template,\nchat document template, indexing or search fragment) or provided inline, by injecting the\ngiven input (a document from an index, an inline document, or a search query).\n\nReturns the template and the rendered result, allowing to preview how Meilisearch renders\ntemplates without indexing any document.\n\nThis route is only available when the `renderRoute` [experimental feature](https://www.meilisearch.com/docs/resources/help/experimental_features_overview) is enabled.",
        "operationId": "render_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RenderQuery"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The rendered result is returned along with the template",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RenderResult"
                },
                "example": {
                  "template": "{{ doc.breed }} called {{ doc.name }}",
                  "rendered": "A Jack Russell called Iko"
                }
              }
            }
          },
          "400": {
            "description": "Parameters are incorrect",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "cannot find embedder `default` in index `movies`",
                  "code": "invalid_render_template",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#invalid_render_template_id"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Template or document not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Document with ID `9999` not found in index `movies`.",
                  "code": "render_document_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#render_document_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "settings.get,documents.get",
              "*.get",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X POST 'MEILISEARCH_URL/render-template' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '{\n    \"template\": {\n      \"kind\": \"inlineDocumentTemplate\",\n      \"inline\": \"An inline document template rendered on {{doc.id}}\"\n    },\n    \"input\": {\n      \"kind\": \"inlineDocument\",\n      \"inline\": { \"id\": \"this document\" }\n    }\n  }'"
          }
        ]
      }
    },
    "/snapshots": {
      "post": {
        "tags": [
          "Backups"
        ],
        "summary": "Create snapshot",
        "description": "Trigger a snapshot creation process. When complete, a snapshot file is written to the snapshot directory. The directory is created if it does not exist.",
        "operationId": "create_snapshot",
        "responses": {
          "202": {
            "description": "Snapshot is being created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 0,
                  "indexUid": null,
                  "status": "enqueued",
                  "type": "snapshotCreation",
                  "enqueuedAt": "2021-01-01T09:39:00.000000Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "snapshots.create",
              "snapshots.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X POST 'MEILISEARCH_URL/snapshots'"
          }
        ]
      }
    },
    "/stats": {
      "get": {
        "tags": [
          "Stats"
        ],
        "summary": "Get stats of all indexes",
        "description": "Return statistics for the Meilisearch instance and for each index. Includes database size, last update time, document counts, and indexing status per index.",
        "operationId": "get_stats",
        "parameters": [
          {
            "name": "showInternalDatabaseSizes",
            "in": "query",
            "description": "If `true`, adds `internalDatabaseSizes` to the response.",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "example": false
          },
          {
            "name": "sizeFormat",
            "in": "query",
            "description": "Specify how to format the sizes:\n\n- `\"raw\"` (default): format sizes as a number of bytes\n- `\"human\"`: format sizes as a human-readable string with an appropriate unit.",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/SizeFormat"
            },
            "example": "human"
          }
        ],
        "responses": {
          "200": {
            "description": "The stats of the instance.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Stats"
                },
                "example": {
                  "databaseSize": 567,
                  "usedDatabaseSize": 456,
                  "lastUpdate": "2019-11-20T09:40:33.711324Z",
                  "indexes": {
                    "movies": {
                      "numberOfDocuments": 10,
                      "indexSize": 1572864,
                      "usedIndexSize": 524288,
                      "rawDocumentDbSize": 100,
                      "maxDocumentSize": 16,
                      "avgDocumentSize": 10,
                      "isIndexing": true,
                      "fieldDistribution": {
                        "genre": 10,
                        "author": 9
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "stats.get",
              "stats.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/stats'"
          }
        ]
      }
    },
    "/swap-indexes": {
      "post": {
        "tags": [
          "Indexes"
        ],
        "summary": "Swap indexes",
        "description": "Swap the documents, primary key, settings, and task history of two or more indexes.\n\nIndexes are swapped in pairs; a single request can include multiple pairs.\nThe operation is atomic: either all swaps succeed or none do. In the task history, every mention of one index uid is replaced by the other and vice versa.\nEnqueued tasks are left unmodified.",
        "operationId": "swap_indexes",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/SwapIndexesPayload"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 3,
                  "indexUid": null,
                  "status": "enqueued",
                  "type": "indexSwap",
                  "enqueuedAt": "2021-08-12T10:00:00.000000Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "indexes.swap",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X POST 'MEILISEARCH_URL/swap-indexes' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '[\n    {\n      \"indexes\": [\n        \"indexA\",\n        \"indexB\"\n      ]\n    },\n    {\n      \"indexes\": [\n        \"indexX\",\n        \"indexY\"\n      ]\n    }\n  ]'"
          }
        ]
      }
    },
    "/tasks": {
      "get": {
        "tags": [
          "Async task management"
        ],
        "summary": "List tasks",
        "description": "The `/tasks` route returns information about [asynchronous operations](https://docs.meilisearch.com/learn/advanced/asynchronous_operations.html) (indexing, document updates, settings changes, and so on).\n\nTasks are returned in descending order of uid by default, so the most recently created or updated tasks appear first. Results are paginated and can be filtered using query parameters such as `indexUids`, `statuses`, `types`, and date ranges.",
        "operationId": "get_tasks",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of batches to return.",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "u-int32",
              "default": 20,
              "minimum": 0
            },
            "example": 12
          },
          {
            "name": "from",
            "in": "query",
            "description": "`uid` of the first batch returned.",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "u-int32",
              "minimum": 0
            },
            "example": 12421
          },
          {
            "name": "reverse",
            "in": "query",
            "description": "If `true`, returns results in the reverse order, from oldest to most recent.",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "example": true
          },
          {
            "name": "batchUids",
            "in": "query",
            "description": "Permits to filter tasks by their batch uid. By default, when the\n`batchUids` query parameter is not set, all task uids are returned.\nIt's possible to specify several batch uids by separating them with\nthe `,` character.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "u-int32",
                "minimum": 0
              }
            },
            "example": [
              1,
              2,
              3
            ]
          },
          {
            "name": "uids",
            "in": "query",
            "description": "Permits to filter tasks by their uid. By default, when the uids query\nparameter is not set, all task uids are returned. It's possible to\nspecify several uids by separating them with the `,` character.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "u-int32",
                "minimum": 0
              }
            },
            "example": [
              231,
              423,
              598
            ]
          },
          {
            "name": "canceledBy",
            "in": "query",
            "description": "Permits to filter tasks using the uid of the task that canceled them.\nIt's possible to specify several task uids by separating them with\nthe `,` character.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "u-int32",
                "minimum": 0
              }
            },
            "example": [
              374
            ]
          },
          {
            "name": "types",
            "in": "query",
            "description": "Permits to filter tasks by their related type. By default, when `types`\nquery parameter is not set, all task types are returned. It's possible\nto specify several types by separating them with the `,` character.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "example": [
              "documentAdditionOrUpdate"
            ]
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Permits to filter tasks by their status. By default, when `statuses`\nquery parameter is not set, all task statuses are returned. It's\npossible to specify several statuses by separating them with the `,`\ncharacter.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/Status"
              }
            },
            "example": [
              "succeeded",
              "failed",
              "canceled",
              "enqueued",
              "processing"
            ]
          },
          {
            "name": "indexUids",
            "in": "query",
            "description": "Permits to filter tasks by their related index. By default, when\n`indexUids` query parameter is not set, the tasks of all the indexes\nare returned. It is possible to specify several indexes by separating\nthem with the `,` character.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "example": [
              "movies",
              "theater"
            ]
          },
          {
            "name": "afterEnqueuedAt",
            "in": "query",
            "description": "Permits to filter tasks based on their enqueuedAt time. Matches tasks\nenqueued after the given date. Supports RFC 3339 date format.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2024-08-08T16:37:09.971Z"
          },
          {
            "name": "beforeEnqueuedAt",
            "in": "query",
            "description": "Permits to filter tasks based on their enqueuedAt time. Matches tasks\nenqueued before the given date. Supports RFC 3339 date format.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2024-08-08T16:37:09.971Z"
          },
          {
            "name": "afterStartedAt",
            "in": "query",
            "description": "Permits to filter tasks based on their startedAt time. Matches tasks\nstarted after the given date. Supports RFC 3339 date format.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2024-08-08T16:37:09.971Z"
          },
          {
            "name": "beforeStartedAt",
            "in": "query",
            "description": "Permits to filter tasks based on their startedAt time. Matches tasks\nstarted before the given date. Supports RFC 3339 date format.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2024-08-08T16:37:09.971Z"
          },
          {
            "name": "afterFinishedAt",
            "in": "query",
            "description": "Permits to filter tasks based on their finishedAt time. Matches tasks\nfinished after the given date. Supports RFC 3339 date format.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2024-08-08T16:37:09.971Z"
          },
          {
            "name": "beforeFinishedAt",
            "in": "query",
            "description": "Permits to filter tasks based on their finishedAt time. Matches tasks\nfinished before the given date. Supports RFC 3339 date format.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2024-08-08T16:37:09.971Z"
          }
        ],
        "responses": {
          "200": {
            "description": "The list of tasks is returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AllTasks"
                },
                "example": {
                  "results": [
                    {
                      "uid": 144,
                      "indexUid": "mieli",
                      "status": "succeeded",
                      "type": "indexCreation",
                      "canceledBy": null,
                      "details": null,
                      "error": null,
                      "duration": "PT0.009330S",
                      "enqueuedAt": "2024-08-08T09:01:13.348471Z",
                      "startedAt": "2024-08-08T09:01:13.349442Z",
                      "finishedAt": "2024-08-08T09:01:13.358772Z"
                    }
                  ],
                  "total": 1,
                  "limit": 1,
                  "from": 144,
                  "next": null
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "tasks.get",
              "tasks.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/tasks'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Async task management"
        ],
        "summary": "Delete tasks",
        "description": "Permanently delete [tasks](https://docs.meilisearch.com/learn/advanced/asynchronous_operations.html) matching the given filters. You must provide at least one filter (e.g. `uids`, `indexUids`, `statuses`) to specify which tasks to delete.\n\n**Note:** Only finished tasks (`succeeded`, `failed`, or `canceled`) can be deleted.\nYou cannot delete `enqueued` or `processing` tasks.\n\n**Note:** Task deletion is atomic — either all matched tasks are deleted or none are.\n\n**Note:** Each filter parameter accepts `*` to match all values (e.g., `statuses=*`).",
        "operationId": "delete_tasks",
        "parameters": [
          {
            "name": "uids",
            "in": "query",
            "description": "Permits to select tasks by their uid. When the `uids` query\nparameter is set to `*`, all task uids included. It's possible to\nspecify several uids by separating them with the `,` character.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "u-int32",
                "minimum": 0
              }
            },
            "example": [
              231,
              423,
              598
            ]
          },
          {
            "name": "batchUids",
            "in": "query",
            "description": "Lets you filter tasks by their `batchUid`.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "u-int32",
                "minimum": 0
              }
            },
            "example": [
              231,
              423,
              598
            ]
          },
          {
            "name": "canceledBy",
            "in": "query",
            "description": "Permits to filter tasks using the uid of the task that canceled them.\nIt's possible to specify several task uids by separating them with\nthe `,` character.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "u-int32",
                "minimum": 0
              }
            },
            "example": [
              374
            ]
          },
          {
            "name": "types",
            "in": "query",
            "description": "Permits to filter tasks by their related type. By default, when `types`\nquery parameter is not set, all task types are returned. It's possible\nto specify several types by separating them with the `,` character.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/Kind"
              }
            },
            "example": [
              "documentDeletion"
            ]
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Permits to filter tasks by their status. By default, when `statuses`\nquery parameter is not set, all task statuses are returned. It's\npossible to specify several statuses by separating them with the `,`\ncharacter.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/Status"
              }
            },
            "example": [
              "succeeded",
              "failed",
              "canceled"
            ]
          },
          {
            "name": "indexUids",
            "in": "query",
            "description": "Permits to filter tasks by their related index. By default, when\n`indexUids` query parameter is not set, the tasks of all the indexes\nare returned. It is possible to specify several indexes by separating\nthem with the `,` character.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "example": [
              "movies",
              "theater"
            ]
          },
          {
            "name": "afterEnqueuedAt",
            "in": "query",
            "description": "Permits to filter tasks based on their enqueuedAt time. Matches tasks\nenqueued after the given date. Supports RFC 3339 date format.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2024-08-08T16:37:09.971Z"
          },
          {
            "name": "beforeEnqueuedAt",
            "in": "query",
            "description": "Permits to filter tasks based on their enqueuedAt time. Matches tasks\nenqueued before the given date. Supports RFC 3339 date format.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2024-08-08T16:37:09.971Z"
          },
          {
            "name": "afterStartedAt",
            "in": "query",
            "description": "Permits to filter tasks based on their startedAt time. Matches tasks\nstarted after the given date. Supports RFC 3339 date format.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2024-08-08T16:37:09.971Z"
          },
          {
            "name": "beforeStartedAt",
            "in": "query",
            "description": "Permits to filter tasks based on their startedAt time. Matches tasks\nstarted before the given date. Supports RFC 3339 date format.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2024-08-08T16:37:09.971Z"
          },
          {
            "name": "afterFinishedAt",
            "in": "query",
            "description": "Permits to filter tasks based on their finishedAt time. Matches tasks\nfinished after the given date. Supports RFC 3339 date format.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2024-08-08T16:37:09.971Z"
          },
          {
            "name": "beforeFinishedAt",
            "in": "query",
            "description": "Permits to filter tasks based on their finishedAt time. Matches tasks\nfinished before the given date. Supports RFC 3339 date format.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2024-08-08T16:37:09.971Z"
          }
        ],
        "responses": {
          "200": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": null,
                  "status": "enqueued",
                  "type": "taskDeletion",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "400": {
            "description": "A filter is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Query parameters to filter the tasks to delete are missing. Available query parameters are: `uids`, `indexUids`, `statuses`, `types`, `canceledBy`, `beforeEnqueuedAt`, `afterEnqueuedAt`, `beforeStartedAt`, `afterStartedAt`, `beforeFinishedAt`, `afterFinishedAt`.",
                  "code": "missing_task_filters",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#missing_task_filters"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "The task uid does not exist.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Task :taskUid not found.",
                  "code": "task_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors/#task_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "tasks.delete",
              "tasks.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/tasks?uids=1,2'"
          }
        ]
      }
    },
    "/tasks/cancel": {
      "post": {
        "tags": [
          "Async task management"
        ],
        "summary": "Cancel tasks",
        "description": "Cancel enqueued and/or processing [tasks](https://www.meilisearch.com/docs/learn/async/asynchronous_operations). You must provide at least one filter (e.g. `uids`, `indexUids`, `statuses`) to specify which tasks to cancel.\n\n**Note:** Task cancellation is atomic — either all matched tasks are canceled or none are.\n\n**Note:** Each filter parameter accepts `*` to match all values (e.g., `statuses=*`).\n\n**Tip:** You can cancel `taskCancelation` type tasks as long as they are `enqueued` or `processing`,\nbecause cancellation tasks are processed in reverse order of enqueueing.",
        "operationId": "cancel_tasks",
        "parameters": [
          {
            "name": "uids",
            "in": "query",
            "description": "Permits to select tasks by their uid. When the `uids` query\nparameter is set to `*`, all task uids included. It's possible to\nspecify several uids by separating them with the `,` character.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "u-int32",
                "minimum": 0
              }
            },
            "example": [
              231,
              423,
              598
            ]
          },
          {
            "name": "batchUids",
            "in": "query",
            "description": "Lets you filter tasks by their `batchUid`.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "u-int32",
                "minimum": 0
              }
            },
            "example": [
              231,
              423,
              598
            ]
          },
          {
            "name": "canceledBy",
            "in": "query",
            "description": "Permits to filter tasks using the uid of the task that canceled them.\nIt's possible to specify several task uids by separating them with\nthe `,` character.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "u-int32",
                "minimum": 0
              }
            },
            "example": [
              374
            ]
          },
          {
            "name": "types",
            "in": "query",
            "description": "Permits to filter tasks by their related type. By default, when `types`\nquery parameter is not set, all task types are returned. It's possible\nto specify several types by separating them with the `,` character.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/Kind"
              }
            },
            "example": [
              "documentDeletion"
            ]
          },
          {
            "name": "statuses",
            "in": "query",
            "description": "Permits to filter tasks by their status. By default, when `statuses`\nquery parameter is not set, all task statuses are returned. It's\npossible to specify several statuses by separating them with the `,`\ncharacter.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/Status"
              }
            },
            "example": [
              "succeeded",
              "failed",
              "canceled"
            ]
          },
          {
            "name": "indexUids",
            "in": "query",
            "description": "Permits to filter tasks by their related index. By default, when\n`indexUids` query parameter is not set, the tasks of all the indexes\nare returned. It is possible to specify several indexes by separating\nthem with the `,` character.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "example": [
              "movies",
              "theater"
            ]
          },
          {
            "name": "afterEnqueuedAt",
            "in": "query",
            "description": "Permits to filter tasks based on their enqueuedAt time. Matches tasks\nenqueued after the given date. Supports RFC 3339 date format.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2024-08-08T16:37:09.971Z"
          },
          {
            "name": "beforeEnqueuedAt",
            "in": "query",
            "description": "Permits to filter tasks based on their enqueuedAt time. Matches tasks\nenqueued before the given date. Supports RFC 3339 date format.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2024-08-08T16:37:09.971Z"
          },
          {
            "name": "afterStartedAt",
            "in": "query",
            "description": "Permits to filter tasks based on their startedAt time. Matches tasks\nstarted after the given date. Supports RFC 3339 date format.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2024-08-08T16:37:09.971Z"
          },
          {
            "name": "beforeStartedAt",
            "in": "query",
            "description": "Permits to filter tasks based on their startedAt time. Matches tasks\nstarted before the given date. Supports RFC 3339 date format.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2024-08-08T16:37:09.971Z"
          },
          {
            "name": "afterFinishedAt",
            "in": "query",
            "description": "Permits to filter tasks based on their finishedAt time. Matches tasks\nfinished after the given date. Supports RFC 3339 date format.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2024-08-08T16:37:09.971Z"
          },
          {
            "name": "beforeFinishedAt",
            "in": "query",
            "description": "Permits to filter tasks based on their finishedAt time. Matches tasks\nfinished before the given date. Supports RFC 3339 date format.",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2024-08-08T16:37:09.971Z"
          }
        ],
        "responses": {
          "200": {
            "description": "Task successfully enqueued.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummarizedTaskView"
                },
                "example": {
                  "taskUid": 147,
                  "indexUid": null,
                  "status": "enqueued",
                  "type": "taskCancelation",
                  "enqueuedAt": "2024-08-08T17:05:55.791772Z"
                }
              }
            }
          },
          "400": {
            "description": "A filter is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Query parameters to filter the tasks to cancel are missing. Available query parameters are: `uids`, `indexUids`, `statuses`, `types`, `canceledBy`, `beforeEnqueuedAt`, `afterEnqueuedAt`, `beforeStartedAt`, `afterStartedAt`, `beforeFinishedAt`, `afterFinishedAt`.",
                  "code": "missing_task_filters",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#missing_task_filters"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "tasks.cancel",
              "tasks.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X POST 'MEILISEARCH_URL/tasks/cancel?uids=1,2'"
          }
        ]
      }
    },
    "/tasks/compact": {
      "post": {
        "tags": [
          "Async task management"
        ],
        "summary": "Compact task queue",
        "description": "Trigger a compaction process on the task queue database and return its size before and\nafter compaction. A successful compaction requires restarting the instance before it can\nsafely resume normal writes.",
        "operationId": "compact_task_queue",
        "responses": {
          "200": {
            "description": "Task queue compaction successfully completed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskCompactionSummary"
                },
                "example": {
                  "preSize": "456 kiB",
                  "postSize": "123 kiB",
                  "status": "succeeded",
                  "actionRequired": "you must restart your instance"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "500": {
            "description": "Task queue compaction failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskCompactionSummary"
                },
                "example": {
                  "status": "failed",
                  "errorMessage": "unexpected internal error"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "tasks.compact",
              "tasks.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X POST 'MEILISEARCH_URL/tasks/compact'"
          }
        ]
      }
    },
    "/tasks/stream": {
      "get": {
        "tags": [
          "Async task management"
        ],
        "summary": "Stream tasks changes",
        "description": "The `/tasks/stream` route returns information about [asynchronous operations](https://docs.meilisearch.com/learn/advanced/asynchronous_operations.html) (indexing, document updates, settings changes, and so on).\n\nTasks are sent throught an SSE stream any time their status changes, i.e., enqueued, processing, succeeded, failed.",
        "operationId": "get_tasks_stream",
        "responses": {
          "200": {
            "description": "Stream of tasks changes.",
            "content": {
              "application/x-ndjson": {
                "schema": {
                  "$ref": "#/components/schemas/TaskView"
                },
                "example": {
                  "uid": 144,
                  "indexUid": "mieli",
                  "status": "succeeded",
                  "type": "indexCreation",
                  "canceledBy": null,
                  "details": null,
                  "error": null,
                  "duration": "PT0.009330S",
                  "enqueuedAt": "2024-08-08T09:01:13.348471Z",
                  "startedAt": "2024-08-08T09:01:13.349442Z",
                  "finishedAt": "2024-08-08T09:01:13.358772Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "tasks.get",
              "tasks.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/tasks/stream' \\\n  -H 'Accept: text/event-stream'"
          }
        ]
      }
    },
    "/tasks/{task_id}": {
      "get": {
        "tags": [
          "Async task management"
        ],
        "summary": "Get task",
        "description": "Retrieve a single [task](https://www.meilisearch.com/docs/learn/async/asynchronous_operations) by its uid.",
        "operationId": "get_task",
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "description": "The task identifier.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "u-int32",
              "minimum": 0
            },
            "example": 0
          }
        ],
        "responses": {
          "200": {
            "description": "Task successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskView"
                },
                "example": {
                  "uid": 1,
                  "indexUid": "movies",
                  "status": "succeeded",
                  "type": "indexCreation",
                  "canceledBy": null,
                  "details": null,
                  "error": null,
                  "duration": "PT1S",
                  "enqueuedAt": "2021-01-01T09:39:00.000000Z",
                  "startedAt": "2021-01-01T09:39:01.000000Z",
                  "finishedAt": "2021-01-01T09:39:02.000000Z"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "The task uid does not exist.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Task :taskUid not found.",
                  "code": "task_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors/#task_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "tasks.get",
              "tasks.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/tasks/1'"
          }
        ]
      }
    },
    "/tasks/{task_id}/documents": {
      "get": {
        "tags": [
          "Async task management"
        ],
        "summary": "Get task's document payload",
        "description": "Retrieve the document payload that was sent with this [task](https://www.meilisearch.com/docs/learn/async/asynchronous_operations).\nOnly available for document-related tasks that are enqueued or processing.",
        "operationId": "get_task_documents_file",
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "description": "The task identifier.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "u-int32",
              "minimum": 0
            },
            "example": 0
          }
        ],
        "responses": {
          "200": {
            "description": "The content of the task update.",
            "content": {
              "application/x-ndjson": {
                "schema": {}
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "The task uid does not exist.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "Task :taskUid not found.",
                  "code": "task_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors/#task_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "tasks.get",
              "tasks.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/tasks/1/documents'"
          }
        ]
      }
    },
    "/version": {
      "get": {
        "tags": [
          "Version"
        ],
        "summary": "Get version",
        "description": "Return the current Meilisearch version, including the commit SHA and build date.",
        "operationId": "get_version",
        "responses": {
          "200": {
            "description": "Instance is healthy.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VersionResponse"
                },
                "example": {
                  "commitSha": "b46889b5f0f2f8b91438a08a358ba8f05fc09fc1",
                  "commitDate": "2021-07-08",
                  "pkgVersion": "0.23.0"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "version",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/version'"
          }
        ]
      }
    },
    "/webhooks": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "summary": "List webhooks",
        "description": "Return all webhooks registered on the instance. Each webhook is returned with its URL, optional headers, and UUID (the key value is never returned).",
        "operationId": "get_webhooks",
        "responses": {
          "200": {
            "description": "Webhooks are returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookResults"
                },
                "example": {
                  "results": [
                    {
                      "uuid": "550e8400-e29b-41d4-a716-446655440000",
                      "url": "https://your.site/on-tasks-completed",
                      "headers": {
                        "Authorization": "Bearer a-secret-token"
                      },
                      "isEditable": true
                    },
                    {
                      "uuid": "550e8400-e29b-41d4-a716-446655440001",
                      "url": "https://another.site/on-tasks-completed",
                      "isEditable": true
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "webhooks.get",
              "webhooks.*",
              "*.get",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/webhooks'"
          }
        ]
      },
      "post": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Create webhook",
        "description": "Register a new webhook to receive task completion notifications. You can optionally set custom headers (e.g. for authentication) and configure the callback URL.",
        "operationId": "post_webhook",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookSettings"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Webhook created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookWithMetadataRedactedAuthorization"
                },
                "example": {
                  "uuid": "550e8400-e29b-41d4-a716-446655440000",
                  "url": "https://your.site/on-tasks-completed",
                  "headers": {
                    "Authorization": "Bearer a-secret-token"
                  },
                  "isEditable": true
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The webhook URL is invalid. Expected a valid URL.",
                  "code": "invalid_webhook_url",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#invalid_webhook_url"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "webhooks.create",
              "webhooks.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X POST 'MEILISEARCH_URL/webhooks' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '{\n    \"url\": \"WEBHOOK_TARGET_URL\",\n    \"headers\": {\n      \"authorization\": \"SECURITY_KEY\",\n      \"referer\": \"https://example.com\"\n    }\n  }'"
          }
        ]
      }
    },
    "/webhooks/{uuid}": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Get webhook",
        "description": "Retrieve a single webhook by its UUID.",
        "operationId": "get_webhook",
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "description": "Universally unique identifier of the webhook.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Webhook found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookWithMetadataRedactedAuthorization"
                },
                "example": {
                  "uuid": "550e8400-e29b-41d4-a716-446655440000",
                  "url": "https://your.site/on-tasks-completed",
                  "headers": {
                    "Authorization": "Bearer a-secret"
                  },
                  "isEditable": true
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Webhook not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The webhook was not found.",
                  "code": "webhook_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#webhook_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "webhooks.get",
              "webhooks.*",
              "*.get",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X GET 'MEILISEARCH_URL/webhooks/WEBHOOK_UUID'"
          }
        ]
      },
      "delete": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Delete webhook",
        "description": "Permanently remove a webhook by its UUID. The webhook will no longer receive task notifications.",
        "operationId": "delete_webhook",
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "description": "Universally unique identifier of the webhook.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Webhook deleted successfully."
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Webhook not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The webhook was not found.",
                  "code": "webhook_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#webhook_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "webhooks.delete",
              "webhooks.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X DELETE 'MEILISEARCH_URL/webhooks/WEBHOOK_UUID'"
          }
        ]
      },
      "patch": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Update webhook",
        "description": "Update the URL or headers of an existing webhook identified by its UUID.",
        "operationId": "patch_webhook",
        "parameters": [
          {
            "name": "uuid",
            "in": "path",
            "description": "Universally unique identifier of the webhook.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookSettings"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Webhook updated successfully. Returns the webhook with metadata and redacted authorization headers.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookWithMetadataRedactedAuthorization"
                },
                "example": {
                  "uuid": "550e8400-e29b-41d4-a716-446655440000",
                  "url": "https://your.site/on-tasks-completed",
                  "headers": {
                    "Authorization": "Bearer a-secret-token"
                  },
                  "isEditable": true
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The webhook URL is invalid. Expected a valid URL.",
                  "code": "invalid_webhook_url",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#invalid_webhook_url"
                }
              }
            }
          },
          "401": {
            "description": "The authorization header is missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The Authorization header is missing. It must use the bearer authorization method.",
                  "code": "missing_authorization_header",
                  "type": "auth",
                  "link": "https://docs.meilisearch.com/errors#missing_authorization_header"
                }
              }
            }
          },
          "404": {
            "description": "Webhook not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "example": {
                  "message": "The webhook was not found.",
                  "code": "webhook_not_found",
                  "type": "invalid_request",
                  "link": "https://docs.meilisearch.com/errors#webhook_not_found"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": [
              "webhooks.update",
              "webhooks.*",
              "*"
            ]
          }
        ],
        "x-codeSamples": [
          {
            "lang": "cURL",
            "source": "curl \\\n  -X PATCH 'MEILISEARCH_URL/webhooks/WEBHOOK_UUID' \\\n  -H 'Content-Type: application/json' \\\n  --data-binary '{\n    \"header\": {\n      \"referer\": null\n    }\n  }'"
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "Action": {
        "type": "string",
        "enum": [
          "*",
          "search",
          "documents.*",
          "documents.add",
          "documents.get",
          "documents.delete",
          "indexes.*",
          "indexes.create",
          "indexes.get",
          "indexes.update",
          "indexes.delete",
          "indexes.swap",
          "tasks.*",
          "tasks.cancel",
          "tasks.delete",
          "tasks.get",
          "settings.*",
          "settings.get",
          "settings.update",
          "stats.*",
          "stats.get",
          "metrics.*",
          "metrics.get",
          "dumps.*",
          "dumps.create",
          "snapshots.*",
          "snapshots.create",
          "version",
          "keys.create",
          "keys.get",
          "keys.update",
          "keys.delete",
          "experimental.get",
          "experimental.update",
          "export",
          "network.get",
          "network.update",
          "chatCompletions",
          "chats.*",
          "chats.get",
          "chats.delete",
          "chatsSettings.*",
          "chatsSettings.get",
          "chatsSettings.update",
          "*.get",
          "webhooks.get",
          "webhooks.update",
          "webhooks.delete",
          "webhooks.create",
          "webhooks.*",
          "indexes.compact",
          "fields.post",
          "tasks.compact",
          "dynamicSearchRules.get",
          "dynamicSearchRules.create",
          "dynamicSearchRules.update",
          "dynamicSearchRules.delete",
          "dynamicSearchRules.*"
        ]
      },
      "AllBatches": {
        "type": "object",
        "description": "Response containing a paginated list of batches",
        "required": [
          "results",
          "total",
          "limit"
        ],
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BatchView"
            },
            "description": "Array of batch objects"
          },
          "total": {
            "type": "integer",
            "format": "u-int64",
            "description": "Total number of batches",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "format": "u-int32",
            "description": "Maximum number of batches returned",
            "minimum": 0
          },
          "from": {
            "type": [
              "integer",
              "null"
            ],
            "format": "u-int32",
            "description": "The first batch uid returned",
            "minimum": 0
          },
          "next": {
            "type": [
              "integer",
              "null"
            ],
            "format": "u-int32",
            "description": "Value to send in from to fetch the next slice of results",
            "minimum": 0
          }
        }
      },
      "AllTasks": {
        "type": "object",
        "description": "Response containing a paginated list of tasks",
        "required": [
          "results",
          "total",
          "limit"
        ],
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaskView"
            },
            "description": "Array of task objects matching the query"
          },
          "total": {
            "type": "integer",
            "format": "u-int64",
            "description": "Total number of tasks matching the query",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "format": "u-int32",
            "description": "Maximum number of tasks returned",
            "minimum": 0
          },
          "from": {
            "type": [
              "integer",
              "null"
            ],
            "format": "u-int32",
            "description": "The first task uid returned",
            "minimum": 0
          },
          "next": {
            "type": [
              "integer",
              "null"
            ],
            "format": "u-int32",
            "description": "Value to pass as `from` parameter to get the next page. When `null`, there are no more tasks to retrieve.",
            "minimum": 0
          }
        }
      },
      "AttributePatterns": {
        "type": "object",
        "description": "A collection of patterns used to match attribute names. Patterns can\ninclude wildcards (`*`) for flexible matching. For example, `title`\nmatches exactly, `overview_*` matches any attribute starting with\n`overview_`, and `*_date` matches any attribute ending with `_date`.",
        "required": [
          "patterns"
        ],
        "properties": {
          "patterns": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "An array of attribute name patterns. Each pattern can be an exact\nattribute name, or include wildcards (`*`) at the start, end, or\nboth. Examples: `[\"title\", \"description_*\", \"*_date\", \"*content*\"]`.",
            "example": [
              "title",
              "overview_*",
              "release_date"
            ]
          }
        }
      },
      "BatchStats": {
        "type": "object",
        "description": "Statistics for a batch of tasks",
        "required": [
          "totalNbTasks",
          "status",
          "types",
          "indexUids"
        ],
        "properties": {
          "totalNbTasks": {
            "$ref": "#/components/schemas/u32",
            "description": "Total number of tasks in the batch"
          },
          "status": {
            "type": "object",
            "description": "Count of tasks by status",
            "additionalProperties": {
              "type": "integer",
              "format": "u-int32",
              "minimum": 0
            },
            "propertyNames": {
              "type": "string",
              "description": "The status of a task.",
              "enum": [
                "enqueued",
                "processing",
                "succeeded",
                "failed",
                "canceled"
              ],
              "example": "processing"
            }
          },
          "types": {
            "type": "object",
            "description": "Count of tasks by type",
            "additionalProperties": {
              "type": "integer",
              "format": "u-int32",
              "minimum": 0
            },
            "propertyNames": {
              "type": "string",
              "description": "The type of the task.",
              "enum": [
                "documentAdditionOrUpdate",
                "documentEdition",
                "documentDeletion",
                "settingsUpdate",
                "indexCreation",
                "indexDeletion",
                "indexUpdate",
                "indexSwap",
                "taskCancelation",
                "taskDeletion",
                "dumpCreation",
                "snapshotCreation",
                "export",
                "upgradeDatabase",
                "indexCompaction",
                "networkTopologyChange",
                "dsrUpdate",
                "dsrClear"
              ],
              "example": "documentAdditionOrUpdate"
            }
          },
          "indexUids": {
            "type": "object",
            "description": "Count of tasks by index UID",
            "additionalProperties": {
              "type": "integer",
              "format": "u-int32",
              "minimum": 0
            },
            "propertyNames": {
              "type": "string"
            }
          },
          "progressTrace": {
            "type": "object",
            "description": "Detailed progress trace information",
            "additionalProperties": {},
            "propertyNames": {
              "type": "string"
            }
          },
          "writeChannelCongestion": {
            "type": [
              "object",
              "null"
            ],
            "description": "Write channel congestion metrics",
            "additionalProperties": {},
            "propertyNames": {
              "type": "string"
            }
          },
          "internalDatabaseSizes": {
            "type": "object",
            "description": "Internal database size information",
            "additionalProperties": {},
            "propertyNames": {
              "type": "string"
            }
          }
        }
      },
      "BatchStatsView": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BatchStats",
            "description": "Core batch statistics including the total number of tasks, counts by\nstatus (succeeded, failed, canceled), task types included, and which\nindexes were affected by this batch."
          },
          {
            "type": "object",
            "properties": {
              "embedderRequests": {
                "$ref": "#/components/schemas/EmbedderStatsView",
                "description": "Statistics about AI embedder API requests made during batch processing.\nIncludes total requests, successful/failed counts, and response times.\nOnly present when the batch involved vector embedding operations."
              }
            }
          }
        ],
        "description": "Provides comprehensive statistics about a batch's execution.\n\nIncludes task counts, status breakdowns, and AI embedder usage. This\ninformation is useful for monitoring system performance and understanding\nbatch composition."
      },
      "BatchView": {
        "type": "object",
        "description": "Represents a batch of tasks that were processed together.",
        "required": [
          "uid",
          "details",
          "stats"
        ],
        "properties": {
          "uid": {
            "$ref": "#/components/schemas/u32",
            "description": "The unique sequential identifier assigned to this batch. Batch UIDs\nare assigned in order of creation and can be used to retrieve specific\nbatch information or correlate tasks that were processed together."
          },
          "progress": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ProgressView",
                "description": "Real-time progress information for the batch if it's currently being\nprocessed. Contains details about which step is executing and the\npercentage of completion. This is `null` for completed batches."
              }
            ]
          },
          "details": {
            "type": "object",
            "description": "Aggregated details from all tasks in this batch. For example, if the\nbatch contains multiple document addition tasks, this will show the\ntotal number of documents received and indexed across all tasks."
          },
          "stats": {
            "$ref": "#/components/schemas/BatchStatsView",
            "description": "Statistical information about the batch, including the number of tasks\nby status, the types of tasks included, and the indexes affected.\nUseful for understanding the composition and outcome of the batch."
          },
          "duration": {
            "type": [
              "string",
              "null"
            ],
            "description": "The total time spent processing this batch, formatted as an ISO-8601\nduration (e.g., `PT2.5S` for 2.5 seconds). This is `null` for batches\nthat haven't finished processing yet."
          },
          "startedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp when Meilisearch began processing this batch, formatted\nas an RFC 3339 date-time string. All batches have a start time as it's\nset when processing begins."
          },
          "finishedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "The timestamp when this batch finished processing, formatted as an\nRFC 3339 date-time string. This is `null` for batches that are still\nbeing processed."
          },
          "batchStrategy": {
            "type": "string",
            "description": "Explains why the batch was finalized and stopped accepting more tasks.\nCommon reasons include reaching the maximum batch size, encountering\nincompatible tasks, or processing being explicitly triggered."
          }
        }
      },
      "BrowseQuery": {
        "type": "object",
        "description": "Request body for browsing and retrieving documents from an index. Use\nthis to fetch documents with optional filtering, sorting, and pagination.\nThis is useful for displaying document lists, exporting data, or\ninspecting index contents.",
        "properties": {
          "offset": {
            "type": "integer",
            "description": "Number of documents to skip in the response. Use together with `limit`\nfor pagination through large document sets. For example, to get\ndocuments 151-170, set `offset=150` and `limit=20`. Defaults to `0`.",
            "default": 0,
            "example": 150,
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "description": "Maximum number of documents to return in a single response. Use\ntogether with `offset` for pagination. Higher values return more\nresults but may increase response time and memory usage. Defaults to\n`20`.",
            "default": 20,
            "example": 1,
            "minimum": 0
          },
          "fields": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Array of document attributes to include in the response. If not\nspecified, all attributes listed in the `displayedAttributes` setting\nare returned. Use this to reduce response size by only requesting the\nfields you need. Example: `[\"title\", \"description\", \"price\"]`.",
            "example": [
              "title, description"
            ]
          },
          "retrieveVectors": {
            "type": "boolean",
            "description": "When `true`, includes the vector embeddings in the response for\ndocuments that have them. This is useful when you need to inspect or\nexport vector data. Note that this can significantly increase response\nsize. Defaults to `false`.",
            "example": true
          },
          "ids": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Array of specific document IDs to retrieve. Only documents with\nmatching [primary key](https://www.meilisearch.com/docs/learn/getting_started/primary_key) values will be returned. If not specified, all\ndocuments matching other criteria are returned. This is useful for\nfetching specific known documents.",
            "example": [
              "cody",
              "finn",
              "brandy",
              "gambit"
            ]
          },
          "filter": {
            "description": "Filter expression to select which documents to return. Attributes must be added to the\n`filterableAttributes` index setting before they can be used in filters. Accepts a string\nor an array of arrays of strings for AND/OR combinations.\nExample string: `\"genres = action AND rating > 4\"`.\nExample array: `[[\"genres = action\", \"genres = comedy\"], \"rating > 4\"]` (inner array = OR, outer = AND)."
          },
          "sort": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Array of attributes to sort the documents by. Each entry should be in\nthe format `attribute:direction` where direction is either `asc`\n(ascending) or `desc` (descending). Example: `[\"price:asc\",\n\"rating:desc\"]` sorts by price ascending, then by rating descending.",
            "example": [
              "title:asc",
              "rating:desc"
            ]
          },
          "useNetwork": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "When `true`, runs the query on the whole network (all shards covered exactly once).\n\nWhen `false`, the query runs locally.\n\nWhen omitted or `null`, the default value depends on whether the sharding is enabled for the instance:\n\n- If the instance has sharding enabled (has a leader), defaults to `true`.\n- Otherwise defaults to `false`.\n\nIt also requires the `network` [experimental feature](http://localhost:3000/reference/api/experimental-features/configure-experimental-features).\n\nValues: `true` = use the whole network; `false` = local, default = see above.\n\nWhen using the network, the index must exist with compatible settings on all remotes."
          }
        },
        "additionalProperties": false
      },
      "ChatChoice": {
        "type": "object",
        "description": "A chat completion choice generated by the model.",
        "required": [
          "index",
          "message"
        ],
        "properties": {
          "index": {
            "type": "integer",
            "format": "u-int32",
            "description": "The index of the choice in the list of choices.",
            "minimum": 0
          },
          "message": {
            "$ref": "#/components/schemas/ChatCompletionResponseMessage"
          },
          "finish_reason": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/FinishReason",
                "description": "The reason the model stopped generating tokens. This will be `stop` if the model hit a natural stop point or a provided stop sequence,\n`length` if the maximum number of tokens specified in the request was reached,\n`content_filter` if content was omitted due to a flag from our content filters,\n`tool_calls` if the model called a tool, or `function_call` (deprecated) if the model called a function."
              }
            ]
          },
          "logprobs": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ChatChoiceLogprobs",
                "description": "Log probability information for the choice."
              }
            ]
          }
        }
      },
      "ChatChoiceLogprobs": {
        "type": "object",
        "description": "Log probability information for a chat completion choice.",
        "properties": {
          "content": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/ChatCompletionTokenLogprob"
            },
            "description": "A list of message content tokens with log probability information."
          },
          "refusal": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/ChatCompletionTokenLogprob"
            }
          }
        }
      },
      "ChatCompletionAudio": {
        "type": "object",
        "description": "Parameters for audio output. Required when audio output is requested with `modalities: [\"audio\"]`.",
        "required": [
          "voice",
          "format"
        ],
        "properties": {
          "voice": {
            "$ref": "#/components/schemas/ChatCompletionAudioVoice",
            "description": "The voice the model uses to respond. Supported voices are `ash`, `ballad`, `coral`, `sage`, and `verse` (also supported but not recommended are `alloy`, `echo`, and `shimmer`; these voices are less expressive)."
          },
          "format": {
            "$ref": "#/components/schemas/ChatCompletionAudioFormat",
            "description": "Specifies the output audio format. Must be one of `wav`, `mp3`, `flac`, `opus`, or `pcm16`."
          }
        }
      },
      "ChatCompletionAudioFormat": {
        "type": "string",
        "description": "Specifies the output audio format. Must be one of `wav`, `mp3`, `flac`, `opus`, or `pcm16`.",
        "enum": [
          "wav",
          "mp3",
          "flac",
          "opus",
          "pcm16"
        ]
      },
      "ChatCompletionAudioVoice": {
        "type": "string",
        "description": "The voice the model uses to respond in audio output.",
        "enum": [
          "alloy",
          "ash",
          "ballad",
          "coral",
          "echo",
          "sage",
          "shimmer",
          "verse"
        ]
      },
      "ChatCompletionFunctionCall": {
        "oneOf": [
          {
            "type": "string",
            "description": "The model does not call a function, and responds to the end-user.",
            "enum": [
              "none"
            ]
          },
          {
            "type": "string",
            "description": "The model can pick between an end-user or calling a function.",
            "enum": [
              "auto"
            ]
          },
          {
            "type": "object",
            "description": "Forces the model to call the specified function.",
            "required": [
              "Function"
            ],
            "properties": {
              "Function": {
                "type": "object",
                "description": "Forces the model to call the specified function.",
                "required": [
                  "name"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  }
                }
              }
            }
          }
        ],
        "description": "Deprecated in favor of `tool_choice`. Controls which (if any) function is called by the model."
      },
      "ChatCompletionFunctions": {
        "type": "object",
        "description": "Deprecated: A function the model may generate JSON inputs for. Use `ChatCompletionTool` instead.",
        "required": [
          "name",
          "parameters"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the function to be called. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64."
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "A description of what the function does, used by the model to choose when and how to call the function."
          },
          "parameters": {
            "description": "The parameters the functions accepts, described as a JSON Schema object. See the [guide](https://platform.openai.com/docs/guides/text-generation/function-calling) for examples, and the [JSON Schema reference](https://json-schema.org/understanding-json-schema/) for documentation about the format.\n\nOmitting `parameters` defines a function with an empty parameter list."
          }
        },
        "deprecated": true
      },
      "ChatCompletionMessageToolCall": {
        "type": "object",
        "description": "A tool call generated by the model.",
        "required": [
          "id",
          "function"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "The ID of the tool call."
          },
          "type": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ChatCompletionToolType",
                "description": "The type of the tool. Currently, only `function` is supported."
              }
            ]
          },
          "function": {
            "$ref": "#/components/schemas/FunctionCall",
            "description": "The function that the model called."
          }
        }
      },
      "ChatCompletionModalities": {
        "type": "string",
        "description": "Output types that you would like the model to generate for this request.\n\nMost models are capable of generating text, which is the default: `[\"text\"]`\n\nThe `gpt-4o-audio-preview` model can also be used to [generate\naudio](https://platform.openai.com/docs/guides/audio). To request that this model generate both text and audio responses, you can use: `[\"text\", \"audio\"]`",
        "enum": [
          "text",
          "audio"
        ]
      },
      "ChatCompletionNamedToolChoice": {
        "type": "object",
        "description": "Specifies a tool the model should use. Use to force the model to call a specific function.",
        "required": [
          "type",
          "function"
        ],
        "properties": {
          "type": {
            "$ref": "#/components/schemas/ChatCompletionToolType",
            "description": "The type of the tool. Currently, only `function` is supported."
          },
          "function": {
            "$ref": "#/components/schemas/FunctionName"
          }
        }
      },
      "ChatCompletionRequestAssistantMessage": {
        "type": "object",
        "description": "An assistant message in the conversation, possibly including tool calls.",
        "properties": {
          "content": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ChatCompletionRequestAssistantMessageContent",
                "description": "The contents of the assistant message. Required unless `tool_calls` or `function_call` is specified."
              }
            ]
          },
          "refusal": {
            "type": [
              "string",
              "null"
            ],
            "description": "The refusal message by the assistant."
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "An optional name for the participant. Provides the model information to differentiate between participants of the same role."
          },
          "audio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ChatCompletionRequestAssistantMessageAudio",
                "description": "Data about a previous audio response from the model.\n[Learn more](https://platform.openai.com/docs/guides/audio)."
              }
            ]
          },
          "tool_calls": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/ChatCompletionMessageToolCall"
            }
          },
          "function_call": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/FunctionCall",
                "description": "Deprecated and replaced by `tool_calls`. The name and arguments of a function that should be called, as generated by the model."
              }
            ]
          }
        }
      },
      "ChatCompletionRequestAssistantMessageAudio": {
        "type": "object",
        "description": "Data about a previous audio response from the model, used in multi-turn conversations.",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for a previous audio response from the model."
          }
        }
      },
      "ChatCompletionRequestAssistantMessageContent": {
        "oneOf": [
          {
            "type": "string",
            "description": "The text contents of the message."
          },
          {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChatCompletionRequestAssistantMessageContentPart"
            },
            "description": "An array of content parts with a defined type. Can be one or more of type `text`, or exactly one of type `refusal`."
          }
        ],
        "description": "The contents of an assistant message: either a text string or an array of content parts (text or refusal)."
      },
      "ChatCompletionRequestAssistantMessageContentPart": {
        "oneOf": [
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/ChatCompletionRequestMessageContentPartText"
              },
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "text"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/ChatCompletionRequestMessageContentPartRefusal"
              },
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "refusal"
                    ]
                  }
                }
              }
            ]
          }
        ],
        "description": "A content part in an assistant message (text or refusal)."
      },
      "ChatCompletionRequestDeveloperMessage": {
        "type": "object",
        "description": "A developer message in the conversation.",
        "required": [
          "content"
        ],
        "properties": {
          "content": {
            "$ref": "#/components/schemas/ChatCompletionRequestDeveloperMessageContent",
            "description": "The contents of the developer message."
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "An optional name for the participant. Provides the model information to differentiate between participants of the same role."
          }
        }
      },
      "ChatCompletionRequestDeveloperMessageContent": {
        "oneOf": [
          {
            "type": "string"
          },
          {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChatCompletionRequestMessageContentPartText"
            }
          }
        ],
        "description": "The contents of a developer message: either a text string or an array of text content parts."
      },
      "ChatCompletionRequestFunctionMessage": {
        "type": "object",
        "description": "Deprecated: A function response message. Use tool messages instead.",
        "required": [
          "name"
        ],
        "properties": {
          "content": {
            "type": [
              "string",
              "null"
            ],
            "description": "The return value from the function call, to return to the model."
          },
          "name": {
            "type": "string",
            "description": "The name of the function to call."
          }
        }
      },
      "ChatCompletionRequestMessage": {
        "oneOf": [
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/ChatCompletionRequestDeveloperMessage"
              },
              {
                "type": "object",
                "required": [
                  "role"
                ],
                "properties": {
                  "role": {
                    "type": "string",
                    "enum": [
                      "developer"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/ChatCompletionRequestSystemMessage"
              },
              {
                "type": "object",
                "required": [
                  "role"
                ],
                "properties": {
                  "role": {
                    "type": "string",
                    "enum": [
                      "system"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/ChatCompletionRequestUserMessage"
              },
              {
                "type": "object",
                "required": [
                  "role"
                ],
                "properties": {
                  "role": {
                    "type": "string",
                    "enum": [
                      "user"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/ChatCompletionRequestAssistantMessage"
              },
              {
                "type": "object",
                "required": [
                  "role"
                ],
                "properties": {
                  "role": {
                    "type": "string",
                    "enum": [
                      "assistant"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/ChatCompletionRequestToolMessage"
              },
              {
                "type": "object",
                "required": [
                  "role"
                ],
                "properties": {
                  "role": {
                    "type": "string",
                    "enum": [
                      "tool"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/ChatCompletionRequestFunctionMessage"
              },
              {
                "type": "object",
                "required": [
                  "role"
                ],
                "properties": {
                  "role": {
                    "type": "string",
                    "enum": [
                      "function"
                    ]
                  }
                }
              }
            ]
          }
        ],
        "description": "A message in the chat completion conversation. Tagged by `role` (system, user, assistant, tool, developer, or function)."
      },
      "ChatCompletionRequestMessageContentPartAudio": {
        "type": "object",
        "description": "Learn about [audio inputs](https://platform.openai.com/docs/guides/audio).",
        "required": [
          "input_audio"
        ],
        "properties": {
          "input_audio": {
            "$ref": "#/components/schemas/InputAudio"
          }
        }
      },
      "ChatCompletionRequestMessageContentPartImage": {
        "type": "object",
        "description": "An image content part of a message.",
        "required": [
          "image_url"
        ],
        "properties": {
          "image_url": {
            "$ref": "#/components/schemas/ImageUrl"
          }
        }
      },
      "ChatCompletionRequestMessageContentPartRefusal": {
        "type": "object",
        "description": "A refusal content part of a message.",
        "required": [
          "refusal"
        ],
        "properties": {
          "refusal": {
            "type": "string",
            "description": "The refusal message generated by the model."
          }
        }
      },
      "ChatCompletionRequestMessageContentPartText": {
        "type": "object",
        "description": "A text content part of a message.",
        "required": [
          "text"
        ],
        "properties": {
          "text": {
            "type": "string"
          }
        }
      },
      "ChatCompletionRequestSystemMessage": {
        "type": "object",
        "description": "A system message setting the behavior of the assistant.",
        "required": [
          "content"
        ],
        "properties": {
          "content": {
            "$ref": "#/components/schemas/ChatCompletionRequestSystemMessageContent",
            "description": "The contents of the system message."
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "An optional name for the participant. Provides the model information to differentiate between participants of the same role."
          }
        }
      },
      "ChatCompletionRequestSystemMessageContent": {
        "oneOf": [
          {
            "type": "string",
            "description": "The text contents of the system message."
          },
          {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChatCompletionRequestSystemMessageContentPart"
            },
            "description": "An array of content parts with a defined type. For system messages, only type `text` is supported."
          }
        ],
        "description": "The contents of a system message: either a text string or an array of text content parts."
      },
      "ChatCompletionRequestSystemMessageContentPart": {
        "oneOf": [
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/ChatCompletionRequestMessageContentPartText"
              },
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "text"
                    ]
                  }
                }
              }
            ]
          }
        ],
        "description": "A content part in a system message (text only)."
      },
      "ChatCompletionRequestToolMessage": {
        "type": "object",
        "description": "Tool message",
        "required": [
          "content",
          "tool_call_id"
        ],
        "properties": {
          "content": {
            "$ref": "#/components/schemas/ChatCompletionRequestToolMessageContent",
            "description": "The contents of the tool message."
          },
          "tool_call_id": {
            "type": "string"
          }
        }
      },
      "ChatCompletionRequestToolMessageContent": {
        "oneOf": [
          {
            "type": "string",
            "description": "The text contents of the tool message."
          },
          {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChatCompletionRequestToolMessageContentPart"
            },
            "description": "An array of content parts with a defined type. For tool messages, only type `text` is supported."
          }
        ],
        "description": "The contents of a tool message: either a text string or an array of text content parts."
      },
      "ChatCompletionRequestToolMessageContentPart": {
        "oneOf": [
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/ChatCompletionRequestMessageContentPartText"
              },
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "text"
                    ]
                  }
                }
              }
            ]
          }
        ],
        "description": "A content part in a tool message (text only)."
      },
      "ChatCompletionRequestUserMessage": {
        "type": "object",
        "description": "A user message in the conversation.",
        "required": [
          "content"
        ],
        "properties": {
          "content": {
            "$ref": "#/components/schemas/ChatCompletionRequestUserMessageContent",
            "description": "The contents of the user message."
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "An optional name for the participant. Provides the model information to differentiate between participants of the same role."
          }
        }
      },
      "ChatCompletionRequestUserMessageContent": {
        "oneOf": [
          {
            "type": "string",
            "description": "The text contents of the message."
          },
          {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChatCompletionRequestUserMessageContentPart"
            },
            "description": "An array of content parts with a defined type. Supported options differ based on the [model](https://platform.openai.com/docs/models) being used to generate the response. Can contain text, image, or audio inputs."
          }
        ],
        "description": "The contents of a user message: either a text string or an array of content parts (text, image, or audio)."
      },
      "ChatCompletionRequestUserMessageContentPart": {
        "oneOf": [
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/ChatCompletionRequestMessageContentPartText"
              },
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "text"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/ChatCompletionRequestMessageContentPartImage"
              },
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "image_url"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/ChatCompletionRequestMessageContentPartAudio"
              },
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "input_audio"
                    ]
                  }
                }
              }
            ]
          }
        ],
        "description": "A content part in a user message (text, image, or audio)."
      },
      "ChatCompletionResponseMessage": {
        "type": "object",
        "description": "A chat completion message generated by the model.",
        "required": [
          "role"
        ],
        "properties": {
          "content": {
            "type": [
              "string",
              "null"
            ],
            "description": "The contents of the message."
          },
          "refusal": {
            "type": [
              "string",
              "null"
            ],
            "description": "The refusal message generated by the model."
          },
          "tool_calls": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/ChatCompletionMessageToolCall"
            },
            "description": "The tool calls generated by the model, such as function calls."
          },
          "role": {
            "$ref": "#/components/schemas/Role",
            "description": "The role of the author of this message."
          },
          "function_call": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/FunctionCall",
                "description": "Deprecated and replaced by `tool_calls`.\nThe name and arguments of a function that should be called, as generated by the model."
              }
            ]
          },
          "audio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ChatCompletionResponseMessageAudio",
                "description": "If the audio output modality is requested, this object contains data about the audio response from the model. [Learn more](https://platform.openai.com/docs/guides/audio)."
              }
            ]
          }
        }
      },
      "ChatCompletionResponseMessageAudio": {
        "type": "object",
        "description": "Audio data in a chat completion response message.",
        "required": [
          "id",
          "expires_at",
          "data",
          "transcript"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for this audio response."
          },
          "expires_at": {
            "type": "integer",
            "format": "u-int32",
            "description": "The Unix timestamp (in seconds) for when this audio response will no longer be accessible on the server for use in multi-turn conversations.",
            "minimum": 0
          },
          "data": {
            "type": "string",
            "description": "Base64 encoded audio bytes generated by the model, in the format specified in the request."
          },
          "transcript": {
            "type": "string",
            "description": "Transcript of the audio generated by the model."
          }
        }
      },
      "ChatCompletionSource": {
        "type": "string",
        "description": "LLM provider for chat completions",
        "enum": [
          "openAi",
          "mistral",
          "azureOpenAi",
          "vLlm"
        ]
      },
      "ChatCompletionStreamOptions": {
        "type": "object",
        "description": "Options for streaming response. Only set this when you set `stream: true`.",
        "required": [
          "include_usage"
        ],
        "properties": {
          "include_usage": {
            "type": "boolean",
            "description": "If set, an additional chunk will be streamed before the `data: [DONE]` message. The `usage` field on this chunk shows the token usage statistics for the entire request, and the `choices` field will always be an empty array. All other chunks will also include a `usage` field, but with a null value."
          }
        }
      },
      "ChatCompletionTokenLogprob": {
        "type": "object",
        "description": "Log probability information for an output token.",
        "required": [
          "token",
          "logprob",
          "top_logprobs"
        ],
        "properties": {
          "token": {
            "type": "string",
            "description": "The token."
          },
          "logprob": {
            "type": "number",
            "format": "float",
            "description": "The log probability of this token, if it is within the top 20 most likely tokens. Otherwise, the value `-9999.0` is used to signify that the token is very unlikely."
          },
          "bytes": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "integer",
              "format": "u-int8",
              "minimum": 0
            },
            "description": "A list of integers representing the UTF-8 bytes representation of the token. Useful in instances where characters are represented by multiple tokens and their byte representations must be combined to generate the correct text representation. Can be `null` if there is no bytes representation for the token."
          },
          "top_logprobs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TopLogprobs"
            },
            "description": "List of the most likely tokens and their log probability, at this token position. In rare cases, there may be fewer than the number of requested `top_logprobs` returned."
          }
        }
      },
      "ChatCompletionTool": {
        "type": "object",
        "description": "A tool the model may call. Currently, only functions are supported as a tool.",
        "required": [
          "type",
          "function"
        ],
        "properties": {
          "type": {
            "$ref": "#/components/schemas/ChatCompletionToolType"
          },
          "function": {
            "$ref": "#/components/schemas/FunctionObject"
          }
        }
      },
      "ChatCompletionToolChoiceOption": {
        "oneOf": [
          {
            "type": "string",
            "enum": [
              "none"
            ]
          },
          {
            "type": "string",
            "enum": [
              "auto"
            ]
          },
          {
            "type": "string",
            "enum": [
              "required"
            ]
          },
          {
            "type": "object",
            "required": [
              "named"
            ],
            "properties": {
              "named": {
                "$ref": "#/components/schemas/ChatCompletionNamedToolChoice"
              }
            }
          }
        ],
        "description": "Controls which (if any) tool is called by the model.\n`none` means the model will not call any tool and instead generates a message.\n`auto` means the model can pick between generating a message or calling one or more tools.\n`required` means the model must call one or more tools.\nSpecifying a particular tool via `{\"type\": \"function\", \"function\": {\"name\": \"my_function\"}}` forces the model to call that tool.\n\n`none` is the default when no tools are present. `auto` is the default if tools are present.present."
      },
      "ChatCompletionToolType": {
        "type": "string",
        "description": "The type of a tool. Currently, only `function` is supported.",
        "enum": [
          "function"
        ]
      },
      "ChatSearchParams": {
        "type": "object",
        "description": "Search parameters applied when the LLM queries this index.",
        "properties": {
          "hybrid": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/HybridQuery",
                "description": "Hybrid search: mix of keyword and semantic search. Requires an embedder (set via `embedder` and optionally `semanticRatio`)."
              }
            ]
          },
          "limit": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Maximum number of documents returned per search performed by the LLM.",
            "example": 20,
            "minimum": 0
          },
          "sort": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Sort order: array of strings like `attribute:asc` or `attribute:desc`.",
            "example": [
              "price:asc",
              "rating:desc"
            ]
          },
          "distinct": {
            "type": [
              "string",
              "null"
            ],
            "description": "Attribute used to return at most one document per distinct value.",
            "example": "sku"
          },
          "matchingStrategy": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MatchingStrategy",
                "description": "How query terms are matched: `last`, `all`, or `frequency`."
              }
            ]
          },
          "attributesToSearchOn": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Attributes on which to run the search. If unset, all searchable attributes are used.",
            "example": [
              "title",
              "description"
            ]
          },
          "rankingScoreThreshold": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/RankingScoreThreshold",
                "description": "Minimum ranking score (0.0–1.0) for a document to be included. Lower scores are excluded."
              }
            ]
          }
        }
      },
      "ChatSettings": {
        "type": "object",
        "description": "[Chat (conversation)](https://www.meilisearch.com/docs/learn/chat/getting_started_with_chat) settings: how the index is described to the LLM and how it is queried.",
        "properties": {
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Index description shown to the LLM so it can decide when and how to query this index.",
            "default": "",
            "example": "A comprehensive movie database containing titles, overviews, genres, and release dates"
          },
          "documentTemplate": {
            "type": [
              "string",
              "null"
            ],
            "description": "Liquid template that defines the text sent to the LLM for each document.",
            "example": "{% for field in fields %}{% if field.is_searchable and field.value != nil %}{{ field.name }}: {{ field.value }}\n{% endif %}{% endfor %}"
          },
          "documentTemplateMaxBytes": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Maximum size in bytes of the rendered document template. Longer text is truncated.",
            "default": 400,
            "example": 400,
            "minimum": 0
          },
          "searchParameters": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ChatSearchParams",
                "description": "Search parameters used when the LLM queries this index (`hybrid`, `limit`, `sort`, `distinct`, etc.)."
              }
            ],
            "default": {}
          }
        }
      },
      "ChatWorkspaceSettings": {
        "type": "object",
        "description": "Settings for a chat workspace",
        "properties": {
          "source": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ChatCompletionSource",
                "description": "LLM provider to use for chat completions"
              }
            ]
          },
          "orgId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Organization ID for the LLM provider",
            "example": "dcba4321..."
          },
          "projectId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Project ID for the LLM provider",
            "example": "4321dcba..."
          },
          "apiVersion": {
            "type": [
              "string",
              "null"
            ],
            "description": "API version for the LLM provider",
            "example": "2024-02-01"
          },
          "deploymentId": {
            "type": [
              "string",
              "null"
            ],
            "description": "Deployment ID for Azure OpenAI",
            "example": "1234abcd..."
          },
          "baseUrl": {
            "type": [
              "string",
              "null"
            ],
            "description": "Base URL for the LLM API",
            "example": "https://api.mistral.ai/v1"
          },
          "apiKey": {
            "type": [
              "string",
              "null"
            ],
            "description": "API key for authentication with the LLM provider",
            "example": "abcd1234..."
          },
          "prompts": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "object",
                "description": "Custom prompts for chat completions",
                "properties": {
                  "system": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "description": "System prompt for the LLM",
                    "example": "You are a helpful assistant..."
                  },
                  "searchDescription": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "description": "Description of the search function for the LLM",
                    "example": "This is the search function..."
                  },
                  "searchQParam": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "description": "Description of the query parameter for search",
                    "example": "This is query parameter..."
                  },
                  "searchFilterParam": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "description": "Description of the filter parameter for search",
                    "example": "This is filter parameter..."
                  },
                  "searchIndexUidParam": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "example": "This is index you want to search in..."
                  }
                }
              }
            ],
            "description": "Custom prompts for chat completions"
          }
        }
      },
      "Code": {
        "type": "string",
        "enum": [
          "api_key_already_exists",
          "api_key_not_found",
          "index_scoped_api_key_with_global_action",
          "bad_parameter",
          "bad_request",
          "database_size_limit_reached",
          "document_not_found",
          "dump_already_processing",
          "dump_not_found",
          "dump_process_failed",
          "duplicate_index_found",
          "immutable_api_key_actions",
          "immutable_api_key_created_at",
          "immutable_api_key_expires_at",
          "immutable_api_key_indexes",
          "immutable_api_key_key",
          "immutable_api_key_uid",
          "immutable_api_key_updated_at",
          "immutable_index_created_at",
          "immutable_index_updated_at",
          "import_task_already_received",
          "import_task_unknown_remote",
          "receive_import_finished_unknown_remote",
          "import_task_without_network_task",
          "index_already_exists",
          "index_creation_failed",
          "index_not_found",
          "index_primary_key_already_exists",
          "index_primary_key_multiple_candidates_found",
          "index_primary_key_no_candidate_found",
          "internal",
          "invalid_api_key",
          "invalid_api_key_actions",
          "invalid_api_key_description",
          "invalid_api_key_expires_at",
          "invalid_api_key_indexes",
          "invalid_api_key_limit",
          "invalid_api_key_name",
          "invalid_api_key_offset",
          "invalid_api_key_uid",
          "invalid_content_type",
          "invalid_document_csv_delimiter",
          "invalid_document_fields",
          "invalid_document_retrieve_vectors",
          "missing_document_filter",
          "missing_document_edition_function",
          "inconsistent_document_change_headers",
          "invalid_document_filter",
          "invalid_document_sort",
          "invalid_document_use_network",
          "invalid_document_retrieve",
          "invalid_document_geo_field",
          "invalid_document_geojson_field",
          "invalid_header_value",
          "invalid_vector_dimensions",
          "invalid_vectors_type",
          "invalid_document_id",
          "invalid_document_ids",
          "invalid_document_limit",
          "invalid_document_offset",
          "invalid_search_embedder",
          "invalid_similar_embedder",
          "invalid_search_hybrid_query",
          "invalid_index_limit",
          "invalid_index_offset",
          "invalid_index_primary_key",
          "invalid_index_custom_metadata",
          "invalid_skip_creation",
          "invalid_index_uid",
          "invalid_multi_search_facets",
          "invalid_multi_search_facets_by_index",
          "invalid_multi_search_facet_order",
          "invalid_multi_search_query_personalization",
          "invalid_multi_search_query_show_performance_details",
          "invalid_multi_search_federated",
          "invalid_multi_search_federation_options",
          "invalid_multi_search_max_values_per_facet",
          "invalid_multi_search_merge_facets",
          "invalid_multi_search_query_facets",
          "invalid_multi_search_distinct",
          "invalid_multi_search_query_pagination",
          "invalid_multi_search_query_ranking_rules",
          "invalid_multi_search_query_position",
          "invalid_multi_search_remote",
          "invalid_multi_search_weight",
          "invalid_network_leader",
          "invalid_network_remotes",
          "invalid_network_shards",
          "invalid_network_self",
          "invalid_network_search_api_key",
          "invalid_network_write_api_key",
          "invalid_network_url",
          "invalid_search_attributes_to_search_on",
          "invalid_search_attributes_to_crop",
          "invalid_search_attributes_to_highlight",
          "invalid_similar_attributes_to_retrieve",
          "invalid_similar_retrieve_vectors",
          "invalid_search_attributes_to_retrieve",
          "invalid_search_ranking_score_threshold",
          "invalid_similar_ranking_score_threshold",
          "invalid_search_retrieve_vectors",
          "invalid_search_crop_length",
          "invalid_search_crop_marker",
          "invalid_search_facets",
          "invalid_search_semantic_ratio",
          "invalid_search_locales",
          "invalid_facet_search_exhaustive_facet_count",
          "invalid_facet_search_facet_name",
          "invalid_similar_id",
          "invalid_search_filter",
          "invalid_similar_filter",
          "invalid_search_highlight_post_tag",
          "invalid_search_highlight_pre_tag",
          "invalid_search_hits_per_page",
          "invalid_similar_limit",
          "invalid_search_limit",
          "invalid_search_matching_strategy",
          "invalid_similar_offset",
          "invalid_search_offset",
          "invalid_search_page",
          "invalid_search_q",
          "invalid_facet_search_query",
          "invalid_facet_search_name",
          "facet_search_disabled",
          "invalid_search_vector",
          "invalid_search_media",
          "invalid_search_show_matches_position",
          "invalid_search_show_ranking_score",
          "invalid_similar_show_ranking_score",
          "invalid_search_show_ranking_score_details",
          "invalid_search_show_performance_details",
          "invalid_search_use_network",
          "invalid_similar_show_ranking_score_details",
          "invalid_similar_show_performance_details",
          "invalid_search_sort",
          "invalid_search_distinct",
          "invalid_search_personalize",
          "invalid_search_personalize_user_context",
          "invalid_search_media_and_vector",
          "invalid_settings_displayed_attributes",
          "invalid_settings_distinct_attribute",
          "invalid_settings_proximity_precision",
          "invalid_settings_facet_search",
          "invalid_settings_prefix_search",
          "invalid_settings_faceting",
          "invalid_settings_filterable_attributes",
          "invalid_settings_foreign_keys",
          "invalid_settings_pagination",
          "invalid_settings_search_cutoff_ms",
          "invalid_settings_embedders",
          "invalid_settings_ranking_rules",
          "invalid_settings_searchable_attributes",
          "invalid_settings_sortable_attributes",
          "invalid_settings_stop_words",
          "invalid_settings_non_separator_tokens",
          "invalid_settings_separator_tokens",
          "invalid_settings_dictionary",
          "invalid_settings_synonyms",
          "invalid_settings_typo_tolerance",
          "invalid_settings_localized_attributes",
          "invalid_state",
          "invalid_stats_show_internal_database_sizes",
          "invalid_stats_size_format",
          "invalid_store_file",
          "invalid_swap_duplicate_index_found",
          "invalid_swap_indexes",
          "invalid_swap_rename",
          "invalid_task_after_enqueued_at",
          "invalid_task_after_finished_at",
          "invalid_task_after_started_at",
          "invalid_task_before_enqueued_at",
          "invalid_task_before_finished_at",
          "invalid_task_before_started_at",
          "invalid_task_canceled_by",
          "invalid_task_from",
          "invalid_task_limit",
          "invalid_task_reverse",
          "invalid_task_statuses",
          "invalid_task_types",
          "invalid_task_uids",
          "invalid_batch_uids",
          "io_error",
          "feature_not_enabled",
          "malformed_payload",
          "max_fields_limit_exceeded",
          "missing_api_key_actions",
          "missing_api_key_expires_at",
          "missing_api_key_indexes",
          "missing_authorization_header",
          "missing_content_type",
          "missing_document_id",
          "missing_facet_search_facet_name",
          "missing_index_uid",
          "missing_master_key",
          "missing_network_url",
          "missing_payload",
          "missing_search_hybrid",
          "missing_swap_indexes",
          "missing_task_filters",
          "network_version_mismatch",
          "no_space_left_on_device",
          "not_leader",
          "payload_too_large",
          "remote_bad_response",
          "remote_bad_request",
          "unknown_remote",
          "remote_could_not_send_request",
          "remote_invalid_api_key",
          "remote_remote_error",
          "remote_timeout",
          "too_many_search_requests",
          "task_not_found",
          "task_file_not_found",
          "batch_not_found",
          "too_many_open_files",
          "too_many_vectors",
          "unexpected_network_previous_remotes",
          "network_version_too_old",
          "unprocessed_network_task",
          "unretrievable_document",
          "unretrievable_error_code",
          "unsupported_media_type",
          "invalid_s3_snapshot_request",
          "invalid_s3_snapshot_parameters",
          "s3_snapshot_server_error",
          "vector_embedding_error",
          "not_found_similar_id",
          "invalid_document_edition_context",
          "invalid_document_edition_function_filter",
          "edit_documents_by_function_error",
          "invalid_settings_index_chat",
          "invalid_export_url",
          "invalid_export_api_key",
          "invalid_export_payload_size",
          "invalid_export_indexes_patterns",
          "invalid_export_index_filter",
          "invalid_export_index_override_settings",
          "unimplemented_external_function_calling",
          "unimplemented_non_streaming_chat_completions",
          "unimplemented_multi_choice_chat_completions",
          "chat_not_found",
          "invalid_chat_setting_document_template",
          "invalid_chat_completion_org_id",
          "invalid_chat_completion_project_id",
          "invalid_chat_completion_api_version",
          "invalid_chat_completion_deployment_id",
          "invalid_chat_completion_source",
          "invalid_chat_completion_base_api",
          "invalid_chat_completion_api_key",
          "invalid_chat_completion_prompts",
          "invalid_chat_completion_system_prompt",
          "invalid_chat_completion_search_description_prompt",
          "invalid_chat_completion_search_query_param_prompt",
          "invalid_chat_completion_search_filter_param_prompt",
          "invalid_chat_completion_search_index_uid_param_prompt",
          "invalid_chat_completion_pre_query_prompt",
          "invalid_index_fields_filter",
          "invalid_index_fields_filter_attribute_patterns",
          "invalid_index_fields_filter_displayed",
          "invalid_index_fields_filter_searchable",
          "invalid_index_fields_filter_sortable",
          "invalid_index_fields_filter_distinct",
          "invalid_index_fields_filter_ranking_rule",
          "invalid_index_fields_filter_filterable",
          "requires_enterprise_edition",
          "invalid_render_template",
          "invalid_render_input",
          "render_document_not_found",
          "template_parsing_error",
          "template_rendering_error",
          "invalid_webhooks",
          "invalid_webhook_url",
          "invalid_webhook_headers",
          "immutable_webhook",
          "invalid_webhook_uuid",
          "webhook_not_found",
          "immutable_webhook_uuid",
          "immutable_webhook_is_editable",
          "invalid_dynamic_search_rule_offset",
          "invalid_dynamic_search_rule_limit",
          "invalid_dynamic_search_rule_filter",
          "invalid_dynamic_search_rule_description",
          "invalid_dynamic_search_rule_priority",
          "invalid_dynamic_search_rule_active",
          "invalid_dynamic_search_rule_conditions",
          "invalid_dynamic_search_rule_actions",
          "invalid_dynamic_search_rule_filter_query",
          "invalid_dynamic_search_rule_filter_active",
          "dynamic_search_rule_not_found"
        ]
      },
      "CompletionTokensDetails": {
        "type": "object",
        "description": "Breakdown of tokens used in a completion.",
        "properties": {
          "accepted_prediction_tokens": {
            "type": [
              "integer",
              "null"
            ],
            "format": "u-int32",
            "minimum": 0
          },
          "audio_tokens": {
            "type": [
              "integer",
              "null"
            ],
            "format": "u-int32",
            "description": "Audio input tokens generated by the model.",
            "minimum": 0
          },
          "reasoning_tokens": {
            "type": [
              "integer",
              "null"
            ],
            "format": "u-int32",
            "description": "Tokens generated by the model for reasoning.",
            "minimum": 0
          },
          "rejected_prediction_tokens": {
            "type": [
              "integer",
              "null"
            ],
            "format": "u-int32",
            "description": " When using Predicted Outputs, the number of tokens in the\nprediction that did not appear in the completion. However, like\nreasoning tokens, these tokens are still counted in the total\ncompletion tokens for purposes of billing, output, and context\nwindow limits.",
            "minimum": 0
          }
        }
      },
      "CompletionUsage": {
        "type": "object",
        "description": "Usage statistics for the completion request.",
        "required": [
          "prompt_tokens",
          "completion_tokens",
          "total_tokens"
        ],
        "properties": {
          "prompt_tokens": {
            "type": "integer",
            "format": "u-int32",
            "description": "Number of tokens in the prompt.",
            "minimum": 0
          },
          "completion_tokens": {
            "type": "integer",
            "format": "u-int32",
            "description": "Number of tokens in the generated completion.",
            "minimum": 0
          },
          "total_tokens": {
            "type": "integer",
            "format": "u-int32",
            "description": "Total number of tokens used in the request (prompt + completion).",
            "minimum": 0
          },
          "prompt_tokens_details": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PromptTokensDetails",
                "description": "Breakdown of tokens used in the prompt."
              }
            ]
          },
          "completion_tokens_details": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CompletionTokensDetails",
                "description": "Breakdown of tokens used in a completion."
              }
            ]
          }
        }
      },
      "ComputedFacets": {
        "type": "object",
        "description": "Computed facet data from a search",
        "required": [
          "distribution",
          "stats"
        ],
        "properties": {
          "distribution": {
            "type": "object",
            "description": "Count of documents for each facet value",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "integer",
                "format": "u-int64",
                "minimum": 0
              },
              "propertyNames": {
                "type": "string"
              }
            },
            "propertyNames": {
              "type": "string"
            }
          },
          "stats": {
            "type": "object",
            "description": "Numeric statistics for each facet",
            "additionalProperties": {
              "$ref": "#/components/schemas/FacetStats"
            },
            "propertyNames": {
              "type": "string"
            }
          }
        }
      },
      "Conditions": {
        "type": "object",
        "properties": {
          "time": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/TimeCondition",
                "description": "Time range where the rule is active"
              }
            ]
          },
          "query": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/QueryCondition",
                "description": "Conditions on the search query that determines whether the rule is active"
              }
            ]
          },
          "filter": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/FilterCondition",
                "description": "Conditions on the values matching the filter of the search query that determines whether the rule is active"
              }
            ]
          }
        }
      },
      "CreateApiKey": {
        "type": "object",
        "required": [
          "actions",
          "indexes",
          "expiresAt"
        ],
        "properties": {
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "A description for the key. `null` if empty.",
            "example": null
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "A human-readable name for the key. `null` if empty.",
            "example": "Indexing Products API key"
          },
          "uid": {
            "type": [
              "string",
              "null"
            ],
            "description": "A uuid v4 to identify the API Key. If not specified, it's generated by Meilisearch.",
            "example": "01b4bc42-eb33-4041-b481-254d00cce834"
          },
          "actions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Action"
            },
            "description": "A list of actions permitted for the key. `[\"*\"]` for all actions. The\n`*` character can be used as a wildcard when located at the last\nposition. e.g. `documents.*` to authorize access on all documents\nendpoints.\n\nValid actions include: `search`, `documents.add`,\n`documents.get`, `documents.delete`, `indexes.create`, `indexes.get`,\n`indexes.update`, `indexes.delete`, `indexes.swap`, `tasks.get`,\n`tasks.cancel`, `tasks.delete`, `settings.get`, `settings.update`,\n`stats.get`, `dumps.create`, `snapshots.create`, `version`, `keys.get`,\n`keys.create`, `keys.update`, `keys.delete`. Use `*` to grant all actions.",
            "example": [
              "documents.add"
            ]
          },
          "indexes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of accessible indexes permitted for the key. `[\"*\"]` for all\nindexes. The `*` character can be used as a wildcard when located at\nthe last position. e.g. `products_*` to allow access to all indexes\nwhose names start with `products_`.",
            "example": [
              "products"
            ]
          },
          "expiresAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Represent the expiration date and time as RFC 3339 format. `null`\nequals to no expiration time. Set to `null` to create a key that never\nexpires. Once a key is past its expiry date, using it returns an error."
          }
        }
      },
      "CreateChatCompletionRequest": {
        "type": "object",
        "description": "A chat completion request compatible with the OpenAI API.",
        "required": [
          "messages",
          "model"
        ],
        "properties": {
          "messages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChatCompletionRequestMessage"
            },
            "description": "A list of messages comprising the conversation so far. Depending on the [model](https://platform.openai.com/docs/models) you use, different message types (modalities) are supported, like [text](https://platform.openai.com/docs/guides/text-generation), [images](https://platform.openai.com/docs/guides/vision), and [audio](https://platform.openai.com/docs/guides/audio)."
          },
          "model": {
            "type": "string",
            "description": "ID of the model to use.\nSee the [model endpoint compatibility](https://platform.openai.com/docs/models#model-endpoint-compatibility) table for details on which models work with the Chat API."
          },
          "store": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether or not to store the output of this chat completion request\n\nfor use in our [model distillation](https://platform.openai.com/docs/guides/distillation) or [evals](https://platform.openai.com/docs/guides/evals) products."
          },
          "reasoning_effort": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ReasoningEffort",
                "description": "**o1 models only**\n\nConstrains effort on reasoning for\n[reasoning models](https://platform.openai.com/docs/guides/reasoning).\n\nCurrently supported values are `low`, `medium`, and `high`. Reducing\n\nreasoning effort can result in faster responses and fewer tokens\nused on reasoning in a response."
              }
            ]
          },
          "metadata": {
            "description": "Developer-defined tags and values used for filtering completions in the [dashboard](https://platform.openai.com/chat-completions)."
          },
          "frequency_penalty": {
            "type": [
              "number",
              "null"
            ],
            "format": "float",
            "description": "Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim."
          },
          "logit_bias": {
            "type": [
              "object",
              "null"
            ],
            "description": "Modify the likelihood of specified tokens appearing in the completion.\n\nAccepts a json object that maps tokens (specified by their token ID in the tokenizer) to an associated bias value from -100 to 100.\nMathematically, the bias is added to the logits generated by the model prior to sampling.\nThe exact effect will vary per model, but values between -1 and 1 should decrease or increase likelihood of selection;\nvalues like -100 or 100 should result in a ban or exclusive selection of the relevant token.",
            "additionalProperties": {},
            "propertyNames": {
              "type": "string"
            }
          },
          "logprobs": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether to return log probabilities of the output tokens or not. If true, returns the log probabilities of each output token returned in the `content` of `message`."
          },
          "top_logprobs": {
            "type": [
              "integer",
              "null"
            ],
            "format": "u-int8",
            "description": "An integer between 0 and 20 specifying the number of most likely tokens to return at each token position, each with an associated log probability. `logprobs` must be set to `true` if this parameter is used.",
            "minimum": 0
          },
          "max_tokens": {
            "type": [
              "integer",
              "null"
            ],
            "format": "u-int32",
            "description": "The maximum number of [tokens](https://platform.openai.com/tokenizer) that can be generated in the chat completion.\n\nThis value can be used to control [costs](https://openai.com/api/pricing/) for text generated via API.\nThis value is now deprecated in favor of `max_completion_tokens`, and is\nnot compatible with [o1 series models](https://platform.openai.com/docs/guides/reasoning).",
            "deprecated": true,
            "minimum": 0
          },
          "max_completion_tokens": {
            "type": [
              "integer",
              "null"
            ],
            "format": "u-int32",
            "description": "An upper bound for the number of tokens that can be generated for a completion, including visible output tokens and [reasoning tokens](https://platform.openai.com/docs/guides/reasoning).",
            "minimum": 0
          },
          "n": {
            "type": [
              "integer",
              "null"
            ],
            "format": "u-int8",
            "description": "How many chat completion choices to generate for each input message. Note that you will be charged based on the number of generated tokens across all of the choices. Keep `n` as `1` to minimize costs.",
            "minimum": 0
          },
          "modalities": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/ChatCompletionModalities"
            },
            "description": "Output types that you would like the model to generate for this request. Most models are capable of generating text, which is the default: `[\"text\"]`."
          },
          "prediction": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PredictionContent",
                "description": "Configuration for a [Predicted Output](https://platform.openai.com/docs/guides/predicted-outputs),which can greatly improve response times when large parts of the model response are known ahead of time. This is most common when you are regenerating a file with only minor changes to most of the content."
              }
            ]
          },
          "audio": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ChatCompletionAudio",
                "description": "Parameters for audio output. Required when audio output is requested with `modalities: [\"audio\"]`. [Learn more](https://platform.openai.com/docs/guides/audio)."
              }
            ]
          },
          "presence_penalty": {
            "type": [
              "number",
              "null"
            ],
            "format": "float",
            "description": "Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics."
          },
          "response_format": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ResponseFormat",
                "description": "An object specifying the format that the model must output. Compatible with [GPT-4o](https://platform.openai.com/docs/models/gpt-4o), [GPT-4o mini](https://platform.openai.com/docs/models/gpt-4o-mini), [GPT-4 Turbo](https://platform.openai.com/docs/models/gpt-4-and-gpt-4-turbo) and all GPT-3.5 Turbo models newer than `gpt-3.5-turbo-1106`.\n\nSetting to `{ \"type\": \"json_schema\", \"json_schema\": {...} }` enables Structured Outputs which guarantees the model will match your supplied JSON schema. Learn more in the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).\n\nSetting to `{ \"type\": \"json_object\" }` enables JSON mode, which guarantees the message the model generates is valid JSON.\n\n**Important:** when using JSON mode, you **must** also instruct the model to produce JSON yourself via a system or user message. Without this, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly \"stuck\" request. Also note that the message content may be partially cut off if `finish_reason=\"length\"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length."
              }
            ]
          },
          "seed": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": " This feature is in Beta.\nIf specified, our system will make a best effort to sample deterministically, such that repeated requests\nwith the same `seed` and parameters should return the same result.\nDeterminism is not guaranteed, and you should refer to the `system_fingerprint` response parameter to monitor changes in the backend."
          },
          "service_tier": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ServiceTier",
                "description": "Specifies the latency tier to use for processing the request. This parameter is relevant for customers subscribed to the scale tier service:\n- If set to 'auto', the system will utilize scale tier credits until they are exhausted.\n- If set to 'default', the request will be processed using the default service tier with a lower uptime SLA and no latency guarentee.\n- When not set, the default behavior is 'auto'.\n\nWhen this parameter is set, the response body will include the `service_tier` utilized."
              }
            ]
          },
          "stop": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Stop",
                "description": "Up to 4 sequences where the API will stop generating further tokens."
              }
            ]
          },
          "stream": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "If set, partial message deltas will be sent, like in ChatGPT.\nTokens will be sent as data-only [server-sent events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#Event_stream_format)\nas they become available, with the stream terminated by a `data: [DONE]` message. [Example Python code](https://cookbook.openai.com/examples/how_to_stream_completions)."
          },
          "stream_options": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ChatCompletionStreamOptions",
                "description": "Options for streaming response. Only set this when you set `stream: true`."
              }
            ]
          },
          "temperature": {
            "type": [
              "number",
              "null"
            ],
            "format": "float",
            "description": "What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random,\nwhile lower values like 0.2 will make it more focused and deterministic.\n\nWe generally recommend altering this or `top_p` but not both."
          },
          "top_p": {
            "type": [
              "number",
              "null"
            ],
            "format": "float",
            "description": "An alternative to sampling with temperature, called nucleus sampling,\nwhere the model considers the results of the tokens with top_p probability mass.\nSo 0.1 means only the tokens comprising the top 10% probability mass are considered.\n\n We generally recommend altering this or `temperature` but not both."
          },
          "tools": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/ChatCompletionTool"
            },
            "description": "A list of tools the model may call. Currently, only functions are supported as a tool.\nUse this to provide a list of functions the model may generate JSON inputs for. A max of 128 functions are supported."
          },
          "tool_choice": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ChatCompletionToolChoiceOption",
                "description": "Controls which (if any) tool is called by the model. `none` means the model will not call any tool and instead generates a message. `auto` means the model can pick between generating a message or calling one or more tools. `required` means the model must call one or more tools. `none` is the default when no tools are present. `auto` is the default if tools are present."
              }
            ]
          },
          "parallel_tool_calls": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether to enable [parallel function calling](https://platform.openai.com/docs/guides/function-calling/parallel-function-calling) during tool use."
          },
          "user": {
            "type": [
              "string",
              "null"
            ],
            "description": "A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse. [Learn more](https://platform.openai.com/docs/guides/safety-best-practices#end-user-ids)."
          },
          "function_call": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ChatCompletionFunctionCall",
                "description": "Deprecated in favor of `tool_choice`.\n\nControls which (if any) function is called by the model.\n`none` means the model will not call a function and instead generates a message.\n`auto` means the model can pick between generating a message or calling a function.\nSpecifying a particular function via `{\"name\": \"my_function\"}` forces the model to call that function.\n\n`none` is the default when no functions are present. `auto` is the default if functions are present."
              }
            ]
          },
          "functions": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/ChatCompletionFunctions"
            },
            "description": "Deprecated in favor of `tools`.\n\nA list of functions the model may generate JSON inputs for.",
            "deprecated": true
          }
        }
      },
      "CreateChatCompletionResponse": {
        "type": "object",
        "description": "Represents a chat completion response returned by model, based on the provided input.",
        "required": [
          "id",
          "choices",
          "created",
          "model",
          "object"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "A unique identifier for the chat completion."
          },
          "choices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChatChoice"
            },
            "description": "A list of chat completion choices. Can be more than one if `n` is greater than 1."
          },
          "created": {
            "type": "integer",
            "format": "u-int32",
            "description": "The Unix timestamp (in seconds) of when the chat completion was created.",
            "minimum": 0
          },
          "model": {
            "type": "string",
            "description": "The model used for the chat completion."
          },
          "service_tier": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ServiceTierResponse",
                "description": "The service tier used for processing the request. This field is only included if the `service_tier` parameter is specified in the request."
              }
            ]
          },
          "system_fingerprint": {
            "type": [
              "string",
              "null"
            ],
            "description": "This fingerprint represents the backend configuration that the model runs with.\n\nCan be used in conjunction with the `seed` request parameter to understand when backend changes have been made that might impact determinism."
          },
          "object": {
            "type": "string",
            "description": "The object type, which is always `chat.completion`."
          },
          "usage": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/CompletionUsage",
                "description": "Usage statistics for the completion request."
              }
            ]
          }
        }
      },
      "DbTaskNetwork": {
        "oneOf": [
          {
            "type": "object",
            "description": "Tasks that were duplicated from `origin`",
            "required": [
              "origin"
            ],
            "properties": {
              "origin": {
                "$ref": "#/components/schemas/Origin"
              }
            }
          },
          {
            "type": "object",
            "description": "Tasks that were duplicated as `remote_tasks`",
            "required": [
              "remote_tasks"
            ],
            "properties": {
              "remote_tasks": {
                "type": "object",
                "additionalProperties": {
                  "$ref": "#/components/schemas/RemoteTask"
                },
                "propertyNames": {
                  "type": "string"
                }
              },
              "network_version": {
                "type": "string",
                "format": "uuid"
              }
            }
          },
          {
            "type": "object",
            "description": "Document import tasks sent in the context of `network_change`",
            "required": [
              "import_from",
              "network_change"
            ],
            "properties": {
              "import_from": {
                "$ref": "#/components/schemas/ImportData"
              },
              "network_change": {
                "$ref": "#/components/schemas/Origin"
              }
            }
          }
        ]
      },
      "DetailsExportIndexSettings": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ExportIndexSettings"
          },
          {
            "type": "object",
            "properties": {
              "matchedDocuments": {
                "type": [
                  "integer",
                  "null"
                ],
                "format": "u-int64",
                "minimum": 0
              }
            }
          }
        ]
      },
      "DetailsView": {
        "allOf": [
          {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Settings_Unchecked",
                "description": "The complete settings object that was applied by a `settingsUpdate`\ntask. Only the settings that were modified are included in this\nobject."
              }
            ]
          },
          {
            "type": "object",
            "properties": {
              "receivedDocuments": {
                "type": [
                  "integer",
                  "null"
                ],
                "format": "u-int64",
                "description": "The number of documents that were sent in the request payload for a\n`documentAdditionOrUpdate` task. This count is determined before any\nprocessing occurs.",
                "minimum": 0
              },
              "indexedDocuments": {
                "type": [
                  "integer",
                  "null"
                ],
                "format": "u-int64",
                "description": "The number of documents that were successfully indexed after\nprocessing a `documentAdditionOrUpdate` task. This may differ from\n`receivedDocuments` if some documents were invalid or duplicates.\nThe inner `null` indicates the task is still processing.",
                "minimum": 0
              },
              "editedDocuments": {
                "type": [
                  "integer",
                  "null"
                ],
                "format": "u-int64",
                "description": "The number of documents that were modified by an `documentEdition`\ntask using a RHAI function. The inner `null` indicates the task is\nstill processing.",
                "minimum": 0
              },
              "primaryKey": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "The primary key attribute set for the index. For `indexCreation`\ntasks, this is the primary key that was specified. For `indexUpdate`\ntasks, this shows the new primary key if it was changed. The inner\n`null` means no primary key was specified and Meilisearch will infer\nit from documents."
              },
              "providedIds": {
                "type": [
                  "integer",
                  "null"
                ],
                "description": "The number of document IDs that were provided in a `documentDeletion`\nrequest. This is the count before processing - the actual number\ndeleted may be lower if some IDs didn't exist.",
                "minimum": 0
              },
              "deletedDocuments": {
                "type": [
                  "integer",
                  "null"
                ],
                "format": "u-int64",
                "description": "The number of documents that were actually removed from the index for\n`documentDeletion`, `documentDeletionByFilter`, or `indexDeletion`\ntasks. The inner `null` indicates the task is still processing.",
                "minimum": 0
              },
              "matchedTasks": {
                "type": [
                  "integer",
                  "null"
                ],
                "format": "u-int64",
                "description": "The number of tasks that matched the filter criteria for a\n`taskCancelation` or `taskDeletion` request. This is determined when\nthe request is received, before any cancellation or deletion occurs.",
                "minimum": 0
              },
              "canceledTasks": {
                "type": [
                  "integer",
                  "null"
                ],
                "format": "u-int64",
                "description": "The number of tasks that were successfully canceled by a\n`taskCancelation` task. This may be less than `matchedTasks` if some\ntasks completed before they could be canceled. The inner `null`\nindicates the task is still processing.",
                "minimum": 0
              },
              "deletedTasks": {
                "type": [
                  "integer",
                  "null"
                ],
                "format": "u-int64",
                "description": "The number of tasks that were successfully deleted by a `taskDeletion`\ntask. The inner `null` indicates the task is still processing.",
                "minimum": 0
              },
              "originalFilter": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "The original filter query string that was used to select tasks for a\n`taskCancelation` or `taskDeletion` operation. Useful for\nunderstanding which tasks were targeted."
              },
              "dumpUid": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "The unique identifier assigned to the dump file created by a\n`dumpCreation` task. Use this UID to locate the dump file in the\ndumps directory. The inner `null` indicates the task is still\nprocessing or failed before generating a UID."
              },
              "context": {
                "type": [
                  "object",
                  "null"
                ],
                "description": "The context object that was provided to the RHAI function for a\n`documentEdition` task. This object contains data that the function\ncan access during document processing."
              },
              "function": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "The RHAI function code that was executed for a `documentEdition`\ntask. This function is applied to each document matching the filter."
              },
              "swaps": {
                "type": [
                  "array",
                  "null"
                ],
                "items": {
                  "$ref": "#/components/schemas/IndexSwap"
                },
                "description": "The list of index swap operations that were performed by an\n`indexSwap` task. Each swap specifies two indexes that exchanged\ntheir contents."
              },
              "upgradeFrom": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "The Meilisearch version before a database upgrade was performed.\nFormatted as `vX.Y.Z`."
              },
              "upgradeTo": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "The Meilisearch version after a database upgrade was completed.\nFormatted as `vX.Y.Z`."
              },
              "url": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "The destination URL where data is being exported for an `export`\ntask. This is the endpoint that receives the exported index data."
              },
              "apiKey": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "The API key used for authentication when exporting data to a remote\nMeilisearch instance. This value is partially masked for security."
              },
              "payloadSize": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "The maximum payload size configured for an `export` task, formatted\nas a human-readable string (e.g., `100 MB`). This limits the size of\neach batch of documents sent during export."
              },
              "indexes": {
                "type": [
                  "object",
                  "null"
                ],
                "description": "A map of index patterns to their export settings for an `export`\ntask. The keys are index patterns (which may include wildcards) and\nthe values contain the specific export configuration for matching\nindexes.",
                "additionalProperties": {
                  "$ref": "#/components/schemas/DetailsExportIndexSettings"
                },
                "propertyNames": {
                  "type": "string"
                }
              },
              "oldIndexUid": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "The original unique identifier of the index before an `indexRename`\noperation. This is the name the index had before it was renamed."
              },
              "newIndexUid": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "The new unique identifier assigned to the index after an `indexRename`\noperation. This is the name the index has after being renamed."
              },
              "preCompactionSize": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "The size of the index before an `indexCompaction` task was performed,\nformatted as a human-readable string (e.g., `1.5 GB`). Compare with\n`postCompactionSize` to see how much space was reclaimed."
              },
              "postCompactionSize": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "The size of the index after an `indexCompaction` task completed,\nformatted as a human-readable string (e.g., `1.2 GB`). This should\nbe smaller than or equal to `preCompactionSize`."
              },
              "movedDocuments": {
                "type": [
                  "integer",
                  "null"
                ],
                "format": "u-int64",
                "description": "The number of documents that were redistributed during a\n`networkTopologyChange` task in a distributed deployment. This\noccurs when the cluster configuration changes.",
                "minimum": 0
              },
              "message": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "A human-readable message providing additional information about the\ntask, such as status updates or explanatory text about what occurred\nduring processing."
              },
              "rule": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/DynamicSearchRuleUpdateRequest",
                    "description": "The updated dynamic search rule."
                  }
                ]
              },
              "updatedRules": {
                "type": [
                  "integer",
                  "null"
                ],
                "format": "u-int64",
                "description": "Number of dynamic search rules that were created, modified or deleted.",
                "minimum": 0
              }
            }
          }
        ],
        "description": "Contains type-specific details about a task's execution.\n\nThe fields present depend on the task type. For example, document addition\ntasks will have `receivedDocuments` and `indexedDocuments`, while settings\nupdate tasks will have the applied settings."
      },
      "DistributionShift": {
        "type": "object",
        "description": "Describes the mean and sigma of distribution of embedding similarity in the embedding space.\n\nThe intended use is to make the similarity score more comparable to the regular ranking score.\nThis allows to correct effects where results are too \"packed\" around a certain value.",
        "required": [
          "current_mean",
          "current_sigma"
        ],
        "properties": {
          "current_mean": {
            "type": "number",
            "format": "float",
            "description": "Value where the results are \"packed\".\n\nSimilarity scores are translated so that they are packed around 0.5 instead"
          },
          "current_sigma": {
            "type": "number",
            "format": "float",
            "description": "standard deviation of a similarity score.\n\nSet below 0.4 to make the results less packed around the mean, and above 0.4 to make them more packed."
          }
        }
      },
      "DocumentDeletionByFilter": {
        "type": "object",
        "description": "Request body for deleting documents by filter",
        "required": [
          "filter"
        ],
        "properties": {
          "filter": {
            "description": "Filter expression to match documents for deletion. Attributes must be in\n`filterableAttributes` before they can be used. Accepts a string or an array of arrays.\nSending an empty filter will return a `bad_request` error."
          }
        },
        "additionalProperties": false
      },
      "DocumentEditionByFunction": {
        "type": "object",
        "description": "Request body for editing documents using a RHAI function",
        "required": [
          "function"
        ],
        "properties": {
          "filter": {
            "description": "Filter expression to select which documents to edit. If omitted, all documents in the\nindex will be processed. Attributes must be in `filterableAttributes` to be used."
          },
          "context": {
            "description": "Arbitrary data to pass into the function scope. By default the function only has access\nto the current document being edited via the `doc` variable."
          },
          "function": {
            "type": "string",
            "description": "A [RHAI](https://rhai.rs) function string to apply to each document. The function has\naccess to a `doc` variable representing the current document. Modify `doc` fields to\nupdate the document. Return `null` or `()` to delete the document.\nTo enable this feature: `PATCH /experimental-features/ {\"editDocumentsByFunction\": true}`."
          }
        },
        "additionalProperties": false
      },
      "DynamicSearchRule": {
        "type": "object",
        "required": [
          "uid",
          "actions"
        ],
        "properties": {
          "uid": {
            "$ref": "#/components/schemas/IndexUid",
            "description": "Unique identifier of the dynamic search rule."
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Human-readable description of the dynamic search rule."
          },
          "lastUpdatedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Date time of the last update of this rule."
          },
          "precedence": {
            "type": [
              "integer",
              "null"
            ],
            "format": "u-int64",
            "description": "Precedence of the dynamic search rule. Lower numeric values take precedence over higher\nones. If omitted, the rule is treated as having the lowest precedence. This precedence is\nused to resolve conflicts between matching rules:\n- If the same document is selected by multiple rules, the smallest `priority` number wins\n- If different documents are pinned to the same position, they are ordered by ascending `priority`",
            "minimum": 0
          },
          "active": {
            "type": "boolean",
            "description": "Whether the dynamic search rule is active."
          },
          "conditions": {
            "$ref": "#/components/schemas/Conditions",
            "description": "Conditions that must match before the dynamic search rule applies."
          },
          "actions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RuleAction"
            },
            "description": "Actions to apply when the dynamic search rule matches."
          }
        }
      },
      "DynamicSearchRuleUpdateRequest": {
        "type": "object",
        "properties": {
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Human-readable description of the dynamic search rule."
          },
          "precedence": {
            "type": [
              "integer",
              "null"
            ],
            "format": "u-int64",
            "description": "Precedence of the dynamic search rule. Lower numeric values take precedence over higher\nones. If omitted, the rule is treated as having the lowest precedence. This precedence is\nused to resolve conflicts between matching rules:\n- If the same document is selected by multiple rules, the smallest `priority` number wins\n- If different documents are pinned to the same position, they are ordered by ascending `priority`",
            "minimum": 0
          },
          "active": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether the dynamic search rule is active."
          },
          "conditions": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Conditions",
                "description": "Conditions that must match before the dynamic search rule applies."
              }
            ]
          },
          "actions": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/RuleAction"
            },
            "description": "Actions to apply when the dynamic search rule matches."
          }
        }
      },
      "EmbedderSource": {
        "type": "string",
        "enum": [
          "openAi",
          "huggingFace",
          "ollama",
          "userProvided",
          "rest",
          "composite"
        ]
      },
      "EmbedderStatsView": {
        "type": "object",
        "description": "Statistics for embedder requests",
        "required": [
          "total",
          "failed"
        ],
        "properties": {
          "total": {
            "type": "integer",
            "description": "Total number of embedder requests",
            "minimum": 0
          },
          "failed": {
            "type": "integer",
            "description": "Number of failed embedder requests",
            "minimum": 0
          },
          "lastError": {
            "type": [
              "string",
              "null"
            ],
            "description": "Last error message from the embedder"
          }
        }
      },
      "EmbeddingSettings": {
        "type": "object",
        "description": "Embedder configuration for [AI-powered / hybrid search](https://www.meilisearch.com/docs/learn/ai_powered_search/getting_started_with_ai_search).",
        "properties": {
          "source": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/EmbedderSource",
                "description": "Embedding provider.\n\n- `openAi`: integration with OpenAI. Use `rest` for OpenAI-like APIs.\n- `huggingFace`: download a model from [Hugging Face](https://huggingface.co/), then compute embeddings on the local CPU/GPU.\n- `ollama`: integration with [ollama](https://ollama.com/).\n- `rest`: configurable integration with a remote embedder via its REST API.\n- `composite`: combine two embedding providers at indexing and search time.\n  The generated embeddings must be **exactly the same** regardless of the embedding provider.\n- `userProvided`: manually provide embeddings in documents.\n\n- Determines which other fields are required or allowed.\n- 🏗️ Changing the value of this parameter always regenerates embeddings."
              }
            ],
            "default": "openAi"
          },
          "model": {
            "type": [
              "string",
              "null"
            ],
            "description": "Model name.\n\n- Available for `openAi`, `huggingFace`, `ollama`.\n- Mandatory for `ollama`.\n- For `openAi`/`huggingFace` optional with defaults.\n- 🏗️ Changing the value of this parameter always regenerates embeddings.",
            "example": "text-embedding-3-small"
          },
          "revision": {
            "type": [
              "string",
              "null"
            ],
            "description": "Model revision (e.g. Hugging Face commit SHA).\n\n- Only available for `huggingFace`.\n- If unset, latest is used.\n- 🏗️ Changing the value of this parameter always regenerates embeddings"
          },
          "pooling": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/OverridePooling",
                "description": "Pooling method when computing embedding locally.\n\n- Only available for `huggingFace`.\n- `useModel`: automatically determine the pooling method depending on the chosen model (recommended).\n- `forceMean`: always use mean pooling.\n- `forceCls`: always use CLS pooling.\n- 🏗️ Changing the value of this parameter always regenerates embeddings"
              }
            ],
            "default": "useModel"
          },
          "apiKey": {
            "type": [
              "string",
              "null"
            ],
            "description": "API key sent to the embedder.\n\n- If not set for source `openAi`, the key is read from the `OPENAI_API_KEY` then `MEILI_OPENAI_API_KEY` environment variables.\n- If not set for other sources, no bearer token is sent.\n- This setting is partially hidden when returned by the settings\n- 🌱 Changing the value of this parameter never regenerates embeddings"
          },
          "dimensions": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Number of dimensions of the embedding vectors.\n\n- Available for `userProvided`, `openAi`, `ollama`, `rest`.\n- Mandatory for `userProvided`.\n- For `openAi`/`ollama`/`rest` inferred if omitted.\n- 🏗️ For `openAi`, changing the value of this parameter always regenerates embeddings\n- 🌱 For other sources, changing the value of this parameter never regenerates embeddings",
            "example": 1536,
            "minimum": 0
          },
          "binaryQuantized": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "When true, vectors are stored as 1-bit (smaller, faster, less precise).\n\n- Available for all sources.\n- Irreversible once enabled.\n- 🏗️ When set to true, embeddings are not regenerated, but they are binary quantized, which takes time."
          },
          "documentTemplate": {
            "type": [
              "string",
              "null"
            ],
            "description": "[Liquid template](https://shopify.github.io/liquid/) to build the text sent to the embedder for each document.\n\n- Available for `openAi`, `huggingFace`, `ollama`, `rest`.\n- 🏗️ When modified, embeddings are regenerated for documents whose rendering through the template produces a different text.",
            "example": "{{doc.title}}: {{doc.overview}}"
          },
          "documentTemplateMaxBytes": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Max size in bytes of the rendered document template.\n\nLonger output is truncated.\n\n- Available for `openAi`, `huggingFace`, `ollama`, `rest`.\n- 🏗️ When increased, embeddings are regenerated for documents whose rendering through the template produces a different text.\n- 🌱 When decreased, embeddings are never regenerated",
            "default": 400,
            "example": 400,
            "minimum": 0
          },
          "url": {
            "type": [
              "string",
              "null"
            ],
            "description": "URL of the embedder API.\n\n- Mandatory for `rest`. Optional for `openAi` and `ollama`.\n- 🌱 When modified for `openAi``, embeddings are never regenerated\n- 🏗️ When modified for `ollama` and `rest`, embeddings are always regenerated\n- If targetting URL resolving to a non-global IP (such as `localhost`), make sure that\n  `--experimental-allowed-ip-networks` allows it. For details on how use this parameter,\n  refer to [this documentation](https://www.meilisearch.com/docs/learn/self_hosted/configure_meilisearch_at_launch#allow-requests-to-private-networks).",
            "example": "http://localhost:11434/api/embeddings"
          },
          "indexingFragments": {
            "type": [
              "object",
              "null"
            ],
            "description": "Fragments (with [Liquid](https://shopify.github.io/liquid/)) sent to the embedder at indexing time.\n\nFor `rest` with multimodal; key is fragment name, value the payload.\n\nSee also [Image search with multimodal embeddings](https://www.meilisearch.com/docs/learn/ai_powered_search/image_search_with_multimodal_embeddings)\n\n- 🏗️ When a fragment is deleted by passing `null` to its name, the corresponding embeddings are removed from documents.\n- 🏗️ When a fragment is modified, the corresponding embeddings are regenerated if their rendered version changes.",
            "default": {},
            "additionalProperties": {},
            "propertyNames": {
              "type": "string"
            }
          },
          "searchFragments": {
            "type": [
              "object",
              "null"
            ],
            "description": "Fragments (with [Liquid](https://shopify.github.io/liquid/)) sent to the embedder at search time.\n\nFor `rest` with multimodal.\n\nSee also [Image search with multimodal embeddings](https://www.meilisearch.com/docs/learn/ai_powered_search/image_search_with_multimodal_embeddings)\n\n- 🌱 Changing the value of this parameter never regenerates embeddings",
            "default": {},
            "additionalProperties": {},
            "propertyNames": {
              "type": "string"
            }
          },
          "request": {
            "description": "Request body template for `rest` embedder.\n\nSee also [Configure a REST embedder](https://www.meilisearch.com/docs/learn/ai_powered_search/configure_rest_embedder)\n\n- Use `\"{{text}}\"` for the input.\n- Mandatory for `rest`.\n- 🏗️ Changing the value of this parameter always regenerates embeddings"
          },
          "response": {
            "description": "Response template for `rest` embedder.\n\nSee also [Configure a REST embedder](https://www.meilisearch.com/docs/learn/ai_powered_search/configure_rest_embedder)\n\n- Use `\"{{embedding}}\"` where the embedding array is.\n- Mandatory for `rest`."
          },
          "headers": {
            "type": [
              "object",
              "null"
            ],
            "description": "Extra HTTP headers sent to the embedder.\n\n- Available for `rest`.\n- 🌱 Changing the value of this parameter never regenerates embeddings",
            "additionalProperties": {
              "type": "string"
            },
            "propertyNames": {
              "type": "string"
            }
          },
          "searchEmbedder": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/SubEmbeddingSettings",
                "description": "Embedder used at search time when using a composite embedder.\n\nSame sub-parameters as a top-level embedder (`source`, `model`, `url`, etc.); no `documentTemplate`/`documentTemplateMaxBytes`."
              }
            ]
          },
          "indexingEmbedder": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/SubEmbeddingSettings",
                "description": "Embedder used at indexing time when using a composite embedder.\n\nSame sub-parameters as a top-level embedder (`source`, `model`, `documentTemplate`, `url`, etc.)."
              }
            ]
          },
          "distribution": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/DistributionShift",
                "description": "Affine transform (mean, sigma) applied to the semantic score to make it more comparable with the ranking score.\n\nSee also [this article](https://www.meilisearch.com/blog/fixing-hybrid-search#making-the-scores-comparable).\n\n- Available for all sources.\n- 🌱 Changing the value of this parameter never regenerates embeddings"
              }
            ]
          }
        }
      },
      "ErrorType": {
        "type": "string",
        "enum": [
          "internal",
          "invalid_request",
          "auth",
          "system"
        ]
      },
      "Export": {
        "type": "object",
        "description": "Request body for exporting data to a remote Meilisearch instance",
        "properties": {
          "url": {
            "type": "string",
            "description": "URL of the destination Meilisearch instance",
            "example": "https://ms-1234.heaven.meilisearch.com"
          },
          "apiKey": {
            "type": [
              "string",
              "null"
            ],
            "description": "API key for authenticating with the destination instance",
            "example": "1234abcd"
          },
          "payloadSize": {
            "type": [
              "string",
              "null"
            ],
            "description": "Maximum payload size per request",
            "example": "24MiB"
          },
          "indexes": {
            "type": [
              "object",
              "null"
            ],
            "description": "Index patterns to export with their settings",
            "additionalProperties": {
              "$ref": "#/components/schemas/ExportIndexSettings"
            },
            "propertyNames": {
              "type": "string"
            },
            "example": {
              "*": {
                "filter": null
              }
            }
          }
        }
      },
      "ExportIndexSettings": {
        "type": "object",
        "description": "Export settings for a specific index",
        "properties": {
          "filter": {
            "type": [
              "string",
              "null"
            ],
            "description": "Filter expression to select which documents to export",
            "example": "genres = action"
          },
          "overrideSettings": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether to override settings on the destination index",
            "example": true
          }
        }
      },
      "FacetSearchQuery": {
        "type": "object",
        "description": "Request body for searching facet values",
        "required": [
          "facetName"
        ],
        "properties": {
          "facetQuery": {
            "type": [
              "string",
              "null"
            ],
            "description": "Query string to search for matching facet values. If not specified, Meilisearch returns all facet values for the `facetName`, limited to 100 results. Note: only the first word is used for matching."
          },
          "facetName": {
            "type": "string",
            "description": "Name of the facet attribute to search. Must be present in the index's `filterableAttributes` list."
          },
          "q": {
            "type": [
              "string",
              "null"
            ],
            "description": "Query string to filter the underlying documents before computing facet values. This affects which facet values appear and their counts, but does not filter the facet values themselves."
          },
          "vector": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "number",
              "format": "float"
            },
            "description": "Custom query vector for semantic search"
          },
          "media": {
            "description": "Multimodal content for AI-powered search"
          },
          "hybrid": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/HybridQuery",
                "description": "Hybrid search configuration that combines keyword search with semantic\n(vector) search. Set `semanticRatio` to balance between keyword\nmatching (0.0) and semantic similarity (1.0). Requires an embedder to\nbe configured in the index settings."
              }
            ]
          },
          "filter": {
            "description": "Filter expression to restrict which documents are considered when computing facet values. Attributes must be in `filterableAttributes` before they can be used in filters."
          },
          "matchingStrategy": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/MatchingStrategy",
                "description": "Strategy used to match query terms"
              }
            ]
          },
          "attributesToSearchOn": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Restrict search to specified attributes"
          },
          "rankingScoreThreshold": {
            "type": [
              "number",
              "null"
            ],
            "format": "double",
            "description": "Minimum ranking score threshold (0.0 to 1.0) that documents must\nachieve to be considered when computing facet counts. Documents with\nscores below this threshold are excluded from facet value counts."
          },
          "locales": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/Locale"
            },
            "description": "Languages to use for query processing"
          },
          "exhaustiveFacetCount": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Return exhaustive facet count instead of an estimate"
          },
          "useNetwork": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "When `true`, runs the query on the whole network (all shards covered exactly once).\n\nWhen `false`, the query runs locally.\n\nWhen omitted or `null`, the default value depends on whether the sharding is enabled for the instance:\n\n- If the instance has sharding enabled (has a leader), defaults to `true`.\n- Otherwise defaults to `false`.\n\nIt also requires the `network` [experimental feature](http://localhost:3000/reference/api/experimental-features/configure-experimental-features).\n\nValues: `true` = use the whole network; `false` = local, default = see above.\n\nWhen using the network, the index must exist with compatible settings on all remotes."
          }
        }
      },
      "FacetSearchResult": {
        "type": "object",
        "description": "Result of a facet search operation.",
        "required": [
          "facetHits",
          "processingTimeMs"
        ],
        "properties": {
          "facetHits": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FacetValueHitSchema"
            },
            "description": "Array of matching facet values with their document counts, sorted lexicographically\nin ascending order (or by count if `sortFacetValuesBy` is set to `\"count\"`)."
          },
          "facetQuery": {
            "type": [
              "string",
              "null"
            ],
            "description": "The original `facetQuery` from the request. `null` if no query was provided."
          },
          "processingTimeMs": {
            "type": "integer",
            "description": "Time in milliseconds Meilisearch took to process the request.",
            "minimum": 0
          },
          "remoteErrors": {
            "type": [
              "object",
              "null"
            ],
            "description": "Errors from remote shards. Only present in federated search when some remotes failed.",
            "additionalProperties": {
              "$ref": "#/components/schemas/ResponseError"
            },
            "propertyNames": {
              "type": "string"
            }
          }
        }
      },
      "FacetStats": {
        "type": "object",
        "description": "Minimum and maximum numeric values for a facet.\n\nPresent when the facet attribute has numeric values among matching documents.",
        "required": [
          "min",
          "max"
        ],
        "properties": {
          "min": {
            "type": "number",
            "format": "double",
            "description": "Lowest numeric value for this facet among matching documents."
          },
          "max": {
            "type": "number",
            "format": "double",
            "description": "Highest numeric value for this facet among matching documents."
          }
        }
      },
      "FacetValueHitSchema": {
        "type": "object",
        "description": "Schema representation of a facet value hit (for OpenAPI documentation only).",
        "required": [
          "value",
          "count"
        ],
        "properties": {
          "value": {
            "type": "string",
            "description": "The facet value that matched the query."
          },
          "count": {
            "type": "integer",
            "format": "u-int64",
            "description": "Number of documents with this facet value among the search results.",
            "minimum": 0
          }
        }
      },
      "FacetValuesSort": {
        "type": "string",
        "enum": [
          "alpha",
          "count"
        ]
      },
      "FacetingSettings": {
        "type": "object",
        "description": "Faceting: maximum number of facet values and how they are sorted.",
        "properties": {
          "maxValuesPerFacet": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Maximum number of facet values returned per facet. Values are sorted in ascending lexicographical order.",
            "default": 100,
            "example": 100,
            "minimum": 0
          },
          "sortFacetValuesBy": {
            "type": [
              "object",
              "null"
            ],
            "description": "Sort order per facet: by descending count (`count`) or ascending alphanumeric (`alpha`). Key `*` applies to all facets.",
            "default": {
              "*": "alpha"
            },
            "additionalProperties": {
              "$ref": "#/components/schemas/FacetValuesSort"
            },
            "propertyNames": {
              "type": "string"
            },
            "example": {
              "*": "alpha"
            }
          }
        }
      },
      "FederatedFacets": {
        "type": "object",
        "additionalProperties": {
          "$ref": "#/components/schemas/ComputedFacets"
        },
        "propertyNames": {
          "type": "string"
        }
      },
      "FederatedSearch": {
        "type": "object",
        "description": "Request body for federated multi-search across multiple indexes. This\nallows you to execute multiple search queries in a single request and\noptionally combine their results into a unified response. Use this for\ncross-index search scenarios or to reduce network round-trips.",
        "required": [
          "queries"
        ],
        "properties": {
          "queries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchQueryWithIndex"
            },
            "description": "An array of search queries to execute. Each query can target a\ndifferent index and have its own parameters. When `federation` is\n`null`, results are returned separately for each query. When\n`federation` is set, results are merged.\n\nEach query object must include `indexUid` to specify which index to search."
          },
          "federation": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Federation",
                "description": "Configuration for combining results from multiple queries into a\nsingle response. When set, results are merged and ranked together.\nWhen `null`, each query's results are returned separately in an\narray."
              }
            ]
          }
        },
        "additionalProperties": false
      },
      "FederatedSearchResult": {
        "allOf": [
          {
            "$ref": "#/components/schemas/HitsInfo",
            "description": "Pagination information"
          },
          {
            "type": "object",
            "required": [
              "hits",
              "processingTimeMs"
            ],
            "properties": {
              "hits": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/SearchHit"
                },
                "description": "Combined search results from all queries"
              },
              "queryVectors": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": {
                  "$ref": "#/components/schemas/Vec"
                },
                "propertyNames": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "processingTimeMs": {
                "type": "integer",
                "description": "Total processing time in milliseconds",
                "minimum": 0
              },
              "facetDistribution": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "integer",
                    "format": "u-int64",
                    "minimum": 0
                  },
                  "propertyNames": {
                    "type": "string"
                  }
                },
                "propertyNames": {
                  "type": "string"
                }
              },
              "facetStats": {
                "type": [
                  "object",
                  "null"
                ],
                "description": "Merged facet statistics across all indexes",
                "additionalProperties": {
                  "$ref": "#/components/schemas/FacetStats"
                },
                "propertyNames": {
                  "type": "string"
                }
              },
              "facetsByIndex": {
                "$ref": "#/components/schemas/FederatedFacets",
                "description": "Facets grouped by index"
              },
              "requestUid": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uuid",
                "description": "Unique identifier for the request"
              },
              "metadata": {
                "type": [
                  "array",
                  "null"
                ],
                "items": {
                  "$ref": "#/components/schemas/SearchMetadata"
                },
                "description": "Metadata for each query"
              },
              "remoteErrors": {
                "type": [
                  "object",
                  "null"
                ],
                "description": "Errors from remote servers",
                "additionalProperties": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "propertyNames": {
                  "type": "string"
                }
              },
              "semanticHitCount": {
                "type": [
                  "integer",
                  "null"
                ],
                "format": "u-int32",
                "minimum": 0
              },
              "performanceDetails": {}
            }
          }
        ],
        "description": "Response from a federated multi-search query"
      },
      "Federation": {
        "type": "object",
        "description": "Configuration for federated multi-search",
        "properties": {
          "limit": {
            "type": "integer",
            "description": "Maximum number of results to return across all queries",
            "minimum": 0
          },
          "offset": {
            "type": "integer",
            "description": "Number of results to skip",
            "minimum": 0
          },
          "page": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0
          },
          "hitsPerPage": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0
          },
          "facetsByIndex": {
            "type": "object",
            "description": "Facets to retrieve per index",
            "additionalProperties": {
              "$ref": "#/components/schemas/AttributePatterns"
            },
            "propertyNames": {
              "type": "string",
              "example": "movies"
            }
          },
          "mergeFacets": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MergeFacets",
                "description": "Options for merging facets from multiple indexes"
              }
            ]
          },
          "distinct": {
            "type": [
              "string",
              "null"
            ],
            "description": "Restrict search to documents with unique values of the specified attribute across all queries.\n\n1. This applies across all queries in the request, regardless of index or remote of origin.\n2. This overrides the index-level distinct attribute.\n3. This requires that the passed field can be set as distinct in all the participating indexes."
          },
          "showPerformanceDetails": {
            "type": "boolean",
            "description": "Whether to include performance details in the response"
          },
          "personalize": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Personalize",
                "description": "Personalize search results"
              }
            ]
          }
        },
        "additionalProperties": false
      },
      "FederationOptions": {
        "type": "object",
        "description": "Options for federated multi-search queries",
        "properties": {
          "weight": {
            "type": "number",
            "format": "double",
            "description": "A multiplicative factor applied to the ranking score for hits from this query.\n\nValues less than 1.0 make hits from this query less likely to appear in final results; values greater than 1.0 make them more likely.\n\nMust be a positive number. Default: `1.0`."
          },
          "remote": {
            "type": [
              "string",
              "null"
            ],
            "description": "Remote server to send this query to"
          },
          "queryPosition": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Position of this query in the list of queries",
            "minimum": 0
          }
        },
        "additionalProperties": false
      },
      "Field": {
        "type": "object",
        "required": [
          "name",
          "displayed",
          "searchable",
          "sortable",
          "distinct",
          "rankingRule",
          "filterable",
          "localized"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "displayed": {
            "$ref": "#/components/schemas/FieldDisplayConfig"
          },
          "searchable": {
            "$ref": "#/components/schemas/FieldSearchConfig"
          },
          "sortable": {
            "$ref": "#/components/schemas/FieldSortableConfig"
          },
          "distinct": {
            "$ref": "#/components/schemas/FieldDistinctConfig"
          },
          "rankingRule": {
            "$ref": "#/components/schemas/FieldRankingRuleConfig"
          },
          "filterable": {
            "$ref": "#/components/schemas/FieldFilterableConfig"
          },
          "localized": {
            "$ref": "#/components/schemas/FieldLocalizedConfig"
          }
        }
      },
      "FieldDisplayConfig": {
        "type": "object",
        "required": [
          "enabled"
        ],
        "properties": {
          "enabled": {
            "type": "boolean"
          }
        }
      },
      "FieldDistinctConfig": {
        "type": "object",
        "required": [
          "enabled"
        ],
        "properties": {
          "enabled": {
            "type": "boolean"
          }
        }
      },
      "FieldFilterableConfig": {
        "type": "object",
        "required": [
          "enabled",
          "sortBy",
          "facetSearch",
          "equality",
          "comparison"
        ],
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "sortBy": {
            "$ref": "#/components/schemas/FacetValuesSort"
          },
          "facetSearch": {
            "type": "boolean"
          },
          "equality": {
            "type": "boolean"
          },
          "comparison": {
            "type": "boolean"
          }
        }
      },
      "FieldLocalizedConfig": {
        "type": "object",
        "required": [
          "locales"
        ],
        "properties": {
          "locales": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "FieldRankingRuleConfig": {
        "type": "object",
        "required": [
          "enabled"
        ],
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "order": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "FieldSearchConfig": {
        "type": "object",
        "required": [
          "enabled"
        ],
        "properties": {
          "enabled": {
            "type": "boolean"
          }
        }
      },
      "FieldSortableConfig": {
        "type": "object",
        "required": [
          "enabled"
        ],
        "properties": {
          "enabled": {
            "type": "boolean"
          }
        }
      },
      "FilterCondition": {
        "type": "object",
        "properties": {
          "values": {
            "type": "object",
            "additionalProperties": {},
            "propertyNames": {
              "type": "string"
            }
          }
        }
      },
      "FilterFeatures": {
        "type": "object",
        "description": "Controls which filter operators are allowed for an attribute. This\nprovides fine-grained control over filtering capabilities.",
        "properties": {
          "equality": {
            "type": "boolean",
            "description": "When `true`, enables equality operators: `=`, `!=`, and `IN`. These\nallow filtering for exact matches or membership in a set of values.\nAlso enables `IS EMPTY`, `IS NULL`, and `EXISTS` operators. Defaults\nto `true`."
          },
          "comparison": {
            "type": "boolean",
            "description": "When `true`, enables comparison operators: `<`, `>`, `<=`, `>=`, and\n`TO` (range). These allow filtering based on numeric or string\ncomparisons. Defaults to `false`."
          }
        },
        "additionalProperties": false
      },
      "FilterableAttributesFeatures": {
        "type": "object",
        "description": "Controls which filtering and faceting operations are enabled for matching\nattributes. This allows restricting certain operations on specific fields\nfor security or performance reasons.",
        "properties": {
          "facetSearch": {
            "type": "boolean",
            "description": "When `true`, allows searching within facet values for matching\nattributes. This enables the facet search feature which lets users\nsearch for specific facet values. Defaults to `false`."
          },
          "filter": {
            "$ref": "#/components/schemas/FilterFeatures",
            "description": "Controls which filter operators are allowed for matching attributes.\nSee `FilterFeatures` for available options."
          }
        },
        "additionalProperties": false
      },
      "FilterableAttributesPatterns": {
        "type": "object",
        "description": "Defines a set of attribute patterns with specific filtering and faceting\nfeatures. This allows fine-grained control over which operations are\nallowed on matched attributes.",
        "required": [
          "attributePatterns"
        ],
        "properties": {
          "attributePatterns": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Patterns to match attribute names. Use `*` as a wildcard to match any\ncharacters. For example, `[\"price_*\", \"stock\"]` matches `price_usd`,\n`price_eur`, and `stock`."
          },
          "features": {
            "$ref": "#/components/schemas/FilterableAttributesFeatures",
            "description": "The filtering and faceting features enabled for attributes matching\nthese patterns. If not specified, defaults to equality filtering\nenabled."
          }
        },
        "additionalProperties": false
      },
      "FilterableAttributesRule": {
        "oneOf": [
          {
            "type": "string"
          },
          {
            "$ref": "#/components/schemas/FilterableAttributesPatterns"
          }
        ]
      },
      "FinishReason": {
        "type": "string",
        "description": "The reason the model stopped generating tokens.",
        "enum": [
          "stop",
          "length",
          "tool_calls",
          "content_filter",
          "function_call"
        ]
      },
      "ForeignKey": {
        "type": "object",
        "required": [
          "foreignIndexUid",
          "fieldName"
        ],
        "properties": {
          "foreignIndexUid": {
            "type": "string"
          },
          "fieldName": {
            "type": "string"
          }
        }
      },
      "FunctionCall": {
        "type": "object",
        "description": "The name and arguments of a function that should be called, as generated by the model.",
        "required": [
          "name",
          "arguments"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the function to call."
          },
          "arguments": {
            "type": "string",
            "description": "The arguments to call the function with, as generated by the model in JSON format. Note that the model does not always generate valid JSON, and may hallucinate parameters not defined by your function schema. Validate the arguments in your code before calling your function."
          }
        }
      },
      "FunctionName": {
        "type": "object",
        "description": "A wrapper for a function name reference.",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the function to call."
          }
        }
      },
      "FunctionObject": {
        "type": "object",
        "description": "A function definition for tool use, described as a JSON Schema object.",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the function to be called. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64."
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "A description of what the function does, used by the model to choose when and how to call the function."
          },
          "parameters": {
            "description": "The parameters the functions accepts, described as a JSON Schema object. See the [guide](https://platform.openai.com/docs/guides/text-generation/function-calling) for examples, and the [JSON Schema reference](https://json-schema.org/understanding-json-schema/) for documentation about the format.\n\nOmitting `parameters` defines a function with an empty parameter list."
          },
          "strict": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether to enable strict schema adherence when generating the function call. If set to true, the model will follow the exact schema defined in the `parameters` field. Only a subset of JSON Schema is supported when `strict` is `true`. Learn more about Structured Outputs in the [function calling guide](https://platform.openai.com/docs/guides/function-calling)."
          }
        }
      },
      "GetLogs": {
        "type": "object",
        "description": "Request body for streaming logs",
        "properties": {
          "target": {
            "type": "string",
            "description": "Log targets to filter. Format: code_part=log_level (e.g.,\nmilli=trace,actix_web=off)",
            "default": "info",
            "example": "milli=trace,index_scheduler,actix_web=off"
          },
          "mode": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/LogMode",
                "description": "Output format for log entries. `human` provides readable text output,\n`json` provides structured JSON for parsing, and `profile` outputs\nFirefox profiler format for performance visualization."
              }
            ],
            "default": "Human"
          },
          "profileMemory": {
            "type": "boolean",
            "description": "Enable memory profiling (only useful with profile mode, significantly\nslows down the engine)"
          }
        }
      },
      "HealthResponse": {
        "type": "object",
        "required": [
          "status"
        ],
        "properties": {
          "status": {
            "$ref": "#/components/schemas/HealthStatus",
            "description": "The status of the instance."
          }
        }
      },
      "HealthStatus": {
        "type": "string",
        "enum": [
          "available",
          "mustRestart"
        ]
      },
      "HitsInfo": {
        "oneOf": [
          {
            "type": "object",
            "description": "Page-based pagination with exact totals.\n\nUsed when `page` or `hitsPerPage` was set in the request.",
            "required": [
              "hitsPerPage",
              "page",
              "totalPages",
              "totalHits"
            ],
            "properties": {
              "hitsPerPage": {
                "type": "integer",
                "description": "Number of results per page.",
                "minimum": 0
              },
              "page": {
                "type": "integer",
                "description": "Current page index (1-based).",
                "minimum": 0
              },
              "totalPages": {
                "type": "integer",
                "description": "Exhaustive total number of result pages.",
                "minimum": 0
              },
              "totalHits": {
                "type": "integer",
                "description": "Exhaustive total number of matching documents.",
                "minimum": 0
              }
            }
          },
          {
            "type": "object",
            "description": "Offset-based pagination with estimated total.\n\nUsed when only `offset` and `limit` were set.",
            "required": [
              "limit",
              "offset",
              "estimatedTotalHits"
            ],
            "properties": {
              "limit": {
                "type": "integer",
                "description": "Maximum number of documents returned.",
                "minimum": 0
              },
              "offset": {
                "type": "integer",
                "description": "Number of documents skipped.",
                "minimum": 0
              },
              "estimatedTotalHits": {
                "type": "integer",
                "description": "Estimated total number of matches (not exhaustive).\n\nPrioritizes relevancy and performance.",
                "minimum": 0
              }
            }
          }
        ],
        "description": "Pagination information for search results."
      },
      "HybridQuery": {
        "type": "object",
        "description": "Hybrid search: balance between keyword and semantic search.",
        "required": [
          "embedder"
        ],
        "properties": {
          "semanticRatio": {
            "type": "number",
            "format": "float",
            "description": "Balance between keyword (0.0) and semantic (1.0) search.",
            "example": 0.5
          },
          "embedder": {
            "type": "string",
            "description": "Name of the embedder from the index embedders setting (`embedder` in JSON). Used to vectorize the query.",
            "example": "default"
          }
        }
      },
      "ImageDetail": {
        "type": "string",
        "description": "Specifies the detail level of the image.",
        "enum": [
          "auto",
          "low",
          "high"
        ]
      },
      "ImageUrl": {
        "type": "object",
        "description": "An image URL with optional detail level.",
        "required": [
          "url"
        ],
        "properties": {
          "url": {
            "type": "string",
            "description": "Either a URL of the image or the base64 encoded image data."
          },
          "detail": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ImageDetail",
                "description": "Specifies the detail level of the image. Learn more in the [Vision guide](https://platform.openai.com/docs/guides/vision/low-or-high-fidelity-image-understanding)."
              }
            ]
          }
        }
      },
      "ImportData": {
        "type": "object",
        "description": "Import data stored in a task",
        "required": [
          "remoteName",
          "documentCount"
        ],
        "properties": {
          "remoteName": {
            "type": "string",
            "description": "Remote that this task is imported from"
          },
          "indexName": {
            "type": [
              "string",
              "null"
            ],
            "description": "Index relevant to this task"
          },
          "documentCount": {
            "type": "integer",
            "format": "u-int64",
            "description": "Number of documents in this task",
            "minimum": 0
          }
        }
      },
      "IndexCreateRequest": {
        "type": "object",
        "description": "Request body for creating a new index",
        "required": [
          "uid"
        ],
        "properties": {
          "uid": {
            "$ref": "#/components/schemas/IndexUid",
            "description": "Unique identifier for the index"
          },
          "primaryKey": {
            "type": [
              "string",
              "null"
            ],
            "description": "[Primary key](https://www.meilisearch.com/docs/learn/getting_started/primary_key) of the index",
            "example": "id"
          }
        },
        "additionalProperties": false
      },
      "IndexStats": {
        "type": "object",
        "description": "Stats of an `Index`, as known to the `stats` route.",
        "required": [
          "numberOfDocuments",
          "indexSize",
          "usedIndexSize",
          "rawDocumentDbSize",
          "avgDocumentSize",
          "isIndexing",
          "fieldDistribution"
        ],
        "properties": {
          "numberOfDocuments": {
            "type": "integer",
            "format": "u-int64",
            "description": "Number of documents in the index",
            "minimum": 0
          },
          "indexSize": {
            "$ref": "#/components/schemas/Size",
            "description": "Size of the index' DB, in bytes."
          },
          "usedIndexSize": {
            "$ref": "#/components/schemas/Size",
            "description": "Size of the used pages of the index' DB, in bytes."
          },
          "rawDocumentDbSize": {
            "$ref": "#/components/schemas/Size",
            "description": "Size of the documents database, in bytes."
          },
          "avgDocumentSize": {
            "$ref": "#/components/schemas/Size",
            "description": "Average size of a document in the documents database."
          },
          "isIndexing": {
            "type": "boolean",
            "description": "Whether or not the index is currently ingesting document"
          },
          "internalDatabaseSizes": {
            "type": "object",
            "description": "Size of all the internal databases for the index.\n\nDatabase names can change from version to version.",
            "additionalProperties": {
              "$ref": "#/components/schemas/Size"
            },
            "propertyNames": {
              "type": "string"
            }
          },
          "numberOfEmbeddings": {
            "type": [
              "integer",
              "null"
            ],
            "format": "u-int64",
            "description": "Number of embeddings in the index",
            "minimum": 0
          },
          "numberOfEmbeddedDocuments": {
            "type": [
              "integer",
              "null"
            ],
            "format": "u-int64",
            "description": "Number of embedded documents in the index",
            "minimum": 0
          },
          "fieldDistribution": {
            "type": "object",
            "description": "Association of every field name with the number of times it occurs in\nthe documents.",
            "additionalProperties": {
              "type": "integer",
              "format": "u-int64",
              "minimum": 0
            },
            "propertyNames": {
              "type": "string"
            }
          }
        }
      },
      "IndexSwap": {
        "type": "object",
        "description": "Index swap operation",
        "required": [
          "indexes"
        ],
        "properties": {
          "indexes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Pair of index UIDs to swap",
            "example": [
              "indexA",
              "indexB"
            ]
          },
          "rename": {
            "type": "boolean",
            "description": "Whether this is a rename operation"
          }
        }
      },
      "IndexUid": {
        "type": "string",
        "example": "movies"
      },
      "IndexView": {
        "type": "object",
        "description": "An index containing searchable documents",
        "required": [
          "uid",
          "createdAt",
          "updatedAt"
        ],
        "properties": {
          "uid": {
            "type": "string",
            "description": "Unique identifier for the index. Once created, it cannot be changed"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "Creation date of the index, represented in RFC 3339 format"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Latest date of index update, represented in RFC 3339 format"
          },
          "primaryKey": {
            "type": [
              "string",
              "null"
            ],
            "description": "[Primary key](https://www.meilisearch.com/docs/learn/getting_started/primary_key) of the index"
          }
        }
      },
      "InputAudio": {
        "type": "object",
        "description": "Input audio data for an audio content part.",
        "required": [
          "data",
          "format"
        ],
        "properties": {
          "data": {
            "type": "string",
            "description": "Base64 encoded audio data."
          },
          "format": {
            "$ref": "#/components/schemas/InputAudioFormat",
            "description": "The format of the encoded audio data. Currently supports \"wav\" and \"mp3\"."
          }
        }
      },
      "InputAudioFormat": {
        "type": "string",
        "description": "The format of the encoded audio data.",
        "enum": [
          "wav",
          "mp3"
        ]
      },
      "KeyView": {
        "type": "object",
        "description": "Represents an API key used for authenticating requests to Meilisearch.\nEach key has specific permissions defined by its actions and can be scoped\nto particular indexes. Keys provide fine-grained access control for your\nMeilisearch instance.",
        "required": [
          "key",
          "uid",
          "actions",
          "indexes",
          "createdAt",
          "updatedAt"
        ],
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "A human-readable name for the API key. Use this to identify the purpose\nof each key, such as \"Frontend Search Key\" or \"Admin Key for CI/CD\".\nThis is optional and can be `null`."
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "A longer description explaining the purpose or usage of this API key.\nUseful for documenting why the key was created and how it should be\nused. This is optional and can be `null`."
          },
          "key": {
            "type": "string",
            "description": "The actual API key string to use in the `Authorization: Bearer <key>`\nheader when making requests to Meilisearch. Keep this value secret and\nnever expose it in client-side code."
          },
          "uid": {
            "type": "string",
            "format": "uuid",
            "description": "The unique identifier (UUID) for this API key. Use this to update or\ndelete the key. The UID remains constant even if the key's name or\ndescription changes."
          },
          "actions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Action"
            },
            "description": "The list of actions (permissions) this key is allowed to perform.\nExamples include `documents.add`, `search`, `indexes.create`,\n`settings.update`, etc. Use `*` to grant all permissions."
          },
          "indexes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The list of index UIDs this key can access. Use `*` to grant access to\nall indexes, including future ones. Patterns are also supported, e.g.,\n`movies_*` matches any index starting with \"movies_\"."
          },
          "expiresAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "The expiration date and time of the key in RFC 3339 format. After this\ntime, the key will no longer be valid for authentication. Set to `null`\nfor keys that never expire."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time when this API key was created, formatted as an\nRFC 3339 date-time string. This is automatically set by Meilisearch\nand cannot be modified.",
            "readOnly": true
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time when this API key was last modified, formatted as an\nRFC 3339 date-time string. This is automatically updated by Meilisearch\nwhen the key's name or description changes.",
            "readOnly": true
          }
        }
      },
      "Kind": {
        "type": "string",
        "description": "The type of the task.",
        "enum": [
          "documentAdditionOrUpdate",
          "documentEdition",
          "documentDeletion",
          "settingsUpdate",
          "indexCreation",
          "indexDeletion",
          "indexUpdate",
          "indexSwap",
          "taskCancelation",
          "taskDeletion",
          "dumpCreation",
          "snapshotCreation",
          "export",
          "upgradeDatabase",
          "indexCompaction",
          "networkTopologyChange",
          "dsrUpdate",
          "dsrClear"
        ],
        "example": "documentAdditionOrUpdate"
      },
      "ListFields": {
        "type": "object",
        "properties": {
          "offset": {
            "type": "integer",
            "description": "Number of fields to skip. Defaults to 0.",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "description": "Maximum number of fields to return. Defaults to 20.",
            "minimum": 0
          },
          "filter": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ListFieldsFilter",
                "description": "Optional filter to restrict which fields are returned (e.g. by attribute patterns or by capability: displayed, searchable, sortable, filterable, etc.)."
              }
            ]
          }
        }
      },
      "ListFieldsFilter": {
        "type": "object",
        "description": "Filter fields by attribute name patterns or by capability (displayed, searchable, sortable, etc.). All criteria are ANDed.",
        "properties": {
          "attributePatterns": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/AttributePatterns",
                "description": "Only include fields whose names match these patterns (e.g. `[\"title\", \"desc*\"]`)."
              }
            ]
          },
          "displayed": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Only include fields that are displayed (true) or not displayed (false) in search results."
          },
          "searchable": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Only include fields that are searchable (true) or not searchable (false)."
          },
          "sortable": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Only include fields that are sortable (true) or not sortable (false)."
          },
          "distinct": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Only include fields that are used as distinct attribute (true) or not (false)."
          },
          "rankingRule": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Only include fields that have a custom ranking rule (asc/desc) (true) or not (false)."
          },
          "filterable": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Only include fields that are filterable (true) or not filterable (false)."
          }
        }
      },
      "ListRules": {
        "type": "object",
        "properties": {
          "offset": {
            "type": "integer",
            "description": "Number of rules to skip. Defaults to 0.",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "description": "Maximum number of rules to return. Default to 20.",
            "minimum": 0
          },
          "filter": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ListRulesFilter",
                "description": "Optional filter to restrict which rules are returned (e.g. by attribute patterns or by properties like if the rule is active or not)"
              }
            ]
          }
        }
      },
      "ListRulesFilter": {
        "type": "object",
        "properties": {
          "query": {
            "type": [
              "string",
              "null"
            ],
            "description": "Only include rules whose names match these patterns (e.g. `[\"black-friday\", \"promo*\"]`)."
          },
          "active": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Only include rules that are active (true) or not active (false)."
          }
        }
      },
      "Locale": {
        "type": "string",
        "enum": [
          "af",
          "ak",
          "am",
          "ar",
          "az",
          "be",
          "bn",
          "bg",
          "ca",
          "cs",
          "da",
          "de",
          "el",
          "en",
          "eo",
          "et",
          "fi",
          "fr",
          "gu",
          "he",
          "hi",
          "hr",
          "hu",
          "hy",
          "id",
          "it",
          "jv",
          "ja",
          "kn",
          "ka",
          "km",
          "ko",
          "la",
          "lv",
          "lt",
          "ml",
          "mr",
          "mk",
          "my",
          "ne",
          "nl",
          "nb",
          "or",
          "pa",
          "fa",
          "pl",
          "pt",
          "ro",
          "ru",
          "si",
          "sk",
          "sl",
          "sn",
          "es",
          "sr",
          "sv",
          "ta",
          "te",
          "tl",
          "th",
          "tk",
          "tr",
          "uk",
          "ur",
          "uz",
          "vi",
          "yi",
          "zh",
          "zu",
          "afr",
          "aka",
          "amh",
          "ara",
          "aze",
          "bel",
          "ben",
          "bul",
          "cat",
          "ces",
          "dan",
          "deu",
          "ell",
          "eng",
          "epo",
          "est",
          "fin",
          "fra",
          "guj",
          "heb",
          "hin",
          "hrv",
          "hun",
          "hye",
          "ind",
          "ita",
          "jav",
          "jpn",
          "kan",
          "kat",
          "khm",
          "kor",
          "lat",
          "lav",
          "lit",
          "mal",
          "mar",
          "mkd",
          "mya",
          "nep",
          "nld",
          "nob",
          "ori",
          "pan",
          "pes",
          "pol",
          "por",
          "ron",
          "rus",
          "sin",
          "slk",
          "slv",
          "sna",
          "spa",
          "srp",
          "swe",
          "tam",
          "tel",
          "tgl",
          "tha",
          "tuk",
          "tur",
          "ukr",
          "urd",
          "uzb",
          "vie",
          "yid",
          "zho",
          "zul",
          "cmn"
        ]
      },
      "LocalizedAttributesRuleView": {
        "type": "object",
        "description": "Defines a rule for associating specific locales (languages) with\nattributes. This allows Meilisearch to use language-specific tokenization\nand processing for matched attributes, improving search quality for\nmultilingual content.",
        "required": [
          "attributePatterns",
          "locales"
        ],
        "properties": {
          "attributePatterns": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Patterns to match attribute names. Use `*` as a wildcard to match any\ncharacters. For example, `[\"title_*\", \"description\"]` matches\n`title_en`, `title_fr`, and `description`.",
            "example": [
              "*_ja"
            ]
          },
          "locales": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Locale"
            },
            "description": "The list of locales (languages) to apply to matching attributes. When\nthese attributes are indexed, Meilisearch will use language-specific\ntokenization rules. Examples: `[\"en\", \"fr\"]` or `[\"jpn\", \"zho\"]`."
          }
        }
      },
      "LogMode": {
        "type": "string",
        "description": "Format for log output",
        "enum": [
          "human",
          "json",
          "profile"
        ]
      },
      "MatchBounds": {
        "type": "object",
        "description": "Represents the position of a matching term in a document field. Used to\nindicate where query terms were found within attribute values, enabling\nfeatures like highlighting and match position display.",
        "required": [
          "start",
          "length"
        ],
        "properties": {
          "start": {
            "type": "integer",
            "description": "The byte offset where the match begins within the attribute value.\nThis is a zero-indexed position from the start of the string.",
            "minimum": 0
          },
          "length": {
            "type": "integer",
            "description": "The length in bytes of the matched text. Combined with `start`, this\ndefines the exact substring that matched the query term.",
            "minimum": 0
          },
          "indices": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "integer",
              "minimum": 0
            },
            "description": "Byte indices of individual matched characters when the match spans\nmultiple positions (e.g., for prefix matches). This is `null` for\nsimple contiguous matches."
          }
        }
      },
      "MatchingStrategy": {
        "type": "string",
        "description": "Strategy used to match query terms within documents",
        "enum": [
          "last",
          "all",
          "frequency"
        ]
      },
      "MergeFacets": {
        "type": "object",
        "description": "Options for merging facets from multiple indexes in federated search.\nWhen multiple indexes are queried, this controls how their facet values\nare combined into a single facet distribution.",
        "properties": {
          "maxValuesPerFacet": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The maximum number of facet values to return for each facet after\nmerging. Values from all indexes are combined and sorted before\ntruncation. If not specified, uses the default limit from the index\nsettings.",
            "minimum": 0
          }
        },
        "additionalProperties": false
      },
      "Message": {
        "oneOf": [
          {
            "type": "object",
            "description": "The specified remote will not longer export any document to this instance.\n\nSend this message to remotes that are blocked waiting on the specified remote to export its documents.",
            "required": [
              "remote",
              "type"
            ],
            "properties": {
              "remote": {
                "type": "string",
                "description": "Name of the remote that will no longer export any document to this instance."
              },
              "type": {
                "type": "string",
                "enum": [
                  "exportNoIndexForRemote"
                ]
              }
            }
          },
          {
            "type": "object",
            "description": "The specified remote is finished importing its documents.\n\nSend this message to remotes that are blocked waiting on the specified remote to finish importing its documents.",
            "required": [
              "remote",
              "successful",
              "type"
            ],
            "properties": {
              "remote": {
                "type": "string",
                "description": "Name of the remote that finished importing its documents."
              },
              "successful": {
                "type": "boolean",
                "description": "Whether the import was successful.\n\nDocuments from shards that no longer belong to remotes are only deleted if all remotes are successful\nimporting their documents."
              },
              "type": {
                "type": "string",
                "enum": [
                  "importFinishedForRemote"
                ]
              }
            }
          },
          {
            "type": "object",
            "description": "The specified remote will see it's status change.\n\nSend this message to change the accessiblity of a remote.",
            "required": [
              "remote",
              "status",
              "type"
            ],
            "properties": {
              "remote": {
                "type": "string",
                "description": "Name of the remote whose status will be changed."
              },
              "status": {
                "$ref": "#/components/schemas/Status",
                "description": "The new status for the remote."
              },
              "type": {
                "type": "string",
                "enum": [
                  "statusChangeForRemote"
                ]
              }
            }
          }
        ]
      },
      "MinWordSizeTyposSetting": {
        "type": "object",
        "description": "Minimum word length required before typos are allowed.\n\nThis helps prevent matching very short words with typos, which can lead to irrelevant results.",
        "properties": {
          "oneTypo": {
            "type": [
              "integer",
              "null"
            ],
            "format": "u-int8",
            "description": "Minimum word length to accept one typo. Shorter words must match exactly. For example, if set to 5, \"apple\" can have one typo but \"app\" cannot.",
            "default": 5,
            "example": 5,
            "minimum": 0
          },
          "twoTypos": {
            "type": [
              "integer",
              "null"
            ],
            "format": "u-int8",
            "description": "Minimum word length to accept two typos. Must be greater than or equal to `oneTypo`. For example, if set to 9, \"computing\" can have two typos.",
            "default": 9,
            "example": 9,
            "minimum": 0
          }
        }
      },
      "Network": {
        "type": "object",
        "description": "Network topology configuration for distributed Meilisearch",
        "properties": {
          "remotes": {
            "type": [
              "object",
              "null"
            ],
            "description": "Map of remote instance names to their configurations\n\n- Pass `null` as a value for a remote to remove it from the configuration.\n- Removing a remote will also remove it from all shards.\n- Remotes that don't appear in this list will be unmodified by the network call.",
            "additionalProperties": {
              "$ref": "#/components/schemas/Remote"
            },
            "propertyNames": {
              "type": "string"
            },
            "example": {
              "ms-00": {
                "url": "http://localhost:7700"
              },
              "ms-01": {
                "url": "http://localhost:7701"
              }
            }
          },
          "shards": {
            "type": [
              "object",
              "null"
            ],
            "description": "Map of shard names to their configurations.\n\n- Pass `null` as a value for a shard to remove it from the configuration.\n- Shards that don't appear in this list will be unmodified by the network call.",
            "additionalProperties": {
              "$ref": "#/components/schemas/Shard"
            },
            "propertyNames": {
              "type": "string"
            },
            "example": {
              "shard-00": {
                "remotes": [
                  "ms-00",
                  "ms-01"
                ]
              }
            }
          },
          "previousShards": {
            "type": [
              "object",
              "null"
            ],
            "description": "Previous shard configurations\n\nThis field should not be passed by end-users. It is used in internal communications between Meilisearch instances",
            "additionalProperties": {
              "$ref": "#/components/schemas/Shard"
            },
            "propertyNames": {
              "type": "string"
            },
            "example": {
              "shard-00": {
                "remotes": [
                  "ms-00",
                  "ms-01"
                ]
              }
            }
          },
          "self": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name of this instance in the network",
            "example": "ms-00"
          },
          "leader": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name of the leader instance in the network",
            "example": "ms-00"
          },
          "previousRemotes": {
            "type": [
              "object",
              "null"
            ],
            "description": "Previous remote configurations\n\nThis field should not be passed by end-users. It is used in internal communications between Meilisearch instances",
            "additionalProperties": {
              "$ref": "#/components/schemas/Remote"
            },
            "propertyNames": {
              "type": "string"
            },
            "example": {
              "ms-00": {
                "url": "http://localhost:7700"
              },
              "ms-01": {
                "url": "http://localhost:7701"
              }
            }
          }
        },
        "additionalProperties": false
      },
      "NetworkChange": {
        "type": "object",
        "required": [
          "origin",
          "message"
        ],
        "properties": {
          "origin": {
            "$ref": "#/components/schemas/Origin",
            "description": "The origin of this message\n\nGet it in the details of the network topology change task that is currently processing."
          },
          "message": {
            "$ref": "#/components/schemas/Message",
            "description": "Message to send to control the network topology change task."
          }
        }
      },
      "Origin": {
        "type": "object",
        "description": "Information about the origin of a task in a distributed Meilisearch\ndeployment. This tracks where a task was originally created before being\nreplicated to other nodes.",
        "required": [
          "remoteName",
          "taskUid"
        ],
        "properties": {
          "remoteName": {
            "type": "string",
            "description": "The name of the remote Meilisearch instance where this task originated.\nThis corresponds to a remote defined in the network configuration."
          },
          "taskUid": {
            "type": "integer",
            "format": "u-int32",
            "description": "The unique task identifier on the originating remote. This allows\ntracking the same task across different nodes in the network.",
            "minimum": 0
          },
          "networkVersion": {
            "type": "string",
            "format": "uuid",
            "description": "The version of the network topology when this task was created. Used to\nensure consistent task routing during network topology changes."
          }
        }
      },
      "OverridePooling": {
        "type": "string",
        "enum": [
          "useModel",
          "forceCls",
          "forceMean"
        ]
      },
      "PaginationSettings": {
        "type": "object",
        "description": "Pagination: cap on how many results a search can return.",
        "properties": {
          "maxTotalHits": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Maximum number of search results Meilisearch can return. Limit and offset cannot go beyond this value.",
            "default": 1000,
            "example": 1000,
            "minimum": 0
          }
        }
      },
      "PaginationView_DynamicSearchRule": {
        "type": "object",
        "required": [
          "results",
          "offset",
          "limit",
          "total"
        ],
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "uid",
                "actions"
              ],
              "properties": {
                "uid": {
                  "$ref": "#/components/schemas/IndexUid",
                  "description": "Unique identifier of the dynamic search rule."
                },
                "description": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Human-readable description of the dynamic search rule."
                },
                "lastUpdatedAt": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "date-time",
                  "description": "Date time of the last update of this rule."
                },
                "precedence": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "format": "u-int64",
                  "description": "Precedence of the dynamic search rule. Lower numeric values take precedence over higher\nones. If omitted, the rule is treated as having the lowest precedence. This precedence is\nused to resolve conflicts between matching rules:\n- If the same document is selected by multiple rules, the smallest `priority` number wins\n- If different documents are pinned to the same position, they are ordered by ascending `priority`",
                  "minimum": 0
                },
                "active": {
                  "type": "boolean",
                  "description": "Whether the dynamic search rule is active."
                },
                "conditions": {
                  "$ref": "#/components/schemas/Conditions",
                  "description": "Conditions that must match before the dynamic search rule applies."
                },
                "actions": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RuleAction"
                  },
                  "description": "Actions to apply when the dynamic search rule matches."
                }
              }
            },
            "description": "Items for the current page."
          },
          "offset": {
            "type": "integer",
            "description": "Number of items skipped.",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "description": "Maximum number of items returned.",
            "minimum": 0
          },
          "total": {
            "type": "integer",
            "description": "Total number of items matching the query.",
            "minimum": 0
          }
        }
      },
      "PaginationView_Field": {
        "type": "object",
        "required": [
          "results",
          "offset",
          "limit",
          "total"
        ],
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "name",
                "displayed",
                "searchable",
                "sortable",
                "distinct",
                "rankingRule",
                "filterable",
                "localized"
              ],
              "properties": {
                "name": {
                  "type": "string"
                },
                "displayed": {
                  "$ref": "#/components/schemas/FieldDisplayConfig"
                },
                "searchable": {
                  "$ref": "#/components/schemas/FieldSearchConfig"
                },
                "sortable": {
                  "$ref": "#/components/schemas/FieldSortableConfig"
                },
                "distinct": {
                  "$ref": "#/components/schemas/FieldDistinctConfig"
                },
                "rankingRule": {
                  "$ref": "#/components/schemas/FieldRankingRuleConfig"
                },
                "filterable": {
                  "$ref": "#/components/schemas/FieldFilterableConfig"
                },
                "localized": {
                  "$ref": "#/components/schemas/FieldLocalizedConfig"
                }
              }
            },
            "description": "Items for the current page."
          },
          "offset": {
            "type": "integer",
            "description": "Number of items skipped.",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "description": "Maximum number of items returned.",
            "minimum": 0
          },
          "total": {
            "type": "integer",
            "description": "Total number of items matching the query.",
            "minimum": 0
          }
        }
      },
      "PaginationView_IndexView": {
        "type": "object",
        "required": [
          "results",
          "offset",
          "limit",
          "total"
        ],
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "description": "An index containing searchable documents",
              "required": [
                "uid",
                "createdAt",
                "updatedAt"
              ],
              "properties": {
                "uid": {
                  "type": "string",
                  "description": "Unique identifier for the index. Once created, it cannot be changed"
                },
                "createdAt": {
                  "type": "string",
                  "format": "date-time",
                  "description": "Creation date of the index, represented in RFC 3339 format"
                },
                "updatedAt": {
                  "type": "string",
                  "format": "date-time",
                  "description": "Latest date of index update, represented in RFC 3339 format"
                },
                "primaryKey": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "[Primary key](https://www.meilisearch.com/docs/learn/getting_started/primary_key) of the index"
                }
              }
            },
            "description": "Items for the current page."
          },
          "offset": {
            "type": "integer",
            "description": "Number of items skipped.",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "description": "Maximum number of items returned.",
            "minimum": 0
          },
          "total": {
            "type": "integer",
            "description": "Total number of items matching the query.",
            "minimum": 0
          }
        }
      },
      "PaginationView_KeyView": {
        "type": "object",
        "required": [
          "results",
          "offset",
          "limit",
          "total"
        ],
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "description": "Represents an API key used for authenticating requests to Meilisearch.\nEach key has specific permissions defined by its actions and can be scoped\nto particular indexes. Keys provide fine-grained access control for your\nMeilisearch instance.",
              "required": [
                "key",
                "uid",
                "actions",
                "indexes",
                "createdAt",
                "updatedAt"
              ],
              "properties": {
                "name": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "A human-readable name for the API key. Use this to identify the purpose\nof each key, such as \"Frontend Search Key\" or \"Admin Key for CI/CD\".\nThis is optional and can be `null`."
                },
                "description": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "A longer description explaining the purpose or usage of this API key.\nUseful for documenting why the key was created and how it should be\nused. This is optional and can be `null`."
                },
                "key": {
                  "type": "string",
                  "description": "The actual API key string to use in the `Authorization: Bearer <key>`\nheader when making requests to Meilisearch. Keep this value secret and\nnever expose it in client-side code."
                },
                "uid": {
                  "type": "string",
                  "format": "uuid",
                  "description": "The unique identifier (UUID) for this API key. Use this to update or\ndelete the key. The UID remains constant even if the key's name or\ndescription changes."
                },
                "actions": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Action"
                  },
                  "description": "The list of actions (permissions) this key is allowed to perform.\nExamples include `documents.add`, `search`, `indexes.create`,\n`settings.update`, etc. Use `*` to grant all permissions."
                },
                "indexes": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "The list of index UIDs this key can access. Use `*` to grant access to\nall indexes, including future ones. Patterns are also supported, e.g.,\n`movies_*` matches any index starting with \"movies_\"."
                },
                "expiresAt": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "date-time",
                  "description": "The expiration date and time of the key in RFC 3339 format. After this\ntime, the key will no longer be valid for authentication. Set to `null`\nfor keys that never expire."
                },
                "createdAt": {
                  "type": "string",
                  "format": "date-time",
                  "description": "The date and time when this API key was created, formatted as an\nRFC 3339 date-time string. This is automatically set by Meilisearch\nand cannot be modified.",
                  "readOnly": true
                },
                "updatedAt": {
                  "type": "string",
                  "format": "date-time",
                  "description": "The date and time when this API key was last modified, formatted as an\nRFC 3339 date-time string. This is automatically updated by Meilisearch\nwhen the key's name or description changes.",
                  "readOnly": true
                }
              }
            },
            "description": "Items for the current page."
          },
          "offset": {
            "type": "integer",
            "description": "Number of items skipped.",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "description": "Maximum number of items returned.",
            "minimum": 0
          },
          "total": {
            "type": "integer",
            "description": "Total number of items matching the query.",
            "minimum": 0
          }
        }
      },
      "PaginationView_Value": {
        "type": "object",
        "required": [
          "results",
          "offset",
          "limit",
          "total"
        ],
        "properties": {
          "results": {
            "type": "array",
            "items": {},
            "description": "Items for the current page."
          },
          "offset": {
            "type": "integer",
            "description": "Number of items skipped.",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "description": "Maximum number of items returned.",
            "minimum": 0
          },
          "total": {
            "type": "integer",
            "description": "Total number of items matching the query.",
            "minimum": 0
          }
        }
      },
      "PatchApiKey": {
        "type": "object",
        "description": "Request body for updating an existing API key. Only the name and\ndescription can be modified - other properties like actions, indexes,\nand expiration are immutable after creation.",
        "properties": {
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "A new description for the API key. Pass `null` to remove the existing\ndescription. Useful for documenting the purpose or usage of the key.",
            "example": "This key is used to update documents in the products index"
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "A new human-readable name for the API key. Pass `null` to remove the\nexisting name. Use this to identify keys by purpose, such as\n\"Production Search Key\" or \"CI/CD Indexing Key\".",
            "example": "Indexing Products API key"
          }
        }
      },
      "Personalize": {
        "type": "object",
        "description": "Configuration for [personalized search](https://www.meilisearch.com/docs/learn/personalization/making_personalized_search_queries) results.\n\nWhen enabled, results are tailored to the user profile described in `userContext`.",
        "required": [
          "userContext"
        ],
        "properties": {
          "userContext": {
            "type": "string",
            "description": "String describing the user (e.g. preferences, behavior).\n\nUsed to return different results for different profiles."
          }
        },
        "additionalProperties": false
      },
      "PredictionContent": {
        "oneOf": [
          {
            "type": "object",
            "description": "The type of the predicted content you want to provide. This type is\ncurrently always `content`.",
            "required": [
              "content",
              "type"
            ],
            "properties": {
              "content": {
                "$ref": "#/components/schemas/PredictionContentContent",
                "description": "The type of the predicted content you want to provide. This type is\ncurrently always `content`."
              },
              "type": {
                "type": "string",
                "enum": [
                  "content"
                ]
              }
            }
          }
        ],
        "description": "Static predicted output content, such as the content of a text file that is being regenerated."
      },
      "PredictionContentContent": {
        "oneOf": [
          {
            "type": "string",
            "description": "The content used for a Predicted Output. This is often the text of a file you are regenerating with minor changes."
          },
          {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChatCompletionRequestMessageContentPartText"
            },
            "description": "An array of content parts with a defined type. Supported options differ based on the [model](https://platform.openai.com/docs/models) being used to generate the response. Can contain text inputs."
          }
        ],
        "description": "The content that should be matched when generating a model response. If generated tokens would match this content, the entire model response can be returned much more quickly."
      },
      "PrefixSearchSettings": {
        "type": "string",
        "enum": [
          "indexingTime",
          "disabled"
        ]
      },
      "ProgressStepView": {
        "type": "object",
        "description": "Information about a single processing step within a batch or task. Each\nstep has a name, current progress, and total items to process.",
        "required": [
          "currentStep",
          "finished",
          "total"
        ],
        "properties": {
          "currentStep": {
            "type": "string",
            "description": "A human-readable name describing what this processing step is doing.\nExamples include \"indexing documents\", \"computing embeddings\",\n\"building word cache\", etc."
          },
          "finished": {
            "type": "integer",
            "format": "u-int32",
            "description": "The number of items that have been processed so far in this step.\nCompare with `total` to calculate the percentage complete for this\nspecific step.",
            "minimum": 0
          },
          "total": {
            "type": "integer",
            "format": "u-int32",
            "description": "The total number of items to process in this step. When `finished`\nequals `total`, this step is complete and processing moves to the\nnext step.",
            "minimum": 0
          }
        }
      },
      "ProgressView": {
        "type": "object",
        "description": "Real-time progress information for a batch or task that is currently\nbeing processed. Use this to display progress bars or status updates to\nusers.",
        "required": [
          "steps",
          "percentage"
        ],
        "properties": {
          "steps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProgressStepView"
            },
            "description": "A hierarchical list of processing steps currently being executed.\nSteps are listed from outermost to innermost, with each step\nrepresenting a more granular operation within its parent step."
          },
          "percentage": {
            "type": "number",
            "format": "float",
            "description": "The overall completion percentage of the operation (0.0 to 100.0).\nThis is calculated by combining the progress of all nested steps,\nweighted by their relative importance."
          }
        }
      },
      "PromptTokensDetails": {
        "type": "object",
        "description": "Breakdown of tokens used in a completion.",
        "properties": {
          "audio_tokens": {
            "type": [
              "integer",
              "null"
            ],
            "format": "u-int32",
            "description": "Audio input tokens present in the prompt.",
            "minimum": 0
          },
          "cached_tokens": {
            "type": [
              "integer",
              "null"
            ],
            "format": "u-int32",
            "description": "Cached tokens present in the prompt.",
            "minimum": 0
          }
        }
      },
      "ProximityPrecisionView": {
        "type": "string",
        "enum": [
          "byWord",
          "byAttribute"
        ]
      },
      "QueryCondition": {
        "type": "object",
        "properties": {
          "isEmpty": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "If present and non-null, specifies either:\n\n- That this rule can only be active when the search query is empty\n- That this rule can only be active when the search query is non-empty (contains at least one word)"
          },
          "words": {
            "type": [
              "string",
              "null"
            ],
            "description": "If present and non-null, specifies that the rule can only be active if all the specified words are\npresent in the search query."
          }
        }
      },
      "RankingRuleView": {
        "oneOf": [
          {
            "type": "string",
            "description": "Sorted by decreasing number of matched query terms.",
            "enum": [
              "words"
            ]
          },
          {
            "type": "string",
            "description": "Sorted by increasing number of typos.",
            "enum": [
              "typo"
            ]
          },
          {
            "type": "string",
            "description": "Sorted by increasing distance between matched query terms.",
            "enum": [
              "proximity"
            ]
          },
          {
            "type": "string",
            "description": "Documents with query words contained in more important\nattributes and at a closer-to-the-front position in it\nare considered better.",
            "enum": [
              "attribute"
            ]
          },
          {
            "type": "string",
            "description": "Documents with query words contained in more important\nattributes are considered better. Position of the\nquery words in an attribute is not considered.",
            "enum": [
              "attributeRank"
            ]
          },
          {
            "type": "string",
            "description": "Documents with query words that are closer to the front\nof an attribute are considered better. Attribute rank\nis not considered.",
            "enum": [
              "wordPosition"
            ]
          },
          {
            "type": "string",
            "description": "Dynamically sort at query time the documents. None, one or multiple\nAsc/Desc sortable attributes can be used in place of this criterion at\nquery time.",
            "enum": [
              "sort"
            ]
          },
          {
            "type": "string",
            "description": "Sorted by the similarity of the matched words with the query words.",
            "enum": [
              "exactness"
            ]
          },
          {
            "type": "object",
            "description": "Sorted by the increasing value of the field specified.",
            "required": [
              "asc"
            ],
            "properties": {
              "asc": {
                "type": "string",
                "description": "Sorted by the increasing value of the field specified."
              }
            }
          },
          {
            "type": "object",
            "description": "Sorted by the decreasing value of the field specified.",
            "required": [
              "desc"
            ],
            "properties": {
              "desc": {
                "type": "string",
                "description": "Sorted by the decreasing value of the field specified."
              }
            }
          }
        ]
      },
      "RankingScoreThreshold": {
        "type": "number",
        "format": "double"
      },
      "ReasoningEffort": {
        "type": "string",
        "description": "Constrains effort on reasoning for reasoning models. Supported values are `low`, `medium`, and `high`.",
        "enum": [
          "low",
          "medium",
          "high"
        ]
      },
      "Remote": {
        "type": "object",
        "description": "Configuration for a remote Meilisearch instance",
        "properties": {
          "url": {
            "type": [
              "string",
              "null"
            ],
            "description": "URL of the remote instance\n\n- If the URL of the remote instance is resolving to a non-global IP, make sure that\n  `--experimental-allowed-ip-networks` allows it. For details on how use this parameter,\n  refer to [this documentation](https://www.meilisearch.com/docs/learn/self_hosted/configure_meilisearch_at_launch#allow-requests-to-private-networks).",
            "example": "http://localhost:7700"
          },
          "searchApiKey": {
            "type": [
              "string",
              "null"
            ],
            "description": "API key for search operations on this remote",
            "example": "XWnBI8QHUc-4IlqbKPLUDuhftNq19mQtjc6JvmivzJU"
          },
          "writeApiKey": {
            "type": [
              "string",
              "null"
            ],
            "description": "API key for write operations on this remote",
            "example": "XWnBI8QHUc-4IlqbKPLUDuhftNq19mQtjc6JvmivzJU"
          }
        },
        "additionalProperties": false
      },
      "RemoteTask": {
        "type": "object",
        "description": "Represents a task that was replicated to a remote Meilisearch instance.\nContains either the remote task UID on success, or an error if\nreplication failed.",
        "properties": {
          "taskUid": {
            "type": [
              "integer",
              "null"
            ],
            "format": "u-int32",
            "description": "The unique task identifier assigned by the remote Meilisearch instance.\nPresent when the task was successfully replicated to the remote.",
            "minimum": 0
          },
          "error": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ResponseError",
                "description": "Error details if the task failed to replicate to this remote. Contains\nthe error message, code, and type from the remote instance."
              }
            ]
          }
        }
      },
      "RenderQuery": {
        "type": "object",
        "required": [
          "template"
        ],
        "properties": {
          "template": {
            "$ref": "#/components/schemas/RenderQueryTemplate",
            "description": "Template/fragment to fetch for rendering.\n\nUse its `kind` parameter to determine the type of template or fragment to fetch."
          },
          "input": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/RenderQueryInput",
                "description": "Input for the template to fetch.\n\nInput is injected in the template to render the final string/JSON object.\n\nIf `null` or missing, the template will not be rendered.\n\nUse its `kind` parameter to determine the type of document to fetch."
              }
            ]
          }
        }
      },
      "RenderQueryInput": {
        "type": "object",
        "required": [
          "kind"
        ],
        "properties": {
          "kind": {
            "$ref": "#/components/schemas/RenderQueryInputKind"
          },
          "indexUid": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/IndexUid"
              }
            ]
          },
          "id": {
            "type": [
              "string",
              "null"
            ]
          },
          "inline": {}
        }
      },
      "RenderQueryInputKind": {
        "type": "string",
        "enum": [
          "indexDocument",
          "inlineDocument",
          "inlineSearch"
        ]
      },
      "RenderQueryTemplate": {
        "type": "object",
        "required": [
          "kind"
        ],
        "properties": {
          "kind": {
            "$ref": "#/components/schemas/RenderQueryTemplateKind",
            "description": "Kind of template or fragment to fetch.\n\nDetermines which other parameters are allowed and mandatory."
          },
          "indexUid": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/IndexUid",
                "description": "Index to fetch the template or fragment from.\n\n- Mandatory for `kind`s: `documentTemplate`, `chatDocumentTemplate`, `indexingFragment` and `searchFragment`."
              }
            ]
          },
          "embedder": {
            "type": [
              "string",
              "null"
            ],
            "description": "Embedder to fetch the template or fragment from.\n\n- Mandatory for `kind`s: `documentTemplate`, `chatDocumentTemplate`, `indexingFragment` and `searchFragment`."
          },
          "fragment": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name of the fragment to fetch.\n\n- Mandatory for `kind`s: `indexingFragment` and `searchFragment`."
          },
          "inline": {
            "description": "Inline value of the template or fragment.\n\n- Mandatory for `kind`s: `inlineDocumentTemplate` and `inlineFragment`."
          },
          "documentTemplateMaxBytes": {
            "type": [
              "integer",
              "null"
            ],
            "format": "u-int64",
            "description": "If present, truncate document template rendering to the specified number of bytes.\n\n- Available for `kind`s: `documentTemplate`, `inlineDocumentTemplate` and `chatDocumentTemplate`\n- If present for `documentTemplate` overrides the setting of the index.\n- If missing for `documentTemplate`, the setting of the index is used.\n- If missing for `inlineDocumentTemplate`, the default value of 400 bytes is used.",
            "minimum": 0
          }
        }
      },
      "RenderQueryTemplateKind": {
        "type": "string",
        "enum": [
          "documentTemplate",
          "chatDocumentTemplate",
          "indexingFragment",
          "searchFragment",
          "inlineDocumentTemplate",
          "inlineFragment"
        ]
      },
      "RenderResult": {
        "type": "object",
        "required": [
          "template"
        ],
        "properties": {
          "template": {
            "description": "**Un**rendered template or fragment, fetched in index or echoed back from inline template in request."
          },
          "rendered": {
            "description": "Result of rendering the template by injecting the `input` to the template.\n\n`null` if `input` was `null` or missing in the request."
          }
        }
      },
      "ResponseError": {
        "type": "object",
        "required": [
          "message",
          "code",
          "type",
          "link"
        ],
        "properties": {
          "message": {
            "type": "string",
            "description": "The error message."
          },
          "code": {
            "$ref": "#/components/schemas/Code",
            "description": "The error code."
          },
          "type": {
            "$ref": "#/components/schemas/ErrorType",
            "description": "The error type."
          },
          "link": {
            "type": "string",
            "description": "A link to the documentation about this specific error."
          }
        }
      },
      "ResponseFormat": {
        "oneOf": [
          {
            "type": "object",
            "description": "The type of response format being defined: `text`",
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "text"
                ]
              }
            }
          },
          {
            "type": "object",
            "description": "The type of response format being defined: `json_object`",
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "json_object"
                ]
              }
            }
          },
          {
            "type": "object",
            "description": "The type of response format being defined: `json_schema`",
            "required": [
              "json_schema",
              "type"
            ],
            "properties": {
              "json_schema": {
                "$ref": "#/components/schemas/ResponseFormatJsonSchema"
              },
              "type": {
                "type": "string",
                "enum": [
                  "json_schema"
                ]
              }
            }
          }
        ],
        "description": "An object specifying the format that the model must output (text, JSON object, or JSON schema)."
      },
      "ResponseFormatJsonSchema": {
        "type": "object",
        "description": "A JSON Schema-based response format specification for Structured Outputs.",
        "required": [
          "name"
        ],
        "properties": {
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "A description of what the response format is for, used by the model to determine how to respond in the format."
          },
          "name": {
            "type": "string",
            "description": "The name of the response format. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64."
          },
          "schema": {
            "description": "The schema for the response format, described as a JSON Schema object."
          },
          "strict": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether to enable strict schema adherence when generating the output. If set to true, the model will always follow the exact schema defined in the `schema` field. Only a subset of JSON Schema is supported when `strict` is `true`. To learn more, read the [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs)."
          }
        }
      },
      "Role": {
        "type": "string",
        "description": "The role of the author of a message.",
        "enum": [
          "system",
          "user",
          "assistant",
          "tool",
          "function"
        ]
      },
      "RuleAction": {
        "type": "object",
        "required": [
          "selector",
          "action"
        ],
        "properties": {
          "selector": {
            "$ref": "#/components/schemas/Selector",
            "description": "Target document selector for this action."
          },
          "action": {
            "type": "object",
            "description": "Action payload to apply to the selected document."
          }
        },
        "additionalProperties": false
      },
      "RuntimeTogglableFeatures": {
        "type": "object",
        "description": "Experimental features that can be toggled at runtime",
        "properties": {
          "metrics": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Enable the /metrics endpoint for Prometheus metrics"
          },
          "logsRoute": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Enable the /logs route for log configuration"
          },
          "tasksStreamingRoute": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Enable the `GET /tasks/stream` and `GET /batches/stream` SSE-based routes"
          },
          "editDocumentsByFunction": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Enable document editing via JavaScript functions"
          },
          "containsFilter": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Enable the CONTAINS filter operator"
          },
          "dynamicSearchRules": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Enable dynamic search rules and the `/dynamic-search-rules` routes"
          },
          "network": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Enable network features for distributed search"
          },
          "getTaskDocumentsRoute": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Enable the route to get documents from tasks"
          },
          "taskQueueCompactionRoute": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Enable the route to compact the task queue database"
          },
          "compositeEmbedders": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Enable composite embedders for multi-source embeddings"
          },
          "chatCompletions": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Enable chat completion capabilities"
          },
          "multimodal": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Enable multimodal search with images and other media"
          },
          "foreignKeys": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Enable foreign key support for document hydration"
          },
          "disableDocumentsFetchQueue": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Disable documents fetch queue"
          },
          "legacySearch": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Enable legacy search pipeline"
          },
          "renderRoute": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Enable the `POST /render-template` route"
          }
        },
        "additionalProperties": false
      },
      "SearchHit": {
        "type": "object",
        "description": "A single search result hit.",
        "properties": {
          "_formatted": {
            "type": "object",
            "description": "Document with highlighted and cropped attributes.\n\nPresent when `attributesToHighlight` or `attributesToCrop` was set.",
            "additionalProperties": true
          },
          "_matchesPosition": {
            "type": [
              "object",
              "null"
            ],
            "description": "Byte offsets (`start`, `length`) of each matched term per attribute.\n\nPresent when `showMatchesPosition` was true.",
            "additionalProperties": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/MatchBounds"
              }
            },
            "propertyNames": {
              "type": "string"
            }
          },
          "_rankingScore": {
            "type": [
              "number",
              "null"
            ],
            "format": "double",
            "description": "Global [ranking score](https://www.meilisearch.com/docs/learn/relevancy/ranking_score) from 0.0 to 1.0.\n\nPresent when `showRankingScore` was true."
          },
          "_rankingScoreDetails": {
            "type": [
              "object",
              "null"
            ],
            "description": "Per-rule score breakdown (words, typo, proximity, etc.).\n\nPresent when `showRankingScoreDetails` was true.",
            "additionalProperties": {},
            "propertyNames": {
              "type": "string"
            }
          }
        },
        "additionalProperties": {
          "description": "Document fields as stored in the index.\n\nAccording to `attributesToRetrieve`."
        }
      },
      "SearchMetadata": {
        "type": "object",
        "description": "Metadata about a search query (included when requested via header).",
        "required": [
          "queryUid",
          "indexUid"
        ],
        "properties": {
          "query": {
            "type": [
              "string",
              "null"
            ],
            "description": "Query string set for the query, if not already present in the response.\n\nOnly set if:\n\n1. the metadata corresponds to a query in a federated search request, **and**\n2. that federated search request query is not a placeholder search (empty or missing `q`)\n\nNever set for regular search and non-federated multi-search because\nthe query(ies) are already present in the response."
          },
          "queryUid": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier for the query."
          },
          "indexUid": {
            "type": "string",
            "description": "UID of the index that was searched."
          },
          "primaryKey": {
            "type": [
              "string",
              "null"
            ],
            "description": "[Primary key](https://www.meilisearch.com/docs/learn/getting_started/primary_key) of the index."
          },
          "remote": {
            "type": [
              "string",
              "null"
            ],
            "description": "Remote that processed the query (federated search only)."
          }
        }
      },
      "SearchQuery": {
        "type": "object",
        "properties": {
          "q": {
            "type": [
              "string",
              "null"
            ],
            "description": "Sets the search terms.\n\nMeilisearch returns documents that match this query.\n\nThe query supports [prefix search](https://www.meilisearch.com/docs/learn/engine/prefix) and [typo tolerance](https://www.meilisearch.com/docs/learn/relevancy/typo_tolerance_settings).\n\nMeilisearch only considers the first ten words; terms are normalized (lowercase, accents ignored).\n\nOmit or leave empty for a placeholder search: no query terms are applied, so Meilisearch returns all searchable documents in the index, ordered by [ranking rules](https://www.meilisearch.com/docs/learn/relevancy/ranking_rules).\n\nEnclose terms in double quotes (`\"`) for phrase search: only documents containing that exact sequence of words are returned (e.g. `\"Winter Feast\"`).\n\nUse a minus sign (`-`) before a word or phrase to exclude it from results."
          },
          "offset": {
            "type": "integer",
            "description": "Number of documents to skip at the start of the results.\n\nUse together with `limit` for [pagination](https://www.meilisearch.com/docs/guides/front_end/pagination) (e.g. offset=20 and limit=20 returns results 21–40).\n\nThis parameter is ignored when `page` or `hitsPerPage` is set; in that case the response includes `totalHits` and `totalPages` instead of `estimatedTotalHits`.",
            "default": 0,
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "description": "Maximum number of documents to return in the response.\n\nUse with `offset` for [pagination](https://www.meilisearch.com/docs/guides/front_end/pagination).\n\nThis parameter is ignored when `page` or `hitsPerPage` is set. The value cannot exceed the index [maxTotalHits](https://www.meilisearch.com/docs/reference/api/settings/update-pagination#body-max-total-hits-one-of-0) setting.",
            "default": 20,
            "minimum": 0
          },
          "page": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Request a specific results page (1-indexed).\n\nUse together with `hitsPerPage`.\n\nWhen this parameter is set, the response includes `totalHits` and `totalPages` instead of `estimatedTotalHits`.\n\n`page` and `hitsPerPage` take precedence over `offset` and `limit`.",
            "minimum": 0
          },
          "hitsPerPage": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Maximum number of documents per page for [pagination](https://www.meilisearch.com/docs/guides/front_end/pagination).\n\nThis value determines `totalPages`; use it together with `page`.\n\nWhen set, the response includes `totalHits` and `totalPages`.\n\nSet to 0 to obtain the exhaustive `totalHits` count without returning any documents.",
            "minimum": 0
          },
          "attributesToRetrieve": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "List of attributes to include in each returned document.\n\nUse `[\"*\"]` to return all attributes; if not set, the index [displayed attributes](https://www.meilisearch.com/docs/learn/relevancy/displayed_searchable_attributes) list is used.\n\nAttributes that are not in [displayedAttributes](https://www.meilisearch.com/docs/reference/api/settings/update-all-settings#body-displayed-attributes-one-of-0) are omitted from the response.",
            "uniqueItems": true
          },
          "attributesToCrop": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Attributes whose values should be cropped to a short excerpt.\n\nThe cropped text appears in each hit's `_formatted` object.\n\nLength is controlled by `cropLength`, or you can override it per attribute with the `attribute:length` syntax.\n\nUse `[\"*\"]` to crop all attributes in `attributesToRetrieve`.\n\nWhen possible, the crop is centered around the matching terms."
          },
          "cropLength": {
            "type": "integer",
            "description": "Maximum number of words to include in cropped values.\n\nThis parameter only applies when `attributesToCrop` is set.\n\nBoth query terms and [stop words](https://www.meilisearch.com/docs/reference/api/settings/update-all-settings#body-stop-words-one-of-0) count toward this length.",
            "default": 10,
            "minimum": 0
          },
          "cropMarker": {
            "type": "string",
            "description": "String used to mark crop boundaries in cropped text.\n\nIf null or empty, no markers are inserted.\n\nMarkers are only added where content was actually removed.",
            "default": "…"
          },
          "attributesToHighlight": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Attributes in which matching query terms should be highlighted.\n\nThe highlighted text appears in each hit's `_formatted` object.\n\nUse `[\"*\"]` to highlight in all attributes from `attributesToRetrieve`.\n\nBy default, matches are wrapped in `<em>` and `</em>`; you can override this with `highlightPreTag` and `highlightPostTag`.\n\nHighlighting also applies to [synonyms](https://www.meilisearch.com/docs/learn/relevancy/synonyms) and [stop words](https://www.meilisearch.com/docs/reference/api/settings/update-all-settings#body-stop-words-one-of-0).\n\nSupported value types are string, number, array, and object.\n\nNote: highlights matches within all listed attributes, even those not in `searchableAttributes`.",
            "uniqueItems": true
          },
          "highlightPreTag": {
            "type": "string",
            "description": "String to insert before each highlighted term.\n\nCan be any string (e.g. `<strong>`, `*`).\n\nIf null or empty, nothing is inserted at the start of a match.",
            "default": "<em>"
          },
          "highlightPostTag": {
            "type": "string",
            "description": "String to insert after each highlighted term.\n\nShould be used together with `highlightPreTag` to avoid malformed output (e.g. unclosed HTML tags).",
            "default": "</em>"
          },
          "showMatchesPosition": {
            "type": "boolean",
            "description": "When true, each hit includes a `_matchesPosition` object with the byte offset (`start` and `length`) of each matched term.\n\nThis is useful when you need custom highlighting.\n\nNote: reports match positions in all attributes, even non-searchable ones. Positions are measured in bytes, not characters."
          },
          "filter": {
            "description": "A [filter](https://www.meilisearch.com/docs/learn/filtering_and_sorting/filter_search_results) expression to narrow results.\n\nAll attributes used in the expression must be in [filterableAttributes](https://www.meilisearch.com/docs/reference/api/settings/update-all-settings#body-filterable-attributes-one-of-0).\n\nYou can pass a string (e.g. `\"(genres = horror OR genres = mystery) AND director = 'Jordan Peele'\"`) or an array (e.g. `[[\"genres = horror\", \"genres = mystery\"], \"director = 'Jordan Peele'\"]`).\n\nFor [geo search](https://www.meilisearch.com/docs/learn/filtering_and_sorting/geosearch), use `_geoRadius(lat, lng, distance_in_meters)`, `_geoBoundingBox([lat,lng],[lat,lng])`, or `_geoPolygon([lat,lng], ...)` (GeoJSON only for polygon)."
          },
          "sort": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Sort results by one or more attributes and their order.\n\nUse the format `[\"attribute:asc\", \"attribute:desc\"]`; only attributes in [sortableAttributes](https://www.meilisearch.com/docs/reference/api/settings/update-all-settings#body-sortable-attributes-one-of-0) can be used.\n\nFor [geo search](https://www.meilisearch.com/docs/learn/filtering_and_sorting/geosearch), use `_geoPoint(lat,lng):asc` or `:desc`; the response then includes `_geoDistance` in meters.\n\nThe first attribute in the list has precedence.\n\nSee [sorting search results](https://www.meilisearch.com/docs/learn/filtering_and_sorting/sort_search_results)."
          },
          "distinct": {
            "type": [
              "string",
              "null"
            ],
            "description": "Return only one document per distinct value of the given attribute (e.g. deduplicate by product_id).\n\nThe attribute must be in [filterableAttributes](https://www.meilisearch.com/docs/reference/api/settings/update-all-settings#body-filterable-attributes-one-of-0).\n\nThis overrides the index [distinctAttribute](https://www.meilisearch.com/docs/reference/api/settings/update-all-settings#body-distinct-attribute-one-of-0) setting for this request.\n\nSee [distinct attribute](https://www.meilisearch.com/docs/learn/relevancy/distinct_attribute)."
          },
          "facets": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/AttributePatterns",
                "description": "Return the count of matches per facet value for the listed attributes.\n\nThe response includes `facetDistribution` and, for numeric facets, `facetStats` (min/max).\n\nThis route also supports patterns, i.e., \"title\", \"dogs.*\", \"*\", which can match over the [filterableAttributes](https://www.meilisearch.com/docs/reference/api/settings/update-all-settings#body-filterable-attributes-one-of-0).\n\nThe number of values returned per facet is limited by the index [maxValuesPerFacet](https://www.meilisearch.com/docs/reference/api/settings/update-faceting#body-max-values-per-facet-one-of-0) setting; attributes not in filterableAttributes are ignored.\n\nMore info: [faceting](https://www.meilisearch.com/docs/learn/filtering_and_sorting/search_with_facet_filters)."
              }
            ]
          },
          "matchingStrategy": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/MatchingStrategy",
                "description": "How to match query terms when there are not enough results to satisfy `limit`.\n\n**`last`**: Returns documents containing all query terms first. If there are not enough such results, Meilisearch removes one query term at a time, starting from the end of the query (e.g. for \"big fat cat\", then \"big fat\", then \"big\").\n\n**`all`**: Only returns documents that contain all query terms. Meilisearch does not relax the query even if fewer than `limit` documents match.\n\n**`frequency`**: Returns documents containing all query terms first. If there are not enough, removes one term at a time starting with the word that is most frequent in the dataset, giving more weight to rarer terms (e.g. in \"white cotton shirt\", prioritizes documents containing \"white\" if \"shirt\" is very common).\n\nDefault: `last`."
              }
            ]
          },
          "attributesToSearchOn": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Restrict the search to the listed attributes only.\n\nEach attribute must be in the index [searchable attributes](https://www.meilisearch.com/docs/learn/relevancy/displayed_searchable_attributes) list.\n\nThe order of attributes in this parameter does not affect relevancy."
          },
          "rankingScoreThreshold": {
            "type": [
              "number",
              "null"
            ],
            "format": "double",
            "description": "Exclude from the results any document whose [ranking score](https://www.meilisearch.com/docs/learn/relevancy/ranking_score) is below this value (between 0.0 and 1.0).\n\nExcluded hits do not count toward `estimatedTotalHits`, `totalHits`, or facet distribution.\n\nWhen used together with `page` and `hitsPerPage`, this parameter may reduce performance because Meilisearch must score all matching documents."
          },
          "locales": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/Locale"
            },
            "description": "Explicitly specify the language(s) of the query.\n\nPass an array of [supported ISO-639 locales](https://www.meilisearch.com/docs/reference/api/settings/update-all-settings#body-localized-attributes-one-of-0).\n\nThis overrides auto-detection; use it when auto-detection is wrong for the query or the documents.\n\nSee also the [localizedAttributes](https://www.meilisearch.com/docs/reference/api/settings/list-all-settings#response-localized-attributes-one-of-0) settings and [Language](https://www.meilisearch.com/docs/learn/resources/language)."
          },
          "hybrid": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/HybridQuery",
                "description": "[Hybrid search](https://www.meilisearch.com/docs/learn/ai_powered_search/getting_started_with_ai_search): combines keyword and semantic search.\n\nThe `embedder` field (required) must match an embedder name in index settings.\n\nThe `semanticRatio` field controls the balance: 0.0 means keyword-only results, 1.0 means semantic-only.\n\nWhen `q` is empty and `semanticRatio` is greater than 0, Meilisearch performs a pure semantic search.\n\nThe `semanticRatio` field defaults to `0.5`. A value of `0.0` uses keyword-only results; `1.0` uses semantic-only results."
              }
            ]
          },
          "vector": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "number",
              "format": "float"
            },
            "description": "Custom query vector for [vector or hybrid search](https://www.meilisearch.com/docs/learn/ai_powered_search/getting_started_with_ai_search).\n\nThe array length must match the dimensions of the embedder configured in the index.\n\nThis parameter is mandatory when using a [user-provided embedder](https://www.meilisearch.com/docs/learn/ai_powered_search/search_with_user_provided_embeddings).\n\nWhen used with `hybrid`, documents are ranked by vector similarity.\n\nYou can also use it to override an embedder's automatic vector generation."
          },
          "retrieveVectors": {
            "type": "boolean",
            "description": "When true, the response includes document and query embeddings in each hit's `_vectors` field.\n\nThe `_vectors` field must be listed in [displayedAttributes](https://www.meilisearch.com/docs/reference/api/settings/update-all-settings#body-displayed-attributes-one-of-0) for it to appear."
          },
          "media": {
            "description": "For [multimodal search](https://www.meilisearch.com/docs/learn/ai_powered_search/image_search_with_multimodal_embeddings): provide data (e.g. image, text) that populates a single search fragment configured in index settings.\n\nA search fragment is a named slot that defines which media or fields are sent to the embedder.\n\nAn embedder is required; this parameter is incompatible with `vector`.\n\nPOST only."
          },
          "personalize": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Personalize",
                "description": "[Personalized search](https://www.meilisearch.com/docs/learn/personalization/making_personalized_search_queries): provide an object with a `userContext` field (a string describing the user, e.g. preferences or behavior).\n\nResults are then tailored to that profile.\n\nPersonalization must be [enabled](https://www.meilisearch.com/docs/reference/api/experimental-features/configure-experimental-features) (e.g. Cohere key for self-hosted instances)."
              }
            ]
          },
          "useNetwork": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "When `true`, runs the query on the whole network (all shards covered exactly once).\n\nWhen `false`, the query runs locally.\n\nWhen omitted or `null`, the default value depends on whether the sharding is enabled for the instance:\n\n- If the instance has sharding enabled (has a leader), defaults to `true`.\n- Otherwise defaults to `false`.\n\nIt also requires the `network` [experimental feature](http://localhost:3000/reference/api/experimental-features/configure-experimental-features).\n\nValues: `true` = use the whole network; `false` = local, default = see above.\n\nWhen using the network, the index must exist with compatible settings on all remotes."
          },
          "showRankingScore": {
            "type": "boolean",
            "description": "When true, each document includes a `_rankingScore` between 0.0 and 1.0; a higher value means the document is more relevant.\n\nSee [ranking score](https://www.meilisearch.com/docs/learn/relevancy/ranking_score).\n\nThe `sort` ranking rule does not affect the value of `_rankingScore`."
          },
          "showRankingScoreDetails": {
            "type": "boolean",
            "description": "When true, each document includes `_rankingScoreDetails`, which breaks down the score contribution of each [ranking rule](https://www.meilisearch.com/docs/learn/relevancy/ranking_rules).\n\nUseful for debugging relevancy."
          },
          "showPerformanceDetails": {
            "type": "boolean",
            "description": "When true, the response includes a `performanceDetails` object with a timing breakdown of the query processing."
          }
        }
      },
      "SearchQueryWithIndex": {
        "type": "object",
        "description": "A `SearchQuery` + an index UID and optional FederationOptions.",
        "required": [
          "indexUid"
        ],
        "properties": {
          "indexUid": {
            "$ref": "#/components/schemas/IndexUid",
            "description": "Index unique identifier"
          },
          "q": {
            "type": [
              "string",
              "null"
            ],
            "description": "Query string"
          },
          "offset": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Number of documents to skip",
            "minimum": 0
          },
          "limit": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Maximum number of documents returned",
            "minimum": 0
          },
          "page": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Request a specific page of results",
            "minimum": 0
          },
          "hitsPerPage": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Maximum number of documents returned for a page",
            "minimum": 0
          },
          "attributesToRetrieve": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Attributes to display in the returned documents",
            "uniqueItems": true
          },
          "attributesToCrop": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Attributes whose values have to be cropped"
          },
          "cropLength": {
            "type": "integer",
            "description": "Maximum length of cropped value in words",
            "minimum": 0
          },
          "cropMarker": {
            "type": "string",
            "description": "String marking crop boundaries"
          },
          "attributesToHighlight": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Highlight matching terms contained in an attribute",
            "uniqueItems": true
          },
          "highlightPreTag": {
            "type": "string",
            "description": "String inserted at the start of a highlighted term"
          },
          "highlightPostTag": {
            "type": "string",
            "description": "String inserted at the end of a highlighted term"
          },
          "showMatchesPosition": {
            "type": "boolean",
            "description": "Return matching terms location"
          },
          "filter": {
            "description": "Filter queries by an attribute's value"
          },
          "sort": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Sort search results by an attribute's value"
          },
          "distinct": {
            "type": [
              "string",
              "null"
            ],
            "description": "Restrict search to documents with unique values of specified\nattribute"
          },
          "facets": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/AttributePatterns",
                "description": "Display the count of matches per facet"
              }
            ]
          },
          "matchingStrategy": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/MatchingStrategy",
                "description": "Strategy used to match query terms within documents"
              }
            ]
          },
          "attributesToSearchOn": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Restrict search to the specified attributes"
          },
          "rankingScoreThreshold": {
            "type": [
              "number",
              "null"
            ],
            "format": "double",
            "description": "Exclude results below the specified ranking score"
          },
          "locales": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/Locale"
            },
            "description": "Languages to use for query tokenization"
          },
          "hybrid": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/HybridQuery",
                "description": "Hybrid search configuration combining keyword and semantic search.\nSet `semanticRatio` to balance between keyword matching (0.0) and\nsemantic similarity (1.0). Requires an embedder to be configured."
              }
            ]
          },
          "vector": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "number",
              "format": "float"
            },
            "description": "Search using a custom query vector"
          },
          "retrieveVectors": {
            "type": "boolean",
            "description": "Return document and query vector data"
          },
          "media": {
            "description": "Perform AI-powered search queries with multimodal content"
          },
          "personalize": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/Personalize",
                "description": "Personalize search results"
              }
            ]
          },
          "useNetwork": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "When `true`, runs the query on the whole network (all shards covered exactly once).\n\nWhen `false`, the query runs locally.\n\nWhen omitted or `null`, the default value depends on whether the sharding is enabled for the instance:\n\n- If the instance has sharding enabled (has a leader), defaults to `true`.\n- Otherwise defaults to `false`.\n\nIt also requires the `network` [experimental feature](http://localhost:3000/reference/api/experimental-features/configure-experimental-features).\n\nValues: `true` = use the whole network; `false` = local, default = see above.\n\nWhen using the network, the index must exist with compatible settings on all remotes."
          },
          "showRankingScore": {
            "type": "boolean",
            "description": "Display the global ranking score of a document"
          },
          "showRankingScoreDetails": {
            "type": "boolean",
            "description": "Adds a detailed global ranking score field"
          },
          "showPerformanceDetails": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Adds a detailed performance details field"
          },
          "federationOptions": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/FederationOptions",
                "description": "Federation options for multi-index search"
              }
            ]
          }
        },
        "additionalProperties": false
      },
      "SearchResult": {
        "allOf": [
          {
            "$ref": "#/components/schemas/HitsInfo",
            "description": "Pagination info.\n\nEither offset/limit with `estimatedTotalHits`, or page/hitsPerPage with `totalHits` and `totalPages`."
          },
          {
            "type": "object",
            "required": [
              "hits",
              "query",
              "processingTimeMs"
            ],
            "properties": {
              "hits": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/SearchHit"
                },
                "description": "Matching documents.\n\nEach hit contains document fields and, when requested, `_formatted`, `_matchesPosition`, `_rankingScore`, `_rankingScoreDetails`, `_geoDistance`."
              },
              "query": {
                "type": "string",
                "description": "Query string that produced this response."
              },
              "queryVector": {
                "type": [
                  "array",
                  "null"
                ],
                "items": {
                  "type": "number",
                  "format": "float"
                },
                "description": "Query embedding used for the search.\n\nPresent when vector or hybrid search was used."
              },
              "processingTimeMs": {
                "type": "integer",
                "description": "Time taken to process the query, in milliseconds.",
                "minimum": 0
              },
              "facetDistribution": {
                "type": [
                  "object",
                  "null"
                ],
                "description": "Count of matching documents per facet value for each requested facet.\n\nPresent when `facets` was set.",
                "additionalProperties": {},
                "propertyNames": {
                  "type": "string"
                }
              },
              "facetStats": {
                "type": [
                  "object",
                  "null"
                ],
                "description": "Minimum and maximum numeric values per facet.\n\nPresent for numeric facets when `facets` was set.",
                "additionalProperties": {
                  "$ref": "#/components/schemas/FacetStats"
                },
                "propertyNames": {
                  "type": "string"
                }
              },
              "requestUid": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uuid",
                "description": "UUID v7 identifying this search request."
              },
              "metadata": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/SearchMetadata",
                    "description": "Query and index metadata.\n\nPresent when requested via the `Meili-Include-Metadata` header."
                  }
                ]
              },
              "performanceDetails": {
                "description": "Timing breakdown per processing step.\n\nPresent when `showPerformanceDetails` was true."
              },
              "remoteErrors": {
                "type": [
                  "object",
                  "null"
                ],
                "description": "Errors from remote shards. Federated search only.",
                "additionalProperties": {
                  "$ref": "#/components/schemas/ResponseError"
                },
                "propertyNames": {
                  "type": "string"
                }
              },
              "semanticHitCount": {
                "type": [
                  "integer",
                  "null"
                ],
                "format": "u-int32",
                "description": "Exhaustive number of semantic search matches.\n\nAI-powered (hybrid/semantic) searches only.",
                "minimum": 0
              }
            }
          }
        ],
        "description": "Search response containing matching documents and metadata."
      },
      "SearchResultWithIndex": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SearchResult",
            "description": "Search results for this index"
          },
          {
            "type": "object",
            "required": [
              "indexUid"
            ],
            "properties": {
              "indexUid": {
                "type": "string",
                "description": "Identifier of the queried index"
              }
            }
          }
        ],
        "description": "Search result with index identifier for multi-search responses"
      },
      "SearchResults": {
        "type": "object",
        "description": "Response containing results from multiple search queries",
        "required": [
          "results"
        ],
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SearchResultWithIndex"
            },
            "description": "Array of search results for each query"
          }
        }
      },
      "Selector": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "indexUid": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/IndexUid"
              }
            ]
          },
          "id": {
            "type": "string"
          }
        }
      },
      "ServiceTier": {
        "type": "string",
        "description": "Specifies the latency tier to use for processing the request.",
        "enum": [
          "auto",
          "default"
        ]
      },
      "ServiceTierResponse": {
        "type": "string",
        "description": "The service tier used for processing the request, as returned in the response.",
        "enum": [
          "scale",
          "default",
          "auto"
        ]
      },
      "SettingEmbeddingSettings": {
        "type": "object",
        "description": "Configuration for one [embedder](https://www.meilisearch.com/docs/learn/ai_powered_search/getting_started_with_ai_search) used for semantic and hybrid search.\n\nSet `source` (`openAi`, `huggingFace`, `ollama`, `rest`, `userProvided`), then the options that apply: `model`, `apiKey`, `documentTemplate`, `dimensions`, `url`, etc.",
        "properties": {
          "inner": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "object",
                "description": "Embedder configuration for [AI-powered / hybrid search](https://www.meilisearch.com/docs/learn/ai_powered_search/getting_started_with_ai_search).",
                "properties": {
                  "source": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "$ref": "#/components/schemas/EmbedderSource",
                        "description": "Embedding provider.\n\n- `openAi`: integration with OpenAI. Use `rest` for OpenAI-like APIs.\n- `huggingFace`: download a model from [Hugging Face](https://huggingface.co/), then compute embeddings on the local CPU/GPU.\n- `ollama`: integration with [ollama](https://ollama.com/).\n- `rest`: configurable integration with a remote embedder via its REST API.\n- `composite`: combine two embedding providers at indexing and search time.\n  The generated embeddings must be **exactly the same** regardless of the embedding provider.\n- `userProvided`: manually provide embeddings in documents.\n\n- Determines which other fields are required or allowed.\n- 🏗️ Changing the value of this parameter always regenerates embeddings."
                      }
                    ],
                    "default": "openAi"
                  },
                  "model": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "description": "Model name.\n\n- Available for `openAi`, `huggingFace`, `ollama`.\n- Mandatory for `ollama`.\n- For `openAi`/`huggingFace` optional with defaults.\n- 🏗️ Changing the value of this parameter always regenerates embeddings.",
                    "example": "text-embedding-3-small"
                  },
                  "revision": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "description": "Model revision (e.g. Hugging Face commit SHA).\n\n- Only available for `huggingFace`.\n- If unset, latest is used.\n- 🏗️ Changing the value of this parameter always regenerates embeddings"
                  },
                  "pooling": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "$ref": "#/components/schemas/OverridePooling",
                        "description": "Pooling method when computing embedding locally.\n\n- Only available for `huggingFace`.\n- `useModel`: automatically determine the pooling method depending on the chosen model (recommended).\n- `forceMean`: always use mean pooling.\n- `forceCls`: always use CLS pooling.\n- 🏗️ Changing the value of this parameter always regenerates embeddings"
                      }
                    ],
                    "default": "useModel"
                  },
                  "apiKey": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "description": "API key sent to the embedder.\n\n- If not set for source `openAi`, the key is read from the `OPENAI_API_KEY` then `MEILI_OPENAI_API_KEY` environment variables.\n- If not set for other sources, no bearer token is sent.\n- This setting is partially hidden when returned by the settings\n- 🌱 Changing the value of this parameter never regenerates embeddings"
                  },
                  "dimensions": {
                    "type": [
                      "integer",
                      "null"
                    ],
                    "description": "Number of dimensions of the embedding vectors.\n\n- Available for `userProvided`, `openAi`, `ollama`, `rest`.\n- Mandatory for `userProvided`.\n- For `openAi`/`ollama`/`rest` inferred if omitted.\n- 🏗️ For `openAi`, changing the value of this parameter always regenerates embeddings\n- 🌱 For other sources, changing the value of this parameter never regenerates embeddings",
                    "example": 1536,
                    "minimum": 0
                  },
                  "binaryQuantized": {
                    "type": [
                      "boolean",
                      "null"
                    ],
                    "description": "When true, vectors are stored as 1-bit (smaller, faster, less precise).\n\n- Available for all sources.\n- Irreversible once enabled.\n- 🏗️ When set to true, embeddings are not regenerated, but they are binary quantized, which takes time."
                  },
                  "documentTemplate": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "description": "[Liquid template](https://shopify.github.io/liquid/) to build the text sent to the embedder for each document.\n\n- Available for `openAi`, `huggingFace`, `ollama`, `rest`.\n- 🏗️ When modified, embeddings are regenerated for documents whose rendering through the template produces a different text.",
                    "example": "{{doc.title}}: {{doc.overview}}"
                  },
                  "documentTemplateMaxBytes": {
                    "type": [
                      "integer",
                      "null"
                    ],
                    "description": "Max size in bytes of the rendered document template.\n\nLonger output is truncated.\n\n- Available for `openAi`, `huggingFace`, `ollama`, `rest`.\n- 🏗️ When increased, embeddings are regenerated for documents whose rendering through the template produces a different text.\n- 🌱 When decreased, embeddings are never regenerated",
                    "default": 400,
                    "example": 400,
                    "minimum": 0
                  },
                  "url": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "description": "URL of the embedder API.\n\n- Mandatory for `rest`. Optional for `openAi` and `ollama`.\n- 🌱 When modified for `openAi``, embeddings are never regenerated\n- 🏗️ When modified for `ollama` and `rest`, embeddings are always regenerated\n- If targetting URL resolving to a non-global IP (such as `localhost`), make sure that\n  `--experimental-allowed-ip-networks` allows it. For details on how use this parameter,\n  refer to [this documentation](https://www.meilisearch.com/docs/learn/self_hosted/configure_meilisearch_at_launch#allow-requests-to-private-networks).",
                    "example": "http://localhost:11434/api/embeddings"
                  },
                  "indexingFragments": {
                    "type": [
                      "object",
                      "null"
                    ],
                    "description": "Fragments (with [Liquid](https://shopify.github.io/liquid/)) sent to the embedder at indexing time.\n\nFor `rest` with multimodal; key is fragment name, value the payload.\n\nSee also [Image search with multimodal embeddings](https://www.meilisearch.com/docs/learn/ai_powered_search/image_search_with_multimodal_embeddings)\n\n- 🏗️ When a fragment is deleted by passing `null` to its name, the corresponding embeddings are removed from documents.\n- 🏗️ When a fragment is modified, the corresponding embeddings are regenerated if their rendered version changes.",
                    "default": {},
                    "additionalProperties": {},
                    "propertyNames": {
                      "type": "string"
                    }
                  },
                  "searchFragments": {
                    "type": [
                      "object",
                      "null"
                    ],
                    "description": "Fragments (with [Liquid](https://shopify.github.io/liquid/)) sent to the embedder at search time.\n\nFor `rest` with multimodal.\n\nSee also [Image search with multimodal embeddings](https://www.meilisearch.com/docs/learn/ai_powered_search/image_search_with_multimodal_embeddings)\n\n- 🌱 Changing the value of this parameter never regenerates embeddings",
                    "default": {},
                    "additionalProperties": {},
                    "propertyNames": {
                      "type": "string"
                    }
                  },
                  "request": {
                    "description": "Request body template for `rest` embedder.\n\nSee also [Configure a REST embedder](https://www.meilisearch.com/docs/learn/ai_powered_search/configure_rest_embedder)\n\n- Use `\"{{text}}\"` for the input.\n- Mandatory for `rest`.\n- 🏗️ Changing the value of this parameter always regenerates embeddings"
                  },
                  "response": {
                    "description": "Response template for `rest` embedder.\n\nSee also [Configure a REST embedder](https://www.meilisearch.com/docs/learn/ai_powered_search/configure_rest_embedder)\n\n- Use `\"{{embedding}}\"` where the embedding array is.\n- Mandatory for `rest`."
                  },
                  "headers": {
                    "type": [
                      "object",
                      "null"
                    ],
                    "description": "Extra HTTP headers sent to the embedder.\n\n- Available for `rest`.\n- 🌱 Changing the value of this parameter never regenerates embeddings",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "propertyNames": {
                      "type": "string"
                    }
                  },
                  "searchEmbedder": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "$ref": "#/components/schemas/SubEmbeddingSettings",
                        "description": "Embedder used at search time when using a composite embedder.\n\nSame sub-parameters as a top-level embedder (`source`, `model`, `url`, etc.); no `documentTemplate`/`documentTemplateMaxBytes`."
                      }
                    ]
                  },
                  "indexingEmbedder": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "$ref": "#/components/schemas/SubEmbeddingSettings",
                        "description": "Embedder used at indexing time when using a composite embedder.\n\nSame sub-parameters as a top-level embedder (`source`, `model`, `documentTemplate`, `url`, etc.)."
                      }
                    ]
                  },
                  "distribution": {
                    "oneOf": [
                      {
                        "type": "null"
                      },
                      {
                        "$ref": "#/components/schemas/DistributionShift",
                        "description": "Affine transform (mean, sigma) applied to the semantic score to make it more comparable with the ranking score.\n\nSee also [this article](https://www.meilisearch.com/blog/fixing-hybrid-search#making-the-scores-comparable).\n\n- Available for all sources.\n- 🌱 Changing the value of this parameter never regenerates embeddings"
                      }
                    ]
                  }
                }
              }
            ]
          }
        }
      },
      "Settings_Checked": {
        "type": "object",
        "description": "Index settings: every option you can configure for search and index behavior.\n\nUsed as the request body for PATCH settings. Only the fields you send are updated; pass `null` to reset a setting to its default.\n\nSee also: [Configuring index settings on the Cloud](https://www.meilisearch.com/docs/learn/configuration/configuring_index_settings).",
        "properties": {
          "displayedAttributes": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Fields returned in search results. Affects only search endpoints, not get-document endpoints. See [displayed and searchable attributes](https://www.meilisearch.com/docs/learn/relevancy/displayed_searchable_attributes).",
            "example": [
              "id",
              "title",
              "description",
              "url"
            ],
            "default": [
              "*"
            ]
          },
          "searchableAttributes": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Fields searched for query words, in order of importance. Defines [attribute ranking order](https://www.meilisearch.com/docs/learn/relevancy/attribute_ranking_order). See [displayed and searchable attributes](https://www.meilisearch.com/docs/learn/relevancy/displayed_searchable_attributes).",
            "example": [
              "title",
              "description"
            ],
            "default": [
              "*"
            ]
          },
          "filterableAttributes": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/FilterableAttributesRule"
            },
            "description": "Attributes that can be used as [filters](https://www.meilisearch.com/docs/learn/filtering_and_sorting/filter_search_results) and [facets](https://www.meilisearch.com/docs/learn/filtering_and_sorting/search_with_facet_filters). Strings or objects with `attributePatterns` and `features`.",
            "example": [
              "release_date",
              "genre"
            ],
            "default": []
          },
          "sortableAttributes": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Attributes that can be used to [sort search results](https://www.meilisearch.com/docs/learn/filtering_and_sorting/sort_search_results).",
            "example": [
              "release_date"
            ],
            "default": []
          },
          "foreignKeys": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/ForeignKey"
            },
            "description": "Foreign keys to use for cross-index filtering search.",
            "example": [
              {
                "foreignIndexUid": "products",
                "fieldName": "productId"
              }
            ]
          },
          "rankingRules": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "[Ranking rules](https://www.meilisearch.com/docs/learn/relevancy/ranking_rules) in order of importance. Built-in rules and custom sort rules (`attribute:asc` or `attribute:desc`).",
            "example": [
              "words",
              "typo",
              "proximity",
              "attributeRank",
              "sort",
              "wordPosition",
              "exactness"
            ],
            "default": [
              "words",
              "typo",
              "proximity",
              "attributeRank",
              "sort",
              "wordPosition",
              "exactness"
            ]
          },
          "stopWords": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Words ignored when present in search queries.",
            "example": [
              "the",
              "a"
            ],
            "default": []
          },
          "nonSeparatorTokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Characters that are not treated as word separators. Removed from the default separator set.",
            "example": [
              "@",
              "#"
            ],
            "default": []
          },
          "separatorTokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Characters that delimit words. Added on top of the default separators.",
            "example": [
              "|"
            ],
            "default": []
          },
          "dictionary": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Strings Meilisearch parses as a single term. Useful for names or domain terms.",
            "example": [
              "J. R. R."
            ],
            "default": []
          },
          "synonyms": {
            "type": [
              "object",
              "null"
            ],
            "description": "Pairs of words or phrases treated as equivalent for search. Key maps to an array of [synonyms](https://www.meilisearch.com/docs/learn/relevancy/synonyms).",
            "default": {},
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "propertyNames": {
              "type": "string"
            },
            "example": {
              "phone": [
                "iPhone"
              ]
            }
          },
          "distinctAttribute": {
            "type": [
              "string",
              "null"
            ],
            "description": "Field whose value must be unique in the returned documents. One document per distinct value. See [distinct attribute](https://www.meilisearch.com/docs/learn/relevancy/distinct_attribute).",
            "example": "sku"
          },
          "proximityPrecision": {
            "type": [
              "string",
              "null"
            ],
            "description": "Precision for the proximity ranking rule and phrase search: `byWord` (exact distance) or `byAttribute` (same attribute).",
            "default": "byWord",
            "example": "byWord"
          },
          "typoTolerance": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/TypoSettings",
                "description": "[Typo tolerance](https://www.meilisearch.com/docs/learn/relevancy/typo_tolerance_settings): enable/disable, minimum word length for typos, and where to disable it."
              }
            ],
            "default": {
              "enabled": true,
              "minWordSizeForTypos": {
                "oneTypo": 5,
                "twoTypos": 9
              },
              "disableOnWords": [],
              "disableOnAttributes": [],
              "disableOnNumbers": false
            }
          },
          "faceting": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/FacetingSettings",
                "description": "Related to [faceting](https://www.meilisearch.com/docs/learn/filtering_and_sorting/search_with_facet_filters): max facet values per facet and how facet values are sorted."
              }
            ],
            "default": {
              "maxValuesPerFacet": 100,
              "sortFacetValuesBy": {
                "*": "alpha"
              }
            }
          },
          "pagination": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PaginationSettings",
                "description": "Related to [pagination](https://www.meilisearch.com/docs/guides/front_end/pagination): maximum number of results a search can return."
              }
            ],
            "default": {
              "maxTotalHits": 1000
            }
          },
          "embedders": {
            "type": [
              "object",
              "null"
            ],
            "description": "[Embedders](https://www.meilisearch.com/docs/learn/ai_powered_search/getting_started_with_ai_search) used for semantic and [hybrid search](https://www.meilisearch.com/docs/learn/ai_powered_search/getting_started_with_ai_search). Map of embedder name to config (`source`, `model`, `documentTemplate`, etc.).",
            "default": {},
            "additionalProperties": {
              "$ref": "#/components/schemas/EmbeddingSettings"
            },
            "propertyNames": {
              "type": "string"
            },
            "example": {
              "default": {
                "source": "openAi",
                "model": "text-embedding-3-small",
                "documentTemplate": "{{doc.title}}: {{doc.overview}}"
              }
            }
          },
          "searchCutoffMs": {
            "type": [
              "integer",
              "null"
            ],
            "format": "u-int64",
            "description": "Maximum duration of a search in milliseconds. If reached, the search stops and returns results computed so far. When null, 1500 ms is used.",
            "example": 1500,
            "minimum": 0
          },
          "localizedAttributes": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/LocalizedAttributesRuleView"
            },
            "description": "Locales and attribute patterns for [language-specific tokenization](https://www.meilisearch.com/docs/learn/resources/language). Affects searchable, filterable, and sortable attributes.",
            "example": [
              {
                "locales": [
                  "jpn"
                ],
                "attributePatterns": [
                  "*_ja"
                ]
              }
            ],
            "default": []
          },
          "facetSearch": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "When true, [facet search](https://www.meilisearch.com/docs/learn/filtering_and_sorting/search_with_facet_filters) is enabled. When false, the facet-search endpoint is disabled.",
            "default": true,
            "example": true
          },
          "prefixSearch": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PrefixSearchSettings",
                "description": "When to compute prefix matches: `indexingTime` or `disabled`. `disabled` speeds up indexing but reduces relevancy."
              }
            ],
            "default": "indexingTime"
          },
          "chat": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ChatSettings",
                "description": "[Chat (conversation)](https://www.meilisearch.com/docs/learn/chat/getting_started_with_chat) settings: index description, document template, and search parameters used when the LLM queries this index."
              }
            ],
            "default": {}
          }
        }
      },
      "Settings_Unchecked": {
        "type": "object",
        "description": "Index settings: every option you can configure for search and index behavior.\n\nUsed as the request body for PATCH settings. Only the fields you send are updated; pass `null` to reset a setting to its default.\n\nSee also: [Configuring index settings on the Cloud](https://www.meilisearch.com/docs/learn/configuration/configuring_index_settings).",
        "properties": {
          "displayedAttributes": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Fields returned in search results. Affects only search endpoints, not get-document endpoints. See [displayed and searchable attributes](https://www.meilisearch.com/docs/learn/relevancy/displayed_searchable_attributes).",
            "example": [
              "id",
              "title",
              "description",
              "url"
            ],
            "default": [
              "*"
            ]
          },
          "searchableAttributes": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Fields searched for query words, in order of importance. Defines [attribute ranking order](https://www.meilisearch.com/docs/learn/relevancy/attribute_ranking_order). See [displayed and searchable attributes](https://www.meilisearch.com/docs/learn/relevancy/displayed_searchable_attributes).",
            "example": [
              "title",
              "description"
            ],
            "default": [
              "*"
            ]
          },
          "filterableAttributes": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/FilterableAttributesRule"
            },
            "description": "Attributes that can be used as [filters](https://www.meilisearch.com/docs/learn/filtering_and_sorting/filter_search_results) and [facets](https://www.meilisearch.com/docs/learn/filtering_and_sorting/search_with_facet_filters). Strings or objects with `attributePatterns` and `features`.",
            "example": [
              "release_date",
              "genre"
            ],
            "default": []
          },
          "sortableAttributes": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Attributes that can be used to [sort search results](https://www.meilisearch.com/docs/learn/filtering_and_sorting/sort_search_results).",
            "example": [
              "release_date"
            ],
            "default": []
          },
          "foreignKeys": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/ForeignKey"
            },
            "description": "Foreign keys to use for cross-index filtering search.",
            "example": [
              {
                "foreignIndexUid": "products",
                "fieldName": "productId"
              }
            ]
          },
          "rankingRules": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "[Ranking rules](https://www.meilisearch.com/docs/learn/relevancy/ranking_rules) in order of importance. Built-in rules and custom sort rules (`attribute:asc` or `attribute:desc`).",
            "example": [
              "words",
              "typo",
              "proximity",
              "attributeRank",
              "sort",
              "wordPosition",
              "exactness"
            ],
            "default": [
              "words",
              "typo",
              "proximity",
              "attributeRank",
              "sort",
              "wordPosition",
              "exactness"
            ]
          },
          "stopWords": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Words ignored when present in search queries.",
            "example": [
              "the",
              "a"
            ],
            "default": []
          },
          "nonSeparatorTokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Characters that are not treated as word separators. Removed from the default separator set.",
            "example": [
              "@",
              "#"
            ],
            "default": []
          },
          "separatorTokens": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Characters that delimit words. Added on top of the default separators.",
            "example": [
              "|"
            ],
            "default": []
          },
          "dictionary": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Strings Meilisearch parses as a single term. Useful for names or domain terms.",
            "example": [
              "J. R. R."
            ],
            "default": []
          },
          "synonyms": {
            "type": [
              "object",
              "null"
            ],
            "description": "Pairs of words or phrases treated as equivalent for search. Key maps to an array of [synonyms](https://www.meilisearch.com/docs/learn/relevancy/synonyms).",
            "default": {},
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "propertyNames": {
              "type": "string"
            },
            "example": {
              "phone": [
                "iPhone"
              ]
            }
          },
          "distinctAttribute": {
            "type": [
              "string",
              "null"
            ],
            "description": "Field whose value must be unique in the returned documents. One document per distinct value. See [distinct attribute](https://www.meilisearch.com/docs/learn/relevancy/distinct_attribute).",
            "example": "sku"
          },
          "proximityPrecision": {
            "type": [
              "string",
              "null"
            ],
            "description": "Precision for the proximity ranking rule and phrase search: `byWord` (exact distance) or `byAttribute` (same attribute).",
            "default": "byWord",
            "example": "byWord"
          },
          "typoTolerance": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/TypoSettings",
                "description": "[Typo tolerance](https://www.meilisearch.com/docs/learn/relevancy/typo_tolerance_settings): enable/disable, minimum word length for typos, and where to disable it."
              }
            ],
            "default": {
              "enabled": true,
              "minWordSizeForTypos": {
                "oneTypo": 5,
                "twoTypos": 9
              },
              "disableOnWords": [],
              "disableOnAttributes": [],
              "disableOnNumbers": false
            }
          },
          "faceting": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/FacetingSettings",
                "description": "Related to [faceting](https://www.meilisearch.com/docs/learn/filtering_and_sorting/search_with_facet_filters): max facet values per facet and how facet values are sorted."
              }
            ],
            "default": {
              "maxValuesPerFacet": 100,
              "sortFacetValuesBy": {
                "*": "alpha"
              }
            }
          },
          "pagination": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PaginationSettings",
                "description": "Related to [pagination](https://www.meilisearch.com/docs/guides/front_end/pagination): maximum number of results a search can return."
              }
            ],
            "default": {
              "maxTotalHits": 1000
            }
          },
          "embedders": {
            "type": [
              "object",
              "null"
            ],
            "description": "[Embedders](https://www.meilisearch.com/docs/learn/ai_powered_search/getting_started_with_ai_search) used for semantic and [hybrid search](https://www.meilisearch.com/docs/learn/ai_powered_search/getting_started_with_ai_search). Map of embedder name to config (`source`, `model`, `documentTemplate`, etc.).",
            "default": {},
            "additionalProperties": {
              "$ref": "#/components/schemas/EmbeddingSettings"
            },
            "propertyNames": {
              "type": "string"
            },
            "example": {
              "default": {
                "source": "openAi",
                "model": "text-embedding-3-small",
                "documentTemplate": "{{doc.title}}: {{doc.overview}}"
              }
            }
          },
          "searchCutoffMs": {
            "type": [
              "integer",
              "null"
            ],
            "format": "u-int64",
            "description": "Maximum duration of a search in milliseconds. If reached, the search stops and returns results computed so far. When null, 1500 ms is used.",
            "example": 1500,
            "minimum": 0
          },
          "localizedAttributes": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/LocalizedAttributesRuleView"
            },
            "description": "Locales and attribute patterns for [language-specific tokenization](https://www.meilisearch.com/docs/learn/resources/language). Affects searchable, filterable, and sortable attributes.",
            "example": [
              {
                "locales": [
                  "jpn"
                ],
                "attributePatterns": [
                  "*_ja"
                ]
              }
            ],
            "default": []
          },
          "facetSearch": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "When true, [facet search](https://www.meilisearch.com/docs/learn/filtering_and_sorting/search_with_facet_filters) is enabled. When false, the facet-search endpoint is disabled.",
            "default": true,
            "example": true
          },
          "prefixSearch": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/PrefixSearchSettings",
                "description": "When to compute prefix matches: `indexingTime` or `disabled`. `disabled` speeds up indexing but reduces relevancy."
              }
            ],
            "default": "indexingTime"
          },
          "chat": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ChatSettings",
                "description": "[Chat (conversation)](https://www.meilisearch.com/docs/learn/chat/getting_started_with_chat) settings: index description, document template, and search parameters used when the LLM queries this index."
              }
            ],
            "default": {}
          }
        }
      },
      "Shard": {
        "type": "object",
        "description": "Configuration for a named shard of the network\n\nDocuments are distributed among the various declared shards.\nRemotes own shards, meaning they own the documents that belong to these shards.",
        "properties": {
          "remotes": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "List of remotes that own this shard.\n\n- The remotes must be part of the network's configuration\n- Setting this to a non-`null` value will replace all existing remotes for this shard.\n- `addRemotes` and `removeRemotes` are applied after `remotes` if multiple options are present.",
            "uniqueItems": true
          },
          "addRemotes": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Remotes to add to the list of owners of this shard.\n\n- The remotes must be part of the network's configuration\n- Setting this to non-`null` will append the listed remotes to the list of owners of this shard.\n- `remotes` is applied before `addRemotes`\n- `removeRemotes` is applied after `addRemotes`",
            "uniqueItems": true
          },
          "removeRemotes": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Remotes to remove from the list of owners of this shard.\n\n- The remotes may or may not be part of the network's configuration\n- Setting this to non-`null` will remove the listed remotes from the list of owners of this shard.\n- `remotes` and `addRemotes` are applied before `removeRemotes`\n- Remotes removed from the configuration are automatically removed from all shards and it is not necessary\n  to explicitly pass them as `removeRemotes`.",
            "uniqueItems": true
          }
        },
        "additionalProperties": false
      },
      "SimilarQuery": {
        "type": "object",
        "description": "Request body for similar document search",
        "required": [
          "id",
          "embedder"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Document ID to find similar documents for"
          },
          "offset": {
            "type": "integer",
            "description": "Number of documents to skip",
            "default": 0,
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "description": "Maximum number of documents returned",
            "default": 20,
            "minimum": 0
          },
          "filter": {
            "description": "Filter queries by an attribute's value"
          },
          "embedder": {
            "type": "string",
            "description": "Name of the embedder to use for semantic similarity"
          },
          "attributesToRetrieve": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Attributes to display in the returned documents",
            "uniqueItems": true
          },
          "retrieveVectors": {
            "type": "boolean",
            "description": "Return document vector data"
          },
          "showRankingScore": {
            "type": "boolean",
            "description": "Display the global ranking score of a document"
          },
          "showRankingScoreDetails": {
            "type": "boolean",
            "description": "Adds a detailed global ranking score field"
          },
          "showPerformanceDetails": {
            "type": "boolean",
            "description": "Adds a detailed performance details field"
          },
          "rankingScoreThreshold": {
            "type": "number",
            "format": "double",
            "description": "Excludes results with low ranking scores"
          }
        }
      },
      "SimilarResult": {
        "allOf": [
          {
            "$ref": "#/components/schemas/HitsInfo",
            "description": "Pagination information"
          },
          {
            "type": "object",
            "required": [
              "hits",
              "id",
              "processingTimeMs"
            ],
            "properties": {
              "hits": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/SearchHit"
                },
                "description": "Results of the query"
              },
              "id": {
                "type": "string",
                "description": "Document ID that was used as reference"
              },
              "processingTimeMs": {
                "type": "integer",
                "description": "Processing time of the query in milliseconds",
                "minimum": 0
              },
              "performanceDetails": {
                "description": "Performance details of the query"
              }
            }
          }
        ],
        "description": "Response containing similar documents"
      },
      "Size": {
        "oneOf": [
          {
            "type": "integer",
            "format": "u-int64",
            "description": "Size as an integer, in bytes",
            "minimum": 0
          },
          {
            "type": "string",
            "description": "Size as a human-readable string with an appropriate unit."
          }
        ]
      },
      "SizeFormat": {
        "type": "string",
        "enum": [
          "human",
          "raw"
        ]
      },
      "Stats": {
        "type": "object",
        "description": "Global statistics for the Meilisearch instance",
        "required": [
          "databaseSize",
          "usedDatabaseSize",
          "indexes"
        ],
        "properties": {
          "databaseSize": {
            "$ref": "#/components/schemas/Size",
            "description": "Total disk space used by the database in bytes"
          },
          "usedDatabaseSize": {
            "$ref": "#/components/schemas/Size",
            "description": "Actual size of the data in the database in bytes"
          },
          "lastUpdate": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Date of the last update in RFC 3339 format. Null if no update has been\nprocessed"
          },
          "indexes": {
            "type": "object",
            "description": "Statistics for each index",
            "additionalProperties": {
              "$ref": "#/components/schemas/IndexStats"
            },
            "propertyNames": {
              "type": "string"
            }
          }
        }
      },
      "Status": {
        "type": "string",
        "description": "The status of a task.",
        "enum": [
          "enqueued",
          "processing",
          "succeeded",
          "failed",
          "canceled"
        ],
        "example": "processing"
      },
      "Stop": {
        "oneOf": [
          {
            "type": "string"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        ],
        "description": "Up to 4 sequences where the API will stop generating further tokens."
      },
      "SubEmbeddingSettings": {
        "type": "object",
        "description": "Sub-embedder config for composite embedders. Used by `indexingEmbedder` (vectorize documents at index time) and `searchEmbedder` (vectorize queries at search time). Same fields as a top-level embedder, except no `binaryQuantized`, `distribution`, `documentTemplate`/`documentTemplateMaxBytes` for searchEmbedder.",
        "properties": {
          "source": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/EmbedderSource",
                "description": "Embedding provider.\n\n- `openAi`: integration with OpenAI. Use `rest` for OpenAI-like APIs.\n- `huggingFace`: download a model from [Hugging Face](https://huggingface.co/), then compute embeddings on the local CPU/GPU.\n- `ollama`: integration with [ollama](https://ollama.com/).\n- `rest`: configurable integration with a remote embedder via its REST API.\n- `userProvided`: manually provide embeddings in documents.\n\n- Determines which other fields are required or allowed.\n- 🏗️ Changing the value of this parameter always regenerates embeddings."
              }
            ],
            "default": "openAi"
          },
          "model": {
            "type": [
              "string",
              "null"
            ],
            "description": "Model name.\n\n- Available for `openAi`, `huggingFace`, `ollama`.\n- Mandatory for `ollama`.\n- For `openAi`/`huggingFace` optional with defaults.\n- 🏗️ Changing the value of this parameter always regenerates embeddings.",
            "example": "text-embedding-3-small"
          },
          "revision": {
            "type": [
              "string",
              "null"
            ],
            "description": "Model revision (e.g. Hugging Face commit SHA).\n\n- Only available for `huggingFace`.\n- If unset, latest is used.\n- 🏗️ Changing the value of this parameter always regenerates embeddings",
            "example": "617ca489d9e86b49b8167676d8220688b99db36e"
          },
          "pooling": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/OverridePooling",
                "description": "Pooling method when computing embedding locally.\n\n- Only available for `huggingFace`.\n- `useModel`: automatically determine the pooling method depending on the chosen model (recommended).\n- `forceMean`: always use mean pooling.\n- `forceCls`: always use CLS pooling.\n- 🏗️ Changing the value of this parameter always regenerates embeddings"
              }
            ],
            "default": "useModel"
          },
          "apiKey": {
            "type": [
              "string",
              "null"
            ],
            "description": "API key sent to the embedder.\n\n- If not set for source `openAi`, the key is read from the `OPENAI_API_KEY` then `MEILI_OPENAI_API_KEY` environment variables.\n- If not set for other sources, no bearer token is sent.\n- This setting is partially hidden when returned by the settings\n- 🌱 Changing the value of this parameter never regenerates embeddings",
            "example": "your-api-key"
          },
          "dimensions": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Number of dimensions of the embedding vectors.\n\n- Available for `userProvided`, `openAi`, `ollama`, `rest`.\n- Mandatory for `userProvided`.\n- For `openAi`/`ollama`/`rest` inferred if omitted.\n- 🏗️ For `openAi`, changing the value of this parameter always regenerates embeddings\n- 🌱 For other sources, changing the value of this parameter never regenerates embeddings",
            "example": 1536,
            "minimum": 0
          },
          "documentTemplate": {
            "type": [
              "string",
              "null"
            ],
            "description": "[Liquid template](https://shopify.github.io/liquid/) to build the text sent to the embedder for each document.\n\n- Only available for `indexingEmbedder`, not `searchEmbedder`.\n- Available for `openAi`, `huggingFace`, `ollama`, `rest`.\n- 🏗️ When modified, embeddings are regenerated for documents whose rendering through the template produces a different text.",
            "example": "{{doc.title}}: {{doc.overview}}"
          },
          "documentTemplateMaxBytes": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Max size in bytes of the rendered document template.\n\nLonger output is truncated.\n\n- Only available for `indexingEmbedder`, not `searchEmbedder`.\n- Available for `openAi`, `huggingFace`, `ollama`, `rest`.\n- 🏗️ When increased, embeddings are regenerated for documents whose rendering through the template produces a different text.\n- 🌱 When decreased, embeddings are never regenerated",
            "default": 400,
            "example": 400,
            "minimum": 0
          },
          "url": {
            "type": [
              "string",
              "null"
            ],
            "description": "URL of the embedder API.\n\n- Mandatory for `rest`. Optional for `openAi` and `ollama`.\n- 🌱 When modified for `openAi``, embeddings are never regenerated\n- 🏗️ When modified for `ollama` and `rest`, embeddings are always regenerated\n- If targetting URL resolving to a non-global IP (such as `localhost`), make sure that\n  `--experimental-allowed-ip-networks` allows it. For details on how use this parameter,\n  refer to [this documentation](https://www.meilisearch.com/docs/learn/self_hosted/configure_meilisearch_at_launch#allow-requests-to-private-networks).",
            "example": "http://localhost:11434/api/embeddings"
          },
          "indexingFragments": {
            "type": [
              "object",
              "null"
            ],
            "description": "Fragments (with [Liquid](https://shopify.github.io/liquid/)) sent to the embedder at indexing time.\n\nFor `rest` with multimodal; key is fragment name, value the payload.\n\nSee also [Image search with multimodal embeddings](https://www.meilisearch.com/docs/learn/ai_powered_search/image_search_with_multimodal_embeddings)\n\n- Only available for `indexingEmbedder`, not `searchEmbedder`.\n- 🏗️ When a fragment is deleted by passing `null` to its name, the corresponding embeddings are removed from documents.\n- 🏗️ When a fragment is modified, the corresponding embeddings are regenerated if their rendered version changes.",
            "default": {},
            "additionalProperties": {},
            "propertyNames": {
              "type": "string"
            }
          },
          "searchFragments": {
            "type": [
              "object",
              "null"
            ],
            "description": "Fragments (with [Liquid](https://shopify.github.io/liquid/)) sent to the embedder at search time.\n\nFor `rest` with multimodal.\n\nSee also [Image search with multimodal embeddings](https://www.meilisearch.com/docs/learn/ai_powered_search/image_search_with_multimodal_embeddings)\n\n- 🌱 Changing the value of this parameter never regenerates embeddings",
            "default": {},
            "additionalProperties": {},
            "propertyNames": {
              "type": "string"
            }
          },
          "request": {
            "description": "Request body template for `rest` embedder.\n\nSee also [Configure a REST embedder](https://www.meilisearch.com/docs/learn/ai_powered_search/configure_rest_embedder)\n\n- Use `\"{{text}}\"` for the input.\n- Mandatory for `rest`.\n- 🏗️ Changing the value of this parameter always regenerates embeddings"
          },
          "response": {
            "description": "Response template for `rest` embedder.\n\nSee also [Configure a REST embedder](https://www.meilisearch.com/docs/learn/ai_powered_search/configure_rest_embedder)\n\n- Use `\"{{embedding}}\"` where the embedding array is.\n- Mandatory for `rest`."
          },
          "headers": {
            "type": [
              "object",
              "null"
            ],
            "description": "Extra HTTP headers sent to the embedder.\n\n- Available for `rest`.\n- 🌱 Changing the value of this parameter never regenerates embeddings",
            "additionalProperties": {
              "type": "string"
            },
            "propertyNames": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "SummarizedTaskView": {
        "type": "object",
        "description": "A summarized view of a task, returned when a task is enqueued",
        "required": [
          "taskUid",
          "status",
          "type",
          "enqueuedAt"
        ],
        "properties": {
          "taskUid": {
            "type": "integer",
            "format": "u-int32",
            "description": "Unique sequential identifier of the task.",
            "minimum": 0
          },
          "indexUid": {
            "type": [
              "string",
              "null"
            ],
            "description": "Unique identifier of the targeted index. Null for global tasks."
          },
          "status": {
            "$ref": "#/components/schemas/Status",
            "description": "Status of the task. Possible values are `enqueued`, `processing`,\n`succeeded`, `failed`, and `canceled`."
          },
          "type": {
            "$ref": "#/components/schemas/Kind",
            "description": "Type of operation performed by the task."
          },
          "enqueuedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the task was enqueued."
          },
          "customMetadata": {
            "type": [
              "string",
              "null"
            ],
            "description": "Custom metadata attached to this task at creation. Use it to associate\ntasks with external systems or add application-specific information."
          }
        }
      },
      "SwapIndexesPayload": {
        "type": "object",
        "description": "Request body for swapping two indexes",
        "required": [
          "indexes"
        ],
        "properties": {
          "indexes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IndexUid"
            },
            "description": "Array of the two index names to be swapped"
          },
          "rename": {
            "type": "boolean",
            "description": "If true, rename the first index to the second instead of swapping"
          }
        },
        "additionalProperties": false
      },
      "TaskCompactionSummary": {
        "type": "object",
        "required": [
          "status"
        ],
        "properties": {
          "preSize": {
            "type": "string",
            "description": "Size of the task queue database before compaction."
          },
          "postSize": {
            "type": "string",
            "description": "Size of the task queue database after compaction."
          },
          "status": {
            "$ref": "#/components/schemas/Status",
            "description": "Outcome of the compaction operation."
          },
          "actionRequired": {
            "type": [
              "string",
              "null"
            ],
            "description": "Follow-up action required after a successful compaction."
          },
          "errorMessage": {
            "type": [
              "string",
              "null"
            ],
            "description": "Error message if compaction failed."
          }
        }
      },
      "TaskView": {
        "type": "object",
        "description": "Represents the current state and details of an asynchronous task.\n\nTasks are created when you perform operations like adding documents,\nupdating settings, or creating indexes. Use this view to monitor task\nprogress and check for errors.",
        "required": [
          "uid",
          "status",
          "type",
          "enqueuedAt"
        ],
        "properties": {
          "uid": {
            "type": "integer",
            "format": "u-int32",
            "description": "The unique sequential identifier assigned to this task. Task UIDs are\nassigned in order of creation and can be used to retrieve specific\ntask information or track task dependencies.",
            "example": 4312,
            "minimum": 0
          },
          "batchUid": {
            "type": [
              "integer",
              "null"
            ],
            "format": "u-int32",
            "description": "The unique identifier of the batch that processed this task. Multiple\ntasks may share the same batch UID if they were processed together\nfor efficiency. This is `null` for tasks that haven't been processed.",
            "example": 12,
            "minimum": 0
          },
          "indexUid": {
            "type": [
              "string",
              "null"
            ],
            "description": "The unique identifier of the index this task operates on. This is\n`null` for global tasks like `dumpCreation` or `taskDeletion` that\ndon't target a specific index."
          },
          "status": {
            "$ref": "#/components/schemas/Status",
            "description": "The current processing status of the task. Possible values are:\n`enqueued` (waiting), `processing` (executing), `succeeded`,\n`failed`, or `canceled`."
          },
          "type": {
            "$ref": "#/components/schemas/Kind",
            "description": "The type of operation this task performs. Examples include\n`documentAdditionOrUpdate`, `documentDeletion`, `settingsUpdate`,\n`indexCreation`, `indexDeletion`, `dumpCreation`, etc."
          },
          "canceledBy": {
            "type": [
              "integer",
              "null"
            ],
            "format": "u-int32",
            "description": "If this task was canceled, this field contains the UID of the\n`taskCancelation` task that canceled it. This is `null` for tasks\nthat were not canceled.",
            "example": 4326,
            "minimum": 0
          },
          "details": {
            "type": [
              "object",
              "null"
            ],
            "description": "Contains type-specific information about the task, such as the number\nof documents processed, settings that were applied, or filters that\nwere used. The structure varies depending on the task type."
          },
          "error": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ResponseError",
                "description": "If the task failed, this field contains detailed error information\nincluding an error message, error code, error type, and a link to\ndocumentation. This is `null` for tasks that succeeded or are still\nprocessing."
              }
            ]
          },
          "duration": {
            "type": [
              "string",
              "null"
            ],
            "description": "The total time spent processing this task, formatted as an ISO-8601\nduration (e.g., `PT0.5S` for 0.5 seconds). This is `null` for tasks\nthat haven't finished processing yet.",
            "example": null
          },
          "enqueuedAt": {
            "type": "string",
            "description": "The timestamp when this task was added to the queue, formatted as an\nRFC 3339 date-time string. All tasks have an enqueued timestamp as\nit's set when the task is created.",
            "example": "2024-08-08_14:12:09.393Z"
          },
          "startedAt": {
            "type": "string",
            "description": "The timestamp when Meilisearch began processing this task, formatted\nas an RFC 3339 date-time string. This is `null` for tasks that are\nstill in the queue waiting to be processed.",
            "example": "2024-08-08_14:12:09.393Z"
          },
          "finishedAt": {
            "type": "string",
            "description": "The timestamp when this task finished processing (whether successfully\nor with an error), formatted as an RFC 3339 date-time string. This is\n`null` for tasks that haven't finished yet.",
            "example": "2024-08-08_14:12:09.393Z"
          },
          "network": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/DbTaskNetwork",
                "description": "Network topology information for distributed deployments. Contains\ndetails about which nodes are involved in processing this task. This\nis only present when running Meilisearch in a distributed config."
              }
            ]
          },
          "customMetadata": {
            "type": [
              "string",
              "null"
            ],
            "description": "Custom metadata string that was attached to this task when it was\ncreated. This can be used to associate tasks with external systems,\ntrack task origins, or add any application-specific information."
          }
        }
      },
      "TimeCondition": {
        "type": "object",
        "properties": {
          "start": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Start of the time range where this rule can be considered active.\n\nSpecify as a RFC3339 datetime."
          },
          "end": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "End of the time range where this rule can be considered active.\n\nSpecify as a RFC3339 datetime."
          }
        }
      },
      "TopLogprobs": {
        "type": "object",
        "description": "A most likely token and its log probability at a given position.",
        "required": [
          "token",
          "logprob"
        ],
        "properties": {
          "token": {
            "type": "string",
            "description": "The token."
          },
          "logprob": {
            "type": "number",
            "format": "float",
            "description": "The log probability of this token."
          },
          "bytes": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "integer",
              "format": "u-int8",
              "minimum": 0
            },
            "description": "A list of integers representing the UTF-8 bytes representation of the token. Useful in instances where characters are represented by multiple tokens and their byte representations must be combined to generate the correct text representation. Can be `null` if there is no bytes representation for the token."
          }
        }
      },
      "TypoSettings": {
        "type": "object",
        "description": "Typo tolerance: how spelling mistakes in queries are handled.",
        "properties": {
          "enabled": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "When true, typo tolerance is enabled. When false, only exact matches are returned.",
            "default": true,
            "example": true
          },
          "minWordSizeForTypos": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MinWordSizeTyposSetting",
                "description": "Minimum word length before typos are allowed. Contains `oneTypo` (min length for 1 typo) and `twoTypos` (min length for 2 typos). Example: `{ \"oneTypo\": 5, \"twoTypos\": 9 }`."
              }
            ],
            "default": {
              "oneTypo": 5,
              "twoTypos": 9
            }
          },
          "disableOnWords": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Words for which typo tolerance is disabled. Use for brand names or terms that must match exactly.",
            "example": [
              "iPhone",
              "phone"
            ],
            "default": [],
            "uniqueItems": true
          },
          "disableOnAttributes": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Attributes for which typo tolerance is disabled. Those attributes only return exact matches. Useful for fields like product codes or IDs.",
            "example": [
              "uuid",
              "url"
            ],
            "default": [],
            "uniqueItems": true
          },
          "disableOnNumbers": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "When true, typo tolerance is disabled on numeric tokens. For example, 123 will not match 132.",
            "default": false,
            "example": false
          }
        }
      },
      "Unchecked": {
        "default": null
      },
      "UpdateIndexRequest": {
        "type": "object",
        "description": "Request body for updating an existing index",
        "properties": {
          "primaryKey": {
            "type": [
              "string",
              "null"
            ],
            "description": "New [primary key](https://www.meilisearch.com/docs/learn/getting_started/primary_key) of the index"
          },
          "uid": {
            "type": [
              "string",
              "null"
            ],
            "description": "New uid for the index (for renaming)"
          }
        },
        "additionalProperties": false
      },
      "UpdateStderrLogs": {
        "type": "object",
        "description": "Request body for updating stderr log configuration",
        "properties": {
          "target": {
            "type": "string",
            "description": "Log targets to filter. Format: code_part=log_level (e.g.,\nmilli=trace,actix_web=off)",
            "default": "info",
            "example": "milli=trace,index_scheduler,actix_web=off"
          }
        }
      },
      "Vec": {
        "type": "array",
        "items": {
          "type": "number",
          "format": "float"
        }
      },
      "VersionResponse": {
        "type": "object",
        "required": [
          "commitSha",
          "commitDate",
          "pkgVersion"
        ],
        "properties": {
          "commitSha": {
            "type": "string",
            "description": "The commit used to compile this build of Meilisearch."
          },
          "commitDate": {
            "type": "string",
            "description": "The date of this build."
          },
          "pkgVersion": {
            "type": "string",
            "description": "The version of Meilisearch."
          }
        }
      },
      "WebhookResults": {
        "type": "object",
        "description": "Response containing a list of all registered webhooks.",
        "required": [
          "results"
        ],
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WebhookWithMetadataRedactedAuthorization"
            },
            "description": "All webhooks configured on the instance. Each entry includes UUID, URL, headers (authorization redacted), and editability."
          }
        }
      },
      "WebhookSettings": {
        "type": "object",
        "description": "Configuration for a webhook endpoint",
        "properties": {
          "url": {
            "type": [
              "string",
              "null"
            ],
            "description": "URL endpoint to call when tasks complete.",
            "example": "https://your.site/on-tasks-completed"
          },
          "headers": {
            "type": [
              "object",
              "null"
            ],
            "description": "HTTP headers to include in webhook requests.",
            "additionalProperties": {
              "type": "string"
            },
            "propertyNames": {
              "type": "string"
            },
            "example": {
              "Authorization": "Bearer a-secret-token"
            }
          }
        }
      },
      "WebhookWithMetadataRedactedAuthorization": {
        "allOf": [
          {
            "$ref": "#/components/schemas/WebhookSettings",
            "description": "URL and headers. Authorization header values are redacted in the response."
          },
          {
            "type": "object",
            "required": [
              "uuid",
              "isEditable"
            ],
            "properties": {
              "uuid": {
                "type": "string",
                "format": "uuid",
                "description": "Unique identifier of the webhook."
              },
              "isEditable": {
                "type": "boolean",
                "description": "Whether the webhook can be edited."
              }
            }
          }
        ],
        "description": "Webhook object with metadata and redacted authorization headers."
      },
      "u32": {
        "type": "integer",
        "format": "u-int32",
        "minimum": 0
      }
    },
    "securitySchemes": {
      "Bearer": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "Uuidv4, string or JWT",
        "description": "An API key is a token that you provide when making API calls. Read more about [how to secure your project](https://www.meilisearch.com/docs/learn/security/basic_security).\n\nInclude the API key to the `Authorization` header, for instance:\n```bash\n-H 'Authorization: Bearer 6436fc5237b0d6e0d64253fbaac21d135012ecf1'\n```\n\nIf you use a SDK, ensure you instantiate the client with the API key, for instance with [JS SDK](https://github.com/meilisearch/meilisearch-js):\n```js\nconst client = new MeiliSearch({\n  host: 'MEILISEARCH_URL',\n  apiKey: '6436fc5237b0d6e0d64253fbaac21d135012ecf1'\n});\n```"
      }
    }
  },
  "tags": [
    {
      "name": "Stats",
      "description": "Stats gives extended information and metrics about indexes and the Meilisearch database."
    },
    {
      "name": "Health",
      "description": "The health check endpoint enables you to periodically test the health of your Meilisearch instance."
    },
    {
      "name": "Version",
      "description": "Returns the version of the running Meilisearch instance."
    },
    {
      "name": "Backups",
      "description": "Meilisearch offers two types of backups: snapshots and dumps. Snapshots are mainly intended as a safeguard, while dumps are useful when migrating Meilisearch."
    },
    {
      "name": "Export",
      "description": "Export documents and settings from this instance to a remote Meilisearch server."
    },
    {
      "name": "Async task management",
      "description": "Routes for listing and managing batches and tasks (asynchronous operations)."
    },
    {
      "name": "Chats",
      "description": "The `/chats` route allows you to manage chat workspaces."
    },
    {
      "name": "Tasks",
      "description": "The tasks route gives information about the progress of the [asynchronous operations](https://docs.meilisearch.com/learn/advanced/asynchronous_operations.html)."
    },
    {
      "name": "Batches",
      "description": "Meilisearch groups compatible tasks ([asynchronous operations](https://www.meilisearch.com/docs/learn/async/asynchronous_operations)) into batches for efficient processing. For example, multiple document additions to the same index may be batched together. The /batches routes give information about the progress of these batches and let you monitor batch progress and performance."
    },
    {
      "name": "Indexes",
      "description": "An index is an entity that gathers a set of [documents](https://www.meilisearch.com/docs/learn/getting_started/documents) with its own [settings](https://www.meilisearch.com/docs/reference/api/settings). Learn more about indexes."
    },
    {
      "name": "Documents",
      "description": "Documents are objects composed of fields that can store any type of data. Each field contains an attribute and its associated value. Documents are stored inside [indexes](https://www.meilisearch.com/docs/learn/getting_started/indexes)."
    },
    {
      "name": "Facet Search",
      "description": "The `/facet-search` route allows you to search for facet values within a given facet attribute.\n\nFacet search supports prefix search and typo tolerance. Results are sorted lexicographically in ascending order by default. You can configure sort order using the `sortFacetValuesBy` property of the faceting index settings.\n\n**Note:** Facet search does not support multi-word queries. Only the first word of `facetQuery` is considered. For example, searching for `Jane` returns `Jane Austen`, but searching for `Austen` does not.\n\n**Note:** Meilisearch does not support facet search on numeric values. Convert numeric facets to strings to make them searchable.\n\n**Prerequisite:** The `facetName` attribute must be in the index's `filterableAttributes` list before facet search can be used."
    },
    {
      "name": "Similar documents",
      "description": "The /similar route uses AI-powered search to return a number of documents similar to a target document.\n\nMeilisearch exposes two routes for retrieving similar documents: POST and GET. In the majority of cases, POST will offer better performance and ease of use."
    },
    {
      "name": "Settings",
      "description": "Configure search and index behavior. Update all settings at once via PATCH /indexes/{indexUid}/settings, or use a sub-route to get, update, or reset a single setting."
    },
    {
      "name": "Search",
      "description": "Meilisearch exposes two routes to perform searches:\n\n- A POST route: this is the preferred route when using API authentication, as it allows [preflight request](https://developer.mozilla.org/en-US/docs/Glossary/Preflight_request) caching and better performance.\n- A GET route: the usage of this route is discouraged, unless you have good reason to do otherwise (specific caching abilities for example)",
      "externalDocs": {
        "url": "https://www.meilisearch.com/docs/reference/api/search",
        "description": "Search API reference"
      }
    },
    {
      "name": "Keys",
      "description": "Manage API `keys` for a Meilisearch instance. Each key has a given set of permissions.\nYou must have the master key or the default admin key to access the keys route. More information about the keys and their rights.\nAccessing any route under `/keys` without having set a master key will result in an error."
    },
    {
      "name": "Logs",
      "description": "Everything about retrieving or customizing logs.\nCurrently [experimental](https://www.meilisearch.com/docs/learn/experimental/overview)."
    },
    {
      "name": "Multi-search",
      "description": "The `/multi-search` route allows you to perform multiple search queries on one or more indexes by bundling them into a single HTTP request. Multi-search is also known as federated search."
    },
    {
      "name": "Experimental features",
      "description": "The `/experimental-features` route allows you to activate or deactivate some of Meilisearch's experimental features.\n\nThis route is **synchronous**. This means that no task object will be returned, and any activated or deactivated features will be made available or unavailable immediately."
    },
    {
      "name": "Network",
      "description": "The `/network` route allows you to describe the topology of a network of Meilisearch instances.\n\nThis route is **synchronous**. This means that no task object will be returned, and any change to the network will be made available immediately."
    },
    {
      "name": "Webhooks",
      "description": "The `/webhooks` route allows you to register endpoints to be called once tasks are processed."
    },
    {
      "name": "Search rules",
      "description": "The `/dynamic-search-rules` route allows you to configure search rules."
    },
    {
      "name": "Render templates",
      "description": "The /render-template route allows rendering templates used by Meilisearch.",
      "externalDocs": {
        "url": "https://www.meilisearch.com/docs/reference/api/render-template",
        "description": "Render template API reference"
      }
    }
  ]
}