diff --git a/.code-samples.meilisearch.yaml b/.code-samples.meilisearch.yaml
index 6095601cf1..345b4e1d8b 100644
--- a/.code-samples.meilisearch.yaml
+++ b/.code-samples.meilisearch.yaml
@@ -1576,3 +1576,8 @@ multi_search_remote_federated_1: |-
}
}
]
+# post_indexes_indexUid_fields
+list_index_fields_1: |-
+ curl \
+ -X POST 'MEILISEARCH_URL/indexes/INDEX_NAME/fields' \
+ -H 'Content-Type: application/json'
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000000..9bed1fc03b
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,13 @@
+## Description
+
+
+
+## Checklist
+
+For internal Meilisearch team member only:
+- [ ] I checked and followed our [internal guidelines](https://www.notion.so/meilisearch/Updating-docs-for-engineers-3034b06b651f808da3c6c4f5e34914fc?source=copy_link)
+- [ ] ⚠️ I updated the code samples according to our [internal guidelines](https://www.notion.so/meilisearch/Updating-docs-for-engineers-3034b06b651f808da3c6c4f5e34914fc?source=copy_link#3034b06b651f8026bd63cfa294dfa0c6)
+
+For external maintainers
+- [ ] Did you use any AI tool while implementing this PR (code, tests, docs, etc.)? If yes, disclose it in the PR description and describe what it was used for. AI usage is allowed when it is disclosed.
+- [ ] Have you made sure that the title is accurate and descriptive of the changes?
diff --git a/.github/workflows/docs-sdk-code-samples-check.yml b/.github/workflows/docs-sdk-code-samples-check.yml
index 22e674e291..4eef0e9960 100644
--- a/.github/workflows/docs-sdk-code-samples-check.yml
+++ b/.github/workflows/docs-sdk-code-samples-check.yml
@@ -1,7 +1,7 @@
# Runs daily and on workflow_dispatch.
# - Job 1: Fails if local code samples are not properly used (route comment → OpenAPI, no comment → snippet in docs).
# - Job 2: Fails if any SDK has code samples not present in the local .code-samples.meilisearch.yaml.
-# - Job 3: Informational only (never fails) – lists local samples missing from each SDK.
+# - Job 3: Informational only (never fails) – lists CodeSamples* import keys missing from each SDK.
name: Check Docs & SDK code sample files
on:
@@ -20,7 +20,7 @@ jobs:
- uses: actions/checkout@v6
- name: Check local code samples are used
- run: node scripts/check-code-samples-usage.mjs
+ run: npm run check-code-samples-usage
# Fails if an SDK's .code-samples.meilisearch.yaml contains keys absent from
# the local .code-samples.meilisearch.yaml (those SDK samples are useless).
@@ -34,10 +34,10 @@ jobs:
run: npm ci
- name: Check for unused SDK code samples
- run: node scripts/check-unused-sdk-samples.mjs
+ run: npm run check-unused-sdk-samples
# Informational only – this job never fails.
- # Lists local samples that are missing from each SDK.
+ # Lists code sample keys referenced by CodeSamples* imports in the docs that are missing from each SDK.
missing-sdk-samples:
name: "[Info only - never fails] Missing SDK code samples"
runs-on: ubuntu-latest
@@ -48,4 +48,4 @@ jobs:
run: npm ci
- name: List missing SDK code samples (informational, never fails)
- run: node scripts/check-missing-sdk-samples.mjs
+ run: npm run check-missing-sdk-samples
diff --git a/.github/workflows/openapi-code-samples-check.yml b/.github/workflows/openapi-code-samples-check.yml
new file mode 100644
index 0000000000..066a1bddc2
--- /dev/null
+++ b/.github/workflows/openapi-code-samples-check.yml
@@ -0,0 +1,34 @@
+# On every push to main, check meilisearch-openapi-mintlify.json for code samples:
+# - Job 1: Ensure every route that has x-codeSamples includes a cURL sample (can fail).
+# - Job 2: Informational only – list routes and all missing code sample languages (never fails).
+name: OpenAPI code samples check
+
+on:
+ workflow_dispatch:
+ push:
+ branches:
+ - main
+
+jobs:
+ # Fails if any route with x-codeSamples has no cURL sample.
+ require-curl-samples:
+ name: Require cURL in x-codeSamples
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v6
+
+ - name: Check routes have cURL in x-codeSamples
+ run: |
+ npm run check-openapi-code-samples -- curl-check assets/open-api/meilisearch-openapi-mintlify.json
+
+ # Informational only: list routes and missing code sample languages.
+ # This job never fails the workflow (information check only).
+ info-missing-code-samples:
+ name: "[Info only - never fails] Missing code samples per route"
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v6
+
+ - name: List routes and missing code samples (informational, never fails)
+ run: |
+ npm run check-openapi-code-samples -- info assets/open-api/meilisearch-openapi-mintlify.json || true
diff --git a/.github/workflows/post-deployment.yml b/.github/workflows/post-deployment.yml
index 5d98a712a6..372feed528 100644
--- a/.github/workflows/post-deployment.yml
+++ b/.github/workflows/post-deployment.yml
@@ -4,15 +4,18 @@ name: Post Deployment
on:
workflow_dispatch:
- # schedule:
- # - cron: '0 23 * * *' # Every day at 11:00 PM UTC
- # push:
- # branches:
- # - 'main'
+ schedule:
+ - cron: '0 23 * * *' # Every day at 11:00 PM UTC
+ push:
+ branches:
+ - 'main'
jobs:
- update-samples:
+ build-code-samples:
+ name: Build code samples
runs-on: ubuntu-latest
+ outputs:
+ run_openapi_automation: ${{ steps.openapi_automation.outputs.run }}
steps:
- name: Checkout repository
@@ -20,6 +23,12 @@ jobs:
with:
token: ${{ secrets.GH_TOKEN }}
+ - name: Get OpenAPI automation flag from docs.json
+ id: openapi_automation
+ run: |
+ value=$(jq -r '.. | select(type == "object" and has("internal-meili-fetch-automation")) | .["internal-meili-fetch-automation"] | select(. != null) | tostring' docs.json 2>/dev/null | head -1)
+ echo "run=${value:-false}" >> "$GITHUB_OUTPUT"
+
- name: Setup Node.js
uses: actions/setup-node@v6
@@ -27,22 +36,119 @@ jobs:
run: npm install
- name: Generate code sample snippets
- run: node scripts/generate-code-sample-snippets.mjs
+ run: npm run generate-code-sample-snippets-file
- name: Check for changes
id: changes
run: |
- echo "has_changes=$(git diff --quiet snippets/ && echo "false" || echo "true")" >> "$GITHUB_ENV"
+ if git diff --quiet snippets/; then
+ echo "has_changes=false" >> "$GITHUB_ENV"
+ else
+ echo "has_changes=true" >> "$GITHUB_ENV"
+ fi
- name: Commit changes
run: |
if [[ $has_changes == "true" ]]; then
echo "There are changes in the Git working directory."
git config user.name "meili-bot"
- git config user.email "meili-bot@meilisearch.com"
+ git config user.email "robot@meilisearch.com"
git add snippets/
- git commit -m "Update code samples"
+ git commit -m "[AUTOMATION POST DEPLOYMENT] Update code samples"
git push origin main
else
echo "No changes in the Git working directory."
fi
+
+ # We need to wait for build-code-samples to commit first so we can push a separate commit
+ # (avoid stacking both changes in one run and keep history clear).
+ # Only runs when docs.json has "internal-meili-fetch-automation": true.
+ # In case of issues with the latest release OpenAPI file: fetch the desired OpenAPI file
+ # manually, then set "internal-meili-fetch-automation" to false to prevent this automation from running.
+ fetch-openapi-file:
+ name: Fetch OpenAPI file from Meilisearch release
+ runs-on: ubuntu-latest
+ needs: build-code-samples
+ if: needs.build-code-samples.outputs.run_openapi_automation == 'true'
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v6
+ with:
+ ref: main
+ token: ${{ secrets.GH_TOKEN }}
+
+ - name: Setup Node.js
+ uses: actions/setup-node@v6
+
+ - name: Fetch latest meilisearch-openapi.json from Meilisearch release
+ run: npm run fetch-meilisearch-openapi-file
+
+ - name: Check for changes
+ id: openapi_changes
+ run: |
+ if git diff --quiet assets/open-api/meilisearch-openapi.json; then
+ echo "has_changes=false" >> "$GITHUB_ENV"
+ else
+ echo "has_changes=true" >> "$GITHUB_ENV"
+ fi
+
+ - name: Commit changes
+ run: |
+ if [[ $has_changes == "true" ]]; then
+ echo "There are changes in the OpenAPI file."
+ git config user.name "meili-bot"
+ git config user.email "robot@meilisearch.com"
+ git add assets/open-api/meilisearch-openapi.json
+ git commit -m "[AUTOMATION POST DEPLOYMENT] Update meilisearch-openapi.json from latest Meilisearch release"
+ git push origin main
+ else
+ echo "No changes in the OpenAPI file."
+ fi
+
+ # Runs after fetch-openapi-file: generate Mintlify OpenAPI file, validate with mint openapi-check, commit if valid.
+ generate-and-check-mintlify-openapi:
+ name: Generate and check Mintlify OpenAPI file
+ runs-on: ubuntu-latest
+ needs: fetch-openapi-file
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v6
+ with:
+ ref: main
+ token: ${{ secrets.GH_TOKEN }}
+
+ - name: Setup Node.js
+ uses: actions/setup-node@v6
+
+ - name: Install dependencies
+ run: npm install && npm install mintlify
+
+ - name: Generate Mintlify OpenAPI file
+ run: npm run generate-mintlify-openapi-file
+
+ - name: Validate OpenAPI with Mintlify CLI
+ run: npx mintlify openapi-check assets/open-api/meilisearch-openapi-mintlify.json
+
+ - name: Check for changes
+ id: mintlify_changes
+ run: |
+ if git diff --quiet assets/open-api/meilisearch-openapi-mintlify.json; then
+ echo "has_changes=false" >> "$GITHUB_ENV"
+ else
+ echo "has_changes=true" >> "$GITHUB_ENV"
+ fi
+
+ - name: Commit changes
+ run: |
+ if [[ $has_changes == "true" ]]; then
+ echo "There are changes in the Mintlify OpenAPI file."
+ git config user.name "meili-bot"
+ git config user.email "robot@meilisearch.com"
+ git add assets/open-api/meilisearch-openapi-mintlify.json
+ git commit -m "[AUTOMATION POST DEPLOYMENT] Update meilisearch-openapi-mintlify.json"
+ git push origin main
+ else
+ echo "No changes in the Mintlify OpenAPI file."
+ fi
diff --git a/.github/workflows/pull-code-samples.yml b/.github/workflows/pull-code-samples.yml
deleted file mode 100644
index 31e647bc17..0000000000
--- a/.github/workflows/pull-code-samples.yml
+++ /dev/null
@@ -1,34 +0,0 @@
-name: Pull Code Samples
-
-on:
- push:
- branches:
- - '**' # Runs on all branches
-
-jobs:
- update-samples:
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout repository
- uses: actions/checkout@v6
-
- - name: Setup Node.js
- uses: actions/setup-node@v6
- with:
- node-version: '18'
- cache: 'npm'
-
- - name: Install dependencies
- run: npm install
-
- - name: Generate code sample snippets
- run: node scripts/generate-code-sample-snippets.mjs
-
- - name: Commit changes
- run: |
- git config --local user.email "github-actions[bot]@users.noreply.github.com"
- git config --local user.name "github-actions[bot]"
- git add snippets/
- git diff --quiet && git diff --staged --quiet || git commit -m "Update code samples [skip ci]"
- git push
diff --git a/assets/open-api/meilisearch-openapi-mintlify.json b/assets/open-api/meilisearch-openapi-mintlify.json
index 89051f2c41..fb99d102a4 100644
--- a/assets/open-api/meilisearch-openapi-mintlify.json
+++ b/assets/open-api/meilisearch-openapi-mintlify.json
@@ -16,7 +16,7 @@
"servers": [
{
"url": "http://localhost:7700",
- "description": "Local server"
+ "description": "Local server."
}
],
"paths": {
@@ -26,13 +26,13 @@
"Async task management"
],
"summary": "List batches",
- "description": "The `/batches` route gives information about the progress of batches of [asynchronous operations](/learn/async/asynchronous_operations).\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.",
+ "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",
+ "description": "Maximum number of batches to return.",
"required": false,
"schema": {
"type": "integer",
@@ -45,7 +45,7 @@
{
"name": "from",
"in": "query",
- "description": "`uid` of the first batch returned",
+ "description": "`uid` of the first batch returned.",
"required": false,
"schema": {
"type": "integer",
@@ -57,7 +57,7 @@
{
"name": "reverse",
"in": "query",
- "description": "If `true`, returns results in the reverse order, from oldest to most recent",
+ "description": "If `true`, returns results in the reverse order, from oldest to most recent.",
"required": false,
"schema": {
"type": "boolean"
@@ -225,7 +225,7 @@
],
"responses": {
"200": {
- "description": "Return the batches",
+ "description": "Returns the batches.",
"content": {
"application/json": {
"schema": {
@@ -268,7 +268,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -331,13 +331,13 @@
"Async task management"
],
"summary": "Get batch",
- "description": "Get a single batch by its unique identifier.\n\nThe `/batches` route gives information about the progress of batches of [asynchronous operations](/learn/async/asynchronous_operations).",
+ "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": "batchUid",
"in": "path",
- "description": "The unique batch id",
+ "description": "The unique batch identifier.",
"required": true,
"schema": {
"type": "string"
@@ -347,7 +347,7 @@
],
"responses": {
"200": {
- "description": "Return the batch",
+ "description": "Returns the batch.",
"content": {
"application/json": {
"schema": {
@@ -381,7 +381,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -395,6 +395,22 @@
}
}
}
+ },
+ "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": [
@@ -444,11 +460,11 @@
"Backups"
],
"summary": "Create dump",
- "description": "Triggers a dump creation process. Once the process is complete, a dump is created in the\n[dump directory](https://www.meilisearch.com/docs/learn/self_hosted/configure_meilisearch_at_launch#dump-directory).\nIf the dump directory does not exist yet, it will be created.",
+ "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",
+ "description": "Dump is being created.",
"content": {
"application/json": {
"schema": {
@@ -465,7 +481,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -544,11 +560,11 @@
"Experimental features"
],
"summary": "List experimental features",
- "description": "Get a list of all experimental features that can be activated via the\n/experimental-features route and whether or not they are currently\nactivated.",
+ "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",
+ "description": "Experimental features are returned.",
"content": {
"application/json": {
"schema": {
@@ -570,7 +586,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -619,11 +635,11 @@
"Experimental features"
],
"summary": "Configure experimental features",
- "description": "Activate or deactivate experimental features.",
+ "description": "Enable or disable experimental features at runtime. Only features that are marked as runtime-togglable can be changed.",
"operationId": "patch_features",
"responses": {
"200": {
- "description": "Experimental features are returned",
+ "description": "Experimental features are returned.",
"content": {
"application/json": {
"schema": {
@@ -645,7 +661,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -693,10 +709,10 @@
"/export": {
"post": {
"tags": [
- "Documents"
+ "Export"
],
"summary": "Export to a remote Meilisearch",
- "description": "Triggers an export process to a remote Meilisearch instance. This allows you to send\ndocuments and settings from the current instance to another Meilisearch server.",
+ "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": {
@@ -710,7 +726,7 @@
},
"responses": {
"202": {
- "description": "Export successfully enqueued",
+ "description": "Export successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -726,7 +742,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -768,11 +784,11 @@
"Health"
],
"summary": "Get health",
- "description": "The health check endpoint enables you to periodically test the health of\nyour Meilisearch instance.",
+ "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.",
"operationId": "get_health",
"responses": {
"200": {
- "description": "Instance is healthy",
+ "description": "Instance is healthy.",
"content": {
"application/json": {
"schema": {
@@ -839,13 +855,13 @@
"Indexes"
],
"summary": "List indexes",
- "description": "List all indexes.",
+ "description": "Return all indexes on the instance.\n\nResults are paginated using `offset` and `limit` query parameters.",
"operationId": "list_indexes",
"parameters": [
{
"name": "offset",
"in": "query",
- "description": "The number of indexes to skip before starting to retrieve anything",
+ "description": "The number of indexes to skip before starting to retrieve anything.",
"required": false,
"schema": {
"type": "integer",
@@ -856,7 +872,7 @@
{
"name": "limit",
"in": "query",
- "description": "The number of indexes to retrieve",
+ "description": "The number of indexes to retrieve.",
"required": false,
"schema": {
"type": "integer",
@@ -868,7 +884,7 @@
],
"responses": {
"200": {
- "description": "Indexes are returned",
+ "description": "Indexes are returned.",
"content": {
"application/json": {
"schema": {
@@ -891,7 +907,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -968,7 +984,7 @@
"Indexes"
],
"summary": "Create index",
- "description": "Create an 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": {
@@ -981,8 +997,8 @@
"required": true
},
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -999,7 +1015,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -1078,13 +1094,13 @@
"Indexes"
],
"summary": "Get index",
- "description": "Get information about an 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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -1094,7 +1110,7 @@
],
"responses": {
"200": {
- "description": "The index is returned",
+ "description": "The index is returned.",
"content": {
"application/json": {
"schema": {
@@ -1110,7 +1126,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -1126,7 +1142,7 @@
}
},
"404": {
- "description": "Index not found",
+ "description": "Index not found.",
"content": {
"application/json": {
"schema": {
@@ -1203,13 +1219,13 @@
"Indexes"
],
"summary": "Delete index",
- "description": "Delete an index.",
+ "description": "Permanently delete an index and all its documents, settings, and task history.",
"operationId": "delete_index",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -1219,7 +1235,7 @@
],
"responses": {
"202": {
- "description": "Task successfully enqueued",
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -1236,7 +1252,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -1250,6 +1266,22 @@
}
}
}
+ },
+ "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": [
@@ -1300,7 +1332,7 @@
},
{
"lang": "Dart",
- "source": "await client.index('movies').delete();\nt_one_document_1: \"await client.index('movies').getDocument(25684,\\n fields: ['id', 'title', 'poster', 'release_date']);\""
+ "source": "await client.index('movies').delete();\nget_one_document_1: \"await client.index('movies').getDocument(25684,\\n fields: ['id', 'title', 'poster', 'release_date']);\""
},
{
"lang": "Swift",
@@ -1313,13 +1345,13 @@
"Indexes"
],
"summary": "Update index",
- "description": "Update the `primaryKey` of an index.\nReturn an error if the index doesn't exists yet or if it contains\ndocuments.",
+ "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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -1339,7 +1371,7 @@
},
"responses": {
"202": {
- "description": "Task successfully enqueued",
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -1356,7 +1388,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -1370,6 +1402,22 @@
}
}
}
+ },
+ "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": [
@@ -1435,13 +1483,13 @@
"Indexes"
],
"summary": "Compact index",
- "description": "Triggers a compaction process on the specified index. Compaction reorganizes the index database to make it smaller and more efficient.",
+ "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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -1451,7 +1499,7 @@
],
"responses": {
"202": {
- "description": "Task successfully enqueued",
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -1459,16 +1507,16 @@
},
"example": {
"taskUid": 147,
- "indexUid": null,
+ "indexUid": "movies",
"status": "enqueued",
- "type": "documentDeletion",
+ "type": "indexCompaction",
"enqueuedAt": "2024-08-08T17:05:55.791772Z"
}
}
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -1482,6 +1530,22 @@
}
}
}
+ },
+ "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": [
@@ -1497,6 +1561,10 @@
"lang": "cURL",
"source": "curl \\\n -X POST 'MEILISEARCH_URL/indexes/INDEX_UID/compact'"
},
+ {
+ "lang": "PHP",
+ "source": "$client->index('movies')->compact();"
+ },
{
"lang": "Python",
"source": "client.index('movies').compact()"
@@ -1509,6 +1577,10 @@
"lang": "Ruby",
"source": "client.index('INDEX_UID').compact"
},
+ {
+ "lang": "Go",
+ "source": "client.Index(\"INDEX_UID\").Compact();"
+ },
{
"lang": "Rust",
"source": "let task: TaskInfo = client\n .index(\"INDEX_UID\")\n .compact()\n .await\n .unwrap();"
@@ -1522,13 +1594,13 @@
"Documents"
],
"summary": "List documents with GET",
- "description": "Get documents by batches.",
+ "description": "Retrieve documents in batches using query parameters for offset, limit, and optional filtering. Suited for browsing or exporting index contents.",
"operationId": "get_documents",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -1610,7 +1682,7 @@
],
"responses": {
"200": {
- "description": "The documents are returned",
+ "description": "The documents are returned.",
"content": {
"application/json": {
"schema": {
@@ -1641,7 +1713,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -1657,7 +1729,7 @@
}
},
"404": {
- "description": "Index not found",
+ "description": "Index not found.",
"content": {
"application/json": {
"schema": {
@@ -1730,13 +1802,13 @@
"Documents"
],
"summary": "Add or update documents",
- "description": "Add a list of documents or update them if they already exist.\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.\nTo completely overwrite a document, see Add or replace documents route.\n> info\n> If the provided index does not exist, it will be created.\n> info\n> Use the reserved `_geo` object to add geo coordinates to a document.\n> `_geo` is an object made of `lat` and `lng` field.\n>\n> When the vectorStore feature is enabled you can use the reserved\n> `_vectors` field in your documents. It can accept an array of floats,\n> multiple arrays of floats in an outer array or an object. This object\n> accepts keys corresponding to the different embedders defined your index\n> settings.",
+ "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\nIf the provided index does not exist, it will be created.\n\nTo completely overwrite a document, see [add or replace documents route](https://docs.meilisearch.com/docs/api-reference/documents/add-or-replace-documents).\n\n> Use the reserved `_geo` object to add geo coordinates to a document.\n> `_geo` is an object made of `lat` and `lng` field.",
"operationId": "update_documents",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -1746,7 +1818,7 @@
{
"name": "primaryKey",
"in": "query",
- "description": "The primary key of the documents. primaryKey is optional. If you want\nto set the primary key of your index through this route, it only has\nto be done the first time you add documents to the index. After which\nit will be ignored if given.",
+ "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"
@@ -1757,7 +1829,7 @@
"name": "csvDelimiter",
"in": "query",
"description": "Customize the csv delimiter when importing CSV documents.",
- "required": true,
+ "required": false,
"schema": {
"type": "string",
"default": ","
@@ -1794,8 +1866,8 @@
"required": true
},
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -1812,7 +1884,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -1826,6 +1898,22 @@
}
}
}
+ },
+ "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": [
@@ -1885,13 +1973,13 @@
"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\ndocument will be overwritten by the new document. Fields previously in the\ndocument not present in the new document are removed.\n\nFor a partial update of the document see Add or update documents route.\n> info\n> If the provided index does not exist, it will be created.\n> info\n> Use the reserved `_geo` object to add geo coordinates to a document.\n> `_geo` is an object made of `lat` and `lng` field.\n>\n> When the vectorStore feature is enabled you can use the reserved\n> `_vectors` field in your documents. It can accept an array of floats,\n> multiple arrays of floats in an outer array or an object. This object\n> accepts keys corresponding to the different embedders defined your index\n> settings.",
+ "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\ndocument will be overwritten by the new document. Fields previously in the\ndocument not present in the new document are removed.\n\nIf the provided index does not exist, it will be created.\n\nFor a partial update of the document see [add or update documents route](https://docs.meilisearch.com/docs/api-reference/documents/add-or-update-documents).\n\n> Use the reserved `_geo` object to add geo coordinates to a document.\n> `_geo` is an object made of `lat` and `lng` field.",
"operationId": "replace_documents",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -1901,7 +1989,7 @@
{
"name": "primaryKey",
"in": "query",
- "description": "The primary key of the documents. primaryKey is optional. If you want\nto set the primary key of your index through this route, it only has\nto be done the first time you add documents to the index. After which\nit will be ignored if given.",
+ "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"
@@ -1912,7 +2000,7 @@
"name": "csvDelimiter",
"in": "query",
"description": "Customize the csv delimiter when importing CSV documents.",
- "required": true,
+ "required": false,
"schema": {
"type": "string",
"default": ","
@@ -1949,8 +2037,8 @@
"required": true
},
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -1967,7 +2055,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -1981,6 +2069,22 @@
}
}
}
+ },
+ "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": [
@@ -2031,7 +2135,7 @@
},
{
"lang": "Dart",
- "source": "await client.index('movies').addDocuments([\n {\n 'id': 287947,\n 'title': 'Shazam',\n 'poster':\n 'https://image.tmdb.org/t/p/w1280/xnopI5Xtky18MPhK40cZAGAOVeV.jpg',\n 'overview':\n '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]);\nd_or_update_documents_1: \"await client.index('movies').updateDocuments([\\n {\\n 'id': 287947,\\n 'title': 'Shazam ⚡️',\\n 'genres': 'comedy',\\n }\\n]);\""
+ "source": "await client.index('movies').addDocuments([\n {\n 'id': 287947,\n 'title': 'Shazam',\n 'poster':\n 'https://image.tmdb.org/t/p/w1280/xnopI5Xtky18MPhK40cZAGAOVeV.jpg',\n 'overview':\n '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]);\nadd_or_update_documents_1: \"await client.index('movies').updateDocuments([\\n {\\n 'id': 287947,\\n 'title': 'Shazam ⚡️',\\n 'genres': 'comedy',\\n }\\n]);\""
},
{
"lang": "Swift",
@@ -2044,13 +2148,13 @@
"Documents"
],
"summary": "Delete all documents",
- "description": "Delete all documents in the specified index.",
+ "description": "Permanently delete all documents in the specified index. Settings and index metadata are preserved.",
"operationId": "clear_all_documents",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -2059,8 +2163,8 @@
}
],
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -2077,7 +2181,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -2091,6 +2195,22 @@
}
}
}
+ },
+ "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": [
@@ -2156,13 +2276,13 @@
"Documents"
],
"summary": "Delete documents by filter",
- "description": "Delete a set of documents based on a filter.",
+ "description": "Delete all documents in the index that match the given filter expression.",
"operationId": "delete_documents_by_filter",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -2182,7 +2302,7 @@
},
"responses": {
"202": {
- "description": "Task successfully enqueued",
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -2199,7 +2319,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -2213,6 +2333,22 @@
}
}
}
+ },
+ "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": [
@@ -2270,13 +2406,13 @@
"Documents"
],
"summary": "Delete documents by batch",
- "description": "Delete a set of documents based on an array of document ids.",
+ "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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -2296,8 +2432,8 @@
"required": true
},
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -2314,7 +2450,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -2328,6 +2464,22 @@
}
}
}
+ },
+ "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": [
@@ -2385,13 +2537,13 @@
"Documents"
],
"summary": "Edit documents by function",
- "description": "Use a [RHAI function](https://rhai.rs/book/engine/hello-world.html) to\nedit one or more documents directly in Meilisearch.",
+ "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.",
"operationId": "edit_documents_by_function",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -2411,7 +2563,7 @@
},
"responses": {
"202": {
- "description": "Task successfully enqueued",
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -2428,7 +2580,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -2442,6 +2594,22 @@
}
}
}
+ },
+ "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": [
@@ -2466,13 +2634,13 @@
"Documents"
],
"summary": "List documents with POST",
- "description": "Get a set of documents.",
+ "description": "Retrieve a set of documents with optional filtering, sorting, and pagination. Use the request body to specify filters, sort order, and which fields to return.",
"operationId": "documents_by_query_post",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -2492,7 +2660,7 @@
},
"responses": {
"200": {
- "description": "Task successfully enqueued",
+ "description": "The documents are returned.",
"content": {
"application/json": {
"schema": {
@@ -2529,7 +2697,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -2543,6 +2711,22 @@
}
}
}
+ },
+ "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": [
@@ -2600,13 +2784,13 @@
"Documents"
],
"summary": "Get document",
- "description": "Get one document from its primary key.",
+ "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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -2616,7 +2800,7 @@
{
"name": "documentId",
"in": "path",
- "description": "The document identifier",
+ "description": "The document identifier.",
"required": true,
"schema": {
"type": "string"
@@ -2647,7 +2831,7 @@
],
"responses": {
"200": {
- "description": "The document is returned",
+ "description": "The document is returned.",
"content": {
"application/json": {
"schema": {},
@@ -2662,7 +2846,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -2678,14 +2862,14 @@
}
},
"404": {
- "description": "Document not found",
+ "description": "Document not found.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResponseError"
},
"example": {
- "message": "Document `a` not found.",
+ "message": "Document :uid not found.",
"code": "document_not_found",
"type": "invalid_request",
"link": "https://docs.meilisearch.com/errors#document_not_found"
@@ -2751,13 +2935,13 @@
"Documents"
],
"summary": "Delete document",
- "description": "Delete a single document by id.",
+ "description": "Delete a single document by its [primary key](https://www.meilisearch.com/docs/learn/getting_started/primary_key).",
"operationId": "delete_document",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -2767,7 +2951,7 @@
{
"name": "documentId",
"in": "path",
- "description": "Document Identifier",
+ "description": "Document identifier.",
"required": true,
"schema": {
"type": "string"
@@ -2776,8 +2960,8 @@
}
],
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -2794,7 +2978,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -2808,6 +2992,22 @@
}
}
}
+ },
+ "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": [
@@ -2858,7 +3058,7 @@
},
{
"lang": "Dart",
- "source": "await client.index('movies').deleteDocument(25684);\nlete_documents_by_batch_1: \"await client.index('movies').deleteDocuments(\\n DeleteDocumentsQuery(\\n ids: [23488, 153738, 437035, 363869],\\n ),\\n );\""
+ "source": "await client.index('movies').deleteDocument(25684);\ndelete_documents_by_batch_1: \"await client.index('movies').deleteDocuments(\\n DeleteDocumentsQuery(\\n ids: [23488, 153738, 437035, 363869],\\n ),\\n );\""
},
{
"lang": "Swift",
@@ -2873,13 +3073,13 @@
"Facet Search"
],
"summary": "Search in facets",
- "description": "Search for a facet value within a given facet.",
+ "description": "Search for facet values within a given facet.\n\n> Use this to build autocomplete or refinement UIs for facet filters.",
"operationId": "search",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -2899,7 +3099,7 @@
},
"responses": {
"200": {
- "description": "The documents are returned",
+ "description": "The documents are returned.",
"content": {
"application/json": {
"schema": {
@@ -2932,7 +3132,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -2948,7 +3148,7 @@
}
},
"404": {
- "description": "Index not found",
+ "description": "Index not found.",
"content": {
"application/json": {
"schema": {
@@ -3012,67 +3212,223 @@
]
}
},
- "/indexes/{indexUid}/search": {
- "get": {
+ "/indexes/{indexUid}/fields": {
+ "post": {
"tags": [
- "Search"
+ "Indexes"
],
- "summary": "Search with GET",
- "description": "Search for documents matching a specific query in the given index.",
- "operationId": "search_with_url_query",
+ "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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index whose fields to list.",
"required": true,
"schema": {
"type": "string"
},
"example": "movies"
- },
- {
- "name": "q",
- "in": "query",
- "description": "The search query string. Meilisearch will return documents that match\nthis query. Supports prefix search (words matching the beginning of\nthe query) and typo tolerance. Leave empty to match all documents.",
- "required": false,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "vector",
- "in": "query",
- "description": "A vector of floating-point numbers for semantic/vector search. The\ndimensions must match the embedder configuration. When provided,\ndocuments are ranked by vector similarity. Can be combined with `q`\nfor hybrid search.",
- "required": true,
- "schema": {
- "type": "array",
- "items": {
- "type": "number",
- "format": "float"
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ListFields"
}
- },
- "explode": false
- },
- {
- "name": "offset",
- "in": "query",
- "description": "Number of search results to skip. Use together with `limit` for\npagination. For example, to get results 21-40, set `offset=20` and\n`limit=20`. Defaults to `0`. Cannot be used with `page`/`hitsPerPage`.",
- "required": true,
- "schema": {
- "type": "integer",
- "default": 0,
- "minimum": 0
}
},
- {
- "name": "limit",
- "in": "query",
- "description": "Maximum number of search results to return. Use together with `offset`\nfor pagination. Defaults to `20`. Cannot be used with\n`page`/`hitsPerPage`.",
- "required": true,
- "schema": {
- "type": "integer",
- "default": 20,
+ "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/{indexUid}/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](https://www.meilisearch.com/docs/api-reference/search/search-with-post) in the Meilisearch API.",
+ "operationId": "search_with_url_query",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "in": "path",
+ "description": "Unique identifier of the index.",
+ "required": true,
+ "schema": {
+ "type": "string"
+ },
+ "example": "movies"
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "description": "The search query string. Meilisearch will return documents that match\nthis query. Supports prefix search (words matching the beginning of\nthe query) and typo tolerance. Leave empty to match all documents.",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "vector",
+ "in": "query",
+ "description": "A vector of floating-point numbers for semantic/vector search. The\ndimensions must match the embedder configuration. When provided,\ndocuments are ranked by vector similarity. Can be combined with `q`\nfor hybrid search.",
+ "required": false,
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "number",
+ "format": "float"
+ }
+ },
+ "explode": false
+ },
+ {
+ "name": "offset",
+ "in": "query",
+ "description": "Number of search results to skip. Use together with `limit` for\npagination. For example, to get results 21-40, set `offset=20` and\n`limit=20`. Defaults to `0`. Cannot be used with `page`/`hitsPerPage`.",
+ "required": false,
+ "schema": {
+ "type": "integer",
+ "default": 0,
+ "minimum": 0
+ }
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "description": "Maximum number of search results to return. Use together with `offset`\nfor pagination. Defaults to `20`. Cannot be used with\n`page`/`hitsPerPage`.",
+ "required": false,
+ "schema": {
+ "type": "integer",
+ "default": 20,
"minimum": 0
}
},
@@ -3100,7 +3456,7 @@
"name": "attributesToRetrieve",
"in": "query",
"description": "Comma-separated list of attributes to include in the returned\ndocuments. Use `*` to return all attributes. By default, returns\nattributes from the `displayedAttributes` setting.",
- "required": true,
+ "required": false,
"schema": {
"type": "array",
"items": {
@@ -3113,7 +3469,7 @@
"name": "retrieveVectors",
"in": "query",
"description": "When `true`, includes vector embeddings in the response for documents\nthat have them. Defaults to `false`.",
- "required": true,
+ "required": false,
"schema": {
"type": "boolean"
}
@@ -3122,7 +3478,7 @@
"name": "attributesToCrop",
"in": "query",
"description": "Comma-separated list of attributes whose values should be cropped to\nfit within `cropLength`. Useful for displaying long text attributes\nin search results. Format: `attribute` or `attribute:length`.",
- "required": true,
+ "required": false,
"schema": {
"type": "array",
"items": {
@@ -3135,7 +3491,7 @@
"name": "cropLength",
"in": "query",
"description": "Maximum number of words to keep when cropping attribute values. The\ncropped text will be centered around the matching terms. Defaults to\n`10`.",
- "required": true,
+ "required": false,
"schema": {
"type": "integer",
"default": 10,
@@ -3146,7 +3502,7 @@
"name": "attributesToHighlight",
"in": "query",
"description": "Comma-separated list of attributes whose matching terms should be\nhighlighted with `highlightPreTag` and `highlightPostTag`. Use `*` to\nhighlight all searchable attributes.",
- "required": true,
+ "required": false,
"schema": {
"type": "array",
"items": {
@@ -3186,7 +3542,7 @@
"name": "showMatchesPosition",
"in": "query",
"description": "When `true`, returns the position (start and length) of each matched\nterm in the original document attributes. Useful for custom\nhighlighting implementations.",
- "required": true,
+ "required": false,
"schema": {
"type": "boolean"
}
@@ -3195,7 +3551,7 @@
"name": "showRankingScore",
"in": "query",
"description": "When `true`, includes a `_rankingScore` field (0.0 to 1.0) in each\ndocument indicating how well it matches the query. Higher scores mean\nbetter matches.",
- "required": true,
+ "required": false,
"schema": {
"type": "boolean"
}
@@ -3204,7 +3560,7 @@
"name": "showRankingScoreDetails",
"in": "query",
"description": "When `true`, includes a `_rankingScoreDetails` object showing the\ncontribution of each ranking rule to the final score. Useful for\ndebugging relevancy.",
- "required": true,
+ "required": false,
"schema": {
"type": "boolean"
}
@@ -3213,7 +3569,7 @@
"name": "showPerformanceDetails",
"in": "query",
"description": "When `true`, includes a `_performanceDetails` object showing the\nperformance details of the search.",
- "required": true,
+ "required": false,
"schema": {
"type": "boolean"
}
@@ -3222,7 +3578,7 @@
"name": "facets",
"in": "query",
"description": "Comma-separated list of attributes for which to return facet\ndistribution (value counts). Only attributes in `filterableAttributes`\ncan be used. Returns the count of documents matching each facet value.",
- "required": true,
+ "required": false,
"schema": {
"type": "array",
"items": {
@@ -3235,7 +3591,7 @@
"name": "highlightPreTag",
"in": "query",
"description": "HTML tag or string to insert before highlighted matching terms.\nDefaults to ``.",
- "required": true,
+ "required": false,
"schema": {
"type": "string",
"default": ""
@@ -3245,7 +3601,7 @@
"name": "highlightPostTag",
"in": "query",
"description": "HTML tag or string to insert after highlighted matching terms.\nDefaults to ``.",
- "required": true,
+ "required": false,
"schema": {
"type": "string",
"default": ""
@@ -3255,7 +3611,7 @@
"name": "cropMarker",
"in": "query",
"description": "String used to indicate truncated content when cropping. Defaults to\n`…` (ellipsis).",
- "required": true,
+ "required": false,
"schema": {
"type": "string",
"default": "…"
@@ -3265,7 +3621,7 @@
"name": "matchingStrategy",
"in": "query",
"description": "Strategy for matching query terms. `last` (default): all terms must\nmatch, removing terms from the end if needed. `all`: all terms must\nmatch exactly. `frequency`: prioritizes matching frequent terms.",
- "required": true,
+ "required": false,
"schema": {
"$ref": "#/components/schemas/MatchingStrategy"
}
@@ -3274,7 +3630,7 @@
"name": "attributesToSearchOn",
"in": "query",
"description": "Comma-separated list of attributes to search in. By default, searches\nall `searchableAttributes`. Use this to restrict search to specific\nfields for better performance or relevance.",
- "required": true,
+ "required": false,
"schema": {
"type": "array",
"items": {
@@ -3296,7 +3652,7 @@
"name": "hybridSemanticRatio",
"in": "query",
"description": "Balance between keyword search (0.0) and semantic/vector search (1.0)\nin hybrid search. A value of 0.5 gives equal weight to both. Defaults\nto `0.5`.",
- "required": true,
+ "required": false,
"schema": {
"type": "number",
"format": "float"
@@ -3306,7 +3662,7 @@
"name": "rankingScoreThreshold",
"in": "query",
"description": "Minimum ranking score (0.0 to 1.0) a document must have to be\nincluded in results. Documents with lower scores are excluded. Useful\nfor filtering out poor matches.",
- "required": true,
+ "required": false,
"schema": {
"type": "number",
"format": "float"
@@ -3316,7 +3672,7 @@
"name": "locales",
"in": "query",
"description": "Comma-separated list of language locales to use for tokenization and\nprocessing. Useful for multilingual content. Example: `en,fr,de`.",
- "required": true,
+ "required": false,
"schema": {
"type": "array",
"items": {
@@ -3337,6 +3693,7 @@
{
"name": "useNetwork",
"in": "query",
+ "description": "When `true`, runs the query on the whole network (all shards covered, documents\ndeduplicated across remotes). When `false` or omitted, the query runs locally.\n\n**Enterprise Edition only.** This feature is available in the Enterprise Edition.\nIt also requires the `network` experimental feature.\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;\ndocuments with the same id are assumed identical for deduplication.",
"required": false,
"schema": {
"type": "boolean"
@@ -3345,7 +3702,7 @@
],
"responses": {
"200": {
- "description": "The documents are returned",
+ "description": "The documents are returned.",
"content": {
"application/json": {
"schema": {
@@ -3378,7 +3735,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -3394,7 +3751,7 @@
}
},
"404": {
- "description": "Index not found",
+ "description": "Index not found.",
"content": {
"application/json": {
"schema": {
@@ -3434,13 +3791,13 @@
"Search"
],
"summary": "Search with POST",
- "description": "Search for documents matching a specific query in the given index.",
+ "description": "Search for documents matching a query in the given index.\n\n> Equivalent to the [search with GET route](https://www.meilisearch.com/docs/api-reference/search/search-with-get) in the Meilisearch API.",
"operationId": "search_with_post",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -3460,7 +3817,7 @@
},
"responses": {
"200": {
- "description": "The documents are returned",
+ "description": "The documents are returned.",
"content": {
"application/json": {
"schema": {
@@ -3493,7 +3850,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -3509,7 +3866,7 @@
}
},
"404": {
- "description": "Index not found",
+ "description": "Index not found.",
"content": {
"application/json": {
"schema": {
@@ -3564,7 +3921,7 @@
},
{
"lang": "C#",
- "source": "await client.Index(\"movies\").SearchAsync(\"American ninja\");\nt_task_1: |\nTaskInfo task = await client.GetTaskAsync(1);\nt_all_tasks_1: |\nResourceResults taskResult = await client.GetTasksAsync();"
+ "source": "await client.Index(\"movies\").SearchAsync(\"American ninja\");\nget_task_1: |\nTaskInfo task = await client.GetTaskAsync(1);\nget_all_tasks_1: |\nResourceResults taskResult = await client.GetTasksAsync();"
},
{
"lang": "Rust",
@@ -3586,14 +3943,14 @@
"tags": [
"Settings"
],
- "summary": "List settings",
- "description": "This route allows you to retrieve, configure, or reset all of an index's settings at once.",
+ "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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -3603,7 +3960,7 @@
],
"responses": {
"200": {
- "description": "Settings are returned",
+ "description": "Returns all settings with their current or default values.",
"content": {
"application/json": {
"schema": {
@@ -3614,7 +3971,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -3628,6 +3985,22 @@
}
}
}
+ },
+ "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": [
@@ -3678,7 +4051,7 @@
},
{
"lang": "Dart",
- "source": "await client.index('movies').getSettings();\ndate_settings_1: \"await client.index('movies').updateSettings(\\n IndexSettings(\\n rankingRules: [\\n 'words',\\n 'typo',\\n 'proximity',\\n 'attribute',\\n 'sort',\\n 'exactness',\\n 'release_date:desc',\\n 'rank:desc'\\n ],\\n distinctAttribute: 'movie_id',\\n searchableAttributes: ['title', 'overview', 'genres'],\\n displayedAttributes: [\\n 'title',\\n 'overview',\\n 'genres',\\n 'release_date'\\n ],\\n stopWords: ['the', 'a', 'an'],\\n sortableAttributes: ['title', 'release_date'],\\n synonyms: {\\n 'wolverine': ['xmen', 'logan'],\\n 'logan': ['wolverine'],\\n },\\n ),\\n );\""
+ "source": "await client.index('movies').getSettings();\nupdate_settings_1: \"await client.index('movies').updateSettings(\\n IndexSettings(\\n rankingRules: [\\n 'words',\\n 'typo',\\n 'proximity',\\n 'attribute',\\n 'sort',\\n 'exactness',\\n 'release_date:desc',\\n 'rank:desc'\\n ],\\n distinctAttribute: 'movie_id',\\n searchableAttributes: ['title', 'overview', 'genres'],\\n displayedAttributes: [\\n 'title',\\n 'overview',\\n 'genres',\\n 'release_date'\\n ],\\n stopWords: ['the', 'a', 'an'],\\n sortableAttributes: ['title', 'release_date'],\\n synonyms: {\\n 'wolverine': ['xmen', 'logan'],\\n 'logan': ['wolverine'],\\n },\\n ),\\n );\""
},
{
"lang": "Swift",
@@ -3690,14 +4063,14 @@
"tags": [
"Settings"
],
- "summary": "Reset settings",
- "description": "Reset all the settings of an index to their default value.",
+ "summary": "Reset all settings",
+ "description": "Resets all settings of the index to their default values.",
"operationId": "delete_all",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -3706,8 +4079,8 @@
}
],
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -3724,7 +4097,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -3738,6 +4111,22 @@
}
}
}
+ },
+ "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": [
@@ -3800,14 +4189,14 @@
"tags": [
"Settings"
],
- "summary": "Update settings",
- "description": "Update the settings of an index.\nPassing null to an index setting will reset it to its default value.\nUpdates in the settings route are partial. This means that any parameters not provided in the body will be left unchanged.\nIf the provided index does not exist, it will be created.",
+ "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.",
"operationId": "update_all",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -3826,8 +4215,8 @@
"required": true
},
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -3844,7 +4233,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -3858,6 +4247,22 @@
}
}
}
+ },
+ "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": [
@@ -3919,13 +4324,13 @@
"Settings"
],
"summary": "Get chat",
- "description": "Get an user defined chat",
+ "description": "Returns the current value of the `chat` setting for the index.",
"operationId": "getchat",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -3935,7 +4340,7 @@
],
"responses": {
"200": {
- "description": "chat is returned",
+ "description": "Returns the current value of the `chat` setting.",
"content": {
"application/json": {
"schema": {
@@ -3946,7 +4351,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -3960,6 +4365,22 @@
}
}
}
+ },
+ "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": [
@@ -3983,13 +4404,13 @@
"Settings"
],
"summary": "Reset chat",
- "description": "Reset an index's chat to its default value",
+ "description": "Resets the `chat` setting to its default value.",
"operationId": "deletechat",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -3997,19 +4418,9 @@
"example": "movies"
}
],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ChatSettings"
- }
- }
- },
- "required": true
- },
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -4026,7 +4437,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -4040,6 +4451,22 @@
}
}
}
+ },
+ "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": [
@@ -4063,13 +4490,13 @@
"Settings"
],
"summary": "Update chat",
- "description": "Update an index's user defined 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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -4088,8 +4515,8 @@
"required": true
},
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -4106,7 +4533,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -4120,6 +4547,22 @@
}
}
}
+ },
+ "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": [
@@ -4145,13 +4588,13 @@
"Settings"
],
"summary": "Get dictionary",
- "description": "Get an user defined dictionary",
+ "description": "Returns the current value of the `dictionary` setting for the index.",
"operationId": "getdictionary",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -4161,7 +4604,7 @@
],
"responses": {
"200": {
- "description": "dictionary is returned",
+ "description": "Returns the current value of the `dictionary` setting.",
"content": {
"application/json": {
"schema": {
@@ -4176,7 +4619,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -4190,6 +4633,22 @@
}
}
}
+ },
+ "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": [
@@ -4249,13 +4708,13 @@
"Settings"
],
"summary": "Update dictionary",
- "description": "Update an index's user defined 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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -4278,8 +4737,8 @@
"required": true
},
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -4296,7 +4755,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -4310,6 +4769,22 @@
}
}
}
+ },
+ "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": [
@@ -4369,13 +4844,13 @@
"Settings"
],
"summary": "Reset dictionary",
- "description": "Reset an index's dictionary to its default value",
+ "description": "Resets the `dictionary` setting to its default value.",
"operationId": "deletedictionary",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -4383,23 +4858,9 @@
"example": "movies"
}
],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "uniqueItems": true
- }
- }
- },
- "required": true
- },
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -4416,7 +4877,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -4430,6 +4891,22 @@
}
}
}
+ },
+ "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": [
@@ -4491,13 +4968,13 @@
"Settings"
],
"summary": "Get displayedAttributes",
- "description": "Get an user defined displayedAttributes",
+ "description": "Returns the current value of the `displayedAttributes` setting for the index.",
"operationId": "getdisplayedAttributes",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -4507,7 +4984,7 @@
],
"responses": {
"200": {
- "description": "displayedAttributes is returned",
+ "description": "Returns the current value of the `displayedAttributes` setting.",
"content": {
"application/json": {
"schema": {
@@ -4521,7 +4998,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -4535,6 +5012,22 @@
}
}
}
+ },
+ "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": [
@@ -4585,7 +5078,7 @@
},
{
"lang": "Dart",
- "source": "await client.index('movies').getDisplayedAttributes();\ndate_displayed_attributes_1: \"await client.index('movies').updateDisplayedAttributes([\\n 'title',\\n 'overview',\\n 'genres',\\n 'release_date',\\n]);\""
+ "source": "await client.index('movies').getDisplayedAttributes();\nupdate_displayed_attributes_1: \"await client.index('movies').updateDisplayedAttributes([\\n 'title',\\n 'overview',\\n 'genres',\\n 'release_date',\\n]);\""
},
{
"lang": "Swift",
@@ -4598,13 +5091,13 @@
"Settings"
],
"summary": "Update displayedAttributes",
- "description": "Update an index's user defined 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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -4626,8 +5119,8 @@
"required": true
},
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -4644,7 +5137,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -4658,6 +5151,22 @@
}
}
}
+ },
+ "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": [
@@ -4717,13 +5226,13 @@
"Settings"
],
"summary": "Reset displayedAttributes",
- "description": "Reset an index's displayedAttributes to its default value",
+ "description": "Resets the `displayedAttributes` setting to its default value.",
"operationId": "deletedisplayedAttributes",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -4731,22 +5240,9 @@
"example": "movies"
}
],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "required": true
- },
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -4763,7 +5259,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -4777,6 +5273,22 @@
}
}
}
+ },
+ "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": [
@@ -4807,7 +5319,7 @@
},
{
"lang": "Java",
- "source": "client.index(\"movies\").resetDisplayedAttributesSettings();"
+ "source": "client.index(\"movies\").resetDisplayedAttributesSettings();\nget_typo_tolerance_1:\nclient.index(\"books\").getTypoToleranceSettings();"
},
{
"lang": "Ruby",
@@ -4842,13 +5354,13 @@
"Settings"
],
"summary": "Get distinctAttribute",
- "description": "Get an user defined distinctAttribute",
+ "description": "Returns the current value of the `distinctAttribute` setting for the index.",
"operationId": "getdistinctAttribute",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -4858,7 +5370,7 @@
],
"responses": {
"200": {
- "description": "distinctAttribute is returned",
+ "description": "Returns the current value of the `distinctAttribute` setting.",
"content": {
"application/json": {
"schema": {
@@ -4869,7 +5381,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -4883,6 +5395,22 @@
}
}
}
+ },
+ "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": [
@@ -4946,13 +5474,13 @@
"Settings"
],
"summary": "Update distinctAttribute",
- "description": "Update an index's user defined 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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -4971,8 +5499,8 @@
"required": true
},
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -4989,7 +5517,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -5003,6 +5531,22 @@
}
}
}
+ },
+ "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": [
@@ -5066,13 +5610,13 @@
"Settings"
],
"summary": "Reset distinctAttribute",
- "description": "Reset an index's distinctAttribute to its default value",
+ "description": "Resets the `distinctAttribute` setting to its default value.",
"operationId": "deletedistinctAttribute",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -5080,19 +5624,9 @@
"example": "movies"
}
],
- "requestBody": {
- "content": {
- "text/plain": {
- "schema": {
- "type": "string"
- }
- }
- },
- "required": true
- },
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -5109,7 +5643,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -5123,6 +5657,22 @@
}
}
}
+ },
+ "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": [
@@ -5188,13 +5738,13 @@
"Settings"
],
"summary": "Get embedders",
- "description": "Get an user defined embedders",
+ "description": "Returns the current value of the `embedders` setting for the index.",
"operationId": "getembedders",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -5204,7 +5754,7 @@
],
"responses": {
"200": {
- "description": "embedders is returned",
+ "description": "Returns the current value of the `embedders` setting.",
"content": {
"application/json": {
"schema": {
@@ -5221,7 +5771,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -5235,6 +5785,22 @@
}
}
}
+ },
+ "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": [
@@ -5266,13 +5832,13 @@
"Settings"
],
"summary": "Reset embedders",
- "description": "Reset an index's embedders to its default value",
+ "description": "Resets the `embedders` setting to its default value.",
"operationId": "deleteembedders",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -5280,25 +5846,9 @@
"example": "movies"
}
],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "additionalProperties": {
- "$ref": "#/components/schemas/SettingEmbeddingSettings"
- },
- "propertyNames": {
- "type": "string"
- }
- }
- }
- },
- "required": true
- },
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -5315,7 +5865,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -5329,6 +5879,22 @@
}
}
}
+ },
+ "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": [
@@ -5360,13 +5926,13 @@
"Settings"
],
"summary": "Update embedders",
- "description": "Update an index's user defined 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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -5391,8 +5957,8 @@
"required": true
},
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -5409,7 +5975,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -5423,6 +5989,22 @@
}
}
}
+ },
+ "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": [
@@ -5464,13 +6046,13 @@
"Settings"
],
"summary": "Get facetSearch",
- "description": "Get an user defined facetSearch",
+ "description": "Returns the current value of the `facetSearch` setting for the index.",
"operationId": "getfacetSearch",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -5480,7 +6062,7 @@
],
"responses": {
"200": {
- "description": "facetSearch is returned",
+ "description": "Returns the current value of the `facetSearch` setting.",
"content": {
"application/json": {
"schema": {
@@ -5491,7 +6073,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -5505,6 +6087,22 @@
}
}
}
+ },
+ "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": [
@@ -5552,13 +6150,13 @@
"Settings"
],
"summary": "Update facetSearch",
- "description": "Update an index's user defined 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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -5577,8 +6175,8 @@
"required": true
},
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -5595,7 +6193,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -5609,6 +6207,22 @@
}
}
}
+ },
+ "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": [
@@ -5656,13 +6270,13 @@
"Settings"
],
"summary": "Reset facetSearch",
- "description": "Reset an index's facetSearch to its default value",
+ "description": "Resets the `facetSearch` setting to its default value.",
"operationId": "deletefacetSearch",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -5670,19 +6284,9 @@
"example": "movies"
}
],
- "requestBody": {
- "content": {
- "text/plain": {
- "schema": {
- "type": "boolean"
- }
- }
- },
- "required": true
- },
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -5699,7 +6303,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -5713,6 +6317,22 @@
}
}
}
+ },
+ "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": [
@@ -5762,13 +6382,13 @@
"Settings"
],
"summary": "Get faceting",
- "description": "Get an user defined faceting",
+ "description": "Returns the current value of the `faceting` setting for the index.",
"operationId": "getfaceting",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -5778,7 +6398,7 @@
],
"responses": {
"200": {
- "description": "faceting is returned",
+ "description": "Returns the current value of the `faceting` setting.",
"content": {
"application/json": {
"schema": {
@@ -5789,7 +6409,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -5803,6 +6423,22 @@
}
}
}
+ },
+ "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": [
@@ -5853,7 +6489,7 @@
},
{
"lang": "Dart",
- "source": "await client.index('movies').getFaceting();\ndate_faceting_settings_1: \"await client.index('books').updateFaceting(Faceting(\\n maxValuesPerFacet: 2,\\n sortFacetValuesBy: {\\n '*': FacetingSortTypes.alpha,\\n 'genres': FacetingSortTypes.count\\n }));\""
+ "source": "await client.index('movies').getFaceting();\nupdate_faceting_settings_1: \"await client.index('books').updateFaceting(Faceting(\\n maxValuesPerFacet: 2,\\n sortFacetValuesBy: {\\n '*': FacetingSortTypes.alpha,\\n 'genres': FacetingSortTypes.count\\n }));\""
}
]
},
@@ -5862,13 +6498,13 @@
"Settings"
],
"summary": "Reset faceting",
- "description": "Reset an index's faceting to its default value",
+ "description": "Resets the `faceting` setting to its default value.",
"operationId": "deletefaceting",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -5876,19 +6512,9 @@
"example": "movies"
}
],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/FacetingSettings"
- }
- }
- },
- "required": true
- },
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -5905,7 +6531,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -5919,6 +6545,22 @@
}
}
}
+ },
+ "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": [
@@ -5978,13 +6620,13 @@
"Settings"
],
"summary": "Update faceting",
- "description": "Update an index's user defined 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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -6003,8 +6645,8 @@
"required": true
},
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -6021,7 +6663,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -6035,6 +6677,22 @@
}
}
}
+ },
+ "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": [
@@ -6092,13 +6750,13 @@
"Settings"
],
"summary": "Get filterableAttributes",
- "description": "Get an user defined filterableAttributes",
+ "description": "Returns the current value of the `filterableAttributes` setting for the index.",
"operationId": "getfilterableAttributes",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -6108,7 +6766,7 @@
],
"responses": {
"200": {
- "description": "filterableAttributes is returned",
+ "description": "Returns the current value of the `filterableAttributes` setting.",
"content": {
"application/json": {
"schema": {
@@ -6121,18 +6779,34 @@
}
}
},
- "401": {
- "description": "The authorization header is missing",
+ "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": "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"
+ "message": "Index `movies` not found.",
+ "code": "index_not_found",
+ "type": "invalid_request",
+ "link": "https://docs.meilisearch.com/errors#index_not_found"
}
}
}
@@ -6186,7 +6860,7 @@
},
{
"lang": "Dart",
- "source": "await client.index('movies').getFilterableAttributes();\ndate_filterable_attributes_1: \"await client\\n .index('movies')\\n .updateFilterableAttributes(['genres', 'director']);\""
+ "source": "await client.index('movies').getFilterableAttributes();\nupdate_filterable_attributes_1: \"await client\\n .index('movies')\\n .updateFilterableAttributes(['genres', 'director']);\""
},
{
"lang": "Swift",
@@ -6199,13 +6873,13 @@
"Settings"
],
"summary": "Update filterableAttributes",
- "description": "Update an index's user defined 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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -6227,8 +6901,8 @@
"required": true
},
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -6245,7 +6919,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -6259,6 +6933,22 @@
}
}
}
+ },
+ "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": [
@@ -6318,13 +7008,13 @@
"Settings"
],
"summary": "Reset filterableAttributes",
- "description": "Reset an index's filterableAttributes to its default value",
+ "description": "Resets the `filterableAttributes` setting to its default value.",
"operationId": "deletefilterableAttributes",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -6332,22 +7022,9 @@
"example": "movies"
}
],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/FilterableAttributesRule"
- }
- }
- }
- },
- "required": true
- },
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -6364,7 +7041,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -6378,6 +7055,22 @@
}
}
}
+ },
+ "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": [
@@ -6443,13 +7136,13 @@
"Settings"
],
"summary": "Get localizedAttributes",
- "description": "Get an user defined localizedAttributes",
+ "description": "Returns the current value of the `localizedAttributes` setting for the index.",
"operationId": "getlocalizedAttributes",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -6459,7 +7152,7 @@
],
"responses": {
"200": {
- "description": "localizedAttributes is returned",
+ "description": "Returns the current value of the `localizedAttributes` setting.",
"content": {
"application/json": {
"schema": {
@@ -6473,7 +7166,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -6487,6 +7180,22 @@
}
}
}
+ },
+ "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": [
@@ -6538,13 +7247,13 @@
"Settings"
],
"summary": "Update localizedAttributes",
- "description": "Update an index's user defined 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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -6566,8 +7275,8 @@
"required": true
},
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -6584,7 +7293,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -6598,6 +7307,22 @@
}
}
}
+ },
+ "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": [
@@ -6649,13 +7374,13 @@
"Settings"
],
"summary": "Reset localizedAttributes",
- "description": "Reset an index's localizedAttributes to its default value",
+ "description": "Resets the `localizedAttributes` setting to its default value.",
"operationId": "deletelocalizedAttributes",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -6663,22 +7388,9 @@
"example": "movies"
}
],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/LocalizedAttributesRuleView"
- }
- }
- }
- },
- "required": true
- },
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -6695,7 +7407,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -6709,6 +7421,22 @@
}
}
}
+ },
+ "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": [
@@ -6762,13 +7490,13 @@
"Settings"
],
"summary": "Get nonSeparatorTokens",
- "description": "Get an user defined nonSeparatorTokens",
+ "description": "Returns the current value of the `nonSeparatorTokens` setting for the index.",
"operationId": "getnonSeparatorTokens",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -6778,7 +7506,7 @@
],
"responses": {
"200": {
- "description": "nonSeparatorTokens is returned",
+ "description": "Returns the current value of the `nonSeparatorTokens` setting.",
"content": {
"application/json": {
"schema": {
@@ -6793,7 +7521,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -6807,6 +7535,22 @@
}
}
}
+ },
+ "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": [
@@ -6866,13 +7610,13 @@
"Settings"
],
"summary": "Update nonSeparatorTokens",
- "description": "Update an index's user defined 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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -6895,8 +7639,8 @@
"required": true
},
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -6913,7 +7657,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -6927,6 +7671,22 @@
}
}
}
+ },
+ "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": [
@@ -6986,13 +7746,13 @@
"Settings"
],
"summary": "Reset nonSeparatorTokens",
- "description": "Reset an index's nonSeparatorTokens to its default value",
+ "description": "Resets the `nonSeparatorTokens` setting to its default value.",
"operationId": "deletenonSeparatorTokens",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -7000,23 +7760,9 @@
"example": "movies"
}
],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "uniqueItems": true
- }
- }
- },
- "required": true
- },
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -7033,7 +7779,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -7047,6 +7793,22 @@
}
}
}
+ },
+ "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": [
@@ -7108,13 +7870,13 @@
"Settings"
],
"summary": "Get pagination",
- "description": "Get an user defined pagination",
+ "description": "Returns the current value of the `pagination` setting for the index.",
"operationId": "getpagination",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -7124,7 +7886,7 @@
],
"responses": {
"200": {
- "description": "pagination is returned",
+ "description": "Returns the current value of the `pagination` setting.",
"content": {
"application/json": {
"schema": {
@@ -7135,7 +7897,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -7149,6 +7911,22 @@
}
}
}
+ },
+ "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": [
@@ -7199,7 +7977,7 @@
},
{
"lang": "Dart",
- "source": "await client.index('movies').getPagination();\ndate_pagination_settings_1: \"await client\\n .index('books')\\n .updatePagination(Pagination(maxTotalHits: 100));\""
+ "source": "await client.index('movies').getPagination();\nupdate_pagination_settings_1: \"await client\\n .index('books')\\n .updatePagination(Pagination(maxTotalHits: 100));\""
}
]
},
@@ -7208,13 +7986,13 @@
"Settings"
],
"summary": "Reset pagination",
- "description": "Reset an index's pagination to its default value",
+ "description": "Resets the `pagination` setting to its default value.",
"operationId": "deletepagination",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -7222,19 +8000,9 @@
"example": "movies"
}
],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/PaginationSettings"
- }
- }
- },
- "required": true
- },
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -7251,7 +8019,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -7265,6 +8033,22 @@
}
}
}
+ },
+ "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": [
@@ -7324,13 +8108,13 @@
"Settings"
],
"summary": "Update pagination",
- "description": "Update an index's user defined 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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -7349,8 +8133,8 @@
"required": true
},
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -7367,7 +8151,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -7381,6 +8165,22 @@
}
}
}
+ },
+ "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": [
@@ -7438,13 +8238,13 @@
"Settings"
],
"summary": "Get prefixSearch",
- "description": "Get an user defined prefixSearch",
+ "description": "Returns the current value of the `prefixSearch` setting for the index.",
"operationId": "getprefixSearch",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -7454,7 +8254,7 @@
],
"responses": {
"200": {
- "description": "prefixSearch is returned",
+ "description": "Returns the current value of the `prefixSearch` setting.",
"content": {
"application/json": {
"schema": {
@@ -7465,7 +8265,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -7479,6 +8279,22 @@
}
}
}
+ },
+ "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": [
@@ -7526,13 +8342,13 @@
"Settings"
],
"summary": "Update prefixSearch",
- "description": "Update an index's user defined 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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -7551,8 +8367,8 @@
"required": true
},
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -7569,7 +8385,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -7583,6 +8399,22 @@
}
}
}
+ },
+ "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": [
@@ -7630,13 +8462,13 @@
"Settings"
],
"summary": "Reset prefixSearch",
- "description": "Reset an index's prefixSearch to its default value",
+ "description": "Resets the `prefixSearch` setting to its default value.",
"operationId": "deleteprefixSearch",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -7644,19 +8476,9 @@
"example": "movies"
}
],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/PrefixSearchSettings"
- }
- }
- },
- "required": true
- },
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -7673,7 +8495,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -7687,6 +8509,22 @@
}
}
}
+ },
+ "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": [
@@ -7736,13 +8574,13 @@
"Settings"
],
"summary": "Get proximityPrecision",
- "description": "Get an user defined proximityPrecision",
+ "description": "Returns the current value of the `proximityPrecision` setting for the index.",
"operationId": "getproximityPrecision",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -7752,7 +8590,7 @@
],
"responses": {
"200": {
- "description": "proximityPrecision is returned",
+ "description": "Returns the current value of the `proximityPrecision` setting.",
"content": {
"application/json": {
"schema": {
@@ -7763,7 +8601,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -7777,6 +8615,22 @@
}
}
}
+ },
+ "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": [
@@ -7836,13 +8690,13 @@
"Settings"
],
"summary": "Update proximityPrecision",
- "description": "Update an index's user defined 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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -7861,8 +8715,8 @@
"required": true
},
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -7879,7 +8733,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -7893,6 +8747,22 @@
}
}
}
+ },
+ "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": [
@@ -7952,13 +8822,13 @@
"Settings"
],
"summary": "Reset proximityPrecision",
- "description": "Reset an index's proximityPrecision to its default value",
+ "description": "Resets the `proximityPrecision` setting to its default value.",
"operationId": "deleteproximityPrecision",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -7966,19 +8836,9 @@
"example": "movies"
}
],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ProximityPrecisionView"
- }
- }
- },
- "required": true
- },
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -7995,7 +8855,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -8009,6 +8869,22 @@
}
}
}
+ },
+ "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": [
@@ -8070,13 +8946,13 @@
"Settings"
],
"summary": "Get rankingRules",
- "description": "Get an user defined rankingRules",
+ "description": "Returns the current value of the `rankingRules` setting for the index.",
"operationId": "getrankingRules",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -8086,7 +8962,7 @@
],
"responses": {
"200": {
- "description": "rankingRules is returned",
+ "description": "Returns the current value of the `rankingRules` setting.",
"content": {
"application/json": {
"schema": {
@@ -8100,7 +8976,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -8114,6 +8990,22 @@
}
}
}
+ },
+ "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": [
@@ -8164,7 +9056,7 @@
},
{
"lang": "Dart",
- "source": "await client.index('movies').getRankingRules();\ndate_ranking_rules_1: \"await client.index('movies').updateRankingRules([\\n 'words',\\n 'typo',\\n 'proximity',\\n 'attribute',\\n 'sort',\\n 'exactness',\\n 'release_date:asc',\\n 'rank:desc',\\n]);\""
+ "source": "await client.index('movies').getRankingRules();\nupdate_ranking_rules_1: \"await client.index('movies').updateRankingRules([\\n 'words',\\n 'typo',\\n 'proximity',\\n 'attribute',\\n 'sort',\\n 'exactness',\\n 'release_date:asc',\\n 'rank:desc',\\n]);\""
},
{
"lang": "Swift",
@@ -8177,13 +9069,13 @@
"Settings"
],
"summary": "Update rankingRules",
- "description": "Update an index's user defined 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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -8205,8 +9097,8 @@
"required": true
},
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -8223,7 +9115,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -8237,6 +9129,22 @@
}
}
}
+ },
+ "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": [
@@ -8296,13 +9204,13 @@
"Settings"
],
"summary": "Reset rankingRules",
- "description": "Reset an index's rankingRules to its default value",
+ "description": "Resets the `rankingRules` setting to its default value.",
"operationId": "deleterankingRules",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -8310,22 +9218,9 @@
"example": "movies"
}
],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/RankingRuleView"
- }
- }
- }
- },
- "required": true
- },
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -8342,7 +9237,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -8356,6 +9251,22 @@
}
}
}
+ },
+ "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": [
@@ -8421,13 +9332,13 @@
"Settings"
],
"summary": "Get searchCutoffMs",
- "description": "Get an user defined searchCutoffMs",
+ "description": "Returns the current value of the `searchCutoffMs` setting for the index.",
"operationId": "getsearchCutoffMs",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -8437,7 +9348,7 @@
],
"responses": {
"200": {
- "description": "searchCutoffMs is returned",
+ "description": "Returns the current value of the `searchCutoffMs` setting.",
"content": {
"application/json": {
"schema": {
@@ -8450,7 +9361,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -8464,6 +9375,22 @@
}
}
}
+ },
+ "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": [
@@ -8523,13 +9450,13 @@
"Settings"
],
"summary": "Update searchCutoffMs",
- "description": "Update an index's user defined 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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -8550,8 +9477,8 @@
"required": true
},
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -8568,7 +9495,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -8582,6 +9509,22 @@
}
}
}
+ },
+ "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": [
@@ -8641,13 +9584,13 @@
"Settings"
],
"summary": "Reset searchCutoffMs",
- "description": "Reset an index's searchCutoffMs to its default value",
+ "description": "Resets the `searchCutoffMs` setting to its default value.",
"operationId": "deletesearchCutoffMs",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -8655,21 +9598,9 @@
"example": "movies"
}
],
- "requestBody": {
- "content": {
- "text/plain": {
- "schema": {
- "type": "integer",
- "format": "u-int64",
- "minimum": 0
- }
- }
- },
- "required": true
- },
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -8686,7 +9617,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -8700,6 +9631,22 @@
}
}
}
+ },
+ "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": [
@@ -8761,13 +9708,13 @@
"Settings"
],
"summary": "Get searchableAttributes",
- "description": "Get an user defined searchableAttributes",
+ "description": "Returns the current value of the `searchableAttributes` setting for the index.",
"operationId": "getsearchableAttributes",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -8777,7 +9724,7 @@
],
"responses": {
"200": {
- "description": "searchableAttributes is returned",
+ "description": "Returns the current value of the `searchableAttributes` setting.",
"content": {
"application/json": {
"schema": {
@@ -8791,7 +9738,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -8805,6 +9752,22 @@
}
}
}
+ },
+ "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": [
@@ -8855,7 +9818,7 @@
},
{
"lang": "Dart",
- "source": "await client.index('movies').getSearchableAttributes();\ndate_searchable_attributes_1: \"await client\\n .index('movies')\\n .updateSearchableAttributes(['title', 'overview', 'genres']);\""
+ "source": "await client.index('movies').getSearchableAttributes();\nupdate_searchable_attributes_1: \"await client\\n .index('movies')\\n .updateSearchableAttributes(['title', 'overview', 'genres']);\""
},
{
"lang": "Swift",
@@ -8868,13 +9831,13 @@
"Settings"
],
"summary": "Update searchableAttributes",
- "description": "Update an index's user defined 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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -8896,8 +9859,8 @@
"required": true
},
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -8914,7 +9877,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -8928,6 +9891,22 @@
}
}
}
+ },
+ "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": [
@@ -8987,13 +9966,13 @@
"Settings"
],
"summary": "Reset searchableAttributes",
- "description": "Reset an index's searchableAttributes to its default value",
+ "description": "Resets the `searchableAttributes` setting to its default value.",
"operationId": "deletesearchableAttributes",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -9001,22 +9980,9 @@
"example": "movies"
}
],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "required": true
- },
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -9033,7 +9999,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -9047,6 +10013,22 @@
}
}
}
+ },
+ "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": [
@@ -9112,13 +10094,13 @@
"Settings"
],
"summary": "Get separatorTokens",
- "description": "Get an user defined separatorTokens",
+ "description": "Returns the current value of the `separatorTokens` setting for the index.",
"operationId": "getseparatorTokens",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -9128,7 +10110,7 @@
],
"responses": {
"200": {
- "description": "separatorTokens is returned",
+ "description": "Returns the current value of the `separatorTokens` setting.",
"content": {
"application/json": {
"schema": {
@@ -9143,7 +10125,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -9157,6 +10139,22 @@
}
}
}
+ },
+ "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": [
@@ -9216,13 +10214,13 @@
"Settings"
],
"summary": "Update separatorTokens",
- "description": "Update an index's user defined 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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -9245,8 +10243,8 @@
"required": true
},
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -9263,7 +10261,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -9277,6 +10275,22 @@
}
}
}
+ },
+ "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": [
@@ -9336,13 +10350,13 @@
"Settings"
],
"summary": "Reset separatorTokens",
- "description": "Reset an index's separatorTokens to its default value",
+ "description": "Resets the `separatorTokens` setting to its default value.",
"operationId": "deleteseparatorTokens",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -9350,23 +10364,9 @@
"example": "movies"
}
],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "uniqueItems": true
- }
- }
- },
- "required": true
- },
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -9383,7 +10383,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -9397,6 +10397,22 @@
}
}
}
+ },
+ "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": [
@@ -9458,13 +10474,13 @@
"Settings"
],
"summary": "Get sortableAttributes",
- "description": "Get an user defined sortableAttributes",
+ "description": "Returns the current value of the `sortableAttributes` setting for the index.",
"operationId": "getsortableAttributes",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -9474,7 +10490,7 @@
],
"responses": {
"200": {
- "description": "sortableAttributes is returned",
+ "description": "Returns the current value of the `sortableAttributes` setting.",
"content": {
"application/json": {
"schema": {
@@ -9489,7 +10505,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -9503,6 +10519,22 @@
}
}
}
+ },
+ "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": [
@@ -9553,7 +10585,7 @@
},
{
"lang": "Dart",
- "source": "await client.index('books').getSortableAttributes();\ndate_sortable_attributes_1: \"await client.index('books').updateSortableAttributes(['price', 'author']);\""
+ "source": "await client.index('books').getSortableAttributes();\nupdate_sortable_attributes_1: \"await client.index('books').updateSortableAttributes(['price', 'author']);\""
},
{
"lang": "Swift",
@@ -9566,13 +10598,13 @@
"Settings"
],
"summary": "Update sortableAttributes",
- "description": "Update an index's user defined 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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -9595,8 +10627,8 @@
"required": true
},
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -9613,7 +10645,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -9627,6 +10659,22 @@
}
}
}
+ },
+ "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": [
@@ -9686,13 +10734,13 @@
"Settings"
],
"summary": "Reset sortableAttributes",
- "description": "Reset an index's sortableAttributes to its default value",
+ "description": "Resets the `sortableAttributes` setting to its default value.",
"operationId": "deletesortableAttributes",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -9700,23 +10748,9 @@
"example": "movies"
}
],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "uniqueItems": true
- }
- }
- },
- "required": true
- },
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -9733,7 +10767,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -9747,6 +10781,22 @@
}
}
}
+ },
+ "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": [
@@ -9797,7 +10847,7 @@
},
{
"lang": "Dart",
- "source": "await client.index('books').resetSortableAttributes();\narch_parameter_guide_sort_1: \"await client\\n .index('books')\\n .search('science fiction', SearchQuery(sort: ['price:asc']));\""
+ "source": "await client.index('books').resetSortableAttributes();\nsearch_parameter_guide_sort_1: \"await client\\n .index('books')\\n .search('science fiction', SearchQuery(sort: ['price:asc']));\""
},
{
"lang": "Swift",
@@ -9812,13 +10862,13 @@
"Settings"
],
"summary": "Get stopWords",
- "description": "Get an user defined stopWords",
+ "description": "Returns the current value of the `stopWords` setting for the index.",
"operationId": "getstopWords",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -9828,7 +10878,7 @@
],
"responses": {
"200": {
- "description": "stopWords is returned",
+ "description": "Returns the current value of the `stopWords` setting.",
"content": {
"application/json": {
"schema": {
@@ -9843,7 +10893,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -9857,6 +10907,22 @@
}
}
}
+ },
+ "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": [
@@ -9920,13 +10986,13 @@
"Settings"
],
"summary": "Update stopWords",
- "description": "Update an index's user defined 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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -9949,8 +11015,8 @@
"required": true
},
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -9967,7 +11033,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -9981,6 +11047,22 @@
}
}
}
+ },
+ "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": [
@@ -10044,13 +11126,13 @@
"Settings"
],
"summary": "Reset stopWords",
- "description": "Reset an index's stopWords to its default value",
+ "description": "Resets the `stopWords` setting to its default value.",
"operationId": "deletestopWords",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -10058,23 +11140,9 @@
"example": "movies"
}
],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "uniqueItems": true
- }
- }
- },
- "required": true
- },
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -10091,7 +11159,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -10105,6 +11173,22 @@
}
}
}
+ },
+ "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": [
@@ -10170,13 +11254,13 @@
"Settings"
],
"summary": "Get synonyms",
- "description": "Get an user defined synonyms",
+ "description": "Returns the current value of the `synonyms` setting for the index.",
"operationId": "getsynonyms",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -10186,7 +11270,7 @@
],
"responses": {
"200": {
- "description": "synonyms is returned",
+ "description": "Returns the current value of the `synonyms` setting.",
"content": {
"application/json": {
"schema": {
@@ -10206,7 +11290,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -10220,6 +11304,22 @@
}
}
}
+ },
+ "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": [
@@ -10270,7 +11370,7 @@
},
{
"lang": "Dart",
- "source": "await client.index('movies').getSynonyms();\ndate_synonyms_1: \"await client.index('movies').updateSynonyms({\\n 'wolverine': ['xmen', 'logan'],\\n 'logan': ['wolverine', 'xmen'],\\n 'wow': ['world of warcraft'],\\n});\""
+ "source": "await client.index('movies').getSynonyms();\nupdate_synonyms_1: \"await client.index('movies').updateSynonyms({\\n 'wolverine': ['xmen', 'logan'],\\n 'logan': ['wolverine', 'xmen'],\\n 'wow': ['world of warcraft'],\\n});\""
},
{
"lang": "Swift",
@@ -10283,13 +11383,13 @@
"Settings"
],
"summary": "Update synonyms",
- "description": "Update an index's user defined 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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -10317,8 +11417,8 @@
"required": true
},
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -10335,7 +11435,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -10349,6 +11449,22 @@
}
}
}
+ },
+ "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": [
@@ -10408,13 +11524,13 @@
"Settings"
],
"summary": "Reset synonyms",
- "description": "Reset an index's synonyms to its default value",
+ "description": "Resets the `synonyms` setting to its default value.",
"operationId": "deletesynonyms",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -10422,28 +11538,9 @@
"example": "movies"
}
],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "additionalProperties": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "propertyNames": {
- "type": "string"
- }
- }
- }
- },
- "required": true
- },
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -10460,7 +11557,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -10474,6 +11571,22 @@
}
}
}
+ },
+ "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": [
@@ -10539,13 +11652,13 @@
"Settings"
],
"summary": "Get typoTolerance",
- "description": "Get an user defined typoTolerance",
+ "description": "Returns the current value of the `typoTolerance` setting for the index.",
"operationId": "gettypoTolerance",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -10555,7 +11668,7 @@
],
"responses": {
"200": {
- "description": "typoTolerance is returned",
+ "description": "Returns the current value of the `typoTolerance` setting.",
"content": {
"application/json": {
"schema": {
@@ -10566,7 +11679,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -10580,6 +11693,22 @@
}
}
}
+ },
+ "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": [
@@ -10631,13 +11760,13 @@
"Settings"
],
"summary": "Reset typoTolerance",
- "description": "Reset an index's typoTolerance to its default value",
+ "description": "Resets the `typoTolerance` setting to its default value.",
"operationId": "deletetypoTolerance",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -10645,19 +11774,9 @@
"example": "movies"
}
],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/TypoSettings"
- }
- }
- },
- "required": true
- },
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -10674,7 +11793,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -10688,6 +11807,22 @@
}
}
}
+ },
+ "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": [
@@ -10747,13 +11882,13 @@
"Settings"
],
"summary": "Update typoTolerance",
- "description": "Update an index's user defined 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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -10772,8 +11907,8 @@
"required": true
},
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -10790,7 +11925,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -10804,6 +11939,22 @@
}
}
}
+ },
+ "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": [
@@ -10865,13 +12016,13 @@
"Settings"
],
"summary": "Get vectorStore",
- "description": "Get an user defined vectorStore",
+ "description": "Returns the current value of the `vectorStore` setting for the index.",
"operationId": "getvectorStore",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -10881,7 +12032,7 @@
],
"responses": {
"200": {
- "description": "vectorStore is returned",
+ "description": "Returns the current value of the `vectorStore` setting.",
"content": {
"application/json": {
"schema": {
@@ -10892,7 +12043,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -10906,6 +12057,22 @@
}
}
}
+ },
+ "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": [
@@ -10929,13 +12096,13 @@
"Settings"
],
"summary": "Reset vectorStore",
- "description": "Reset an index's vectorStore to its default value",
+ "description": "Resets the `vectorStore` setting to its default value.",
"operationId": "deletevectorStore",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -10943,19 +12110,9 @@
"example": "movies"
}
],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/VectorStoreBackend"
- }
- }
- },
- "required": true
- },
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -10972,7 +12129,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -10986,6 +12143,22 @@
}
}
}
+ },
+ "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": [
@@ -11009,13 +12182,13 @@
"Settings"
],
"summary": "Update vectorStore",
- "description": "Update an index's user defined vectorStore",
+ "description": "Updates the `vectorStore` setting for the index. Send the new value in the request body; send null to reset to default.",
"operationId": "patchvectorStore",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -11034,8 +12207,8 @@
"required": true
},
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -11052,7 +12225,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -11066,6 +12239,22 @@
}
}
}
+ },
+ "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": [
@@ -11091,13 +12280,13 @@
"Similar documents"
],
"summary": "Get similar documents with GET",
- "description": "Retrieve documents similar to a specific search result.",
+ "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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -11107,7 +12296,16 @@
{
"name": "id",
"in": "query",
- "description": "The unique identifier (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.",
+ "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"
@@ -11117,7 +12315,7 @@
"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": true,
+ "required": false,
"schema": {
"type": "integer",
"default": 0,
@@ -11128,7 +12326,7 @@
"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": true,
+ "required": false,
"schema": {
"type": "integer",
"default": 20,
@@ -11139,7 +12337,7 @@
"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": true,
+ "required": false,
"schema": {
"type": "array",
"items": {
@@ -11151,7 +12349,7 @@
"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": true,
+ "required": false,
"schema": {
"type": "boolean"
}
@@ -11169,7 +12367,7 @@
"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": true,
+ "required": false,
"schema": {
"type": "boolean"
}
@@ -11178,7 +12376,7 @@
"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": true,
+ "required": false,
"schema": {
"type": "boolean"
}
@@ -11187,7 +12385,7 @@
"name": "show_performance_details",
"in": "query",
"description": "When `true`, includes a `_performanceDetails` object showing the\nperformance details of the search.",
- "required": true,
+ "required": false,
"schema": {
"type": "boolean"
}
@@ -11201,20 +12399,11 @@
"type": "number",
"format": "float"
}
- },
- {
- "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"
- }
}
],
"responses": {
"200": {
- "description": "The documents are returned",
+ "description": "The documents are returned.",
"content": {
"application/json": {
"schema": {
@@ -11247,7 +12436,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -11263,7 +12452,7 @@
}
},
"404": {
- "description": "Index not found",
+ "description": "Index not found.",
"content": {
"application/json": {
"schema": {
@@ -11299,13 +12488,13 @@
"Similar documents"
],
"summary": "Get similar documents with POST",
- "description": "Retrieve documents similar to a specific search result.",
+ "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": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -11325,7 +12514,7 @@
},
"responses": {
"200": {
- "description": "The documents are returned",
+ "description": "The documents are returned.",
"content": {
"application/json": {
"schema": {
@@ -11358,7 +12547,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -11374,7 +12563,7 @@
}
},
"404": {
- "description": "Index not found",
+ "description": "Index not found.",
"content": {
"application/json": {
"schema": {
@@ -11436,13 +12625,13 @@
"Stats"
],
"summary": "Get stats of index",
- "description": "Get the stats of an index.",
+ "description": "Return statistics for a single index: document count, database size, indexing status, and field distribution.",
"operationId": "get_index_stats",
"parameters": [
{
"name": "indexUid",
"in": "path",
- "description": "Index Unique Identifier",
+ "description": "Unique identifier of the index.",
"required": true,
"schema": {
"type": "string"
@@ -11452,7 +12641,7 @@
],
"responses": {
"200": {
- "description": "The stats of the index",
+ "description": "The stats of the index.",
"content": {
"application/json": {
"schema": {
@@ -11474,7 +12663,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -11490,7 +12679,7 @@
}
},
"404": {
- "description": "Index not found",
+ "description": "Index not found.",
"content": {
"application/json": {
"schema": {
@@ -11569,14 +12758,14 @@
"Keys"
],
"summary": "List API keys",
- "description": "List all 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.",
"operationId": "list_api_keys",
"parameters": [
{
"name": "offset",
"in": "query",
- "description": "Number of API keys to skip in the response. Use together with `limit`\nfor pagination through large sets of keys. For example, to get keys\n21-40, set `offset=20` and `limit=20`. Defaults to `0`.",
- "required": true,
+ "description": "Number of keys to skip. Use with `limit` for pagination. Defaults to 0.",
+ "required": false,
"schema": {
"type": "integer",
"default": 0,
@@ -11586,8 +12775,8 @@
{
"name": "limit",
"in": "query",
- "description": "Maximum number of API keys to return in a single response. Use together\nwith `offset` for pagination. Defaults to `20`.",
- "required": true,
+ "description": "Maximum number of keys to return. Use with `offset` for pagination. Defaults to 20.",
+ "required": false,
"schema": {
"type": "integer",
"default": 20,
@@ -11596,8 +12785,8 @@
}
],
"responses": {
- "202": {
- "description": "List of keys",
+ "200": {
+ "description": "List of keys.",
"content": {
"application/json": {
"schema": {
@@ -11629,7 +12818,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -11693,7 +12882,7 @@
},
{
"lang": "Dart",
- "source": "await client.getKeys(params: KeysQuery(limit: 3));\neate_a_key_1: \"await client.createKey(\\n description: 'Add documents: Products API key',\\n actions: ['documents.add'],\\n indexes: ['products'],\\n expiresAt: DateTime(2042, 04, 02));\"\ndate_a_key_1: \"await client.updateKey(\\n '6062abda-a5aa-4414-ac91-ecd7944c0f8d',\\n description: 'Manage documents: Products\\/Reviews API key',\\n name: 'Products\\/Reviews API key',\\n);\""
+ "source": "await client.getKeys(params: KeysQuery(limit: 3));\ncreate_a_key_1: \"await client.createKey(\\n description: 'Add documents: Products API key',\\n actions: ['documents.add'],\\n indexes: ['products'],\\n expiresAt: DateTime(2042, 04, 02));\"\nupdate_a_key_1: \"await client.updateKey(\\n '6062abda-a5aa-4414-ac91-ecd7944c0f8d',\\n description: 'Manage documents: Products\\/Reviews API key',\\n name: 'Products\\/Reviews API key',\\n);\""
},
{
"lang": "Swift",
@@ -11706,7 +12895,7 @@
"Keys"
],
"summary": "Create API key",
- "description": "Create an 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.",
"operationId": "create_api_key",
"requestBody": {
"content": {
@@ -11719,8 +12908,8 @@
"required": true
},
"responses": {
- "202": {
- "description": "Key has been created",
+ "201": {
+ "description": "Key has been created.",
"content": {
"application/json": {
"schema": {
@@ -11745,7 +12934,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -11820,13 +13009,13 @@
"Keys"
],
"summary": "Get API key",
- "description": "Get an API key from its `uid` or its `key` field.",
+ "description": "Retrieve a single API key by its `uid` or by its `key` value.",
"operationId": "get_api_key",
"parameters": [
{
"name": "uidOrKey",
"in": "path",
- "description": "The `uid` or `key` field of an existing API key",
+ "description": "The `uid` or `key` field of an existing API key.",
"required": true,
"schema": {
"type": "string",
@@ -11837,7 +13026,7 @@
],
"responses": {
"200": {
- "description": "The key is returned",
+ "description": "The key is returned.",
"content": {
"application/json": {
"schema": {
@@ -11862,7 +13051,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -11876,6 +13065,22 @@
}
}
}
+ },
+ "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": [
@@ -11939,13 +13144,13 @@
"Keys"
],
"summary": "Delete API key",
- "description": "Delete the specified API key.",
+ "description": "Permanently delete the specified API key. The key will no longer be valid for authentication.",
"operationId": "delete_api_key",
"parameters": [
{
"name": "uidOrKey",
"in": "path",
- "description": "The `uid` or `key` field of an existing API key",
+ "description": "The `uid` or `key` field of an existing API key.",
"required": true,
"schema": {
"type": "string",
@@ -11956,10 +13161,10 @@
],
"responses": {
"204": {
- "description": "The key have been removed"
+ "description": "The key has been removed."
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -11973,6 +13178,22 @@
}
}
}
+ },
+ "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": [
@@ -12019,7 +13240,7 @@
},
{
"lang": "Rust",
- "source": "let key = client\n .get_key(\"6062abda-a5aa-4414-ac91-ecd7944c0f8d\")\n .await\n .unwrap();\nclient\n .delete_key(&key)\n .await?;\nthorization_header_1:\nlet client = Client::new(\"http://localhost:7700\", Some(\"masterKey\"));\nlet keys = client\n.get_keys()\n.await\n.unwrap();"
+ "source": "let key = client\n .get_key(\"6062abda-a5aa-4414-ac91-ecd7944c0f8d\")\n .await\n .unwrap();\nclient\n .delete_key(&key)\n .await?;\nauthorization_header_1:\nlet client = Client::new(\"http://localhost:7700\", Some(\"masterKey\"));\nlet keys = client\n.get_keys()\n.await\n.unwrap();"
},
{
"lang": "Dart",
@@ -12036,13 +13257,13 @@
"Keys"
],
"summary": "Update API key",
- "description": "Update the name and description of an API key. Updates to keys are partial.\nThis means you should provide only the fields you intend to update, as any\nfields not present in the payload will remain unchanged.",
+ "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.",
"operationId": "patch_api_key",
"parameters": [
{
"name": "uidOrKey",
"in": "path",
- "description": "The `uid` or `key` field of an existing API key",
+ "description": "The `uid` or `key` field of an existing API key.",
"required": true,
"schema": {
"type": "string",
@@ -12063,7 +13284,7 @@
},
"responses": {
"200": {
- "description": "The key have been updated",
+ "description": "The key has been updated.",
"content": {
"application/json": {
"schema": {
@@ -12088,7 +13309,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -12102,6 +13323,22 @@
}
}
}
+ },
+ "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": [
@@ -12163,7 +13400,7 @@
"Experimental features"
],
"summary": "Update target of the console logs",
- "description": "This route lets you specify at runtime the level of the console logs\noutputted on stderr.",
+ "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": {
@@ -12177,10 +13414,10 @@
},
"responses": {
"204": {
- "description": "The console logs have been updated"
+ "description": "The console logs have been updated."
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -12219,7 +13456,7 @@
"Experimental features"
],
"summary": "Retrieve logs",
- "description": "Stream logs over HTTP. The format of the logs depends on the\nconfiguration specified in the payload. The logs are sent as multi-part,\nand the stream never stops, so make sure your clients correctly handle\nthat. To make the server stop sending you logs, you can call the `DELETE\n/logs/stream` route.\n\nThere can only be one listener at a timeand an error will be returned if\nyou call this route while it's being used by another client.",
+ "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": {
@@ -12233,7 +13470,7 @@
},
"responses": {
"200": {
- "description": "Logs are being returned",
+ "description": "Logs are being returned.",
"content": {
"application/json": {
"schema": {
@@ -12244,7 +13481,7 @@
}
},
"400": {
- "description": "The route is already being used",
+ "description": "The route is already being used.",
"content": {
"application/json": {
"schema": {
@@ -12260,7 +13497,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -12297,14 +13534,14 @@
"Experimental features"
],
"summary": "Stop retrieving logs",
- "description": "Call this route to make the engine stops sending logs through the `POST\n/logs/stream` route.",
+ "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"
+ "description": "Logs are being returned."
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -12342,12 +13579,12 @@
"tags": [
"Stats"
],
- "summary": "Get prometheus metrics",
- "description": "Retrieve metrics on the engine. See https://www.meilisearch.com/docs/learn/experimental/metrics\nCurrently, [the feature is experimental](https://www.meilisearch.com/docs/learn/experimental/overview)\nwhich means it must be enabled.",
+ "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",
+ "description": "The metrics of the instance.",
"content": {
"text/plain": {
"schema": {
@@ -12358,7 +13595,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -12397,7 +13634,7 @@
"Search"
],
"summary": "Perform a multi-search",
- "description": "Bundle multiple search queries in a single API request. Use this endpoint\nto search through multiple indexes at once.",
+ "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.",
"operationId": "multi_search_with_post",
"requestBody": {
"content": {
@@ -12411,7 +13648,7 @@
},
"responses": {
"200": {
- "description": "Federated multi-search",
+ "description": "Federated multi-search.",
"content": {
"application/json": {
"schema": {
@@ -12448,7 +13685,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -12491,7 +13728,7 @@
},
{
"lang": "Java",
- "source": "MultiSearchRequest multiSearchRequest = new MultiSearchRequest();\nmultiIndexSearch.addQuery(new IndexSearchRequest(\"movies\").setQuery(\"pooh\").setLimit(5));\nmultiIndexSearch.addQuery(new IndexSearchRequest(\"movies\").setQuery(\"nemo\").setLimit(5));\nmultiIndexSearch.addQuery(new IndexSearchRequest(\"movie_ratings\").setQuery(\"us\"));\n\nclient.multiSearch(multiSearchRequest);\nt_similar_post_1:\nSimilarDocumentRequest query = new SimilarDocumentRequest()\n .setId(\"143\")\n .setEmbedder(\"manual\");\nclient.index(\"movies\").searchSimilarDocuments(query)"
+ "source": "MultiSearchRequest multiSearchRequest = new MultiSearchRequest();\nmultiIndexSearch.addQuery(new IndexSearchRequest(\"movies\").setQuery(\"pooh\").setLimit(5));\nmultiIndexSearch.addQuery(new IndexSearchRequest(\"movies\").setQuery(\"nemo\").setLimit(5));\nmultiIndexSearch.addQuery(new IndexSearchRequest(\"movie_ratings\").setQuery(\"us\"));\n\nclient.multiSearch(multiSearchRequest);\nget_similar_post_1:\nSimilarDocumentRequest query = new SimilarDocumentRequest()\n .setId(\"143\")\n .setEmbedder(\"manual\");\nclient.index(\"movies\").searchSimilarDocuments(query)"
},
{
"lang": "Ruby",
@@ -12518,11 +13755,11 @@
"Experimental features"
],
"summary": "Get network topology",
- "description": "Get a list of all Meilisearch instances currently known to this instance.",
+ "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",
+ "description": "Known nodes are returned.",
"content": {
"application/json": {
"schema": {
@@ -12552,7 +13789,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -12604,7 +13841,7 @@
"Experimental features"
],
"summary": "Configure network topology",
- "description": "Add or remove nodes from network.",
+ "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": {
@@ -12618,7 +13855,7 @@
},
"responses": {
"200": {
- "description": "New network state is returned",
+ "description": "New network state is returned.",
"content": {
"application/json": {
"schema": {
@@ -12648,7 +13885,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -12702,11 +13939,11 @@
"Backups"
],
"summary": "Create snapshot",
- "description": "Triggers a snapshot creation process. Once the process is complete, a snapshot is created in the snapshot directory. If the snapshot directory does not exist yet, it will be created.",
+ "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",
+ "description": "Snapshot is being created.",
"content": {
"application/json": {
"schema": {
@@ -12723,7 +13960,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -12798,11 +14035,11 @@
"Stats"
],
"summary": "Get stats of all indexes",
- "description": "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",
"responses": {
"200": {
- "description": "The stats of the instance",
+ "description": "The stats of the instance.",
"content": {
"application/json": {
"schema": {
@@ -12830,7 +14067,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -12909,7 +14146,7 @@
"Indexes"
],
"summary": "Swap indexes",
- "description": "Swap the documents, settings, and task history of two or more indexes.\nYou can only swap indexes in pairs. However, a single request can swap as\nmany index pairs as you wish. Swapping indexes is an atomic transaction:\neither all indexes are successfully swapped, or none are. Swapping indexA\nand indexB will also replace every mention of indexA by indexB and\nvice-versa in the task history. enqueued tasks are left unmodified.",
+ "description": "Swap the documents, 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": {
@@ -12925,8 +14162,8 @@
"required": true
},
"responses": {
- "200": {
- "description": "Task successfully enqueued",
+ "202": {
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -12943,7 +14180,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -13017,13 +14254,13 @@
"Async task management"
],
"summary": "List tasks",
- "description": "Get all [tasks](https://docs.meilisearch.com/learn/advanced/asynchronous_operations.html)",
+ "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",
+ "description": "Maximum number of batches to return.",
"required": false,
"schema": {
"type": "integer",
@@ -13036,7 +14273,7 @@
{
"name": "from",
"in": "query",
- "description": "`uid` of the first batch returned",
+ "description": "`uid` of the first batch returned.",
"required": false,
"schema": {
"type": "integer",
@@ -13048,7 +14285,7 @@
{
"name": "reverse",
"in": "query",
- "description": "If `true`, returns results in the reverse order, from oldest to most recent",
+ "description": "If `true`, returns results in the reverse order, from oldest to most recent.",
"required": false,
"schema": {
"type": "boolean"
@@ -13216,7 +14453,7 @@
],
"responses": {
"200": {
- "description": "Get all tasks",
+ "description": "The list of tasks is returned.",
"content": {
"application/json": {
"schema": {
@@ -13247,7 +14484,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -13320,7 +14557,7 @@
"Async task management"
],
"summary": "Delete tasks",
- "description": "Delete [tasks](https://docs.meilisearch.com/learn/advanced/asynchronous_operations.html) on filter",
+ "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.",
"operationId": "delete_tasks",
"parameters": [
{
@@ -13489,7 +14726,7 @@
],
"responses": {
"200": {
- "description": "Task successfully enqueued",
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -13506,7 +14743,7 @@
}
},
"400": {
- "description": "A filter is missing",
+ "description": "A filter is missing.",
"content": {
"application/json": {
"schema": {
@@ -13522,7 +14759,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -13538,7 +14775,7 @@
}
},
"404": {
- "description": "The task uid does not exist",
+ "description": "The task uid does not exist.",
"content": {
"application/json": {
"schema": {
@@ -13617,7 +14854,7 @@
"Async task management"
],
"summary": "Cancel tasks",
- "description": "Cancel enqueued and/or processing [tasks](https://www.meilisearch.com/docs/learn/async/asynchronous_operations)",
+ "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.",
"operationId": "cancel_tasks",
"parameters": [
{
@@ -13786,7 +15023,7 @@
],
"responses": {
"200": {
- "description": "Task successfully enqueued",
+ "description": "Task successfully enqueued.",
"content": {
"application/json": {
"schema": {
@@ -13803,7 +15040,7 @@
}
},
"400": {
- "description": "A filter is missing",
+ "description": "A filter is missing.",
"content": {
"application/json": {
"schema": {
@@ -13819,7 +15056,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -13833,22 +15070,6 @@
}
}
}
- },
- "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": [
@@ -13899,7 +15120,7 @@
},
{
"lang": "Dart",
- "source": "await client.cancelTasks(params: CancelTasksQuery(uids: [1, 2]));"
+ "source": "await client.cancelTasks(params: CancelTasksQuery(uids: [1, 2]));\nswap_indexes_1: \"await client.swapIndexes([\\n SwapIndex(['indexA', 'indexB']),\\n SwapIndex(['indexX', 'indexY']),\\n]);\"\nsearch_parameter_guide_hitsperpage_1: \"await client\\n .index('movies')\\n .search('', SearchQuery(hitsPerPage: 15))\\n .asPaginatedResult();\"\nsearch_parameter_guide_page_1: \"await client\\n .index('movies')\\n .search('', SearchQuery(page: 2))\\n .asPaginatedResult();\"\nsynonyms_guide_1: \"await client.index('movies').updateSynonyms({\\n 'great': ['fantastic'],\\n 'fantastic': ['great'],\\n});\"\ndate_guide_index_1: \"\\/\\/import 'dart:io';\\n\\/\\/import 'dart:convert';\\nfinal json = await File('games.json').readAsString();\\nawait client.index('games').addDocumentsJson(json);\"\ndate_guide_filterable_attributes_1: \"await client\\n .index('games')\\n .updateFilterableAttributes(['release_timestamp']);\"\ndate_guide_filter_1: \"await client.index('games').search(\\n '',\\n SearchQuery(\\n filterExpression: Meili.and([\\n Meili.gte(\\n 'release_timestamp'.toMeiliAttribute(),\\n Meili.value(DateTime(2017, 12, 31, 23, 0)),\\n ),\\n Meili.lt(\\n 'release_timestamp'.toMeiliAttribute(),\\n Meili.value(DateTime(2022, 12, 31, 23, 0)),\\n ),\\n ]),\\n ),\\n );\"\ndate_guide_sortable_attributes_1: \"await client\\n .index('games')\\n .updateSortableAttributes(['release_timestamp']);\"\ndate_guide_sort_1: \"await client\\n .index('games')\\n .search('', SearchQuery(sort: ['release_timestamp:desc']));\""
},
{
"lang": "Swift",
@@ -13914,13 +15135,13 @@
"Async task management"
],
"summary": "Get task",
- "description": "Get a [task](https://www.meilisearch.com/docs/learn/async/asynchronous_operations)",
+ "description": "Retrieve a single [task](https://www.meilisearch.com/docs/learn/async/asynchronous_operations) by its uid.",
"operationId": "get_task",
"parameters": [
{
"name": "taskUid",
"in": "path",
- "description": "The task identifier",
+ "description": "The task identifier.",
"required": true,
"schema": {
"type": "string",
@@ -13931,7 +15152,7 @@
],
"responses": {
"200": {
- "description": "Task successfully retrieved",
+ "description": "Task successfully retrieved.",
"content": {
"application/json": {
"schema": {
@@ -13954,7 +15175,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -13970,7 +15191,7 @@
}
},
"404": {
- "description": "The task uid does not exist",
+ "description": "The task uid does not exist.",
"content": {
"application/json": {
"schema": {
@@ -14045,11 +15266,11 @@
"Version"
],
"summary": "Get version",
- "description": "Current version of Meilisearch.",
+ "description": "Return the current Meilisearch version, including the commit SHA and build date.",
"operationId": "get_version",
"responses": {
"200": {
- "description": "Instance is healthy",
+ "description": "Instance is healthy.",
"content": {
"application/json": {
"schema": {
@@ -14064,7 +15285,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -14142,11 +15363,11 @@
"Webhooks"
],
"summary": "List webhooks",
- "description": "Get the list of all registered 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",
+ "description": "Webhooks are returned.",
"content": {
"application/json": {
"schema": {
@@ -14173,7 +15394,7 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "description": "The authorization header is missing.",
"content": {
"application/json": {
"schema": {
@@ -14227,7 +15448,7 @@
"Webhooks"
],
"summary": "Create webhook",
- "description": "Create a new webhook to receive task notifications.",
+ "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": {
@@ -14241,7 +15462,7 @@
},
"responses": {
"201": {
- "description": "Webhook created successfully",
+ "description": "Webhook created successfully.",
"content": {
"application/json": {
"schema": {
@@ -14259,21 +15480,33 @@
}
},
"400": {
- "description": "Bad request",
+ "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",
+ "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"
}
}
}
@@ -14318,13 +15551,13 @@
"Webhooks"
],
"summary": "Get webhook",
- "description": "Get a single webhook by its UUID.",
+ "description": "Retrieve a single webhook by its UUID.",
"operationId": "get_webhook",
"parameters": [
{
"name": "uuid",
"in": "path",
- "description": "The universally unique identifier of the webhook",
+ "description": "Unique identifier of the webhook.",
"required": true,
"schema": {
"type": "string",
@@ -14334,7 +15567,7 @@
],
"responses": {
"200": {
- "description": "Webhook found",
+ "description": "Webhook found.",
"content": {
"application/json": {
"schema": {
@@ -14352,21 +15585,33 @@
}
},
"401": {
- "description": "The authorization header is missing",
+ "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",
+ "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"
}
}
}
@@ -14410,13 +15655,13 @@
"Webhooks"
],
"summary": "Delete webhook",
- "description": "Delete an existing webhook by its UUID.",
+ "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": "The universally unique identifier of the webhook",
+ "description": "Universally unique identifier of the webhook.",
"required": true,
"schema": {
"type": "string",
@@ -14426,24 +15671,36 @@
],
"responses": {
"204": {
- "description": "Webhook deleted successfully"
+ "description": "Webhook deleted successfully."
},
"401": {
- "description": "The authorization header is missing",
+ "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",
+ "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"
}
}
}
@@ -14486,13 +15743,13 @@
"Webhooks"
],
"summary": "Update webhook",
- "description": "Update an existing webhook's URL or headers.",
+ "description": "Update the URL or headers of an existing webhook identified by its UUID.",
"operationId": "patch_webhook",
"parameters": [
{
"name": "uuid",
"in": "path",
- "description": "The universally unique identifier of the webhook",
+ "description": "Universally unique identifier of the webhook.",
"required": true,
"schema": {
"type": "string",
@@ -14512,7 +15769,7 @@
},
"responses": {
"200": {
- "description": "Webhook updated successfully",
+ "description": "Webhook updated successfully. Returns the webhook with metadata and redacted authorization headers.",
"content": {
"application/json": {
"schema": {
@@ -14530,21 +15787,49 @@
}
},
"400": {
- "description": "Bad request",
+ "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",
+ "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"
}
}
}
@@ -14888,7 +16173,7 @@
},
"BatchView": {
"type": "object",
- "description": "Represents a batch of tasks that were processed together.\n\nMeilisearch groups compatible tasks into batches for efficient processing.\nFor example, multiple document additions to the same index may be batched\ntogether. Use this view to monitor batch progress and performance.",
+ "description": "Represents a batch of tasks that were processed together.",
"required": [
"uid",
"details",
@@ -14947,11 +16232,6 @@
"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.",
- "required": [
- "offset",
- "limit",
- "retrieveVectors"
- ],
"properties": {
"offset": {
"type": "integer",
@@ -14992,7 +16272,7 @@
"items": {
"type": "string"
},
- "description": "Array of specific document IDs to retrieve. Only documents with\nmatching primary key values will be returned. If not specified, all\ndocuments matching other criteria are returned. This is useful for\nfetching specific known documents.",
+ "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",
@@ -15977,8 +17257,7 @@
"type": "object",
"description": "Request body for searching facet values",
"required": [
- "facet_name",
- "matching_strategy"
+ "facet_name"
],
"properties": {
"facet_query": {
@@ -16331,7 +17610,6 @@
},
"propertyNames": {
"type": "string",
- "description": "An index uid is composed of only ascii alphanumeric characters, - and _, between 1 and 400\nbytes long",
"example": "movies"
}
},
@@ -16381,6 +17659,147 @@
}
}
},
+ "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"
+ }
+ }
+ },
"FilterFeatures": {
"type": "object",
"description": "Controls which filter operators are allowed for an attribute. This\nprovides fine-grained control over filtering capabilities.",
@@ -16445,11 +17864,6 @@
"GetLogs": {
"type": "object",
"description": "Request body for streaming logs",
- "required": [
- "target",
- "mode",
- "profileMemory"
- ],
"properties": {
"target": {
"type": "string",
@@ -16615,7 +18029,7 @@
"string",
"null"
],
- "description": "Primary key of the index",
+ "description": "[Primary key](https://www.meilisearch.com/docs/learn/getting_started/primary_key) of the index",
"example": "id"
}
}
@@ -16711,7 +18125,6 @@
},
"IndexUid": {
"type": "string",
- "description": "An index uid is composed of only ascii alphanumeric characters, - and _, between 1 and 400\nbytes long",
"example": "movies"
},
"IndexView": {
@@ -16742,7 +18155,7 @@
"string",
"null"
],
- "description": "Primary key of the index"
+ "description": "[Primary key](https://www.meilisearch.com/docs/learn/getting_started/primary_key) of the index"
}
}
},
@@ -16840,6 +18253,91 @@
],
"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": {
+ "attribute_patterns": {
+ "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)."
+ },
+ "ranking_rule": {
+ "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)."
+ }
+ }
+ },
"Locale": {
"type": "string",
"enum": [
@@ -17214,9 +18712,77 @@
},
"additionalProperties": false
},
+ "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",
- "description": "Paginated response wrapper",
"required": [
"results",
"offset",
@@ -17254,32 +18820,31 @@
"string",
"null"
],
- "description": "Primary key of the index"
+ "description": "[Primary key](https://www.meilisearch.com/docs/learn/getting_started/primary_key) of the index"
}
}
},
- "description": "Array of items for the current page"
+ "description": "Items for the current page."
},
"offset": {
"type": "integer",
- "description": "Number of items skipped",
+ "description": "Number of items skipped.",
"minimum": 0
},
"limit": {
"type": "integer",
- "description": "Maximum number of items returned",
+ "description": "Maximum number of items returned.",
"minimum": 0
},
"total": {
"type": "integer",
- "description": "Total number of items matching the query",
+ "description": "Total number of items matching the query.",
"minimum": 0
}
}
},
"PaginationView_KeyView": {
"type": "object",
- "description": "Paginated response wrapper",
"required": [
"results",
"offset",
@@ -17360,28 +18925,27 @@
}
}
},
- "description": "Array of items for the current page"
+ "description": "Items for the current page."
},
"offset": {
"type": "integer",
- "description": "Number of items skipped",
+ "description": "Number of items skipped.",
"minimum": 0
},
"limit": {
"type": "integer",
- "description": "Maximum number of items returned",
+ "description": "Maximum number of items returned.",
"minimum": 0
},
"total": {
"type": "integer",
- "description": "Total number of items matching the query",
+ "description": "Total number of items matching the query.",
"minimum": 0
}
}
},
"PaginationView_Value": {
"type": "object",
- "description": "Paginated response wrapper",
"required": [
"results",
"offset",
@@ -17392,21 +18956,21 @@
"results": {
"type": "array",
"items": {},
- "description": "Array of items for the current page"
+ "description": "Items for the current page."
},
"offset": {
"type": "integer",
- "description": "Number of items skipped",
+ "description": "Number of items skipped.",
"minimum": 0
},
"limit": {
"type": "integer",
- "description": "Maximum number of items returned",
+ "description": "Maximum number of items returned.",
"minimum": 0
},
"total": {
"type": "integer",
- "description": "Total number of items matching the query",
+ "description": "Total number of items matching the query.",
"minimum": 0
}
}
@@ -17815,7 +19379,7 @@
"string",
"null"
],
- "description": "Primary key of the queried index"
+ "description": "[Primary key](https://www.meilisearch.com/docs/learn/getting_started/primary_key) of the queried index"
},
"remote": {
"type": [
@@ -17828,20 +19392,6 @@
},
"SearchQuery": {
"type": "object",
- "required": [
- "offset",
- "limit",
- "retrieve_vectors",
- "crop_length",
- "show_matches_position",
- "show_ranking_score",
- "show_ranking_score_details",
- "show_performance_details",
- "highlight_pre_tag",
- "highlight_post_tag",
- "crop_marker",
- "matching_strategy"
- ],
"properties": {
"q": {
"type": [
@@ -17966,7 +19516,7 @@
"boolean",
"null"
],
- "description": "Experimental: Whether this query should be performed on the whole network or locally.\n\nWhen performing the query on the whole network, this is \"as-if\" a remote federated search were performed,\nsuch that all shards are covered, and such that documents are deduplicated across the remotes.\n\n# Response\n\nThe response will have the same shape as a federated search response.\n\n# Edition\n\nThis feature is available in the Enterprise Edition.\n\n# Experimental\n\n- Setting this parameter to a value different from the default requires the `network` experimental feature.\n\n# Values\n\n- `Some(true)`: Use the whole network for this query.\n- `Some(false)`: Make this query local.\n- `None` (default): Same as `Some(false)`.\n\n# Assumptions when using the network\n\nNetwork queries assume that the following is true:\n\n- the target index exists with compatible settings on all remotes of the network.\n- any document with the same document id between two remotes have the same content and can be deduplicated."
+ "description": "When `true`, runs the query on the whole network (all shards covered, documents\ndeduplicated across remotes). When `false` or omitted, the query runs locally.\n\n**Enterprise Edition only.** This feature is available in the Enterprise Edition.\nIt also requires the `network` experimental feature.\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;\ndocuments with the same id are assumed identical for deduplication."
},
"filter": {
"description": "Filter queries by an attribute's value"
@@ -19215,14 +20765,7 @@
"description": "Request body for similar document search",
"required": [
"id",
- "offset",
- "limit",
- "embedder",
- "retrieve_vectors",
- "show_ranking_score",
- "show_ranking_score_details",
- "show_performance_details",
- "ranking_score_threshold"
+ "embedder"
],
"properties": {
"id": {
@@ -19503,7 +21046,7 @@
"taskUid": {
"type": "integer",
"format": "u-int32",
- "description": "Unique sequential identifier of the task",
+ "description": "Unique sequential identifier of the task.",
"minimum": 0
},
"indexUid": {
@@ -19511,27 +21054,27 @@
"string",
"null"
],
- "description": "Unique identifier of the targeted index. Null for global tasks"
+ "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,\nsucceeded, failed, and canceled"
+ "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"
+ "description": "Type of operation performed by the task."
},
"enqueuedAt": {
"type": "string",
"format": "date-time",
- "description": "Date and time when the task was enqueued"
+ "description": "Date and time when the task was enqueued."
},
"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 or\nadd application-specific information."
+ "description": "Custom metadata attached to this task at creation. Use it to associate\ntasks with external systems or add application-specific information."
}
}
},
@@ -19539,8 +21082,7 @@
"type": "object",
"description": "Request body for swapping two indexes",
"required": [
- "indexes",
- "rename"
+ "indexes"
],
"properties": {
"indexes": {
@@ -19548,7 +21090,7 @@
"items": {
"$ref": "#/components/schemas/IndexUid"
},
- "description": "Array of the two index UIDs to be swapped"
+ "description": "Array of the two index names to be swapped"
},
"rename": {
"type": "boolean",
@@ -19745,7 +21287,7 @@
"string",
"null"
],
- "description": "New primary key of the index"
+ "description": "New [primary key](https://www.meilisearch.com/docs/learn/getting_started/primary_key) of the index"
},
"uid": {
"type": [
@@ -19759,9 +21301,6 @@
"UpdateStderrLogs": {
"type": "object",
"description": "Request body for updating stderr log configuration",
- "required": [
- "target"
- ],
"properties": {
"target": {
"type": "string",
@@ -19809,7 +21348,7 @@
},
"WebhookResults": {
"type": "object",
- "description": "Response containing a list of all registered webhooks",
+ "description": "Response containing a list of all registered webhooks.",
"required": [
"results"
],
@@ -19819,7 +21358,7 @@
"items": {
"$ref": "#/components/schemas/WebhookWithMetadataRedactedAuthorization"
},
- "description": "Array of all webhooks configured in this Meilisearch instance. Each\nwebhook includes its UUID, URL, headers (with authorization values\nredacted), and editability status."
+ "description": "All webhooks configured on the instance. Each entry includes UUID, URL, headers (authorization redacted), and editability."
}
}
},
@@ -19832,7 +21371,7 @@
"string",
"null"
],
- "description": "URL endpoint to call when tasks complete",
+ "description": "URL endpoint to call when tasks complete.",
"example": "https://your.site/on-tasks-completed"
},
"headers": {
@@ -19840,7 +21379,7 @@
"object",
"null"
],
- "description": "HTTP headers to include in webhook requests",
+ "description": "HTTP headers to include in webhook requests.",
"additionalProperties": {
"type": "string"
},
@@ -19857,7 +21396,7 @@
"allOf": [
{
"$ref": "#/components/schemas/WebhookSettings",
- "description": "Webhook settings"
+ "description": "URL and headers. Authorization header values are redacted in the response."
},
{
"type": "object",
@@ -19869,16 +21408,16 @@
"uuid": {
"type": "string",
"format": "uuid",
- "description": "Unique identifier of the webhook"
+ "description": "Unique identifier of the webhook."
},
"isEditable": {
"type": "boolean",
- "description": "Whether the webhook can be edited"
+ "description": "Whether the webhook can be edited."
}
}
}
],
- "description": "A webhook with metadata and redacted authorization headers"
+ "description": "Webhook object with metadata and redacted authorization headers."
},
"u32": {
"type": "integer",
@@ -19891,7 +21430,7 @@
"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`Authorization: Bearer 6436fc5237b0d6e0d64253fbaac21d135012ecf1`.\n\nIf you use a SDK, ensure you instantiate the client with the API key, for instance with JS SDK:\n`const client = new MeiliSearch({ host: 'https://your-domain.com', apiKey: '6436fc5237b0d6e0d64253fbaac21d135012ecf1' })`"
+ "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```"
}
}
},
@@ -19912,13 +21451,21 @@
"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": "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": "The /batches route gives information about the progress of batches of asynchronous operations."
+ "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",
@@ -19938,7 +21485,7 @@
},
{
"name": "Settings",
- "description": "Use the /settings route to customize search settings for a given index. You can either modify all index settings at once using the update settings endpoint, or use a child route to configure a single setting."
+ "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",
diff --git a/assets/open-api/meilisearch-openapi.json b/assets/open-api/meilisearch-openapi.json
new file mode 100644
index 0000000000..ab369bcca1
--- /dev/null
+++ b/assets/open-api/meilisearch-openapi.json
@@ -0,0 +1,17131 @@
+{
+ "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.35.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": "integer",
+ "format": "u-int32",
+ "minimum": 0
+ },
+ "example": 12421
+ },
+ {
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/batches/{batchUid}": {
+ "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": "batchUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/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,
+ "editDocumentsByFunction": false,
+ "containsFilter": false,
+ "network": false,
+ "getTaskDocumentsRoute": false,
+ "compositeEmbedders": false,
+ "chatCompletions": false,
+ "multimodal": false,
+ "vectorStoreSetting": 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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "patch": {
+ "tags": [
+ "Experimental features"
+ ],
+ "summary": "Configure experimental features",
+ "description": "Enable or disable experimental features at runtime. Only features that are marked as runtime-togglable can be changed.",
+ "operationId": "patch_features",
+ "responses": {
+ "200": {
+ "description": "Experimental features are returned.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/RuntimeTogglableFeatures"
+ },
+ "example": {
+ "metrics": true,
+ "logsRoute": false,
+ "editDocumentsByFunction": false,
+ "containsFilter": false,
+ "network": false,
+ "getTaskDocumentsRoute": false,
+ "compositeEmbedders": false,
+ "chatCompletions": false,
+ "multimodal": false,
+ "vectorStoreSetting": 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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/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",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/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.",
+ "operationId": "get_health",
+ "responses": {
+ "200": {
+ "description": "Instance is healthy.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/HealthResponse"
+ },
+ "example": {
+ "status": "available"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/indexes": {
+ "get": {
+ "tags": [
+ "Indexes"
+ ],
+ "summary": "List indexes",
+ "description": "Return all indexes on the instance.\n\nResults are paginated using `offset` and `limit` query parameters.",
+ "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": "Indexes are returned.",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}": {
+ "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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "delete": {
+ "tags": [
+ "Indexes"
+ ],
+ "summary": "Delete index",
+ "description": "Permanently delete an index and all its documents, settings, and task history.",
+ "operationId": "delete_index",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/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": "indexUid",
+ "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": [
+ "search",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/documents": {
+ "get": {
+ "tags": [
+ "Documents"
+ ],
+ "summary": "List documents with GET",
+ "description": "Retrieve documents in batches using query parameters for offset, limit, and optional filtering. Suited for browsing or exporting index contents.",
+ "operationId": "get_documents",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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. Uses the same\nsyntax as search filters. Only documents matching the filter will be\nincluded in the response. 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"
+ }
+ }
+ ],
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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\nIf the provided index does not exist, it will be created.\n\nTo completely overwrite a document, see [add or replace documents route](https://docs.meilisearch.com/docs/api-reference/documents/add-or-replace-documents).\n\n> Use the reserved `_geo` object to add geo coordinates to a document.\n> `_geo` is an object made of `lat` and `lng` field.",
+ "operationId": "update_documents",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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 delimiter when importing CSV documents.",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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\ndocument will be overwritten by the new document. Fields previously in the\ndocument not present in the new document are removed.\n\nIf the provided index does not exist, it will be created.\n\nFor a partial update of the document see [add or update documents route](https://docs.meilisearch.com/docs/api-reference/documents/add-or-update-documents).\n\n> Use the reserved `_geo` object to add geo coordinates to a document.\n> `_geo` is an object made of `lat` and `lng` field.",
+ "operationId": "replace_documents",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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 delimiter when importing CSV documents.",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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": "indexUid",
+ "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": 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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/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": "indexUid",
+ "in": "path",
+ "description": "Unique identifier of the index.",
+ "required": true,
+ "schema": {
+ "type": "string"
+ },
+ "example": "movies"
+ }
+ ],
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/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": "indexUid",
+ "in": "path",
+ "description": "Unique identifier of the index.",
+ "required": true,
+ "schema": {
+ "type": "string"
+ },
+ "example": "movies"
+ }
+ ],
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/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.",
+ "operationId": "edit_documents_by_function",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "in": "path",
+ "description": "Unique identifier of the index.",
+ "required": true,
+ "schema": {
+ "type": "string"
+ },
+ "example": "movies"
+ }
+ ],
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/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 body to specify filters, sort order, and which fields to return.",
+ "operationId": "documents_by_query_post",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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": "The documents are 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.delete",
+ "documents.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/documents/{documentId}": {
+ "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": "indexUid",
+ "in": "path",
+ "description": "Unique identifier of the index.",
+ "required": true,
+ "schema": {
+ "type": "string"
+ },
+ "example": "movies"
+ },
+ {
+ "name": "documentId",
+ "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"
+ }
+ }
+ ],
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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": "indexUid",
+ "in": "path",
+ "description": "Unique identifier of the index.",
+ "required": true,
+ "schema": {
+ "type": "string"
+ },
+ "example": "movies"
+ },
+ {
+ "name": "documentId",
+ "in": "path",
+ "description": "Document identifier.",
+ "required": true,
+ "schema": {
+ "type": "string"
+ },
+ "example": "853"
+ }
+ ],
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/facet-search": {
+ "post": {
+ "tags": [
+ "Facet Search"
+ ],
+ "summary": "Search in facets",
+ "description": "Search for facet values within a given facet.\n\n> Use this to build autocomplete or refinement UIs for facet filters.",
+ "operationId": "search",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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": "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",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/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](https://www.meilisearch.com/docs/api-reference/search/search-with-post) in the Meilisearch API.",
+ "operationId": "search_with_url_query",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "in": "path",
+ "description": "Unique identifier of the index.",
+ "required": true,
+ "schema": {
+ "type": "string"
+ },
+ "example": "movies"
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "description": "The search query string. Meilisearch will return documents that match\nthis query. Supports prefix search (words matching the beginning of\nthe query) and typo tolerance. Leave empty to match all documents.",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "vector",
+ "in": "query",
+ "description": "A vector of floating-point numbers for semantic/vector search. The\ndimensions must match the embedder configuration. When provided,\ndocuments are ranked by vector similarity. Can be combined with `q`\nfor hybrid search.",
+ "required": false,
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "number",
+ "format": "float"
+ }
+ },
+ "explode": false
+ },
+ {
+ "name": "offset",
+ "in": "query",
+ "description": "Number of search results to skip. Use together with `limit` for\npagination. For example, to get results 21-40, set `offset=20` and\n`limit=20`. Defaults to `0`. Cannot be used with `page`/`hitsPerPage`.",
+ "required": false,
+ "schema": {
+ "type": "integer",
+ "default": 0,
+ "minimum": 0
+ }
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "description": "Maximum number of search results to return. Use together with `offset`\nfor pagination. Defaults to `20`. Cannot be used with\n`page`/`hitsPerPage`.",
+ "required": false,
+ "schema": {
+ "type": "integer",
+ "default": 20,
+ "minimum": 0
+ }
+ },
+ {
+ "name": "page",
+ "in": "query",
+ "description": "Request a specific page of results (1-indexed). Use together with\n`hitsPerPage` for page-based pagination. Cannot be used with\n`offset`/`limit`.",
+ "required": false,
+ "schema": {
+ "type": "integer",
+ "minimum": 0
+ }
+ },
+ {
+ "name": "hitsPerPage",
+ "in": "query",
+ "description": "Number of results per page when using page-based pagination. Use\ntogether with `page`. Cannot be used with `offset`/`limit`.",
+ "required": false,
+ "schema": {
+ "type": "integer",
+ "minimum": 0
+ }
+ },
+ {
+ "name": "attributesToRetrieve",
+ "in": "query",
+ "description": "Comma-separated list of attributes to include in the returned\ndocuments. Use `*` to return all attributes. By default, returns\nattributes from the `displayedAttributes` setting.",
+ "required": false,
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "explode": false
+ },
+ {
+ "name": "retrieveVectors",
+ "in": "query",
+ "description": "When `true`, includes vector embeddings in the response for documents\nthat have them. Defaults to `false`.",
+ "required": false,
+ "schema": {
+ "type": "boolean"
+ }
+ },
+ {
+ "name": "attributesToCrop",
+ "in": "query",
+ "description": "Comma-separated list of attributes whose values should be cropped to\nfit within `cropLength`. Useful for displaying long text attributes\nin search results. Format: `attribute` or `attribute:length`.",
+ "required": false,
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "explode": false
+ },
+ {
+ "name": "cropLength",
+ "in": "query",
+ "description": "Maximum number of words to keep when cropping attribute values. The\ncropped text will be centered around the matching terms. Defaults to\n`10`.",
+ "required": false,
+ "schema": {
+ "type": "integer",
+ "default": 10,
+ "minimum": 0
+ }
+ },
+ {
+ "name": "attributesToHighlight",
+ "in": "query",
+ "description": "Comma-separated list of attributes whose matching terms should be\nhighlighted with `highlightPreTag` and `highlightPostTag`. Use `*` to\nhighlight all searchable attributes.",
+ "required": false,
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "explode": false
+ },
+ {
+ "name": "filter",
+ "in": "query",
+ "description": "Filter expression to narrow down search results. Uses SQL-like syntax.\nExample: `genres = action AND rating > 4`. Only attributes in\n`filterableAttributes` can be used.",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "sort",
+ "in": "query",
+ "description": "Comma-separated list of attributes to sort by. Format: `attribute:asc`\nor `attribute:desc`. Only attributes in `sortableAttributes` can be\nused. Custom ranking rules can also affect sort order.",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "distinct",
+ "in": "query",
+ "description": "Attribute used to ensure only one document with each unique value is\nreturned. Useful for deduplication. Only attributes in\n`filterableAttributes` can be used.",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "showMatchesPosition",
+ "in": "query",
+ "description": "When `true`, returns the position (start and length) of each matched\nterm in the original document attributes. Useful for custom\nhighlighting implementations.",
+ "required": false,
+ "schema": {
+ "type": "boolean"
+ }
+ },
+ {
+ "name": "showRankingScore",
+ "in": "query",
+ "description": "When `true`, includes a `_rankingScore` field (0.0 to 1.0) in each\ndocument indicating how well it matches the query. Higher scores mean\nbetter matches.",
+ "required": false,
+ "schema": {
+ "type": "boolean"
+ }
+ },
+ {
+ "name": "showRankingScoreDetails",
+ "in": "query",
+ "description": "When `true`, includes a `_rankingScoreDetails` object showing the\ncontribution of each ranking rule to the final score. Useful for\ndebugging relevancy.",
+ "required": false,
+ "schema": {
+ "type": "boolean"
+ }
+ },
+ {
+ "name": "showPerformanceDetails",
+ "in": "query",
+ "description": "When `true`, includes a `_performanceDetails` object showing the\nperformance details of the search.",
+ "required": false,
+ "schema": {
+ "type": "boolean"
+ }
+ },
+ {
+ "name": "facets",
+ "in": "query",
+ "description": "Comma-separated list of attributes for which to return facet\ndistribution (value counts). Only attributes in `filterableAttributes`\ncan be used. Returns the count of documents matching each facet value.",
+ "required": false,
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "explode": false
+ },
+ {
+ "name": "highlightPreTag",
+ "in": "query",
+ "description": "HTML tag or string to insert before highlighted matching terms.\nDefaults to ``.",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "name": "highlightPostTag",
+ "in": "query",
+ "description": "HTML tag or string to insert after highlighted matching terms.\nDefaults to ``.",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
+ },
+ {
+ "name": "cropMarker",
+ "in": "query",
+ "description": "String used to indicate truncated content when cropping. Defaults to\n`…` (ellipsis).",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "default": "…"
+ }
+ },
+ {
+ "name": "matchingStrategy",
+ "in": "query",
+ "description": "Strategy for matching query terms. `last` (default): all terms must\nmatch, removing terms from the end if needed. `all`: all terms must\nmatch exactly. `frequency`: prioritizes matching frequent terms.",
+ "required": false,
+ "schema": {
+ "$ref": "#/components/schemas/MatchingStrategy"
+ }
+ },
+ {
+ "name": "attributesToSearchOn",
+ "in": "query",
+ "description": "Comma-separated list of attributes to search in. By default, searches\nall `searchableAttributes`. Use this to restrict search to specific\nfields for better performance or relevance.",
+ "required": false,
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "explode": false
+ },
+ {
+ "name": "hybridEmbedder",
+ "in": "query",
+ "description": "Name of the embedder to use for hybrid/semantic search. Must match an\nembedder configured in the index settings.",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "hybridSemanticRatio",
+ "in": "query",
+ "description": "Balance between keyword search (0.0) and semantic/vector search (1.0)\nin hybrid search. A value of 0.5 gives equal weight to both. Defaults\nto `0.5`.",
+ "required": false,
+ "schema": {
+ "type": "number",
+ "format": "float"
+ }
+ },
+ {
+ "name": "rankingScoreThreshold",
+ "in": "query",
+ "description": "Minimum ranking score (0.0 to 1.0) a document must have to be\nincluded in results. Documents with lower scores are excluded. Useful\nfor filtering out poor matches.",
+ "required": false,
+ "schema": {
+ "type": "number",
+ "format": "float"
+ }
+ },
+ {
+ "name": "locales",
+ "in": "query",
+ "description": "Comma-separated list of language locales to use for tokenization and\nprocessing. Useful for multilingual content. Example: `en,fr,de`.",
+ "required": false,
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/Locale"
+ }
+ },
+ "explode": false
+ },
+ {
+ "name": "personalizeUserContext",
+ "in": "query",
+ "description": "User-specific context for personalized search results. The format\ndepends on your personalization configuration.",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "useNetwork",
+ "in": "query",
+ "description": "When `true`, runs the query on the whole network (all shards covered, documents\ndeduplicated across remotes). When `false` or omitted, the query runs locally.\n\n**Enterprise Edition only.** This feature is available in the Enterprise Edition.\nIt also requires the `network` experimental feature.\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;\ndocuments with the same id are assumed identical for deduplication.",
+ "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",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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](https://www.meilisearch.com/docs/api-reference/search/search-with-get) in the Meilisearch API.",
+ "operationId": "search_with_post",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/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": "indexUid",
+ "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.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Settings_Unchecked"
+ },
+ "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.update",
+ "settings.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "delete": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Reset all settings",
+ "description": "Resets all settings of the index to their default values.",
+ "operationId": "delete_all",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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.",
+ "operationId": "update_all",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/settings/chat": {
+ "get": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Get chat",
+ "description": "Returns the current value of the `chat` setting for the index.",
+ "operationId": "getchat",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "delete": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Reset chat",
+ "description": "Resets the `chat` setting to its default value.",
+ "operationId": "deletechat",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/settings/dictionary": {
+ "get": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Get dictionary",
+ "description": "Returns the current value of the `dictionary` setting for the index.",
+ "operationId": "getdictionary",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "delete": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Reset dictionary",
+ "description": "Resets the `dictionary` setting to its default value.",
+ "operationId": "deletedictionary",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "delete": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Reset displayedAttributes",
+ "description": "Resets the `displayedAttributes` setting to its default value.",
+ "operationId": "deletedisplayedAttributes",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "delete": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Reset distinctAttribute",
+ "description": "Resets the `distinctAttribute` setting to its default value.",
+ "operationId": "deletedistinctAttribute",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/settings/embedders": {
+ "get": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Get embedders",
+ "description": "Returns the current value of the `embedders` setting for the index.",
+ "operationId": "getembedders",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "delete": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Reset embedders",
+ "description": "Resets the `embedders` setting to its default value.",
+ "operationId": "deleteembedders",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "delete": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Reset facetSearch",
+ "description": "Resets the `facetSearch` setting to its default value.",
+ "operationId": "deletefacetSearch",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/settings/faceting": {
+ "get": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Get faceting",
+ "description": "Returns the current value of the `faceting` setting for the index.",
+ "operationId": "getfaceting",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "delete": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Reset faceting",
+ "description": "Resets the `faceting` setting to its default value.",
+ "operationId": "deletefaceting",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "delete": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Reset filterableAttributes",
+ "description": "Resets the `filterableAttributes` setting to its default value.",
+ "operationId": "deletefilterableAttributes",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "delete": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Reset localizedAttributes",
+ "description": "Resets the `localizedAttributes` setting to its default value.",
+ "operationId": "deletelocalizedAttributes",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "delete": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Reset nonSeparatorTokens",
+ "description": "Resets the `nonSeparatorTokens` setting to its default value.",
+ "operationId": "deletenonSeparatorTokens",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/settings/pagination": {
+ "get": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Get pagination",
+ "description": "Returns the current value of the `pagination` setting for the index.",
+ "operationId": "getpagination",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "delete": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Reset pagination",
+ "description": "Resets the `pagination` setting to its default value.",
+ "operationId": "deletepagination",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "delete": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Reset prefixSearch",
+ "description": "Resets the `prefixSearch` setting to its default value.",
+ "operationId": "deleteprefixSearch",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "delete": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Reset proximityPrecision",
+ "description": "Resets the `proximityPrecision` setting to its default value.",
+ "operationId": "deleteproximityPrecision",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "delete": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Reset rankingRules",
+ "description": "Resets the `rankingRules` setting to its default value.",
+ "operationId": "deleterankingRules",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "delete": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Reset searchCutoffMs",
+ "description": "Resets the `searchCutoffMs` setting to its default value.",
+ "operationId": "deletesearchCutoffMs",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "delete": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Reset searchableAttributes",
+ "description": "Resets the `searchableAttributes` setting to its default value.",
+ "operationId": "deletesearchableAttributes",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "delete": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Reset separatorTokens",
+ "description": "Resets the `separatorTokens` setting to its default value.",
+ "operationId": "deleteseparatorTokens",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "delete": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Reset sortableAttributes",
+ "description": "Resets the `sortableAttributes` setting to its default value.",
+ "operationId": "deletesortableAttributes",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "delete": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Reset stopWords",
+ "description": "Resets the `stopWords` setting to its default value.",
+ "operationId": "deletestopWords",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/settings/synonyms": {
+ "get": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Get synonyms",
+ "description": "Returns the current value of the `synonyms` setting for the index.",
+ "operationId": "getsynonyms",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "delete": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Reset synonyms",
+ "description": "Resets the `synonyms` setting to its default value.",
+ "operationId": "deletesynonyms",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "delete": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Reset typoTolerance",
+ "description": "Resets the `typoTolerance` setting to its default value.",
+ "operationId": "deletetypoTolerance",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/settings/vector-store": {
+ "get": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Get vectorStore",
+ "description": "Returns the current value of the `vectorStore` setting for the index.",
+ "operationId": "getvectorStore",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "in": "path",
+ "description": "Unique identifier of the index.",
+ "required": true,
+ "schema": {
+ "type": "string"
+ },
+ "example": "movies"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Returns the current value of the `vectorStore` setting.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/VectorStoreBackend"
+ },
+ "example": "stable"
+ }
+ }
+ },
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "delete": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Reset vectorStore",
+ "description": "Resets the `vectorStore` setting to its default value.",
+ "operationId": "deletevectorStore",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "patch": {
+ "tags": [
+ "Settings"
+ ],
+ "summary": "Update vectorStore",
+ "description": "Updates the `vectorStore` setting for the index. Send the new value in the request body; send null to reset to default.",
+ "operationId": "patchvectorStore",
+ "parameters": [
+ {
+ "name": "indexUid",
+ "in": "path",
+ "description": "Unique identifier of the index.",
+ "required": true,
+ "schema": {
+ "type": "string"
+ },
+ "example": "movies"
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/VectorStoreBackend"
+ }
+ }
+ },
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/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": "indexUid",
+ "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",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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": "indexUid",
+ "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",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/indexes/{indexUid}/stats": {
+ "get": {
+ "tags": [
+ "Stats"
+ ],
+ "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": "indexUid",
+ "in": "path",
+ "description": "Unique identifier of the index.",
+ "required": true,
+ "schema": {
+ "type": "string"
+ },
+ "example": "movies"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The stats of the index.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/IndexStats"
+ },
+ "example": {
+ "numberOfDocuments": 10,
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/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.",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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.",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/keys/{uidOrKey}": {
+ "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": "uidOrKey",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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": "uidOrKey",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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.",
+ "operationId": "patch_api_key",
+ "parameters": [
+ {
+ "name": "uidOrKey",
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/logs/stderr": {
+ "post": {
+ "tags": [
+ "Experimental features"
+ ],
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/logs/stream": {
+ "post": {
+ "tags": [
+ "Experimental features"
+ ],
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "delete": {
+ "tags": [
+ "Experimental features"
+ ],
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/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"
+ }
+ }
+ },
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/multi-search": {
+ "post": {
+ "tags": [
+ "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.",
+ "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",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/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",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/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",
+ "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,
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/swap-indexes": {
+ "post": {
+ "tags": [
+ "Indexes"
+ ],
+ "summary": "Swap indexes",
+ "description": "Swap the documents, 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": [
+ "search",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/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": "integer",
+ "format": "u-int32",
+ "minimum": 0
+ },
+ "example": 12421
+ },
+ {
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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.",
+ "operationId": "delete_tasks",
+ "parameters": [
+ {
+ "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": "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/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.",
+ "operationId": "cancel_tasks",
+ "parameters": [
+ {
+ "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": "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/tasks/{taskUid}": {
+ "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": "taskUid",
+ "in": "path",
+ "description": "The task identifier.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "u-int32"
+ },
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/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",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/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",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ },
+ "/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": "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",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ },
+ "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.*",
+ "*"
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "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"
+ ]
+ },
+ "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 send in from to fetch the next slice of results. Null when all data has been browsed",
+ "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"
+ ],
+ "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`.",
+ "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. Uses the same\nsyntax as search filters. Only documents matching the filter will be\nincluded in the response. Example: `\"genres = action AND rating > 4\"`\nor as an array `[[\"genres = action\"], \"rating > 4\"]`."
+ },
+ "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"
+ ]
+ }
+ }
+ },
+ "ChatSearchParams": {
+ "type": "object",
+ "description": "Search parameters that control how the LLM queries this index.\n\nThese settings are applied automatically when the chat system\nperforms searches.",
+ "properties": {
+ "hybrid": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/HybridQuery",
+ "description": "Configuration for hybrid search combining keyword and semantic search.\nSet the `semanticRatio` to balance between keyword matching (0.0) and\nsemantic similarity (1.0). Requires an embedder to be configured."
+ }
+ ]
+ },
+ "limit": {
+ "type": [
+ "integer",
+ "null"
+ ],
+ "description": "Maximum number of documents to return when the LLM queries this index.\nHigher values provide more context to the LLM but may increase\nresponse time and token usage.",
+ "minimum": 0
+ },
+ "sort": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "description": "Sort criteria for ordering search results before presenting to the LLM.\nEach entry should be in the format `attribute:asc` or `attribute:desc`.\nExample: `[\"price:asc\", \"rating:desc\"]`."
+ },
+ "distinct": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "The attribute used for deduplicating results. When set, only one\ndocument per unique value of this attribute is returned. Useful for\navoiding duplicate content in LLM responses."
+ },
+ "matchingStrategy": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/MatchingStrategy",
+ "description": "Strategy for matching query terms. `last` (default) matches all words\nand returns documents matching at least the last word. `all` requires\nall words to match. `frequency` prioritizes less frequent words."
+ }
+ ]
+ },
+ "attributesToSearchOn": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "description": "Restricts the search to only the specified attributes. If not set, all\nsearchable attributes are searched.\nExample: `[\"title\", \"description\"]` searches only these two fields."
+ },
+ "rankingScoreThreshold": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/RankingScoreThreshold",
+ "description": "Minimum ranking score (0.0 to 1.0) that documents must achieve to be\nincluded in results. Documents below this threshold are excluded.\nUseful for filtering out low-relevance results."
+ }
+ ]
+ }
+ },
+ "additionalProperties": false
+ },
+ "ChatSettings": {
+ "type": "object",
+ "description": "Configuration settings for AI-powered chat and search functionality.\n\nThese settings control how documents are presented to the LLM and what\nsearch parameters are used when the LLM queries the index.",
+ "properties": {
+ "description": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "A description of this index that helps the LLM understand its contents\nand purpose. This description is provided to the LLM to help it decide\nwhen and how to query this index.\nExample: \"Contains product catalog with prices and descriptions\"."
+ },
+ "documentTemplate": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "A liquid template used to render documents to a text that can be embedded.\n\nMeillisearch interpolates the template for each document and sends the resulting text to the embedder.\nThe embedder then generates document vectors based on this text."
+ },
+ "documentTemplateMaxBytes": {
+ "type": [
+ "integer",
+ "null"
+ ],
+ "description": "Maximum size in bytes for the rendered document text. Texts longer than\nthis limit are truncated. This prevents very large documents from\nconsuming too much context in the LLM conversation.\nDefaults to `400` bytes.",
+ "minimum": 0
+ },
+ "searchParameters": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/ChatSearchParams",
+ "description": "Default search parameters used when the LLM queries this index.\nThese settings control how search results are retrieved and ranked.\nIf not specified, standard search defaults are used."
+ }
+ ]
+ }
+ },
+ "additionalProperties": false
+ },
+ "Code": {
+ "type": "string",
+ "enum": [
+ "api_key_already_exists",
+ "api_key_not_found",
+ "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",
+ "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_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_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_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_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_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",
+ "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_settings_vector_store",
+ "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_webhooks",
+ "invalid_webhook_url",
+ "invalid_webhook_headers",
+ "immutable_webhook",
+ "invalid_webhook_uuid",
+ "webhook_not_found",
+ "immutable_webhook_uuid",
+ "immutable_webhook_is_editable"
+ ]
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "CreateApiKey": {
+ "type": "object",
+ "required": [
+ "actions",
+ "indexes"
+ ],
+ "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.",
+ "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."
+ }
+ }
+ },
+ "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."
+ }
+ }
+ }
+ ],
+ "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"
+ }
+ }
+ },
+ "DocumentEditionByFunction": {
+ "type": "object",
+ "description": "Request body for editing documents using a JavaScript function",
+ "required": [
+ "function"
+ ],
+ "properties": {
+ "filter": {
+ "description": "Filter expression to select which documents to edit"
+ },
+ "context": {
+ "description": "Data to make available for the editing function"
+ },
+ "function": {
+ "type": "string",
+ "description": "RHAI function to apply to each document"
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "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",
+ "null"
+ ],
+ "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": [
+ "facet_name"
+ ],
+ "properties": {
+ "facet_query": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "Query string to search for facet values"
+ },
+ "facet_name": {
+ "type": "string",
+ "description": "Name of the facet to search"
+ },
+ "q": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "Query string to filter documents before facet search"
+ },
+ "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 apply before facet search"
+ },
+ "matching_strategy": {
+ "$ref": "#/components/schemas/MatchingStrategy",
+ "description": "Strategy used to match query terms"
+ },
+ "attributes_to_search_on": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "description": "Restrict search to specified attributes"
+ },
+ "ranking_score_threshold": {
+ "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"
+ },
+ "exhaustive_facet_count": {
+ "type": [
+ "boolean",
+ "null"
+ ],
+ "description": "Return exhaustive facet count instead of an estimate"
+ }
+ }
+ },
+ "FacetStats": {
+ "type": "object",
+ "description": "The numeric min and max values for a facet",
+ "required": [
+ "min",
+ "max"
+ ],
+ "properties": {
+ "min": {
+ "type": "number",
+ "format": "double",
+ "description": "Minimum value of the numeric facet"
+ },
+ "max": {
+ "type": "number",
+ "format": "double",
+ "description": "Maximum value of the numeric facet"
+ }
+ }
+ },
+ "FacetValuesSort": {
+ "type": "string",
+ "enum": [
+ "alpha",
+ "count"
+ ]
+ },
+ "FacetingSettings": {
+ "type": "object",
+ "description": "Faceting configuration settings",
+ "properties": {
+ "maxValuesPerFacet": {
+ "type": [
+ "integer",
+ "null"
+ ],
+ "description": "Maximum number of facet values returned for each facet",
+ "example": 10,
+ "minimum": 0
+ },
+ "sortFacetValuesBy": {
+ "type": [
+ "object",
+ "null"
+ ],
+ "description": "How facet values should be sorted (by count or alphabetically)",
+ "additionalProperties": {
+ "$ref": "#/components/schemas/FacetValuesSort"
+ },
+ "propertyNames": {
+ "type": "string"
+ },
+ "example": {
+ "genre": "count"
+ }
+ }
+ },
+ "additionalProperties": false
+ },
+ "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."
+ },
+ "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."
+ }
+ ]
+ }
+ }
+ },
+ "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",
+ "required": [
+ "limit",
+ "offset",
+ "facetsByIndex",
+ "showPerformanceDetails"
+ ],
+ "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": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ }
+ },
+ "propertyNames": {
+ "type": "string",
+ "example": "movies"
+ }
+ },
+ "mergeFacets": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/MergeFacets",
+ "description": "Options for merging facets from multiple indexes"
+ }
+ ]
+ },
+ "showPerformanceDetails": {
+ "type": "boolean",
+ "description": "Whether to include performance details in the response"
+ }
+ }
+ },
+ "FederationOptions": {
+ "type": "object",
+ "description": "Options for federated multi-search queries",
+ "required": [
+ "weight"
+ ],
+ "properties": {
+ "weight": {
+ "type": "number",
+ "format": "double",
+ "description": "Weight to apply to results from this query (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
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "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"
+ }
+ ]
+ },
+ "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)",
+ "default": false
+ }
+ }
+ },
+ "HealthResponse": {
+ "type": "object",
+ "required": [
+ "status"
+ ],
+ "properties": {
+ "status": {
+ "$ref": "#/components/schemas/HealthStatus",
+ "description": "The status of the instance."
+ }
+ }
+ },
+ "HealthStatus": {
+ "type": "string",
+ "enum": [
+ "available"
+ ]
+ },
+ "HitsInfo": {
+ "oneOf": [
+ {
+ "type": "object",
+ "description": "Finite pagination with exact counts",
+ "required": [
+ "hitsPerPage",
+ "page",
+ "totalPages",
+ "totalHits"
+ ],
+ "properties": {
+ "hitsPerPage": {
+ "type": "integer",
+ "description": "Number of results on each page",
+ "minimum": 0
+ },
+ "page": {
+ "type": "integer",
+ "description": "Current search results page",
+ "minimum": 0
+ },
+ "totalPages": {
+ "type": "integer",
+ "description": "Exhaustive total number of search result pages",
+ "minimum": 0
+ },
+ "totalHits": {
+ "type": "integer",
+ "description": "Exhaustive total number of matches",
+ "minimum": 0
+ }
+ }
+ },
+ {
+ "type": "object",
+ "description": "Offset-based pagination with estimated counts",
+ "required": [
+ "limit",
+ "offset",
+ "estimatedTotalHits"
+ ],
+ "properties": {
+ "limit": {
+ "type": "integer",
+ "description": "Number of documents to take",
+ "minimum": 0
+ },
+ "offset": {
+ "type": "integer",
+ "description": "Number of documents skipped",
+ "minimum": 0
+ },
+ "estimatedTotalHits": {
+ "type": "integer",
+ "description": "Estimated total number of matches",
+ "minimum": 0
+ }
+ }
+ }
+ ],
+ "description": "Pagination information for search results"
+ },
+ "HybridQuery": {
+ "type": "object",
+ "description": "Configuration for hybrid search combining keyword and semantic search.\n\nThis allows searches that understand both exact words and conceptual\nmeaning.",
+ "required": [
+ "embedder"
+ ],
+ "properties": {
+ "semanticRatio": {
+ "type": "number",
+ "format": "float",
+ "description": "Controls the balance between keyword search and semantic search.\nA value of `0.0` uses only keyword search, `1.0` uses only semantic\nsearch, and `0.5` (the default) gives equal weight to both.\nUse lower values for exact term matching and higher values for\nconceptual similarity."
+ },
+ "embedder": {
+ "type": "string",
+ "description": "The name of the embedder configuration to use for generating query\nvectors. This must match one of the embedders defined in the index's\n`embedders` settings."
+ }
+ }
+ },
+ "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"
+ }
+ }
+ },
+ "IndexStats": {
+ "type": "object",
+ "description": "Stats of an `Index`, as known to the `stats` route.",
+ "required": [
+ "numberOfDocuments",
+ "rawDocumentDbSize",
+ "avgDocumentSize",
+ "isIndexing",
+ "fieldDistribution"
+ ],
+ "properties": {
+ "numberOfDocuments": {
+ "type": "integer",
+ "format": "u-int64",
+ "description": "Number of documents in the index",
+ "minimum": 0
+ },
+ "rawDocumentDbSize": {
+ "type": "integer",
+ "format": "u-int64",
+ "description": "Size of the documents database, in bytes.",
+ "minimum": 0
+ },
+ "avgDocumentSize": {
+ "type": "integer",
+ "format": "u-int64",
+ "description": "Average size of a document in the documents database.",
+ "minimum": 0
+ },
+ "isIndexing": {
+ "type": "boolean",
+ "description": "Whether or not the index is currently ingesting document"
+ },
+ "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"
+ }
+ }
+ },
+ "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 `\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"
+ ],
+ "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": {
+ "attribute_patterns": {
+ "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)."
+ },
+ "ranking_rule": {
+ "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)."
+ }
+ }
+ },
+ "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": "This is unfortunately a duplication of the struct in .\nThe reason why it is duplicated is because milli cannot depend on meilisearch. It would be cyclic imports.",
+ "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
+ }
+ }
+ },
+ "MinWordSizeTyposSetting": {
+ "type": "object",
+ "description": "Configures the minimum word length required before typos are allowed.\n\nThis helps prevent matching very short words with typos, which can lead\nto irrelevant results.",
+ "properties": {
+ "oneTypo": {
+ "type": [
+ "integer",
+ "null"
+ ],
+ "format": "u-int8",
+ "description": "The minimum word length required to accept one typo. Words shorter\nthan this value must match exactly. For example, if set to `5`, the\nword \"apple\" (5 letters) can have one typo, but \"app\" (3 letters)\ncannot. Defaults to `5`.",
+ "example": 5,
+ "minimum": 0
+ },
+ "twoTypos": {
+ "type": [
+ "integer",
+ "null"
+ ],
+ "format": "u-int8",
+ "description": "The minimum word length required to accept two typos. Words shorter\nthan this value can have at most one typo. For example, if set to `9`,\nthe word \"computing\" (9 letters) can have two typos. Must be greater\nthan or equal to `oneTypo`. Defaults to `9`.",
+ "example": 9,
+ "minimum": 0
+ }
+ },
+ "additionalProperties": false
+ },
+ "Network": {
+ "type": "object",
+ "description": "Network topology configuration for distributed Meilisearch",
+ "properties": {
+ "remotes": {
+ "type": [
+ "object",
+ "null"
+ ],
+ "description": "Map of remote instance names to their configurations",
+ "additionalProperties": {
+ "$ref": "#/components/schemas/Remote"
+ },
+ "propertyNames": {
+ "type": "string"
+ },
+ "example": {
+ "ms-00": {
+ "url": "http://localhost:7700"
+ },
+ "ms-01": {
+ "url": "http://localhost:7701"
+ }
+ }
+ },
+ "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 (for rollback)",
+ "additionalProperties": {
+ "$ref": "#/components/schemas/Remote"
+ },
+ "propertyNames": {
+ "type": "string"
+ },
+ "example": {
+ "ms-00": {
+ "url": "http://localhost:7700"
+ },
+ "ms-01": {
+ "url": "http://localhost:7701"
+ }
+ }
+ }
+ }
+ },
+ "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 configuration settings",
+ "properties": {
+ "maxTotalHits": {
+ "type": [
+ "integer",
+ "null"
+ ],
+ "description": "Maximum number of hits that can be returned",
+ "example": 250,
+ "minimum": 0
+ }
+ },
+ "additionalProperties": false
+ },
+ "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 `\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 results.\n\nWhen enabled, search results are tailored based on user context,\nproviding different rankings and results for different user profiles.",
+ "required": [
+ "user_context"
+ ],
+ "properties": {
+ "user_context": {
+ "type": "string",
+ "description": "A string describing the user context for personalization. This is\npassed to the embedder to generate user-specific vectors that\ninfluence search ranking. Example: user preferences, browsing\nhistory, or demographic information."
+ }
+ }
+ },
+ "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."
+ }
+ }
+ },
+ "ProximityPrecisionView": {
+ "type": "string",
+ "enum": [
+ "byWord",
+ "byAttribute"
+ ]
+ },
+ "RankingRuleView": {
+ "oneOf": [
+ {
+ "type": "string",
+ "description": "Sorted by decreasing number of matched query terms.\nQuery words at the front of an attribute is considered better than if\nit was at the back.",
+ "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 quey words contained in more important\nattributes are considered better.",
+ "enum": [
+ "Attribute"
+ ]
+ },
+ {
+ "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"
+ },
+ "Remote": {
+ "type": "object",
+ "description": "Configuration for a remote Meilisearch instance",
+ "properties": {
+ "url": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "URL of the remote instance",
+ "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"
+ }
+ }
+ },
+ "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."
+ }
+ ]
+ }
+ }
+ },
+ "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."
+ }
+ }
+ },
+ "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"
+ },
+ "editDocumentsByFunction": {
+ "type": [
+ "boolean",
+ "null"
+ ],
+ "description": "Enable document editing via JavaScript functions"
+ },
+ "containsFilter": {
+ "type": [
+ "boolean",
+ "null"
+ ],
+ "description": "Enable the CONTAINS filter operator"
+ },
+ "network": {
+ "type": [
+ "boolean",
+ "null"
+ ],
+ "description": "Enable network features for distributed search"
+ },
+ "getTaskDocumentsRoute": {
+ "type": [
+ "boolean",
+ "null"
+ ],
+ "description": "Enable the route to get documents from tasks"
+ },
+ "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"
+ },
+ "vectorStoreSetting": {
+ "type": [
+ "boolean",
+ "null"
+ ],
+ "description": "Enable vector store settings configuration"
+ }
+ }
+ },
+ "SearchHit": {
+ "type": "object",
+ "description": "A single search result hit",
+ "properties": {
+ "_formatted": {
+ "type": "object",
+ "description": "The formatted document with highlighted and cropped attributes",
+ "additionalProperties": true
+ },
+ "_matchesPosition": {
+ "type": [
+ "object",
+ "null"
+ ],
+ "description": "Location of matching terms in the document",
+ "additionalProperties": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/MatchBounds"
+ }
+ },
+ "propertyNames": {
+ "type": "string"
+ }
+ },
+ "_rankingScore": {
+ "type": [
+ "number",
+ "null"
+ ],
+ "format": "double",
+ "description": "Global ranking score of the document"
+ },
+ "_rankingScoreDetails": {
+ "type": [
+ "object",
+ "null"
+ ],
+ "description": "Detailed breakdown of the ranking score",
+ "additionalProperties": {},
+ "propertyNames": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": {
+ "description": "The document data"
+ }
+ },
+ "SearchMetadata": {
+ "type": "object",
+ "description": "Metadata about a search query",
+ "required": [
+ "queryUid",
+ "indexUid"
+ ],
+ "properties": {
+ "queryUid": {
+ "type": "string",
+ "format": "uuid",
+ "description": "Unique identifier for the query"
+ },
+ "indexUid": {
+ "type": "string",
+ "description": "Identifier of the queried index"
+ },
+ "primaryKey": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "[Primary key](https://www.meilisearch.com/docs/learn/getting_started/primary_key) of the queried index"
+ },
+ "remote": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "Remote server that processed the query"
+ }
+ }
+ },
+ "SearchQuery": {
+ "type": "object",
+ "properties": {
+ "q": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "Query string"
+ },
+ "vector": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "number",
+ "format": "float"
+ },
+ "description": "Search using a custom query vector"
+ },
+ "media": {
+ "description": "Perform AI-powered search queries with multimodal content"
+ },
+ "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."
+ }
+ ]
+ },
+ "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
+ },
+ "page": {
+ "type": [
+ "integer",
+ "null"
+ ],
+ "description": "Request a specific page of results",
+ "minimum": 0
+ },
+ "hits_per_page": {
+ "type": [
+ "integer",
+ "null"
+ ],
+ "description": "Maximum number of documents returned for a page",
+ "minimum": 0
+ },
+ "attributes_to_retrieve": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "description": "Attributes to display in the returned documents",
+ "uniqueItems": true
+ },
+ "retrieve_vectors": {
+ "type": "boolean",
+ "description": "Return document and query vector data"
+ },
+ "attributes_to_crop": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "description": "Attributes whose values have to be cropped"
+ },
+ "crop_length": {
+ "type": "integer",
+ "description": "Maximum length of cropped value in words",
+ "default": 10,
+ "minimum": 0
+ },
+ "attributes_to_highlight": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "description": "Highlight matching terms contained in an attribute",
+ "uniqueItems": true
+ },
+ "show_matches_position": {
+ "type": "boolean",
+ "description": "Return matching terms location"
+ },
+ "show_ranking_score": {
+ "type": "boolean",
+ "description": "Display the global ranking score of a document"
+ },
+ "show_ranking_score_details": {
+ "type": "boolean",
+ "description": "Adds a detailed global ranking score field"
+ },
+ "show_performance_details": {
+ "type": "boolean",
+ "description": "Adds a detailed performance details field"
+ },
+ "use_network": {
+ "type": [
+ "boolean",
+ "null"
+ ],
+ "description": "When `true`, runs the query on the whole network (all shards covered, documents\ndeduplicated across remotes). When `false` or omitted, the query runs locally.\n\n**Enterprise Edition only.** This feature is available in the Enterprise Edition.\nIt also requires the `network` experimental feature.\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;\ndocuments with the same id are assumed identical for deduplication."
+ },
+ "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": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "description": "Display the count of matches per facet"
+ },
+ "highlight_pre_tag": {
+ "type": "string",
+ "description": "String inserted at the start of a highlighted term",
+ "default": ""
+ },
+ "highlight_post_tag": {
+ "type": "string",
+ "description": "String inserted at the end of a highlighted term",
+ "default": ""
+ },
+ "crop_marker": {
+ "type": "string",
+ "description": "String marking crop boundaries",
+ "default": "…"
+ },
+ "matching_strategy": {
+ "$ref": "#/components/schemas/MatchingStrategy",
+ "description": "Strategy used to match query terms within documents"
+ },
+ "attributes_to_search_on": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "description": "Restrict search to the specified attributes"
+ },
+ "ranking_score_threshold": {
+ "type": [
+ "number",
+ "null"
+ ],
+ "format": "double",
+ "description": "Minimum ranking score threshold (0.0 to 1.0) that documents must\nachieve to be included in results. Documents with scores below this\nthreshold are excluded. Useful for filtering out low-relevance\nresults."
+ },
+ "locales": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "$ref": "#/components/schemas/Locale"
+ },
+ "description": "Explicitly specify languages used in a query"
+ },
+ "personalize": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/Personalize",
+ "description": "Enables personalized search results based on user context. When\nprovided, the search uses AI to tailor results to the user's\nprofile, preferences, or behavior described in `userContext`."
+ }
+ ]
+ }
+ }
+ },
+ "SearchQueryWithIndex": {
+ "type": "object",
+ "description": "A `SearchQuery` + an index UID and optional FederationOptions.",
+ "required": [
+ "indexUid",
+ "retrieveVectors",
+ "cropLength",
+ "showRankingScore",
+ "showRankingScoreDetails",
+ "showMatchesPosition",
+ "highlightPreTag",
+ "highlightPostTag",
+ "cropMarker",
+ "matchingStrategy"
+ ],
+ "properties": {
+ "indexUid": {
+ "$ref": "#/components/schemas/IndexUid",
+ "description": "Index unique identifier"
+ },
+ "q": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "Query string"
+ },
+ "vector": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "number",
+ "format": "float"
+ },
+ "description": "Search using a custom query vector"
+ },
+ "media": {
+ "description": "Perform AI-powered search queries with multimodal content"
+ },
+ "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."
+ }
+ ]
+ },
+ "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
+ },
+ "retrieveVectors": {
+ "type": "boolean",
+ "description": "Return document and query vector data"
+ },
+ "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
+ },
+ "attributesToHighlight": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "description": "Highlight matching terms contained in an attribute",
+ "uniqueItems": true
+ },
+ "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"
+ },
+ "useNetwork": {
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "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": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "description": "Display the count of matches per facet"
+ },
+ "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"
+ },
+ "cropMarker": {
+ "type": "string",
+ "description": "String marking crop boundaries"
+ },
+ "matchingStrategy": {
+ "$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"
+ },
+ "federationOptions": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/FederationOptions",
+ "description": "Federation options for multi-index search"
+ }
+ ]
+ }
+ }
+ },
+ "SearchResult": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/HitsInfo",
+ "description": "Pagination information for the search results"
+ },
+ {
+ "type": "object",
+ "required": [
+ "hits",
+ "query",
+ "processingTimeMs"
+ ],
+ "properties": {
+ "hits": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/SearchHit"
+ },
+ "description": "Results of the query"
+ },
+ "query": {
+ "type": "string",
+ "description": "Query originating the response"
+ },
+ "queryVector": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "number",
+ "format": "float"
+ },
+ "description": "Vector representation of the query"
+ },
+ "processingTimeMs": {
+ "type": "integer",
+ "description": "Processing time of the query in milliseconds",
+ "minimum": 0
+ },
+ "facetDistribution": {
+ "type": [
+ "object",
+ "null"
+ ],
+ "description": "Distribution of the given facets",
+ "additionalProperties": {},
+ "propertyNames": {
+ "type": "string"
+ }
+ },
+ "facetStats": {
+ "type": [
+ "object",
+ "null"
+ ],
+ "description": "The numeric min and max values per facet",
+ "additionalProperties": {
+ "$ref": "#/components/schemas/FacetStats"
+ },
+ "propertyNames": {
+ "type": "string"
+ }
+ },
+ "requestUid": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "format": "uuid",
+ "description": "A UUID v7 identifying the search request"
+ },
+ "metadata": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/SearchMetadata",
+ "description": "Metadata about the search query"
+ }
+ ]
+ },
+ "performanceDetails": {
+ "description": "Performance details of the search query"
+ },
+ "remoteErrors": {
+ "type": [
+ "object",
+ "null"
+ ],
+ "additionalProperties": {
+ "$ref": "#/components/schemas/ResponseError"
+ },
+ "propertyNames": {
+ "type": "string"
+ }
+ },
+ "semanticHitCount": {
+ "type": [
+ "integer",
+ "null"
+ ],
+ "format": "u-int32",
+ "description": "Exhaustive number of semantic search matches (only present in\nAI-powered searches)",
+ "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"
+ }
+ }
+ },
+ "SettingEmbeddingSettings": {
+ "type": "object",
+ "description": "\"Technical\" type that is required due to utoipa.\n\nWe did not find a way to implement [`utoipa::ToSchema`] for the\n[`Setting`] enum, but most types can use the `value_type` macro parameter\nto workaround that issue.\n\nHowever that type is used in the settings route, including through the\nmacro that auto-generate all the settings route, so we can't remap the\n`value_type`.",
+ "properties": {
+ "inner": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "source": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/EmbedderSource",
+ "description": "The source used to provide the embeddings.\n\nWhich embedder parameters are available and mandatory is determined by the value of this setting.\n\n# 🔄 Reindexing\n\n- 🏗️ Changing the value of this parameter always regenerates embeddings.\n\n# Defaults\n\n- Defaults to `openAi`"
+ }
+ ]
+ },
+ "model": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "The name of the model to use.\n\n# Mandatory\n\n- This parameter is mandatory for source `ollama`\n\n# Availability\n\n- This parameter is available for sources `openAi`, `huggingFace`, `ollama`\n\n# 🔄 Reindexing\n\n- 🏗️ Changing the value of this parameter always regenerates embeddings.\n\n# Defaults\n\n- For source `openAi`, defaults to `text-embedding-3-small`\n- For source `huggingFace`, defaults to `BAAI/bge-base-en-v1.5`"
+ },
+ "revision": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "The revision (commit SHA1) of the model to use.\n\nIf unspecified, Meilisearch picks the latest revision of the model.\n\n# Availability\n\n- This parameter is available for source `huggingFace`\n\n# 🔄 Reindexing\n\n- 🏗️ Changing the value of this parameter always regenerates embeddings\n\n# Defaults\n\n- When `model` is set to default, defaults to `617ca489d9e86b49b8167676d8220688b99db36e`\n- Otherwise, defaults to `null`"
+ },
+ "pooling": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/OverridePooling",
+ "description": "The pooling method to use.\n\n# Availability\n\n- This parameter is available for source `huggingFace`\n\n# 🔄 Reindexing\n\n- 🏗️ Changing the value of this parameter always regenerates embeddings\n\n# Defaults\n\n- Defaults to `useModel`\n\n# Compatibility Note\n\n- Embedders created before this parameter was available default to `forceMean` to preserve the existing behavior."
+ }
+ ]
+ },
+ "apiKey": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "The API key to pass to the remote embedder while making requests.\n\n# Availability\n\n- This parameter is available for source `openAi`, `ollama`, `rest`\n\n# 🔄 Reindexing\n\n- 🌱 Changing the value of this parameter never regenerates embeddings\n\n# Defaults\n\n- For source `openAi`, the key is read from `OPENAI_API_KEY`, then `MEILI_OPENAI_API_KEY`.\n- For other sources, no bearer token is sent if this parameter is not set.\n\n# Note\n\n- This setting is partially hidden when returned by the settings"
+ },
+ "dimensions": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "The expected dimensions of the embeddings produced by this embedder.\n\n# Mandatory\n\n- This parameter is mandatory for source `userProvided`\n\n# Availability\n\n- This parameter is available for source `openAi`, `ollama`, `rest`, `userProvided`\n\n# 🔄 Reindexing\n\n- 🏗️ When the source is `openAi`, changing the value of this parameter always regenerates embeddings\n- 🌱 For other sources, changing the value of this parameter never regenerates embeddings\n\n# Defaults\n\n- For source `openAi`, the dimensions is the maximum allowed by the model.\n- For sources `ollama` and `rest`, the dimensions are inferred by embedding a sample text."
+ },
+ "binaryQuantized": {
+ "type": [
+ "boolean",
+ "null"
+ ],
+ "description": "Whether to binary quantize the embeddings of this embedder.\n\nBinary quantized embeddings are smaller than regular embeddings, which improves\ndisk usage and retrieval speed, at the cost of relevancy.\n\n# Availability\n\n- This parameter is available for all embedders\n\n# 🔄 Reindexing\n\n- 🏗️ When set to `true`, embeddings are not regenerated, but they are binary quantized, which takes time.\n\n# Defaults\n\n- Defaults to `false`\n\n# Note\n\nAs binary quantization is a destructive operation, it is not possible to disable again this setting after\nfirst enabling it. If you are unsure of whether the performance-relevancy tradeoff is right for you,\nwe recommend to use this parameter on a test index first."
+ },
+ "documentTemplate": {
+ "type": [
+ "boolean",
+ "null"
+ ],
+ "description": "A liquid template used to render documents to a text that can be embedded.\n\nMeillisearch interpolates the template for each document and sends the resulting text to the embedder.\nThe embedder then generates document vectors based on this text.\n\n# Availability\n\n- This parameter is available for source `openAi`, `huggingFace`, `ollama` and `rest\n\n# 🔄 Reindexing\n\n- 🏗️ When modified, embeddings are regenerated for documents whose rendering through the template produces a different text."
+ },
+ "documentTemplateMaxBytes": {
+ "type": [
+ "integer",
+ "null"
+ ],
+ "description": "Rendered texts are truncated to this size.\n\n# Availability\n\n- This parameter is available for source `openAi`, `huggingFace`, `ollama` and `rest`\n\n# 🔄 Reindexing\n\n- 🏗️ When increased, embeddings are regenerated for documents whose rendering through the template produces a different text.\n- 🌱 When decreased, embeddings are never regenerated\n\n# Default\n\n- Defaults to 400",
+ "minimum": 0
+ },
+ "url": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "URL to reach the remote embedder.\n\n# Mandatory\n\n- This parameter is mandatory for source `rest`\n\n# Availability\n\n- This parameter is available for source `openAi`, `ollama` and `rest`\n\n# 🔄 Reindexing\n\n- 🌱 When modified for source `openAi`, embeddings are never regenerated\n- 🏗️ When modified for sources `ollama` and `rest`, embeddings are always regenerated"
+ },
+ "indexingFragments": {
+ "type": [
+ "object",
+ "null"
+ ],
+ "description": "Template fragments that will be reassembled and sent to the remote embedder at indexing time.\n\n# Availability\n\n- This parameter is available for sources `rest`.\n\n# 🔄 Reindexing\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.",
+ "additionalProperties": {},
+ "propertyNames": {
+ "type": "string"
+ }
+ },
+ "searchFragments": {
+ "type": [
+ "object",
+ "null"
+ ],
+ "description": "Template fragments that will be reassembled and sent to the remote embedder at search time.\n\n# Availability\n\n- This parameter is available for sources `rest`.\n\n# 🔄 Reindexing\n\n- 🌱 Changing the value of this parameter never regenerates embeddings",
+ "additionalProperties": {},
+ "propertyNames": {
+ "type": "string"
+ }
+ },
+ "request": {
+ "description": "Template request to send to the remote embedder.\n\n# Mandatory\n\n- This parameter is mandatory for source `rest`\n\n# Availability\n\n- This parameter is available for source `rest`\n\n# 🔄 Reindexing\n\n- 🏗️ Changing the value of this parameter always regenerates embeddings"
+ },
+ "response": {
+ "description": "Template response indicating how to find the embeddings in the response from the remote embedder.\n\n# Mandatory\n\n- This parameter is mandatory for source `rest`\n\n# Availability\n\n- This parameter is available for source `rest`\n\n# 🔄 Reindexing\n\n- 🏗️ Changing the value of this parameter always regenerates embeddings"
+ },
+ "headers": {
+ "type": [
+ "object",
+ "null"
+ ],
+ "description": "Additional headers to send to the remote embedder.\n\n# Availability\n\n- This parameter is available for source `rest`\n\n# 🔄 Reindexing\n\n- 🌱 Changing the value of this parameter never regenerates embeddings",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "propertyNames": {
+ "type": "string"
+ }
+ },
+ "searchEmbedder": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/SubEmbeddingSettings"
+ }
+ ]
+ },
+ "indexingEmbedder": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/SubEmbeddingSettings"
+ }
+ ]
+ },
+ "distribution": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/DistributionShift",
+ "description": "Affine transformation applied to the semantic score to make it more comparable to the ranking score.\n\n# Availability\n\n- This parameter is available for all embedders\n\n# 🔄 Reindexing\n\n- 🌱 Changing the value of this parameter never regenerates embeddings"
+ }
+ ]
+ }
+ },
+ "additionalProperties": false
+ }
+ ],
+ "description": "Configuration for this embedder. Includes the source (openAi,\nhuggingFace, ollama, rest, userProvided), model settings, API\ncredentials, and document template for generating embeddings."
+ }
+ }
+ },
+ "Settings_Checked": {
+ "type": "object",
+ "description": "Holds all the settings for an index. `T` can either be `Checked` if\nthey represents settings whose validity is guaranteed, or `Unchecked` if\nthey need to be validated. In the later case, a call to `check` will\nreturn a `Settings` from a `Settings`.",
+ "properties": {
+ "displayedAttributes": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "description": "Fields displayed in the returned documents.",
+ "example": [
+ "id",
+ "title",
+ "description",
+ "url"
+ ]
+ },
+ "searchableAttributes": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "description": "Fields in which to search for matching query words sorted by order of\nimportance.",
+ "example": [
+ "title",
+ "description"
+ ]
+ },
+ "filterableAttributes": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "$ref": "#/components/schemas/FilterableAttributesRule"
+ },
+ "description": "Attributes to use for faceting and filtering.\nSee [Filtering and Faceted\nSearch](https://meilisearch.com/docs/learn/filtering_and_sorting/search_with_facet_filters).",
+ "example": [
+ "release_date",
+ "genre"
+ ]
+ },
+ "sortableAttributes": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "description": "Attributes to use when sorting search results.",
+ "example": [
+ "release_date"
+ ]
+ },
+ "rankingRules": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "description": "List of ranking rules sorted by order of importance. The order is\ncustomizable. [A list of ordered built-in ranking\nrules](https://www.meilisearch.com/docs/learn/relevancy/relevancy).",
+ "example": [
+ "words",
+ "typo",
+ "proximity",
+ "attribute",
+ "exactness"
+ ]
+ },
+ "stopWords": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "description": "List of words ignored when present in search queries.",
+ "example": [
+ "the",
+ "a",
+ "them",
+ "their"
+ ]
+ },
+ "nonSeparatorTokens": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "description": "List of characters not delimiting where one term begins and ends.",
+ "example": [
+ " ",
+ "\n"
+ ]
+ },
+ "separatorTokens": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "description": "List of characters delimiting where one term begins and ends.",
+ "example": [
+ "S"
+ ]
+ },
+ "dictionary": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "description": "List of strings Meilisearch should parse as a single term.",
+ "example": [
+ "iPhone pro"
+ ]
+ },
+ "synonyms": {
+ "type": [
+ "object",
+ "null"
+ ],
+ "description": "List of associated words treated similarly. A word associated to an\narray of word as synonyms.",
+ "additionalProperties": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "propertyNames": {
+ "type": "string"
+ },
+ "example": {
+ "he": [
+ "she",
+ "they",
+ "them"
+ ],
+ "phone": [
+ "iPhone",
+ "android"
+ ]
+ }
+ },
+ "distinctAttribute": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "Search returns documents with distinct (different) values of the given\nfield.",
+ "example": "sku"
+ },
+ "proximityPrecision": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "Precision level when calculating the proximity ranking rule.",
+ "example": "byAttribute"
+ },
+ "typoTolerance": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/TypoSettings",
+ "description": "Typo tolerance settings for controlling how Meilisearch handles\nspelling mistakes in search queries. Configure minimum word lengths,\ndisable on specific words or attributes."
+ }
+ ]
+ },
+ "faceting": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/FacetingSettings",
+ "description": "Faceting settings for controlling facet behavior. Configure maximum\nfacet values returned and sorting order for facet values."
+ }
+ ]
+ },
+ "pagination": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/PaginationSettings",
+ "description": "Pagination settings for controlling the maximum number of results\nthat can be returned. Set `maxTotalHits` to limit how far users can\npaginate into results."
+ }
+ ]
+ },
+ "embedders": {
+ "type": [
+ "object",
+ "null"
+ ],
+ "description": "Embedder required for performing semantic search queries.",
+ "additionalProperties": {
+ "$ref": "#/components/schemas/SettingEmbeddingSettings"
+ },
+ "propertyNames": {
+ "type": "string"
+ }
+ },
+ "searchCutoffMs": {
+ "type": [
+ "integer",
+ "null"
+ ],
+ "format": "u-int64",
+ "description": "Maximum duration of a search query.",
+ "example": 50,
+ "minimum": 0
+ },
+ "localizedAttributes": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "$ref": "#/components/schemas/LocalizedAttributesRuleView"
+ },
+ "description": "Rules for associating locales (languages) with specific attributes.\nThis enables language-specific tokenization for multilingual content,\nimproving search quality for non-English text.",
+ "example": [
+ {
+ "locales": [
+ "jpn"
+ ],
+ "attributePatterns": [
+ "*_ja"
+ ]
+ }
+ ]
+ },
+ "facetSearch": {
+ "type": [
+ "boolean",
+ "null"
+ ],
+ "description": "When `true`, enables facet search which allows users to search within\nfacet values. When `false`, only the first `maxValuesPerFacet` values\nare returned. Defaults to `true`.",
+ "example": true
+ },
+ "prefixSearch": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/PrefixSearchSettings",
+ "description": "Controls prefix search behavior. `indexingTime` enables prefix search\nby building a prefix database at indexing time. `disabled` turns off\nprefix search for faster indexing. Defaults to `indexingTime`."
+ }
+ ]
+ },
+ "chat": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/ChatSettings",
+ "description": "Chat settings for AI-powered search. Configure the index description,\ndocument template for rendering, and search parameters used when the\nLLM queries this index."
+ }
+ ]
+ },
+ "vectorStore": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/VectorStoreBackend",
+ "description": "Backend storage for vector embeddings. `memory` stores vectors in\nmemory for fastest performance. `database` stores vectors on disk to\nreduce memory usage at the cost of speed."
+ }
+ ]
+ }
+ },
+ "additionalProperties": false
+ },
+ "Settings_Unchecked": {
+ "type": "object",
+ "description": "Holds all the settings for an index. `T` can either be `Checked` if\nthey represents settings whose validity is guaranteed, or `Unchecked` if\nthey need to be validated. In the later case, a call to `check` will\nreturn a `Settings` from a `Settings`.",
+ "properties": {
+ "displayedAttributes": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "description": "Fields displayed in the returned documents.",
+ "example": [
+ "id",
+ "title",
+ "description",
+ "url"
+ ]
+ },
+ "searchableAttributes": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "description": "Fields in which to search for matching query words sorted by order of\nimportance.",
+ "example": [
+ "title",
+ "description"
+ ]
+ },
+ "filterableAttributes": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "$ref": "#/components/schemas/FilterableAttributesRule"
+ },
+ "description": "Attributes to use for faceting and filtering.\nSee [Filtering and Faceted\nSearch](https://meilisearch.com/docs/learn/filtering_and_sorting/search_with_facet_filters).",
+ "example": [
+ "release_date",
+ "genre"
+ ]
+ },
+ "sortableAttributes": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "description": "Attributes to use when sorting search results.",
+ "example": [
+ "release_date"
+ ]
+ },
+ "rankingRules": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "description": "List of ranking rules sorted by order of importance. The order is\ncustomizable. [A list of ordered built-in ranking\nrules](https://www.meilisearch.com/docs/learn/relevancy/relevancy).",
+ "example": [
+ "words",
+ "typo",
+ "proximity",
+ "attribute",
+ "exactness"
+ ]
+ },
+ "stopWords": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "description": "List of words ignored when present in search queries.",
+ "example": [
+ "the",
+ "a",
+ "them",
+ "their"
+ ]
+ },
+ "nonSeparatorTokens": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "description": "List of characters not delimiting where one term begins and ends.",
+ "example": [
+ " ",
+ "\n"
+ ]
+ },
+ "separatorTokens": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "description": "List of characters delimiting where one term begins and ends.",
+ "example": [
+ "S"
+ ]
+ },
+ "dictionary": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "description": "List of strings Meilisearch should parse as a single term.",
+ "example": [
+ "iPhone pro"
+ ]
+ },
+ "synonyms": {
+ "type": [
+ "object",
+ "null"
+ ],
+ "description": "List of associated words treated similarly. A word associated to an\narray of word as synonyms.",
+ "additionalProperties": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "propertyNames": {
+ "type": "string"
+ },
+ "example": {
+ "he": [
+ "she",
+ "they",
+ "them"
+ ],
+ "phone": [
+ "iPhone",
+ "android"
+ ]
+ }
+ },
+ "distinctAttribute": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "Search returns documents with distinct (different) values of the given\nfield.",
+ "example": "sku"
+ },
+ "proximityPrecision": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "Precision level when calculating the proximity ranking rule.",
+ "example": "byAttribute"
+ },
+ "typoTolerance": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/TypoSettings",
+ "description": "Typo tolerance settings for controlling how Meilisearch handles\nspelling mistakes in search queries. Configure minimum word lengths,\ndisable on specific words or attributes."
+ }
+ ]
+ },
+ "faceting": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/FacetingSettings",
+ "description": "Faceting settings for controlling facet behavior. Configure maximum\nfacet values returned and sorting order for facet values."
+ }
+ ]
+ },
+ "pagination": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/PaginationSettings",
+ "description": "Pagination settings for controlling the maximum number of results\nthat can be returned. Set `maxTotalHits` to limit how far users can\npaginate into results."
+ }
+ ]
+ },
+ "embedders": {
+ "type": [
+ "object",
+ "null"
+ ],
+ "description": "Embedder required for performing semantic search queries.",
+ "additionalProperties": {
+ "$ref": "#/components/schemas/SettingEmbeddingSettings"
+ },
+ "propertyNames": {
+ "type": "string"
+ }
+ },
+ "searchCutoffMs": {
+ "type": [
+ "integer",
+ "null"
+ ],
+ "format": "u-int64",
+ "description": "Maximum duration of a search query.",
+ "example": 50,
+ "minimum": 0
+ },
+ "localizedAttributes": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "$ref": "#/components/schemas/LocalizedAttributesRuleView"
+ },
+ "description": "Rules for associating locales (languages) with specific attributes.\nThis enables language-specific tokenization for multilingual content,\nimproving search quality for non-English text.",
+ "example": [
+ {
+ "locales": [
+ "jpn"
+ ],
+ "attributePatterns": [
+ "*_ja"
+ ]
+ }
+ ]
+ },
+ "facetSearch": {
+ "type": [
+ "boolean",
+ "null"
+ ],
+ "description": "When `true`, enables facet search which allows users to search within\nfacet values. When `false`, only the first `maxValuesPerFacet` values\nare returned. Defaults to `true`.",
+ "example": true
+ },
+ "prefixSearch": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/PrefixSearchSettings",
+ "description": "Controls prefix search behavior. `indexingTime` enables prefix search\nby building a prefix database at indexing time. `disabled` turns off\nprefix search for faster indexing. Defaults to `indexingTime`."
+ }
+ ]
+ },
+ "chat": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/ChatSettings",
+ "description": "Chat settings for AI-powered search. Configure the index description,\ndocument template for rendering, and search parameters used when the\nLLM queries this index."
+ }
+ ]
+ },
+ "vectorStore": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/VectorStoreBackend",
+ "description": "Backend storage for vector embeddings. `memory` stores vectors in\nmemory for fastest performance. `database` stores vectors on disk to\nreduce memory usage at the cost of speed."
+ }
+ ]
+ }
+ },
+ "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",
+ "minimum": 0
+ },
+ "limit": {
+ "type": "integer",
+ "description": "Maximum number of documents returned",
+ "minimum": 0
+ },
+ "filter": {
+ "description": "Filter queries by an attribute's value"
+ },
+ "embedder": {
+ "type": "string",
+ "description": "Name of the embedder to use for semantic similarity"
+ },
+ "attributes_to_retrieve": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "description": "Attributes to display in the returned documents",
+ "uniqueItems": true
+ },
+ "retrieve_vectors": {
+ "type": "boolean",
+ "description": "Return document vector data"
+ },
+ "show_ranking_score": {
+ "type": "boolean",
+ "description": "Display the global ranking score of a document"
+ },
+ "show_ranking_score_details": {
+ "type": "boolean",
+ "description": "Adds a detailed global ranking score field"
+ },
+ "show_performance_details": {
+ "type": "boolean",
+ "description": "Adds a detailed performance details field"
+ },
+ "ranking_score_threshold": {
+ "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"
+ },
+ "Stats": {
+ "type": "object",
+ "description": "Global statistics for the Meilisearch instance",
+ "required": [
+ "databaseSize",
+ "usedDatabaseSize",
+ "indexes"
+ ],
+ "properties": {
+ "databaseSize": {
+ "type": "integer",
+ "format": "u-int64",
+ "description": "Total disk space used by the database in bytes",
+ "minimum": 0
+ },
+ "usedDatabaseSize": {
+ "type": "integer",
+ "format": "u-int64",
+ "description": "Actual size of the data in the database in bytes",
+ "minimum": 0
+ },
+ "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"
+ },
+ "SubEmbeddingSettings": {
+ "type": "object",
+ "properties": {
+ "source": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/EmbedderSource",
+ "description": "The source used to provide the embeddings.\n\nWhich embedder parameters are available and mandatory is determined by the value of this setting.\n\n# 🔄 Reindexing\n\n- 🏗️ Changing the value of this parameter always regenerates embeddings.\n\n# Defaults\n\n- Defaults to `openAi`"
+ }
+ ]
+ },
+ "model": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "The name of the model to use.\n\n# Mandatory\n\n- This parameter is mandatory for source `ollama`\n\n# Availability\n\n- This parameter is available for sources `openAi`, `huggingFace`, `ollama`\n\n# 🔄 Reindexing\n\n- 🏗️ Changing the value of this parameter always regenerates embeddings.\n\n# Defaults\n\n- For source `openAi`, defaults to `text-embedding-3-small`\n- For source `huggingFace`, defaults to `BAAI/bge-base-en-v1.5`"
+ },
+ "revision": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "The revision (commit SHA1) of the model to use.\n\nIf unspecified, Meilisearch picks the latest revision of the model.\n\n# Availability\n\n- This parameter is available for source `huggingFace`\n\n# 🔄 Reindexing\n\n- 🏗️ Changing the value of this parameter always regenerates embeddings\n\n# Defaults\n\n- When `model` is set to default, defaults to `617ca489d9e86b49b8167676d8220688b99db36e`\n- Otherwise, defaults to `null`"
+ },
+ "pooling": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/OverridePooling",
+ "description": "The pooling method to use.\n\n# Availability\n\n- This parameter is available for source `huggingFace`\n\n# 🔄 Reindexing\n\n- 🏗️ Changing the value of this parameter always regenerates embeddings\n\n# Defaults\n\n- Defaults to `useModel`\n\n# Compatibility Note\n\n- Embedders created before this parameter was available default to `forceMean` to preserve the existing behavior."
+ }
+ ]
+ },
+ "apiKey": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "The API key to pass to the remote embedder while making requests.\n\n# Availability\n\n- This parameter is available for source `openAi`, `ollama`, `rest`\n\n# 🔄 Reindexing\n\n- 🌱 Changing the value of this parameter never regenerates embeddings\n\n# Defaults\n\n- For source `openAi`, the key is read from `OPENAI_API_KEY`, then `MEILI_OPENAI_API_KEY`.\n- For other sources, no bearer token is sent if this parameter is not set.\n\n# Note\n\n- This setting is partially hidden when returned by the settings"
+ },
+ "dimensions": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "The expected dimensions of the embeddings produced by this embedder.\n\n# Mandatory\n\n- This parameter is mandatory for source `userProvided`\n\n# Availability\n\n- This parameter is available for source `openAi`, `ollama`, `rest`, `userProvided`\n\n# 🔄 Reindexing\n\n- 🏗️ When the source is `openAi`, changing the value of this parameter always regenerates embeddings\n- 🌱 For other sources, changing the value of this parameter never regenerates embeddings\n\n# Defaults\n\n- For source `openAi`, the dimensions is the maximum allowed by the model.\n- For sources `ollama` and `rest`, the dimensions are inferred by embedding a sample text."
+ },
+ "documentTemplate": {
+ "type": [
+ "boolean",
+ "null"
+ ],
+ "description": "A liquid template used to render documents to a text that can be embedded.\n\nMeillisearch interpolates the template for each document and sends the resulting text to the embedder.\nThe embedder then generates document vectors based on this text.\n\n# Availability\n\n- This parameter is available for source `openAi`, `huggingFace`, `ollama` and `rest\n\n# 🔄 Reindexing\n\n- 🏗️ When modified, embeddings are regenerated for documents whose rendering through the template produces a different text."
+ },
+ "documentTemplateMaxBytes": {
+ "type": [
+ "integer",
+ "null"
+ ],
+ "description": "Rendered texts are truncated to this size.\n\n# Availability\n\n- This parameter is available for source `openAi`, `huggingFace`, `ollama` and `rest`\n\n# 🔄 Reindexing\n\n- 🏗️ When increased, embeddings are regenerated for documents whose rendering through the template produces a different text.\n- 🌱 When decreased, embeddings are never regenerated\n\n# Default\n\n- Defaults to 400",
+ "minimum": 0
+ },
+ "url": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "URL to reach the remote embedder.\n\n# Mandatory\n\n- This parameter is mandatory for source `rest`\n\n# Availability\n\n- This parameter is available for source `openAi`, `ollama` and `rest`\n\n# 🔄 Reindexing\n\n- 🌱 When modified for source `openAi`, embeddings are never regenerated\n- 🏗️ When modified for sources `ollama` and `rest`, embeddings are always regenerated"
+ },
+ "indexingFragments": {
+ "type": [
+ "object",
+ "null"
+ ],
+ "description": "Template fragments that will be reassembled and sent to the remote embedder at indexing time.\n\n# Availability\n\n- This parameter is available for sources `rest`.\n\n# 🔄 Reindexing\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.",
+ "additionalProperties": {},
+ "propertyNames": {
+ "type": "string"
+ }
+ },
+ "searchFragments": {
+ "type": [
+ "object",
+ "null"
+ ],
+ "description": "Template fragments that will be reassembled and sent to the remote embedder at search time.\n\n# Availability\n\n- This parameter is available for sources `rest`.\n\n# 🔄 Reindexing\n\n- 🌱 Changing the value of this parameter never regenerates embeddings",
+ "additionalProperties": {},
+ "propertyNames": {
+ "type": "string"
+ }
+ },
+ "request": {
+ "description": "Template request to send to the remote embedder.\n\n# Mandatory\n\n- This parameter is mandatory for source `rest`\n\n# Availability\n\n- This parameter is available for source `rest`\n\n# 🔄 Reindexing\n\n- 🏗️ Changing the value of this parameter always regenerates embeddings"
+ },
+ "response": {
+ "description": "Template response indicating how to find the embeddings in the response from the remote embedder.\n\n# Mandatory\n\n- This parameter is mandatory for source `rest`\n\n# Availability\n\n- This parameter is available for source `rest`\n\n# 🔄 Reindexing\n\n- 🏗️ Changing the value of this parameter always regenerates embeddings"
+ },
+ "headers": {
+ "type": [
+ "object",
+ "null"
+ ],
+ "description": "Additional headers to send to the remote embedder.\n\n# Availability\n\n- This parameter is available for source `rest`\n\n# 🔄 Reindexing\n\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"
+ }
+ }
+ },
+ "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."
+ }
+ }
+ },
+ "TypoSettings": {
+ "type": "object",
+ "description": "Configuration for typo tolerance in search queries.\n\nTypo tolerance allows Meilisearch to match documents even when search\nterms contain spelling mistakes.",
+ "properties": {
+ "enabled": {
+ "type": [
+ "boolean",
+ "null"
+ ],
+ "description": "When `true`, enables typo tolerance for search queries. When `false`,\nonly exact matches are returned. Defaults to `true`.",
+ "example": true
+ },
+ "minWordSizeForTypos": {
+ "oneOf": [
+ {
+ "type": "null"
+ },
+ {
+ "$ref": "#/components/schemas/MinWordSizeTyposSetting",
+ "description": "Configures the minimum word length before typos are allowed. Contains\n`oneTypo` (min length for 1 typo) and `twoTypos` (min length for 2\ntypos) settings."
+ }
+ ]
+ },
+ "disableOnWords": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "description": "A list of words for which typo tolerance should be disabled. Use this\nfor brand names, technical terms, or other words that must be matched\nexactly. Example: `[\"iPhone\", \"macOS\"]`.",
+ "example": [
+ "iPhone",
+ "phone"
+ ],
+ "uniqueItems": true
+ },
+ "disableOnAttributes": {
+ "type": [
+ "array",
+ "null"
+ ],
+ "items": {
+ "type": "string"
+ },
+ "description": "A list of attributes for which typo tolerance should be disabled.\nSearches in these attributes will only return exact matches. Useful\nfor fields like product codes or IDs.",
+ "example": [
+ "uuid",
+ "url"
+ ],
+ "uniqueItems": true
+ },
+ "disableOnNumbers": {
+ "type": [
+ "boolean",
+ "null"
+ ],
+ "description": "When `true`, disables typo tolerance on numeric tokens. This prevents\nnumbers like `123` from matching `132`. Defaults to `false`.",
+ "example": true
+ }
+ },
+ "additionalProperties": 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)"
+ }
+ }
+ },
+ "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"
+ }
+ },
+ "VectorStoreBackend": {
+ "type": "string",
+ "enum": [
+ "stable",
+ "experimental"
+ ]
+ },
+ "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": "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. Facet search supports prefix search and typo tolerance. The returned hits are sorted lexicographically in ascending order. You can configure how facets are sorted using the sortFacetValuesBy property of the faceting index settings."
+ },
+ {
+ "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)"
+ },
+ {
+ "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."
+ }
+ ]
+}
\ No newline at end of file
diff --git a/docs.json b/docs.json
index 1f588b4ad5..57f469b705 100644
--- a/docs.json
+++ b/docs.json
@@ -35,7 +35,7 @@
},
"links": [
{
- "label": "Github",
+ "label": "GitHub",
"href": "https://github.com/meilisearch/meilisearch"
},
{
@@ -93,7 +93,7 @@
"header": "Contact us",
"items": [
{
- "label": "Github",
+ "label": "GitHub",
"href": "https://github.com/meilisearch"
},
{
@@ -145,6 +145,11 @@
}
]
},
+ "api": {
+ "playground": {
+ "display": "simple"
+ }
+ },
"navigation": {
"versions": [
{
@@ -340,38 +345,31 @@
]
},
{
- "anchor": "References",
+ "anchor": "API Reference",
"icon": "code",
"groups": [
{
- "group": "API reference",
+ "group": "Overview",
"pages": [
- "reference/api/overview",
- "reference/api/indexes",
- "reference/api/documents",
- "reference/api/search",
- "reference/api/multi_search",
- "reference/api/network",
- "reference/api/similar",
- "reference/api/facet_search",
- "reference/api/chats",
- "reference/api/tasks",
- "reference/api/batches",
- "reference/api/keys",
- "reference/api/settings",
- "reference/api/snapshots",
- "reference/api/stats",
- "reference/api/health",
- "reference/api/version",
- "reference/api/dump",
- "reference/api/experimental_features",
- "reference/api/metrics",
- "reference/api/logs",
- "reference/api/export",
- "reference/api/webhooks",
- "reference/api/compact"
+ "reference/api/authorization",
+ "reference/api/headers",
+ "reference/api/requests",
+ "reference/api/pagination",
+ "reference/api/openapi"
]
},
+ {
+ "group": "API Routes",
+ "openapi": {
+ "source": "assets/open-api/meilisearch-openapi-mintlify.json",
+ "directory": "reference/api"
+ },
+ "internal-meili-fetch-automation": true,
+ "examples": {
+ "languages": ["curl", "javascript", "php", "python", "java", "ruby", "go", "csharp", "rust", "dart", "swift"],
+ "autogenerate": false
+ }
+ },
{
"group": "Errors",
"pages": [
@@ -379,7 +377,9 @@
"reference/errors/error_codes"
]
}
+
]
+
},
{
"anchor": "Guides",
@@ -963,7 +963,7 @@
},
{
"source": "/reference",
- "destination": "/reference/api/overview"
+ "destination": "/reference/api/authorization"
},
{
"source": "/guides/deployment/gcp",
diff --git a/guides/laravel_scout.mdx b/guides/laravel_scout.mdx
index ba8089f08e..22df66e936 100644
--- a/guides/laravel_scout.mdx
+++ b/guides/laravel_scout.mdx
@@ -189,4 +189,4 @@ This demo application uses the following features:
- [Filtering](/learn/filtering_and_sorting/filter_search_results)
- [Sorting](/learn/filtering_and_sorting/sort_search_results)
-Of course, the code is open-sourced on [Github](https://github.com/meilisearch/saas-demo). 🎉
+Of course, the code is open-sourced on [GitHub](https://github.com/meilisearch/saas-demo). 🎉
diff --git a/learn/ai_powered_search/getting_started_with_ai_search.mdx b/learn/ai_powered_search/getting_started_with_ai_search.mdx
index 6275993e36..9928632a60 100644
--- a/learn/ai_powered_search/getting_started_with_ai_search.mdx
+++ b/learn/ai_powered_search/getting_started_with_ai_search.mdx
@@ -164,4 +164,4 @@ Now you have a basic overview of the basic steps required for setting up and per
For practical information on implementing AI-powered search with other services, consult our [guides section](/guides/embedders/openai). There you will find specific instructions for embedders such as [LangChain](/guides/langchain) and [Cloudflare](/guides/embedders/cloudflare).
-For more in-depth information, consult the API reference for [embedder settings](/reference/api/settings#embedders) and [the `hybrid` search parameter](/reference/api/search#hybrid-search).
+For more in-depth information, consult the API reference for [embedder settings](/reference/api/settings/get-embedders) and [the `hybrid` search parameter](/reference/api/search/search-with-post#hybrid-search).
diff --git a/learn/analytics/configure_analytics_events.mdx b/learn/analytics/configure_analytics_events.mdx
index 2d0738b733..0e23207226 100644
--- a/learn/analytics/configure_analytics_events.mdx
+++ b/learn/analytics/configure_analytics_events.mdx
@@ -24,7 +24,7 @@ Every time a user clicks on a search result, your application must send a `click
You must explicitly submit a `userId` associated with the event. This can be any arbitrary string you use to identify the user, such as their profile ID in your application or their hashed IP address. You may submit user IDs directly on the event payload, or setting a `X-MS-USER-ID` request header.
-Specifying a `queryUid` is optional but recommended as it ensures Meilisearch correctly associates the search query with the event. You can find the query UID in the [`metadata` field present in Meilisearch Cloud's search query responses](/reference/api/overview#search-metadata).
+Specifying a `queryUid` is optional but recommended as it ensures Meilisearch correctly associates the search query with the event. You can find the query UID in the [`metadata` field present in Meilisearch Cloud's search query responses](/reference/api/headers#search-metadata).
For more information, consult the [analytics events endpoint reference](/learn/analytics/events_endpoint).
diff --git a/learn/analytics/events_endpoint.mdx b/learn/analytics/events_endpoint.mdx
index 72f9054200..c1f185c19e 100644
--- a/learn/analytics/events_endpoint.mdx
+++ b/learn/analytics/events_endpoint.mdx
@@ -22,7 +22,7 @@ Send an analytics event to Meilisearch Cloud.
| `eventType` | String | N/A | The event type, such as `click` or `conversion`, required |
| `eventName` | String | N/A | A string describing the event, required |
| `indexUid` | String | N/A | The name of the index of the clicked document, required |
-| `queryUid` | String | N/A | The [search query's UID](/reference/api/overview#search-metadata) |
+| `queryUid` | String | N/A | The [search query's UID](/reference/api/headers#search-metadata) |
| `objectId` | String | N/A | The clicked document's primary key value |
| `objectName` | String | N/A | A string describing the document |
| `position` | Integer | N/A | An integer indicating the clicked document's position in the search result list |
diff --git a/learn/async/asynchronous_operations.mdx b/learn/async/asynchronous_operations.mdx
index f85a21bca3..02c2815a4e 100644
--- a/learn/async/asynchronous_operations.mdx
+++ b/learn/async/asynchronous_operations.mdx
@@ -55,11 +55,11 @@ A [task object](/reference/api/tasks#task-object) includes data not present in t
}
```
-For a comprehensive description of each task object field, consult the [task API reference](/reference/api/tasks).
+For a comprehensive description of each task object field, consult the [task API reference](/reference/api/async-task-management/get-task).
#### Summarized task objects
-When you make an API request for an asynchronous operation, Meilisearch returns a [summarized version](/reference/api/tasks#summarized-task-object) of the full `task` object.
+When you make an API request for an asynchronous operation, Meilisearch returns a [summarized version](/reference/api/async-task-management/get-task) of the full `task` object.
```json
{
@@ -71,7 +71,7 @@ When you make an API request for an asynchronous operation, Meilisearch returns
}
```
-Use the summarized task's `taskUid` to [track the progress of a task](/reference/api/tasks#get-one-task).
+Use the summarized task's `taskUid` to [track the progress of a task](/reference/api/async-task-management/get-task).
#### Task `status`
@@ -131,7 +131,7 @@ All other tasks are processed in the order they were enqueued.
When you make a [request for an asynchronous operation](#which-operations-are-asynchronous), Meilisearch processes all tasks following the same steps:
-1. Meilisearch creates a task, puts it in the task queue, and returns a [summarized `task` object](/learn/async/asynchronous_operations#summarized-task-objects). Task `status` set to `enqueued`
+1. Meilisearch creates a task, puts it in the task queue, and returns a [summarized `task` object](/reference/api/async-task-management/get-task). Task `status` set to `enqueued`
2. When your task reaches the front of the queue, Meilisearch begins working on it. Task `status` set to `processing`
3. Meilisearch finishes the task. Status set to `succeeded` if task was successfully processed, or `failed` if there was an error
@@ -153,7 +153,7 @@ Tasks are not canceled when you terminate a Meilisearch instance. Meilisearch di
### Deleting tasks
-[Finished tasks](#task-status) remain visible in [the task list](/reference/api/tasks#get-tasks). To delete them manually, use the [delete tasks route](/reference/api/tasks#delete-tasks).
+[Finished tasks](#task-status) remain visible in [the task list](/reference/api/async-task-management/list-tasks). To delete them manually, use the [delete tasks route](/reference/api/async-task-management/delete-tasks).
Meilisearch stores up to 1M tasks in the task database. If enqueuing a new task would exceed this limit, Meilisearch automatically tries to delete the oldest 100K finished tasks. If there are no finished tasks in the database, Meilisearch does not delete anything and enqueues the new task as usual.
diff --git a/learn/async/filtering_tasks.mdx b/learn/async/filtering_tasks.mdx
index c62af96f5f..c2553da5bf 100644
--- a/learn/async/filtering_tasks.mdx
+++ b/learn/async/filtering_tasks.mdx
@@ -8,7 +8,7 @@ import CodeSamplesAsyncGuideFilterByStatuses1 from '/snippets/generated-code-sam
import CodeSamplesAsyncGuideFilterByStatuses2 from '/snippets/generated-code-samples/code_samples_async_guide_filter_by_statuses_2.mdx';
import CodeSamplesAsyncGuideMultipleFilters1 from '/snippets/generated-code-samples/code_samples_async_guide_multiple_filters_1.mdx';
-Querying the [get tasks endpoint](/reference/api/tasks#get-tasks) returns all tasks that have not been deleted. This unfiltered list may be difficult to parse in large projects.
+Querying the [get tasks endpoint](/reference/api/async-task-management/list-tasks) returns all tasks that have not been deleted. This unfiltered list may be difficult to parse in large projects.
This guide shows you how to use query parameters to filter tasks and obtain a more readable list of asynchronous operations.
@@ -31,7 +31,7 @@ Use a comma to separate multiple values and fetch both `canceled` and `failed` t
-You may filter tasks based on `uid`, `status`, `type`, `indexUid`, `canceledBy`, or date. Consult the API reference for a full list of task filtering parameters.
+You may filter tasks based on `uid`, `status`, `type`, `indexUid`, `canceledBy`, or date. Consult the [API reference](/reference/api/async-task-management/list-tasks) for a full list of task filtering parameters.
## Combining filters
diff --git a/learn/async/paginating_tasks.mdx b/learn/async/paginating_tasks.mdx
index 47068d5bd0..75c9d6e915 100644
--- a/learn/async/paginating_tasks.mdx
+++ b/learn/async/paginating_tasks.mdx
@@ -7,7 +7,7 @@ description: Meilisearch uses a task queue to handle asynchronous operations. Th
import CodeSamplesGetAllTasksPaginating1 from '/snippets/generated-code-samples/code_samples_get_all_tasks_paginating_1.mdx';
import CodeSamplesGetAllTasksPaginating2 from '/snippets/generated-code-samples/code_samples_get_all_tasks_paginating_2.mdx';
-By default, Meilisearch returns a list of 20 tasks for each request when you query the [get tasks endpoint](/reference/api/tasks#get-tasks). This guide shows you how to navigate the task list using query parameters.
+By default, Meilisearch returns a list of 20 tasks for each request when you query the [get tasks endpoint](/reference/api/async-task-management/list-tasks). This guide shows you how to navigate the task list using query parameters.
Paginating batches with [the `/batches` route](/reference/api/batches) follows the same rules as paginating tasks.
diff --git a/learn/async/working_with_tasks.mdx b/learn/async/working_with_tasks.mdx
index db64bce29f..340db33bae 100644
--- a/learn/async/working_with_tasks.mdx
+++ b/learn/async/working_with_tasks.mdx
@@ -94,4 +94,4 @@ If the task `status` changes to `failed`, Meilisearch was not able to fulfill yo
## Conclusion
-You have seen what happens when an API request adds a task to the task queue, and how to check the status of a that task. Consult the [task API reference](/reference/api/tasks) and the [asynchronous operations explanation](/learn/async/asynchronous_operations) for more information on how tasks work.
+You have seen what happens when an API request adds a task to the task queue, and how to check the status of a that task. Consult the [task API reference](/reference/api/async-task-management/list-tasks) and the [asynchronous operations explanation](/learn/async/asynchronous_operations) for more information on how tasks work.
diff --git a/learn/configuration/configuring_index_settings.mdx b/learn/configuration/configuring_index_settings.mdx
index c2275eb789..1bf25f6974 100644
--- a/learn/configuration/configuring_index_settings.mdx
+++ b/learn/configuration/configuring_index_settings.mdx
@@ -81,4 +81,4 @@ This tutorial used the "Searchable attributes" setting, but the procedure is the
If you prefer to access the settings API directly through your console, you can also [configure index settings using the Meilisearch Cloud API](/learn/configuration/configuring_index_settings_api).
-For a comprehensive reference of all index settings, consult the [settings API reference](/reference/api/settings).
+For a comprehensive reference of all index settings, consult the [settings API reference](/reference/api/settings/list-all-settings).
diff --git a/learn/configuration/configuring_index_settings_api.mdx b/learn/configuration/configuring_index_settings_api.mdx
index b8a81a5eb3..1b783fc782 100644
--- a/learn/configuration/configuring_index_settings_api.mdx
+++ b/learn/configuration/configuring_index_settings_api.mdx
@@ -94,4 +94,4 @@ You have used the Meilisearch API to check the value of an index setting. This r
This tutorial used the searchable attributes setting, but the procedure is the same no matter which index setting you are editing.
-For a comprehensive reference of all index settings, consult the [settings API reference](/reference/api/settings).
+For a comprehensive reference of all index settings, consult the [settings API reference](/reference/api/settings/list-all-settings).
diff --git a/learn/data_backup/dumps.mdx b/learn/data_backup/dumps.mdx
index 86648b70ec..fff9cdf83d 100644
--- a/learn/data_backup/dumps.mdx
+++ b/learn/data_backup/dumps.mdx
@@ -29,7 +29,7 @@ To create a dump, use the [create a dump endpoint](/reference/api/dump#create-a-
-This will return a [summarized task object](/learn/async/asynchronous_operations#summarized-task-objects) that you can use to check the status of your dump.
+This will return a [summarized task object](/reference/api/async-task-management/get-task) that you can use to check the status of your dump.
```json
{
diff --git a/learn/filtering_and_sorting/search_with_facet_filters.mdx b/learn/filtering_and_sorting/search_with_facet_filters.mdx
index 01de8a5741..1e68202bae 100644
--- a/learn/filtering_and_sorting/search_with_facet_filters.mdx
+++ b/learn/filtering_and_sorting/search_with_facet_filters.mdx
@@ -153,4 +153,4 @@ The response contains a `facetHits` array listing all matching facets, together
}
```
-You can further refine results using the `q`, `filter`, and `matchingStrategy` parameters. [Learn more about them in the API reference.](/reference/api/facet_search)
+You can further refine results using the `q`, `filter`, and `matchingStrategy` parameters. [Learn more about them in the API reference.](/reference/api/facet-search/search-in-facets)
diff --git a/learn/indexing/indexing_best_practices.mdx b/learn/indexing/indexing_best_practices.mdx
index ed4ba353e6..2f89b85b42 100644
--- a/learn/indexing/indexing_best_practices.mdx
+++ b/learn/indexing/indexing_best_practices.mdx
@@ -22,7 +22,7 @@ When creating a new index, first [configure its settings](/reference/api/setting
## Optimize document size
-Smaller documents are processed faster, so make sure to trim down any unnecessary data from your documents. When a document field is missing from the list of [searchable](/reference/api/settings#searchable-attributes), [filterable](/reference/api/settings#filterable-attributes), [sortable](/reference/api/settings#sortable-attributes), or [displayed](/reference/api/settings#displayed-attributes) attributes, it might be best to remove it from the document. To go further, consider compressing your data using methods such as `br`, `deflate`, or `gzip`. Consult the [supported encoding formats reference](/reference/api/overview#content-encoding).
+Smaller documents are processed faster, so make sure to trim down any unnecessary data from your documents. When a document field is missing from the list of [searchable](/reference/api/settings#searchable-attributes), [filterable](/reference/api/settings#filterable-attributes), [sortable](/reference/api/settings#sortable-attributes), or [displayed](/reference/api/settings#displayed-attributes) attributes, it might be best to remove it from the document. To go further, consider compressing your data using methods such as `br`, `deflate`, or `gzip`. Consult the [supported encoding formats reference](/reference/api/headers#content-encoding).
## Prefer bigger HTTP payloads
diff --git a/learn/relevancy/distinct_attribute.mdx b/learn/relevancy/distinct_attribute.mdx
index 5054b6c926..eb0889fc42 100644
--- a/learn/relevancy/distinct_attribute.mdx
+++ b/learn/relevancy/distinct_attribute.mdx
@@ -85,7 +85,7 @@ After setting the distinct attribute as shown above, querying for `lee leather j
}
```
-For more in-depth information on distinct attribute, consult the [API reference](/reference/api/settings#distinct-attribute).
+For more in-depth information on distinct attribute, consult the [API reference](/reference/api/settings/get-distinctattribute).
## Setting a distinct attribute at search time
diff --git a/learn/security/tenant_token_reference.mdx b/learn/security/tenant_token_reference.mdx
index b784e50b09..b1055818af 100644
--- a/learn/security/tenant_token_reference.mdx
+++ b/learn/security/tenant_token_reference.mdx
@@ -55,7 +55,7 @@ A token may contain rules for any number of indexes. **Specific rulesets take pr
Because tenant tokens are generated in your application, Meilisearch cannot check if search rule filters are valid. Invalid search rules return throw errors when searching.
-Consult the search API reference for [more information on Meilisearch filter syntax](/reference/api/search#filter).
+Consult the search API reference for [more information on Meilisearch filter syntax](/reference/api/search/search-with-post#filter).
The search rule may also be an empty object. In this case, the tenant token will have access to all documents in an index:
diff --git a/learn/security/tenant_tokens.mdx b/learn/security/tenant_tokens.mdx
index fd87830cd2..189fb7e0ba 100644
--- a/learn/security/tenant_tokens.mdx
+++ b/learn/security/tenant_tokens.mdx
@@ -42,7 +42,7 @@ There are three important parameters to keep in mind when using an SDK to genera
**Search rules** must be a JSON object specifying the restrictions that will be applied to search requests on a given index. It must contain at least one search rule. [To learn more about search rules, take a look at our tenant token payload reference.](#search-rules)
-As its name indicates, **API key** must be a valid Meilisearch API key with access to [the search action](/reference/api/keys#actions). A tenant token will have access to the same indexes as the API key used when generating it. If no API key is provided, the SDK might be able to infer it automatically.
+As its name indicates, **API key** must be a valid Meilisearch API key with access to [the search action](/reference/api/keys/list-api-keys#actions). A tenant token will have access to the same indexes as the API key used when generating it. If no API key is provided, the SDK might be able to infer it automatically.
**Expiration date** is optional when using an SDK. Tokens become invalid after their expiration date. Tokens without an expiration date will expire when their parent API key does.
@@ -229,12 +229,12 @@ The previous rules can be combined in one tenant token:
Because tenant tokens are generated in your application, Meilisearch cannot check if search rule filters are valid. Invalid search rules will only throw errors when they are used in a query.
-Consult the search API reference for [more information on Meilisearch filter syntax](/reference/api/search#filter).
+Consult the search API reference for [more information on Meilisearch filter syntax](/reference/api/search/search-with-post#filter).
### API key
-Creating a token requires an API key with access to [the search action](/reference/api/keys#actions). A token has access to the same indexes and routes as the API key used to generate it.
+Creating a token requires an API key with access to [the search action](/reference/api/keys/list-api-keys#actions). A token has access to the same indexes and routes as the API key used to generate it.
Since a master key is not an API key, **you cannot use a master key to create a tenant token**.
@@ -246,7 +246,7 @@ When using an official Meilisearch SDK, you may indicate which API key you wish
If an API key expires, any tenant tokens created with it will become invalid. The same applies if the API key is deleted or regenerated due to a changed master key.
-[You can read more about API keys in the API reference.](/reference/api/keys)
+[You can read more about API keys in the API reference.](/reference/api/keys/list-api-keys)
### Expiry date
@@ -257,7 +257,7 @@ The expiry date must be a UNIX timestamp or `null`. Additionally, a token's expi
Setting a token expiry date is optional, but recommended. A token without an expiry date never expires and can be used indefinitely as long as its parent API key remains valid.
-The only way to revoke a token without an expiry date is to [delete](/reference/api/keys#delete-a-key) its parent API key.
+The only way to revoke a token without an expiry date is to [delete](/reference/api/keys/delete-api-key) its parent API key.
Changing an instance's master key forces Meilisearch to regenerate all API keys and will also render all existing tenant tokens invalid.
diff --git a/learn/self_hosted/getting_started_with_self_hosted_meilisearch.mdx b/learn/self_hosted/getting_started_with_self_hosted_meilisearch.mdx
index ca07c53406..19315ad87a 100644
--- a/learn/self_hosted/getting_started_with_self_hosted_meilisearch.mdx
+++ b/learn/self_hosted/getting_started_with_self_hosted_meilisearch.mdx
@@ -191,4 +191,4 @@ You now know how to install Meilisearch, create an index, add documents, check t
If you'd like to search through the documents you just added using a clean browser interface rather than the terminal, you can do so with [our built-in search preview](/learn/getting_started/search_preview). You can also [learn how to quickly build a front-end interface](/guides/front_end/front_end_integration) of your own.
-For a more advanced approach, consult the [API reference](/reference/api/overview).
+For a more advanced approach, consult the [API reference](/reference/api/requests).
diff --git a/package.json b/package.json
index 88b14ba6d9..ec540597b9 100644
--- a/package.json
+++ b/package.json
@@ -13,6 +13,13 @@
"markdownlint-cli": "^0.47.0"
},
"scripts": {
+ "generate-mintlify-openapi-file": "node scripts/generate-mintlify-openapi.mjs",
+ "fetch-meilisearch-openapi-file": "node scripts/fetch-meilisearch-openapi-file.mjs",
+ "generate-code-sample-snippets-file": "node scripts/generate-code-sample-snippets.mjs",
+ "check-unused-sdk-samples": "node scripts/check-unused-sdk-samples.mjs",
+ "check-openapi-code-samples": "node scripts/check-openapi-code-samples.mjs",
+ "check-missing-sdk-samples": "node scripts/check-missing-sdk-samples.mjs",
+ "check-code-samples-usage": "node scripts/check-code-samples-usage.mjs",
"marklint": "markdownlint '**/*.mdx' --config .markdownlint.jsonc",
"marklint:fix": "markdownlint '**/*.mdx' --config .markdownlint.jsonc --fix",
"proselint": "vale --glob='!.github/*' ."
diff --git a/reference/api/authorization.mdx b/reference/api/authorization.mdx
new file mode 100644
index 0000000000..63b7a8f4ed
--- /dev/null
+++ b/reference/api/authorization.mdx
@@ -0,0 +1,19 @@
+---
+title: Authorization
+sidebarTitle: Authorization
+description: How to authenticate with the Meilisearch API using API keys and the Authorization header.
+---
+
+import CodeSamplesAuthorizationHeader1 from '/snippets/generated-code-samples/code_samples_authorization_header_1.mdx';
+
+
+If you are new to Meilisearch, check out the [getting started guide](/learn/self_hosted/getting_started_with_self_hosted_meilisearch).
+
+
+By [providing Meilisearch with a master key at launch](/learn/security/basic_security), you protect your instance from unauthorized requests. The provided master key must be at least 16 bytes. From then on, you must include the `Authorization` header along with a valid API key to access protected routes (all routes except [`/health`](/reference/api/health)).
+
+
+
+The [`/keys`](/reference/api/keys) route can only be accessed using the master key. For security reasons, we recommend using regular API keys for all other routes.
+
+[To learn more about keys and security, refer to our security tutorial.](/learn/security/basic_security)
diff --git a/reference/api/headers.mdx b/reference/api/headers.mdx
new file mode 100644
index 0000000000..9e1ccef83f
--- /dev/null
+++ b/reference/api/headers.mdx
@@ -0,0 +1,85 @@
+---
+title: Headers
+sidebarTitle: Headers
+description: Content-Type, Content-Encoding, Accept-Encoding, and Meili-Include-Metadata headers for the Meilisearch API.
+---
+
+## Content type
+
+Any API request with a payload (`--data-binary`) requires a `Content-Type` header. Content type headers indicate the media type of the resource, helping the client process the response body correctly.
+
+Meilisearch currently supports the following formats:
+
+- `Content-Type: application/json` for JSON
+- `Content-Type: application/x-ndjson` for NDJSON
+- `Content-Type: text/csv` for CSV
+
+Only the [add documents](/reference/api/documents#add-or-replace-documents) and [update documents](/reference/api/documents#add-or-update-documents) endpoints accept NDJSON and CSV. For all others, use `Content-Type: application/json`.
+
+## Content encoding
+
+The `Content-Encoding` header indicates the media type is compressed by a given algorithm. Compression improves transfer speed and reduces bandwidth consumption by sending and receiving smaller payloads. The `Accept-Encoding` header, instead, indicates the compression algorithm the client understands.
+
+Meilisearch supports the following compression methods:
+
+- `br`: uses the [Brotli](https://en.wikipedia.org/wiki/Brotli) algorithm
+- `deflate`: uses the [zlib](https://en.wikipedia.org/wiki/Zlib) structure with the [deflate](https://en.wikipedia.org/wiki/DEFLATE) compression algorithm
+- `gzip`: uses the [gzip](https://en.wikipedia.org/wiki/Gzip) algorithm
+
+### Request compression
+
+The code sample below uses the `Content-Encoding: gzip` header, indicating that the request body is compressed using the `gzip` algorithm:
+
+```
+ cat ~/movies.json | gzip | curl -X POST 'MEILISEARCH_URL/indexes/movies/documents' --data-binary @- -H 'Content-Type: application/json' -H 'Content-Encoding: gzip'
+```
+
+### Response compression
+
+Meilisearch compresses a response if the request contains the `Accept-Encoding` header. The code sample below uses the `gzip` algorithm:
+
+```
+curl -sH 'Accept-encoding: gzip' 'MEILISEARCH_URL/indexes/movies/search' | gzip -
+```
+
+## Search metadata
+
+You may use an optional `Meili-Include-Metadata` header when performing search and multi-search requests:
+
+```
+curl -X POST 'http://localhost:7700/indexes/INDEX_NAME/search' \
+ -H 'Content-Type: application/json' \
+ -H 'Authorization: Bearer MEILISEARCH_API_KEY' \
+ -H 'Meili-Include-Metadata: true' \
+ -d '{"q": ""}'
+```
+
+Meilisearch Cloud includes this header by default.
+
+Responses will include a `metadata` object:
+
+```json
+{
+ "hits": [ … ],
+ "metadata": {
+ "queryUid": "0199a41a-8186-70b3-b6e1-90e8cb582f35",
+ "indexUid": "INDEX_NAME",
+ "primaryKey": "INDEX_PRIMARY_KEY"
+ }
+}
+```
+
+`metadata` contains the following fields:
+
+| Field | Type | Description |
+|:------------:|:-------:|:----------------------------------------------------------:|
+| `queryUid` | UUID v7 | Unique identifier for the query |
+| `indexUid` | String | Index identifier |
+| `primaryKey` | String | Primary key field name, if index has a primary key |
+| `remote` | String | Remote instance name, if request targets a remote instance |
+
+
+A search refers to a single HTTP search request. Every search request is assigned a `requestUid`. A query UID is a combination of `q` and `indexUid`.
+
+In the context of multi-search, for any given `searchUid` there may be multiple `queryUid` values.
+
diff --git a/reference/api/keys.mdx b/reference/api/keys.mdx
index 69948a7ba5..8e116bc92e 100644
--- a/reference/api/keys.mdx
+++ b/reference/api/keys.mdx
@@ -95,7 +95,7 @@ For security reasons, we do not recommend creating keys that can perform all act
| **`indexes.update`** | Provides access to the [update index](/reference/api/indexes#update-an-index) endpoint |
| **`indexes.delete`** | Provides access to the [delete index](/reference/api/indexes#delete-an-index) endpoint |
| **`indexes.swap`** | Provides access to the swap indexes endpoint. **Non-authorized `indexes` will not be swapped** |
-| **`tasks.get`** | Provides access to the [get one task](/reference/api/tasks#get-one-task) and [get tasks](/reference/api/tasks#get-tasks) endpoints. **Tasks from non-authorized `indexes` will be omitted from the response** |
+| **`tasks.get`** | Provides access to the [get one task](/reference/api/async-task-management/get-task) and [get tasks](/reference/api/async-task-management/list-tasks) endpoints. **Tasks from non-authorized `indexes` will be omitted from the response** |
| **`tasks.cancel`** | Provides access to the [cancel tasks](/reference/api/tasks#cancel-tasks) endpoint. **Tasks from non-authorized `indexes` will not be canceled** |
| **`tasks.delete`** | Provides access to the [delete tasks](/reference/api/tasks#delete-tasks) endpoint. **Tasks from non-authorized `indexes` will not be deleted** |
| **`settings.get`** | Provides access to the [get settings](/reference/api/settings#get-settings) endpoint and equivalents for all subroutes |
diff --git a/reference/api/openapi.mdx b/reference/api/openapi.mdx
new file mode 100644
index 0000000000..60ab73829e
--- /dev/null
+++ b/reference/api/openapi.mdx
@@ -0,0 +1,9 @@
+---
+title: OpenAPI specifications
+sidebarTitle: OpenAPI specifications
+description: Meilisearch OpenAPI specifications and where to find them.
+---
+
+You can download the OpenAPI specification for the latest Meilisearch version.
+
+For a specific Meilisearch version, get the specification from the [Meilisearch releases on GitHub](https://github.com/meilisearch/meilisearch/releases). Each release includes `meilisearch-openapi.json` in its assets.
diff --git a/reference/api/overview.mdx b/reference/api/overview.mdx
index d23f7e96ad..c67899418e 100644
--- a/reference/api/overview.mdx
+++ b/reference/api/overview.mdx
@@ -7,7 +7,6 @@ description: Consult this page for an overview of how to query Meilisearch's API
import { RouteHighlighter } from '/snippets/route_highlighter.mdx'
import CodeSamplesAuthorizationHeader1 from '/snippets/generated-code-samples/code_samples_authorization_header_1.mdx';
-import CodeSamplesUpdatingGuideCheckVersionOldAuthorizationHeader from '/snippets/generated-code-samples/code_samples_updating_guide_check_version_old_authorization_header.mdx';
This reference describes the general behavior of Meilisearch's RESTful API.
@@ -33,12 +32,6 @@ By [providing Meilisearch with a master key at launch](/learn/security/basic_sec
The [`/keys`](/reference/api/keys) route can only be accessed using the master key. For security reasons, we recommend using regular API keys for all other routes.
-
-v0.24 and below use the `X-MEILI-API-KEY: apiKey` authorization header:
-
-
-
-
[To learn more about keys and security, refer to our security tutorial.](/learn/security/basic_security)
## Pagination
@@ -55,7 +48,7 @@ All paginated responses contain the following fields:
### `/tasks` endpoint
-Since the `/tasks` endpoint uses a different type of pagination, the response contains different fields. You can read more about it in the [tasks API reference](/reference/api/tasks#get-tasks).
+Since the `/tasks` endpoint uses a different type of pagination, the response contains different fields. You can read more about it in the [tasks API reference](/reference/api/async-task-management/list-tasks).
## Parameters
diff --git a/reference/api/pagination.mdx b/reference/api/pagination.mdx
new file mode 100644
index 0000000000..b61dcf854a
--- /dev/null
+++ b/reference/api/pagination.mdx
@@ -0,0 +1,19 @@
+---
+title: Pagination
+sidebarTitle: Pagination
+description: How Meilisearch paginates GET routes and the structure of paginated responses.
+---
+
+Meilisearch paginates all GET routes that return multiple resources, for example, GET `/indexes`, GET `/documents`, GET `/keys`, etc. This allows you to work with manageable chunks of data. All these routes return 20 results per page, but you can configure it using the `limit` query parameter. You can move between pages using `offset`.
+
+All paginated responses contain the following fields:
+
+| Name | Type | Description |
+| :----------- | :------ | :--------------------------- |
+| **`offset`** | Integer | Number of resources skipped |
+| **`limit`** | Integer | Number of resources returned |
+| **`total`** | Integer | Total number of resources |
+
+## `/tasks` endpoint
+
+Since the `/tasks` endpoint uses a different type of pagination, the response contains different fields. You can read more about it in the [tasks API reference](/reference/api/async-task-management/list-tasks).
diff --git a/reference/api/requests.mdx b/reference/api/requests.mdx
new file mode 100644
index 0000000000..8770b50bf8
--- /dev/null
+++ b/reference/api/requests.mdx
@@ -0,0 +1,51 @@
+---
+title: Requests
+sidebarTitle: Requests
+description: Parameters, requests & response bodies, and data types for the Meilisearch API.
+---
+
+## Parameters
+
+Parameters are options you can pass to an API endpoint to modify its response. There are three main types of parameters in Meilisearch's API: request body parameters, path parameters, and query parameters.
+
+### Request body parameters
+
+These parameters are mandatory parts of POST, PUT, and PATCH requests. They accept a wide variety of values and data types depending on the resource you're modifying. You must add these parameters to your request's data payload.
+
+### Path parameters
+
+These are parameters you pass to the API in the endpoint's path. They are used to identify a resource uniquely. You can have multiple path parameters, for example, `/indexes/{index_uid}/documents/{document_id}`.
+
+If an endpoint does not take any path parameters, this section is not present in that endpoint's documentation.
+
+### Query parameters
+
+These optional parameters are a sequence of key-value pairs and appear after the question mark (`?`) in the endpoint. You can list multiple query parameters by separating them with an ampersand (`&`). The order of query parameters does not matter. They are mostly used with GET endpoints.
+
+If an endpoint does not take any query parameters, this section is not present in that endpoint's documentation.
+
+## Request body
+
+The request body is data sent to the API. It is used with PUT, POST, and PATCH methods to create or update a resource. You must provide request bodies in JSON.
+
+## Response body
+
+Meilisearch is an **asynchronous API**. This means that in response to most write requests, you will receive a summarized version of the `task` object:
+
+```json
+{
+ "taskUid": 1,
+ "indexUid": "movies",
+ "status": "enqueued",
+ "type": "indexUpdate",
+ "enqueuedAt": "2021-08-11T09:25:53.000000Z"
+}
+```
+
+You can use this `taskUid` to get more details on [the status of the task](/reference/api/tasks#get-one-task).
+
+See more information about [asynchronous operations](/learn/async/asynchronous_operations).
+
+## Data types
+
+The Meilisearch API supports [JSON data types](https://www.w3schools.com/js/js_json_datatypes.asp).
diff --git a/reference/errors/error_codes.mdx b/reference/errors/error_codes.mdx
index 95055e7c8d..cbb98aff6b 100644
--- a/reference/errors/error_codes.mdx
+++ b/reference/errors/error_codes.mdx
@@ -168,7 +168,7 @@ The search query contains non-`null` values for both [`media`](/reference/api/se
## `invalid_content_type`
-The [Content-Type header](/reference/api/overview#content-type) is not supported by Meilisearch. Currently, Meilisearch only supports JSON, CSV, and NDJSON.
+The [Content-Type header](/reference/api/headers#content-type) is not supported by Meilisearch. Currently, Meilisearch only supports JSON, CSV, and NDJSON.
## `invalid_document_csv_delimiter`
@@ -637,7 +637,7 @@ This error generally occurs when the host system has no space left on the device
## `malformed_payload`
-The [Content-Type header](/reference/api/overview#content-type) does not match the request body payload format or the format is invalid.
+The [Content-Type header](/reference/api/headers#content-type) does not match the request body payload format or the format is invalid.
## `missing_api_key_actions`
@@ -660,7 +660,7 @@ This error happens if:
## `missing_content_type`
-The payload does not contain a [Content-Type header](/reference/api/overview#content-type). Currently, Meilisearch only supports JSON, CSV, and NDJSON.
+The payload does not contain a [Content-Type header](/reference/api/headers#content-type). Currently, Meilisearch only supports JSON, CSV, and NDJSON.
## `missing_document_filter`
diff --git a/scripts/check-openapi-code-samples.mjs b/scripts/check-openapi-code-samples.mjs
new file mode 100644
index 0000000000..731be9f0de
--- /dev/null
+++ b/scripts/check-openapi-code-samples.mjs
@@ -0,0 +1,146 @@
+#!/usr/bin/env node
+/**
+ * Checks OpenAPI Mintlify file for code samples.
+ * Usage:
+ * node check-openapi-code-samples.mjs curl-check [path-to-openapi]
+ * node check-openapi-code-samples.mjs info [path-to-openapi]
+ *
+ * curl-check: Exits 1 if any route (method + path) has no cURL code sample.
+ * info: Prints report of missing code sample langs per route (never exits with error).
+ */
+
+import { readFileSync } from 'fs';
+import { resolve } from 'path';
+
+const OPENAPI_PATH = resolve(
+ process.cwd(),
+ process.argv[3] || 'assets/open-api/meilisearch-openapi-mintlify.json'
+);
+
+const spec = JSON.parse(readFileSync(OPENAPI_PATH, 'utf8'));
+const paths = spec.paths || {};
+const HTTP_METHODS = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options'];
+
+function getOperations() {
+ const ops = [];
+ for (const [path, pathItem] of Object.entries(paths)) {
+ if (typeof pathItem !== 'object' || pathItem === null) continue;
+ for (const method of HTTP_METHODS) {
+ const op = pathItem[method];
+ if (op && typeof op === 'object') {
+ ops.push({ path, method, operation: op });
+ }
+ }
+ }
+ return ops;
+}
+
+function getLangs(samples) {
+ if (!Array.isArray(samples)) return [];
+ return samples.map((s) => s?.lang).filter(Boolean);
+}
+
+function hasCurl(samples) {
+ return getLangs(samples).some((lang) => String(lang) === 'cURL');
+}
+
+// --- curl-check mode: fail if any route has no cURL sample
+function runCurlCheck() {
+ const missing = [];
+ for (const { path, method, operation } of getOperations()) {
+ const samples = operation['x-codeSamples'];
+ if (!hasCurl(samples)) {
+ missing.push(`${method.toUpperCase()} ${path}`);
+ }
+ }
+ if (missing.length > 0) {
+ console.error('Routes missing a "cURL" code sample:\n');
+ missing.forEach((r) => console.error(' -', r));
+ process.exit(1);
+ }
+ console.log('OK: Every route includes a cURL code sample.');
+}
+
+// --- info mode: list all routes and missing code sample langs (never fail)
+function runInfo() {
+ const allLangs = new Set();
+ for (const { operation } of getOperations()) {
+ const samples = operation['x-codeSamples'];
+ if (Array.isArray(samples)) {
+ for (const s of samples) {
+ if (s?.lang) allLangs.add(String(s.lang));
+ }
+ }
+ }
+ const sortedLangs = [...allLangs].sort();
+
+ const rows = [];
+ for (const { path, method, operation } of getOperations()) {
+ const samples = operation['x-codeSamples'];
+ const route = `${method.toUpperCase()} ${path}`;
+ if (!Array.isArray(samples) || samples.length === 0) {
+ rows.push({
+ route,
+ missing: sortedLangs.length ? sortedLangs : [],
+ note: 'no x-codeSamples',
+ });
+ continue;
+ }
+ const present = new Set(getLangs(samples));
+ const missing = sortedLangs.filter((lang) => !present.has(lang));
+ if (missing.length > 0) {
+ rows.push({ route, missing, note: null });
+ }
+ }
+
+ console.log('OpenAPI code samples – missing languages per route (informational only):\n');
+ if (rows.length === 0) {
+ console.log('No routes with missing code samples.');
+ return;
+ }
+ console.log('Reference languages in file:', sortedLangs.join(', '));
+ console.log('');
+
+ // 1. Routes and their missing code samples
+ console.log('--- Routes and missing code samples ---\n');
+ for (const { route, missing, note } of rows) {
+ if (note) {
+ console.log(`${route}`);
+ console.log(` → ${note}`);
+ } else {
+ console.log(`${route}`);
+ console.log(` → missing: ${missing.join(', ')}`);
+ }
+ }
+
+ // 2. Routes missing per language
+ const routesByMissingLang = new Map();
+ for (const lang of sortedLangs) {
+ routesByMissingLang.set(lang, []);
+ }
+ for (const { route, missing, note } of rows) {
+ for (const lang of missing) {
+ routesByMissingLang.get(lang).push(route);
+ }
+ }
+ console.log('\n--- Routes missing per language ---\n');
+ for (const lang of sortedLangs) {
+ const routeList = routesByMissingLang.get(lang);
+ if (routeList.length === 0) continue;
+ console.log(`${lang}: ${routeList.length} examples missing`);
+ for (const r of routeList) {
+ console.log(` - ${r}`);
+ }
+ console.log('');
+ }
+}
+
+const mode = process.argv[2];
+if (mode === 'curl-check') {
+ runCurlCheck();
+} else if (mode === 'info') {
+ runInfo();
+} else {
+ console.error('Usage: check-openapi-code-samples.mjs [path-to-openapi]');
+ process.exit(2);
+}
diff --git a/scripts/fetch-meilisearch-openapi-file.mjs b/scripts/fetch-meilisearch-openapi-file.mjs
new file mode 100644
index 0000000000..b81930571d
--- /dev/null
+++ b/scripts/fetch-meilisearch-openapi-file.mjs
@@ -0,0 +1,79 @@
+#!/usr/bin/env node
+
+/**
+ * Fetches the latest Meilisearch release from GitHub and replaces
+ * assets/open-api/meilisearch-openapi.json with the one from that release.
+ *
+ * Optional: set GITHUB_PAT or GH_TOKEN for higher API rate limits.
+ */
+
+import fs from "fs";
+import path from "path";
+import { fileURLToPath } from "url";
+
+const __dirname = path.dirname(fileURLToPath(import.meta.url));
+const REPO_ROOT = path.resolve(__dirname, "..");
+const OPENAPI_DIR = path.join(REPO_ROOT, "assets", "open-api");
+
+const OPENAPI_ASSET_NAMES = ["meilisearch-openapi.json"];
+
+const GITHUB_API_LATEST =
+ "https://api.github.com/repos/meilisearch/meilisearch/releases/latest";
+
+function getHeaders(extra = {}) {
+ const token = process.env.GITHUB_PAT || process.env.GH_TOKEN;
+ const headers = { ...extra };
+ if (token) headers.Authorization = `Bearer ${token}`;
+ return headers;
+}
+
+async function request(url, { asJson = false, errorContext = "Request" } = {}) {
+ const headers = getHeaders(
+ asJson ? { Accept: "application/vnd.github+json" } : {}
+ );
+ const res = await fetch(url, { headers });
+ if (!res.ok) {
+ const body = await res.text();
+ throw new Error(
+ `${errorContext} failed: ${res.status} ${res.statusText}${body ? `\n${body}` : ""}`
+ );
+ }
+ return asJson ? res.json() : res.text();
+}
+
+async function main() {
+ console.log("Fetching latest Meilisearch release...");
+ const release = await request(GITHUB_API_LATEST, {
+ asJson: true,
+ errorContext: "GitHub API",
+ });
+ const tag = release.tag_name;
+ console.log(`Latest release: ${tag}`);
+
+ if (!fs.existsSync(OPENAPI_DIR)) {
+ fs.mkdirSync(OPENAPI_DIR, { recursive: true });
+ }
+
+ const assetNames = release.assets?.map((a) => a.name) ?? [];
+ for (const filename of OPENAPI_ASSET_NAMES) {
+ const asset = release.assets?.find((a) => a.name === filename);
+ if (!asset) {
+ throw new Error(
+ `Asset "${filename}" not found in release ${tag}. Available: ${assetNames.join(", ") || "none"}`
+ );
+ }
+
+ console.log(`Downloading ${filename}...`);
+ const content = await request(asset.browser_download_url, {
+ errorContext: "Download asset",
+ });
+ const targetPath = path.join(OPENAPI_DIR, filename);
+ fs.writeFileSync(targetPath, content, "utf8");
+ console.log(`Written to ${targetPath}`);
+ }
+}
+
+main().catch((err) => {
+ console.error(err);
+ process.exit(1);
+});
diff --git a/scripts/generate-mintlify-openapi.mjs b/scripts/generate-mintlify-openapi.mjs
new file mode 100644
index 0000000000..fce1ba2ac3
--- /dev/null
+++ b/scripts/generate-mintlify-openapi.mjs
@@ -0,0 +1,377 @@
+#!/usr/bin/env node
+
+/**
+ * Generates a Mintlify-ready OpenAPI file from assets/open-api/meilisearch-openapi.json.
+ *
+ * - Fetches code samples from the docs repo and SDK repos (.code-samples.meilisearch.yaml),
+ * maps them to OpenAPI operation keys (e.g. get_indexes), and injects x-codeSamples.
+ * - Removes null or "null" description fields in tags (and nested objects) for Mintlify.
+ *
+ * Output: assets/open-api/meilisearch-openapi-mintlify.json
+ *
+ * Optional: set GITHUB_PAT or GH_TOKEN for higher rate limits when fetching SDK samples.
+ */
+
+import fs from "fs";
+import path from "path";
+import { fileURLToPath } from "url";
+
+const __dirname = path.dirname(fileURLToPath(import.meta.url));
+const REPO_ROOT = path.resolve(__dirname, "..");
+const OPENAPI_DIR = path.join(REPO_ROOT, "assets", "open-api");
+const SOURCE_OPENAPI = path.join(OPENAPI_DIR, "meilisearch-openapi.json");
+const TARGET_OPENAPI = path.join(OPENAPI_DIR, "meilisearch-openapi-mintlify.json");
+const LOCAL_CODE_SAMPLES = path.join(REPO_ROOT, ".code-samples.meilisearch.yaml");
+
+const HTTP_METHODS = ["get", "post", "put", "patch", "delete"];
+
+const CODE_SAMPLES_ORDER = [
+ "cURL",
+ "JS",
+ "PHP",
+ "Python",
+ "Java",
+ "Ruby",
+ "Go",
+ "C#",
+ "Rust",
+ "Dart",
+ "Swift",
+];
+
+const DOCS_LANG = "cURL";
+
+const CODE_SAMPLES_SOURCES = [
+ {
+ url: "https://raw.githubusercontent.com/meilisearch/documentation/refs/heads/main/.code-samples.meilisearch.yaml",
+ lang: "cURL",
+ },
+ {
+ url: "https://raw.githubusercontent.com/meilisearch/meilisearch-dotnet/refs/heads/main/.code-samples.meilisearch.yaml",
+ lang: "C#",
+ },
+ {
+ url: "https://raw.githubusercontent.com/meilisearch/meilisearch-dart/refs/heads/main/.code-samples.meilisearch.yaml",
+ lang: "Dart",
+ },
+ {
+ url: "https://raw.githubusercontent.com/meilisearch/meilisearch-go/refs/heads/main/.code-samples.meilisearch.yaml",
+ lang: "Go",
+ },
+ {
+ url: "https://raw.githubusercontent.com/meilisearch/meilisearch-java/refs/heads/main/.code-samples.meilisearch.yaml",
+ lang: "Java",
+ },
+ {
+ url: "https://raw.githubusercontent.com/meilisearch/meilisearch-js/refs/heads/main/.code-samples.meilisearch.yaml",
+ lang: "JS",
+ },
+ {
+ url: "https://raw.githubusercontent.com/meilisearch/meilisearch-php/refs/heads/main/.code-samples.meilisearch.yaml",
+ lang: "PHP",
+ },
+ {
+ url: "https://raw.githubusercontent.com/meilisearch/meilisearch-python/refs/heads/main/.code-samples.meilisearch.yaml",
+ lang: "Python",
+ },
+ {
+ url: "https://raw.githubusercontent.com/meilisearch/meilisearch-ruby/refs/heads/main/.code-samples.meilisearch.yaml",
+ lang: "Ruby",
+ },
+ {
+ url: "https://raw.githubusercontent.com/meilisearch/meilisearch-rust/refs/heads/main/.code-samples.meilisearch.yaml",
+ lang: "Rust",
+ },
+ {
+ url: "https://raw.githubusercontent.com/meilisearch/meilisearch-swift/refs/heads/main/.code-samples.meilisearch.yaml",
+ lang: "Swift",
+ },
+];
+
+function getHeaders() {
+ const token = process.env.GITHUB_PAT || process.env.GH_TOKEN;
+ const headers = {};
+ if (token) headers.Authorization = `Bearer ${token}`;
+ return headers;
+}
+
+async function fetchUrl(url) {
+ const res = await fetch(url, { headers: getHeaders() });
+ if (!res.ok) {
+ throw new Error(`Failed to fetch ${url}: ${res.status} ${res.statusText}`);
+ }
+ return res.text();
+}
+
+function isHttpMethodPrefixed(word) {
+ return HTTP_METHODS.some(
+ (method) => word.startsWith(method) && word.slice(method.length).startsWith("_")
+ );
+}
+
+/**
+ * Builds mapping from OpenAPI key (e.g. get_indexes) to code sample ID (e.g. list_all_indexes_1)
+ * from the documentation .code-samples file.
+ * Lines starting with "# " (hash + space), single word (no spaces) starting with HTTP method + underscore.
+ * Next line: first word before ":" is the sample ID. Only first match per key.
+ */
+function buildOpenapiKeyMapping(content) {
+ const mapping = new Map();
+ const lines = content.split(/\r?\n/);
+
+ for (let i = 0; i < lines.length - 1; i++) {
+ const line = lines[i];
+ const nextLine = lines[i + 1];
+
+ const afterHash = line.startsWith("# ") ? line.slice(2).trim() : null;
+ if (afterHash == null) continue;
+ if (afterHash.includes(" ") || !isHttpMethodPrefixed(afterHash)) continue;
+
+ const sampleId = nextLine.split(":")[0]?.trim();
+ if (!sampleId) continue;
+
+ if (!mapping.has(afterHash)) {
+ mapping.set(afterHash, sampleId);
+ }
+ }
+
+ return mapping;
+}
+
+/**
+ * Parses code samples from a YAML-like file.
+ * Sample: line containing ": |-", ID is first word before ":".
+ * Value: lines until next ": |-" or line starting with "#" at column 0 or EOF.
+ * Dedent by first line's indentation.
+ */
+function parseCodeSamplesFromFile(content) {
+ const samples = new Map();
+ let currentSampleId = null;
+ const currentLines = [];
+ let baseIndent = null;
+
+ const flush = () => {
+ if (currentSampleId) {
+ const value = currentLines.join("\n").trimEnd();
+ samples.set(currentSampleId, value);
+ }
+ currentSampleId = null;
+ currentLines.length = 0;
+ baseIndent = null;
+ };
+
+ for (const line of content.split(/\r?\n/)) {
+ if (line.includes(": |-")) {
+ flush();
+ const id = line.split(":")[0]?.trim();
+ if (id) currentSampleId = id;
+ continue;
+ }
+
+ if (line.startsWith("#")) {
+ flush();
+ continue;
+ }
+
+ if (currentSampleId != null) {
+ if (line.trim() === "") {
+ if (currentLines.length > 0) currentLines.push("");
+ continue;
+ }
+ const indent = line.length - line.trimStart().length;
+ if (baseIndent == null) baseIndent = indent;
+ const dedented = indent >= baseIndent ? line.slice(baseIndent) : line.trimStart();
+ currentLines.push(dedented);
+ }
+ }
+
+ // Save last sample
+ if (currentSampleId) {
+ const value = currentLines.join("\n").trimEnd();
+ samples.set(currentSampleId, value);
+ }
+
+ return samples;
+}
+
+function toCamelCase(s) {
+ return s.replace(/_([a-z])/g, (_, c) => c.toUpperCase());
+}
+
+/**
+ * OpenAPI path + method -> code sample key.
+ * e.g. /indexes/{index_uid}/documents, GET -> get_indexes_indexUid_documents
+ */
+function pathToKey(pathStr, method) {
+ const methodLower = method.toLowerCase();
+ const segments = pathStr
+ .replace(/^\//, "")
+ .split("/")
+ .map((seg) => {
+ if (seg.startsWith("{") && seg.endsWith("}")) {
+ const param = seg.slice(1, -1);
+ return toCamelCase(param);
+ }
+ return seg.replace(/-/g, "_");
+ });
+ const pathPart = segments.join("_");
+ return pathPart ? `${methodLower}_${pathPart}` : methodLower;
+}
+
+/**
+ * Fetches all code samples and returns a Map: openapiKey -> [{ lang, source }, ...]
+ */
+async function fetchAllCodeSamples(options = {}) {
+ const { debug = false } = options;
+
+ // Documentation repo (cURL): always use local .code-samples.meilisearch.yaml
+ if (!fs.existsSync(LOCAL_CODE_SAMPLES)) {
+ throw new Error(
+ `Local code samples file not found: ${LOCAL_CODE_SAMPLES}. Run this script from the documentation repository root.`
+ );
+ }
+ const docsContent = fs.readFileSync(LOCAL_CODE_SAMPLES, "utf8");
+
+ const openapiKeyToSampleId = buildOpenapiKeyMapping(docsContent);
+ const allSamples = new Map(); // openapiKey -> [{ lang, source }]
+
+ for (const { url, lang } of CODE_SAMPLES_SOURCES) {
+ let content;
+ if (lang === DOCS_LANG) {
+ content = docsContent;
+ } else {
+ try {
+ content = await fetchUrl(url);
+ } catch (err) {
+ console.warn(`Warning: Failed to fetch code samples for ${lang}: ${err.message}`);
+ continue;
+ }
+ }
+
+ const sampleIdToCode = parseCodeSamplesFromFile(content);
+ for (const [openapiKey, sampleId] of openapiKeyToSampleId) {
+ const source = sampleIdToCode.get(sampleId);
+ if (source !== undefined) {
+ if (!allSamples.has(openapiKey)) allSamples.set(openapiKey, []);
+ allSamples.get(openapiKey).push({ lang, source });
+ }
+ }
+ }
+
+ if (debug) {
+ console.error("\n=== OpenAPI Key to Sample ID Mapping ===\n");
+ for (const key of [...openapiKeyToSampleId.keys()].sort()) {
+ console.error(` ${key} -> ${openapiKeyToSampleId.get(key)}`);
+ }
+ console.error("\n=== Code Samples ===\n");
+ for (const key of [...allSamples.keys()].sort()) {
+ const langs = allSamples.get(key).map((s) => s.lang);
+ console.error(` ${key} -> ${langs.join(", ")}`);
+ }
+ }
+
+ return allSamples;
+}
+
+function addCodeSamplesToOpenapi(openapi, codeSamples, options = {}) {
+ const { debug = false } = options;
+ const paths = openapi.paths;
+ if (!paths || typeof paths !== "object") throw new Error("OpenAPI spec missing 'paths' object");
+
+ const routesWithSamples = [];
+ const routesWithoutSamples = [];
+
+ for (const [pathStr, pathItem] of Object.entries(paths)) {
+ if (pathItem == null || typeof pathItem !== "object") continue;
+
+ for (const method of HTTP_METHODS) {
+ const operation = pathItem[method];
+ if (operation == null) continue;
+
+ const key = pathToKey(pathStr, method);
+ const samples = codeSamples.get(key);
+
+ if (samples && samples.length > 0) {
+ routesWithSamples.push(key);
+ const sorted = [...samples].sort((a, b) => {
+ const posA = CODE_SAMPLES_ORDER.indexOf(a.lang);
+ const posB = CODE_SAMPLES_ORDER.indexOf(b.lang);
+ const idxA = posA === -1 ? CODE_SAMPLES_ORDER.length : posA;
+ const idxB = posB === -1 ? CODE_SAMPLES_ORDER.length : posB;
+ return idxA - idxB || a.lang.localeCompare(b.lang);
+ });
+ operation["x-codeSamples"] = sorted.map(({ lang, source }) => ({ lang, source }));
+ } else {
+ routesWithoutSamples.push(key);
+ }
+ }
+ }
+
+ if (debug) {
+ routesWithoutSamples.sort();
+ if (routesWithoutSamples.length > 0) {
+ console.error("=== Routes without code samples ===\n");
+ routesWithoutSamples.forEach((k) => console.error(` ${k}`));
+ }
+ const total =
+ routesWithSamples.length + routesWithoutSamples.length;
+ const pct = total > 0 ? ((routesWithSamples.length / total) * 100).toFixed(1) : "0";
+ console.error("\n=== Summary ===\n");
+ console.error(` Total routes: ${total}`);
+ console.error(` With code samples: ${routesWithSamples.length} (${pct}%)`);
+ console.error(` Missing code samples: ${routesWithoutSamples.length}\n`);
+ }
+}
+
+function removeNullDescriptionsRecursive(value) {
+ if (value && typeof value === "object" && !Array.isArray(value)) {
+ if ("description" in value) {
+ const d = value.description;
+ if (d == null || (typeof d === "string" && d === "null")) {
+ delete value.description;
+ }
+ }
+ for (const k of Object.keys(value)) {
+ removeNullDescriptionsRecursive(value[k]);
+ }
+ } else if (Array.isArray(value)) {
+ value.forEach(removeNullDescriptionsRecursive);
+ }
+}
+
+function cleanNullDescriptions(openapi) {
+ const tags = openapi.tags;
+ if (Array.isArray(tags)) {
+ tags.forEach(removeNullDescriptionsRecursive);
+ }
+}
+
+async function main() {
+ const debug = process.argv.includes("--debug");
+
+ if (!fs.existsSync(SOURCE_OPENAPI)) {
+ throw new Error(`Source OpenAPI file not found: ${SOURCE_OPENAPI}`);
+ }
+
+ console.log("Reading OpenAPI spec...");
+ const openapi = JSON.parse(fs.readFileSync(SOURCE_OPENAPI, "utf8"));
+
+ console.log("Fetching code samples...");
+ const codeSamples = await fetchAllCodeSamples({ debug });
+ addCodeSamplesToOpenapi(openapi, codeSamples, { debug });
+
+ console.log("Cleaning null descriptions for Mintlify...");
+ cleanNullDescriptions(openapi);
+
+ if (!fs.existsSync(OPENAPI_DIR)) {
+ fs.mkdirSync(OPENAPI_DIR, { recursive: true });
+ }
+
+ fs.writeFileSync(TARGET_OPENAPI, JSON.stringify(openapi, null, 2), "utf8");
+ console.log(`Written: ${TARGET_OPENAPI}`);
+}
+
+main().catch((err) => {
+ console.error(err);
+ process.exit(1);
+});